summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-06-20 19:34:50 +0000
committerdim <dim@FreeBSD.org>2015-06-20 19:34:50 +0000
commite109f99dcb6c95c84bbec22229de29a25491f7c2 (patch)
treed142d742b698973a366ae768a3f4033924e314c8
parent238df27d058d0d8912acf0a186d3f43289a0a2b6 (diff)
parentcb167b45a82327b0d6d88e85e3d6e2e326291ee4 (diff)
downloadFreeBSD-src-e109f99dcb6c95c84bbec22229de29a25491f7c2.zip
FreeBSD-src-e109f99dcb6c95c84bbec22229de29a25491f7c2.tar.gz
Merge ^/head r284188 through r284643.
-rw-r--r--Makefile47
-rw-r--r--ObsoleteFiles.inc122
-rw-r--r--UPDATING58
-rw-r--r--bin/cat/Makefile.depend18
-rw-r--r--bin/chflags/Makefile.depend18
-rw-r--r--bin/chio/Makefile.depend18
-rw-r--r--bin/chmod/Makefile.depend18
-rw-r--r--bin/cp/Makefile.depend18
-rw-r--r--bin/csh/Makefile.depend243
-rw-r--r--bin/date/Makefile.depend19
-rw-r--r--bin/dd/Makefile.depend18
-rw-r--r--bin/df/Makefile.depend20
-rw-r--r--bin/domainname/Makefile.depend18
-rw-r--r--bin/echo/Makefile.depend18
-rw-r--r--bin/ed/Makefile.depend19
-rw-r--r--bin/expr/Makefile.depend21
-rw-r--r--bin/freebsd-version/Makefile.depend11
-rw-r--r--bin/getfacl/Makefile.depend18
-rw-r--r--bin/hostname/Makefile.depend18
-rw-r--r--bin/kenv/Makefile.depend18
-rw-r--r--bin/kill/Makefile.depend18
-rw-r--r--bin/ln/Makefile.depend18
-rw-r--r--bin/ls/Makefile2
-rw-r--r--bin/ls/Makefile.depend21
-rw-r--r--bin/ls/extern.h11
-rw-r--r--bin/ls/ls.15
-rw-r--r--bin/ls/ls.c54
-rw-r--r--bin/ls/print.c169
-rw-r--r--bin/ls/util.c52
-rw-r--r--bin/mkdir/Makefile.depend18
-rw-r--r--bin/mv/Makefile.depend18
-rw-r--r--bin/pax/Makefile.depend18
-rw-r--r--bin/pkill/Makefile.depend19
-rw-r--r--bin/ps/Makefile.depend22
-rw-r--r--bin/pwait/Makefile.depend18
-rw-r--r--bin/pwd/Makefile.depend18
-rw-r--r--bin/rcp/Makefile.depend18
-rw-r--r--bin/realpath/Makefile.depend17
-rw-r--r--bin/rm/Makefile.depend18
-rw-r--r--bin/rmail/Makefile.depend22
-rw-r--r--bin/rmdir/Makefile.depend18
-rw-r--r--bin/setfacl/Makefile.depend18
-rw-r--r--bin/sh/Makefile.depend114
-rw-r--r--bin/sleep/Makefile.depend18
-rw-r--r--bin/stty/Makefile.depend18
-rw-r--r--bin/sync/Makefile.depend17
-rw-r--r--bin/test/Makefile.depend18
-rw-r--r--bin/uuidgen/Makefile.depend17
-rw-r--r--cddl/contrib/opensolaris/cmd/lockstat/lockstat.c40
-rw-r--r--cddl/contrib/opensolaris/cmd/zdb/zdb.c14
-rw-r--r--cddl/contrib/opensolaris/cmd/zfs/zfs_main.c41
-rw-r--r--cddl/contrib/opensolaris/cmd/ztest/ztest.c19
-rw-r--r--cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c5
-rw-r--r--cddl/lib/drti/Makefile.depend14
-rw-r--r--cddl/lib/libavl/Makefile.depend18
-rw-r--r--cddl/lib/libctf/Makefile.depend21
-rw-r--r--cddl/lib/libdtrace/Makefile.depend53
-rw-r--r--cddl/lib/libnvpair/Makefile.depend20
-rw-r--r--cddl/lib/libumem/Makefile.depend18
-rw-r--r--cddl/lib/libuutil/Makefile.depend19
-rw-r--r--cddl/lib/libzfs/Makefile1
-rw-r--r--cddl/lib/libzfs/Makefile.depend30
-rw-r--r--cddl/lib/libzfs_core/Makefile3
-rw-r--r--cddl/lib/libzfs_core/Makefile.depend21
-rw-r--r--cddl/lib/libzpool/Makefile.depend26
-rw-r--r--cddl/sbin/zfs/Makefile.depend32
-rw-r--r--cddl/sbin/zpool/Makefile.depend31
-rw-r--r--cddl/usr.bin/ctfconvert/Makefile.depend26
-rw-r--r--cddl/usr.bin/ctfdump/Makefile.depend24
-rw-r--r--cddl/usr.bin/ctfmerge/Makefile.depend26
-rw-r--r--cddl/usr.bin/sgsmsg/Makefile.depend19
-rw-r--r--cddl/usr.bin/zinject/Makefile.depend33
-rw-r--r--cddl/usr.bin/zstreamdump/Makefile.depend26
-rw-r--r--cddl/usr.bin/ztest/Makefile.depend33
-rw-r--r--cddl/usr.sbin/dtrace/Makefile.depend32
-rw-r--r--cddl/usr.sbin/dtruss/Makefile.depend13
-rw-r--r--cddl/usr.sbin/lockstat/Makefile.depend28
-rw-r--r--cddl/usr.sbin/zdb/Makefile.depend33
-rw-r--r--cddl/usr.sbin/zhack/Makefile.depend33
-rw-r--r--contrib/bmake/ChangeLog6
-rw-r--r--contrib/bmake/Makefile4
-rw-r--r--contrib/bmake/bmake.120
-rw-r--r--contrib/bmake/bmake.cat113
-rw-r--r--contrib/bmake/make.120
-rw-r--r--contrib/bmake/mk/ChangeLog26
-rw-r--r--contrib/bmake/mk/dirdeps.mk14
-rw-r--r--contrib/bmake/mk/gendirdeps.mk4
-rw-r--r--contrib/bmake/mk/install-mk4
-rw-r--r--contrib/bmake/mk/meta.stage.mk6
-rw-r--r--contrib/bmake/mk/meta.sys.mk13
-rwxr-xr-xcontrib/bmake/mk/mkopt.sh19
-rw-r--r--contrib/bmake/targ.c6
-rw-r--r--contrib/elftoolchain/elfcopy/sections.c8
-rw-r--r--contrib/file/ChangeLog53
-rw-r--r--contrib/file/Makefile.in44
-rw-r--r--contrib/file/TODO3
-rw-r--r--contrib/file/aclocal.m467
-rwxr-xr-xcontrib/file/compile2
-rw-r--r--contrib/file/config.h.in12
-rwxr-xr-xcontrib/file/configure72
-rw-r--r--contrib/file/configure.ac10
-rwxr-xr-xcontrib/file/depcomp2
-rw-r--r--contrib/file/doc/Makefile.in22
-rw-r--r--contrib/file/doc/file.man38
-rw-r--r--contrib/file/doc/libmagic.man8
-rwxr-xr-xcontrib/file/ltmain.sh6
-rw-r--r--contrib/file/magic/Magdir/android8
-rw-r--r--contrib/file/magic/Magdir/apple11
-rw-r--r--contrib/file/magic/Magdir/archive7
-rw-r--r--contrib/file/magic/Magdir/audio19
-rw-r--r--contrib/file/magic/Magdir/cafebabe12
-rw-r--r--contrib/file/magic/Magdir/cbor21
-rw-r--r--contrib/file/magic/Magdir/commands4
-rw-r--r--contrib/file/magic/Magdir/compress3
-rw-r--r--contrib/file/magic/Magdir/console16
-rw-r--r--contrib/file/magic/Magdir/dyadic7
-rw-r--r--contrib/file/magic/Magdir/filesystems3
-rw-r--r--contrib/file/magic/Magdir/gnu6
-rw-r--r--contrib/file/magic/Magdir/images72
-rw-r--r--contrib/file/magic/Magdir/jpeg12
-rw-r--r--contrib/file/magic/Magdir/linux27
-rw-r--r--contrib/file/magic/Magdir/mach4
-rw-r--r--contrib/file/magic/Magdir/mathematica13
-rw-r--r--contrib/file/magic/Magdir/misctools13
-rw-r--r--contrib/file/magic/Magdir/modem13
-rw-r--r--contrib/file/magic/Magdir/mozilla3
-rw-r--r--contrib/file/magic/Magdir/nasa7
-rw-r--r--contrib/file/magic/Magdir/os25
-rw-r--r--contrib/file/magic/Magdir/pdf7
-rw-r--r--contrib/file/magic/Magdir/perl48
-rw-r--r--contrib/file/magic/Magdir/riff3
-rw-r--r--contrib/file/magic/Magdir/sereal24
-rw-r--r--contrib/file/magic/Magdir/sgml34
-rw-r--r--contrib/file/magic/Magdir/varied.script10
-rw-r--r--contrib/file/magic/Magdir/vorbis28
-rw-r--r--contrib/file/magic/Makefile.am4
-rw-r--r--contrib/file/magic/Makefile.in26
-rwxr-xr-xcontrib/file/missing6
-rw-r--r--contrib/file/python/Makefile.in22
-rw-r--r--contrib/file/src/Makefile.in31
-rw-r--r--contrib/file/src/apprentice.c46
-rw-r--r--contrib/file/src/ascmagic.c6
-rw-r--r--contrib/file/src/cdf.c124
-rw-r--r--contrib/file/src/cdf.h9
-rw-r--r--contrib/file/src/compress.c19
-rw-r--r--contrib/file/src/encoding.c38
-rw-r--r--contrib/file/src/file.c61
-rw-r--r--contrib/file/src/file.h21
-rw-r--r--contrib/file/src/file_opts.h10
-rw-r--r--contrib/file/src/fsmagic.c4
-rw-r--r--contrib/file/src/funcs.c36
-rw-r--r--contrib/file/src/gmtime_r.c19
-rw-r--r--contrib/file/src/is_tar.c4
-rw-r--r--contrib/file/src/localtime_r.c19
-rw-r--r--contrib/file/src/magic.c166
-rw-r--r--contrib/file/src/magic.h53
-rw-r--r--contrib/file/src/magic.h.in51
-rw-r--r--contrib/file/src/print.c40
-rw-r--r--contrib/file/src/readcdf.c142
-rw-r--r--contrib/file/src/readelf.c10
-rw-r--r--contrib/file/src/softmagic.c85
-rw-r--r--contrib/file/tests/Makefile.in23
-rw-r--r--contrib/gcc/longlong.h10
-rw-r--r--contrib/libcxxrt/FREEBSD-upgrade2
-rw-r--r--contrib/libcxxrt/libelftc_dem_gnu3.c502
-rw-r--r--contrib/libxo/libxo/libxo.c3
-rw-r--r--contrib/sendmail/src/tls.c6
-rw-r--r--contrib/tzdata/africa88
-rw-r--r--contrib/tzdata/northamerica13
-rw-r--r--contrib/tzdata/southamerica2
-rw-r--r--contrib/tzdata/zone1970.tab3
-rw-r--r--crypto/openssl/CHANGES77
-rwxr-xr-xcrypto/openssl/Configure10
-rw-r--r--crypto/openssl/Makefile28
-rw-r--r--crypto/openssl/Makefile.org26
-rw-r--r--crypto/openssl/NEWS12
-rw-r--r--crypto/openssl/README2
-rw-r--r--crypto/openssl/apps/Makefile19
-rw-r--r--crypto/openssl/apps/apps.c6
-rw-r--r--crypto/openssl/apps/asn1pars.c2
-rw-r--r--crypto/openssl/apps/ca.c10
-rw-r--r--crypto/openssl/apps/cms.c2
-rw-r--r--crypto/openssl/apps/dhparam.c4
-rw-r--r--crypto/openssl/apps/enc.c13
-rw-r--r--crypto/openssl/apps/gendh.c2
-rw-r--r--crypto/openssl/apps/ocsp.c2
-rw-r--r--crypto/openssl/apps/s_cb.c3
-rw-r--r--crypto/openssl/apps/s_client.c15
-rw-r--r--crypto/openssl/apps/s_server.c73
-rw-r--r--crypto/openssl/apps/s_time.c2
-rw-r--r--crypto/openssl/apps/smime.c2
-rw-r--r--crypto/openssl/apps/srp.c4
-rw-r--r--crypto/openssl/apps/verify.c2
-rw-r--r--crypto/openssl/crypto/Makefile11
-rw-r--r--crypto/openssl/crypto/aes/Makefile2
-rw-r--r--crypto/openssl/crypto/asn1/Makefile2
-rw-r--r--crypto/openssl/crypto/asn1/a_int.c6
-rw-r--r--crypto/openssl/crypto/asn1/asn1_gen.c40
-rw-r--r--crypto/openssl/crypto/asn1/asn_mime.c3
-rw-r--r--crypto/openssl/crypto/asn1/bio_ndef.c4
-rw-r--r--crypto/openssl/crypto/asn1/tasn_new.c3
-rw-r--r--crypto/openssl/crypto/asn1/tasn_prn.c2
-rw-r--r--crypto/openssl/crypto/asn1/x_x509.c4
-rw-r--r--crypto/openssl/crypto/bf/Makefile2
-rw-r--r--crypto/openssl/crypto/bio/Makefile2
-rw-r--r--crypto/openssl/crypto/bio/b_print.c45
-rw-r--r--crypto/openssl/crypto/bio/bf_nbio.c6
-rw-r--r--crypto/openssl/crypto/bio/bio_lib.c8
-rw-r--r--crypto/openssl/crypto/bio/bss_dgram.c21
-rw-r--r--crypto/openssl/crypto/bn/Makefile2
-rw-r--r--crypto/openssl/crypto/bn/bn.h5
-rw-r--r--crypto/openssl/crypto/bn/bn_err.c6
-rw-r--r--crypto/openssl/crypto/bn/bn_gf2m.c15
-rw-r--r--crypto/openssl/crypto/bn/bn_lcl.h2
-rw-r--r--crypto/openssl/crypto/bn/bn_print.c7
-rw-r--r--crypto/openssl/crypto/bn/bn_rand.c10
-rw-r--r--crypto/openssl/crypto/bn/bn_shift.c10
-rw-r--r--crypto/openssl/crypto/buffer/Makefile2
-rw-r--r--crypto/openssl/crypto/buffer/buffer.c2
-rw-r--r--crypto/openssl/crypto/camellia/Makefile2
-rw-r--r--crypto/openssl/crypto/cast/Makefile2
-rw-r--r--crypto/openssl/crypto/cmac/Makefile2
-rw-r--r--crypto/openssl/crypto/cmac/cmac.c2
-rw-r--r--crypto/openssl/crypto/cms/Makefile2
-rw-r--r--crypto/openssl/crypto/cms/cms_pwri.c7
-rw-r--r--crypto/openssl/crypto/cms/cms_smime.c2
-rw-r--r--crypto/openssl/crypto/comp/Makefile2
-rw-r--r--crypto/openssl/crypto/conf/Makefile2
-rw-r--r--crypto/openssl/crypto/cryptlib.c2
-rw-r--r--crypto/openssl/crypto/des/Makefile2
-rw-r--r--crypto/openssl/crypto/des/des.c6
-rw-r--r--crypto/openssl/crypto/des/enc_writ.c7
-rw-r--r--crypto/openssl/crypto/dh/Makefile2
-rw-r--r--crypto/openssl/crypto/dh/dh_ameth.c2
-rw-r--r--crypto/openssl/crypto/dsa/Makefile2
-rw-r--r--crypto/openssl/crypto/dsa/dsa_gen.c3
-rw-r--r--crypto/openssl/crypto/dsa/dsa_ossl.c8
-rw-r--r--crypto/openssl/crypto/dso/Makefile2
-rw-r--r--crypto/openssl/crypto/dso/dso_lib.c2
-rw-r--r--crypto/openssl/crypto/ec/Makefile2
-rw-r--r--crypto/openssl/crypto/ec/ec2_oct.c2
-rw-r--r--crypto/openssl/crypto/ec/ec_asn1.c20
-rw-r--r--crypto/openssl/crypto/ec/ec_check.c2
-rw-r--r--crypto/openssl/crypto/ec/ec_key.c2
-rw-r--r--crypto/openssl/crypto/ec/ec_lcl.h8
-rw-r--r--crypto/openssl/crypto/ec/ec_lib.c7
-rw-r--r--crypto/openssl/crypto/ec/eck_prn.c4
-rw-r--r--crypto/openssl/crypto/ec/ecp_oct.c2
-rw-r--r--crypto/openssl/crypto/ec/ectest.c24
-rw-r--r--crypto/openssl/crypto/ecdh/Makefile2
-rw-r--r--crypto/openssl/crypto/ecdsa/Makefile2
-rw-r--r--crypto/openssl/crypto/ecdsa/ecdsatest.c4
-rw-r--r--crypto/openssl/crypto/engine/Makefile2
-rw-r--r--crypto/openssl/crypto/engine/eng_table.c6
-rw-r--r--crypto/openssl/crypto/err/Makefile2
-rw-r--r--crypto/openssl/crypto/evp/Makefile2
-rw-r--r--crypto/openssl/crypto/evp/bio_ok.c3
-rw-r--r--crypto/openssl/crypto/evp/e_aes.c7
-rw-r--r--crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c9
-rw-r--r--crypto/openssl/crypto/evp/e_rc4_hmac_md5.c10
-rw-r--r--crypto/openssl/crypto/evp/encode.c2
-rw-r--r--crypto/openssl/crypto/evp/evp.h4
-rw-r--r--crypto/openssl/crypto/evp/p_seal.c5
-rw-r--r--crypto/openssl/crypto/hmac/Makefile2
-rw-r--r--crypto/openssl/crypto/hmac/hmac.c19
-rw-r--r--crypto/openssl/crypto/hmac/hmactest.c179
-rw-r--r--crypto/openssl/crypto/idea/Makefile2
-rw-r--r--crypto/openssl/crypto/jpake/Makefile2
-rw-r--r--crypto/openssl/crypto/krb5/Makefile2
-rw-r--r--crypto/openssl/crypto/lhash/Makefile2
-rw-r--r--crypto/openssl/crypto/md2/Makefile2
-rw-r--r--crypto/openssl/crypto/md32_common.h4
-rw-r--r--crypto/openssl/crypto/md4/Makefile2
-rw-r--r--crypto/openssl/crypto/md5/Makefile2
-rw-r--r--crypto/openssl/crypto/mdc2/Makefile2
-rw-r--r--crypto/openssl/crypto/mem.c3
-rw-r--r--crypto/openssl/crypto/modes/Makefile2
-rw-r--r--crypto/openssl/crypto/modes/gcm128.c2
-rw-r--r--crypto/openssl/crypto/objects/Makefile2
-rw-r--r--crypto/openssl/crypto/objects/o_names.c2
-rw-r--r--crypto/openssl/crypto/objects/obj_dat.c7
-rw-r--r--crypto/openssl/crypto/objects/objects.README8
-rw-r--r--crypto/openssl/crypto/objects/objects.pl2
-rw-r--r--crypto/openssl/crypto/ocsp/Makefile2
-rw-r--r--crypto/openssl/crypto/ocsp/ocsp_ext.c4
-rw-r--r--crypto/openssl/crypto/ocsp/ocsp_vfy.c21
-rw-r--r--crypto/openssl/crypto/opensslv.h6
-rw-r--r--crypto/openssl/crypto/pem/Makefile2
-rw-r--r--crypto/openssl/crypto/pem/pem_lib.c2
-rw-r--r--crypto/openssl/crypto/pem/pem_pk8.c2
-rw-r--r--crypto/openssl/crypto/pkcs12/Makefile2
-rw-r--r--crypto/openssl/crypto/pkcs12/p12_mutl.c3
-rw-r--r--crypto/openssl/crypto/pkcs7/Makefile2
-rw-r--r--crypto/openssl/crypto/pkcs7/pk7_doit.c16
-rw-r--r--crypto/openssl/crypto/pqueue/Makefile2
-rw-r--r--crypto/openssl/crypto/rand/Makefile2
-rw-r--r--crypto/openssl/crypto/rc2/Makefile2
-rw-r--r--crypto/openssl/crypto/rc4/Makefile2
-rw-r--r--crypto/openssl/crypto/rc5/Makefile2
-rw-r--r--crypto/openssl/crypto/ripemd/Makefile2
-rw-r--r--crypto/openssl/crypto/rsa/Makefile2
-rw-r--r--crypto/openssl/crypto/rsa/rsa_pmeth.c8
-rw-r--r--crypto/openssl/crypto/seed/Makefile2
-rw-r--r--crypto/openssl/crypto/sha/Makefile2
-rw-r--r--crypto/openssl/crypto/srp/Makefile2
-rw-r--r--crypto/openssl/crypto/srp/srp_vfy.c9
-rw-r--r--crypto/openssl/crypto/stack/Makefile2
-rw-r--r--crypto/openssl/crypto/store/Makefile2
-rw-r--r--crypto/openssl/crypto/threads/th-lock.c12
-rw-r--r--crypto/openssl/crypto/ts/Makefile2
-rw-r--r--crypto/openssl/crypto/txt_db/Makefile2
-rw-r--r--crypto/openssl/crypto/ui/Makefile2
-rw-r--r--crypto/openssl/crypto/whrlpool/Makefile2
-rw-r--r--crypto/openssl/crypto/x509/Makefile2
-rw-r--r--crypto/openssl/crypto/x509/x509_lu.c2
-rw-r--r--crypto/openssl/crypto/x509/x509_vfy.c226
-rw-r--r--crypto/openssl/crypto/x509/x509_vfy.h6
-rw-r--r--crypto/openssl/crypto/x509/x509_vpm.c2
-rw-r--r--crypto/openssl/crypto/x509/x509type.c3
-rw-r--r--crypto/openssl/crypto/x509v3/Makefile2
-rw-r--r--crypto/openssl/crypto/x509v3/v3_alt.c18
-rw-r--r--crypto/openssl/crypto/x509v3/v3_cpols.c8
-rw-r--r--crypto/openssl/crypto/x509v3/v3_utl.c4
-rw-r--r--crypto/openssl/doc/apps/cms.pod5
-rw-r--r--crypto/openssl/doc/apps/config.pod53
-rw-r--r--crypto/openssl/doc/apps/dhparam.pod13
-rw-r--r--crypto/openssl/doc/apps/ocsp.pod11
-rw-r--r--crypto/openssl/doc/apps/s_client.pod7
-rw-r--r--crypto/openssl/doc/apps/s_server.pod9
-rw-r--r--crypto/openssl/doc/apps/smime.pod4
-rw-r--r--crypto/openssl/doc/apps/verify.pod13
-rw-r--r--crypto/openssl/doc/crypto/BN_rand.pod3
-rw-r--r--crypto/openssl/doc/crypto/BN_set_bit.pod8
-rw-r--r--crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod8
-rw-r--r--crypto/openssl/doc/crypto/pem.pod27
-rw-r--r--crypto/openssl/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod106
-rw-r--r--crypto/openssl/e_os2.h8
-rw-r--r--crypto/openssl/engines/Makefile13
-rw-r--r--crypto/openssl/engines/ccgost/Makefile18
-rw-r--r--crypto/openssl/engines/ccgost/e_gost_err.c3
-rw-r--r--crypto/openssl/engines/ccgost/e_gost_err.h1
-rw-r--r--crypto/openssl/engines/ccgost/gost2001.c229
-rw-r--r--crypto/openssl/engines/ccgost/gost94_keyx.c6
-rw-r--r--crypto/openssl/engines/ccgost/gost_ameth.c36
-rw-r--r--crypto/openssl/engines/ccgost/gost_pmeth.c2
-rw-r--r--crypto/openssl/engines/ccgost/gost_sign.c87
-rw-r--r--crypto/openssl/engines/e_sureware.c27
-rw-r--r--crypto/openssl/ssl/Makefile54
-rw-r--r--crypto/openssl/ssl/d1_both.c46
-rw-r--r--crypto/openssl/ssl/d1_clnt.c10
-rw-r--r--crypto/openssl/ssl/d1_lib.c3
-rw-r--r--crypto/openssl/ssl/d1_pkt.c2
-rw-r--r--crypto/openssl/ssl/d1_srvr.c28
-rw-r--r--crypto/openssl/ssl/s2_pkt.c14
-rw-r--r--crypto/openssl/ssl/s2_srvr.c104
-rw-r--r--crypto/openssl/ssl/s3_both.c2
-rw-r--r--crypto/openssl/ssl/s3_cbc.c16
-rw-r--r--crypto/openssl/ssl/s3_clnt.c273
-rw-r--r--crypto/openssl/ssl/s3_pkt.c13
-rw-r--r--crypto/openssl/ssl/s3_srvr.c230
-rw-r--r--crypto/openssl/ssl/ssl.h4
-rw-r--r--crypto/openssl/ssl/ssl_err.c3
-rw-r--r--crypto/openssl/ssl/ssl_lib.c8
-rw-r--r--crypto/openssl/ssl/ssl_locl.h1
-rw-r--r--crypto/openssl/ssl/ssl_sess.c131
-rw-r--r--crypto/openssl/ssl/ssl_stat.c6
-rw-r--r--crypto/openssl/ssl/ssltest.c20
-rw-r--r--crypto/openssl/ssl/t1_enc.c9
-rw-r--r--crypto/openssl/ssl/t1_lib.c174
-rw-r--r--crypto/openssl/ssl/tls_srp.c3
-rwxr-xr-xcrypto/openssl/util/mk1mf.pl2
-rw-r--r--crypto/openssl/util/mkerr.pl21
-rw-r--r--crypto/openssl/util/pl/BC-32.pl2
-rw-r--r--crypto/openssl/util/pl/VC-32.pl2
-rw-r--r--etc/Makefile16
-rw-r--r--etc/devd/usb.conf46
-rw-r--r--etc/sendmail/Makefile.depend15
-rw-r--r--games/caesar/Makefile.depend19
-rw-r--r--games/factor/Makefile.depend19
-rw-r--r--games/fortune/datfiles/Makefile.depend11
-rw-r--r--games/fortune/fortune/Makefile.depend18
-rw-r--r--games/fortune/strfile/Makefile.depend18
-rw-r--r--games/fortune/unstr/Makefile.depend18
-rw-r--r--games/grdc/Makefile.depend19
-rw-r--r--games/morse/Makefile.depend18
-rw-r--r--games/number/Makefile.depend18
-rw-r--r--games/pom/Makefile.depend19
-rw-r--r--games/primes/Makefile.depend19
-rw-r--r--games/random/Makefile.depend18
-rw-r--r--gnu/lib/csu/Makefile9
-rw-r--r--gnu/lib/csu/Makefile.depend43
-rw-r--r--gnu/lib/libdialog/Makefile.depend21
-rw-r--r--gnu/lib/libgcc/Makefile5
-rw-r--r--gnu/lib/libgcc/Makefile.depend287
-rw-r--r--gnu/lib/libgcov/Makefile.depend125
-rw-r--r--gnu/lib/libgomp/Makefile.depend85
-rw-r--r--gnu/lib/libreadline/readline/Makefile12
-rw-r--r--gnu/lib/libreadline/readline/Makefile.depend14
-rw-r--r--gnu/lib/libregex/Makefile.depend22
-rw-r--r--gnu/lib/libssp/Makefile.depend20
-rw-r--r--gnu/lib/libssp/libssp_nonshared/Makefile.depend11
-rw-r--r--gnu/lib/libstdc++/Makefile.depend68
-rw-r--r--gnu/lib/libsupc++/Makefile.depend65
-rw-r--r--gnu/usr.bin/binutils/addr2line/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/ar/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/as/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/doc/Makefile.depend11
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile2
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.depend.amd6455
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.depend.host47
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile3
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64121
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.depend.host119
-rw-r--r--gnu/usr.bin/binutils/libbinutils/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/libiberty/Makefile.depend14
-rw-r--r--gnu/usr.bin/binutils/libopcodes/Makefile.depend13
-rw-r--r--gnu/usr.bin/binutils/nm/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/objcopy/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/objdump/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/ranlib/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/readelf/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/size/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/strings/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/strip/Makefile.depend21
-rw-r--r--gnu/usr.bin/cc/c++/Makefile.depend24
-rw-r--r--gnu/usr.bin/cc/c++filt/Makefile.depend23
-rw-r--r--gnu/usr.bin/cc/cc/Makefile.depend22
-rw-r--r--gnu/usr.bin/cc/cc1/Makefile.depend25
-rw-r--r--gnu/usr.bin/cc/cc1plus/Makefile.depend27
-rw-r--r--gnu/usr.bin/cc/cc_int/Makefile.depend16
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile3
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile.depend252
-rw-r--r--gnu/usr.bin/cc/cpp/Makefile.depend24
-rw-r--r--gnu/usr.bin/cc/gcov/Makefile.depend23
-rw-r--r--gnu/usr.bin/cc/include/Makefile.depend13
-rw-r--r--gnu/usr.bin/cc/libcpp/Makefile.depend17
-rw-r--r--gnu/usr.bin/cc/libdecnumber/Makefile.depend16
-rw-r--r--gnu/usr.bin/cc/libiberty/Makefile.depend15
-rw-r--r--gnu/usr.bin/dialog/Makefile.depend21
-rw-r--r--gnu/usr.bin/diff/Makefile.depend25
-rw-r--r--gnu/usr.bin/diff3/Makefile.depend20
-rw-r--r--gnu/usr.bin/dtc/Makefile.depend28
-rw-r--r--gnu/usr.bin/gdb/gdb/Makefile.depend32
-rw-r--r--gnu/usr.bin/gdb/gdbserver/Makefile.depend19
-rw-r--r--gnu/usr.bin/gdb/gdbtui/Makefile.depend32
-rw-r--r--gnu/usr.bin/gdb/kgdb/Makefile.depend.amd6457
-rw-r--r--gnu/usr.bin/gdb/libgdb/Makefile.depend.amd641211
-rw-r--r--gnu/usr.bin/gperf/Makefile.depend22
-rw-r--r--gnu/usr.bin/grep/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/Makefile.inc1
-rw-r--r--gnu/usr.bin/groff/contrib/mm/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devX100-12/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX100-12/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devX100/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX100/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devX75-12/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX75-12/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devX75/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX75/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devascii/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devcp1047/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devdvi/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devhtml/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devlatin1/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devlbp/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devlj4/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devps/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/font/devutf8/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/man/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/devices/grops/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/devices/grotty/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/libs/libbib/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend14
-rw-r--r--gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend16
-rw-r--r--gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend27
-rw-r--r--gnu/usr.bin/groff/src/preproc/grn/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/preproc/html/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/preproc/pic/Makefile.depend27
-rw-r--r--gnu/usr.bin/groff/src/preproc/refer/Makefile.depend26
-rw-r--r--gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/roff/groff/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/roff/grog/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/src/roff/nroff/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/src/roff/psroff/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/src/roff/troff/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend11
-rw-r--r--gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend18
-rw-r--r--gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/tmac/Makefile.depend11
-rw-r--r--gnu/usr.bin/rcs/ci/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/co/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/ident/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/lib/Makefile.depend13
-rw-r--r--gnu/usr.bin/rcs/merge/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/rcs/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/rcsclean/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/rcsdiff/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/rcsfreeze/Makefile.depend11
-rw-r--r--gnu/usr.bin/rcs/rcsmerge/Makefile.depend19
-rw-r--r--gnu/usr.bin/rcs/rlog/Makefile.depend19
-rw-r--r--gnu/usr.bin/sdiff/Makefile.depend20
-rw-r--r--include/Makefile42
-rw-r--r--include/Makefile.depend12
-rw-r--r--include/arpa/Makefile3
-rw-r--r--include/arpa/Makefile.depend11
-rw-r--r--include/gssapi/Makefile1
-rw-r--r--include/gssapi/Makefile.depend11
-rwxr-xr-xinclude/mk-osreldate.sh2
-rw-r--r--include/protocols/Makefile1
-rw-r--r--include/protocols/Makefile.depend11
-rw-r--r--include/rpc/Makefile.depend11
-rw-r--r--include/rpcsvc/Makefile.depend11
-rw-r--r--include/xlocale/Makefile1
-rw-r--r--include/xlocale/Makefile.depend11
-rw-r--r--kerberos5/Makefile.inc2
-rw-r--r--kerberos5/lib/libasn1/Makefile7
-rw-r--r--kerberos5/lib/libasn1/Makefile.depend193
-rw-r--r--kerberos5/lib/libgssapi_krb5/Makefile.depend192
-rw-r--r--kerberos5/lib/libgssapi_ntlm/Makefile.depend27
-rw-r--r--kerberos5/lib/libgssapi_spnego/Makefile.depend124
-rw-r--r--kerberos5/lib/libhdb/Makefile5
-rw-r--r--kerberos5/lib/libhdb/Makefile.depend279
-rw-r--r--kerberos5/lib/libheimbase/Makefile.depend20
-rw-r--r--kerberos5/lib/libheimipcc/Makefile3
-rw-r--r--kerberos5/lib/libheimipcc/Makefile.depend24
-rw-r--r--kerberos5/lib/libheimipcs/Makefile.depend25
-rw-r--r--kerberos5/lib/libheimntlm/Makefile.depend32
-rw-r--r--kerberos5/lib/libhx509/Makefile7
-rw-r--r--kerberos5/lib/libhx509/Makefile.depend446
-rw-r--r--kerberos5/lib/libkadm5clnt/Makefile.depend86
-rw-r--r--kerberos5/lib/libkadm5srv/Makefile.depend110
-rw-r--r--kerberos5/lib/libkafs5/Makefile.depend25
-rw-r--r--kerberos5/lib/libkdc/Makefile.depend32
-rw-r--r--kerberos5/lib/libkrb5/Makefile.depend1100
-rw-r--r--kerberos5/lib/libroken/Makefile.depend177
-rw-r--r--kerberos5/lib/libsl/Makefile.depend15
-rw-r--r--kerberos5/lib/libvers/Makefile.depend16
-rw-r--r--kerberos5/lib/libwind/Makefile.depend61
-rw-r--r--kerberos5/libexec/digest-service/Makefile.depend37
-rw-r--r--kerberos5/libexec/hprop/Makefile.depend36
-rw-r--r--kerberos5/libexec/hpropd/Makefile.depend35
-rw-r--r--kerberos5/libexec/ipropd-master/Makefile.depend38
-rw-r--r--kerberos5/libexec/ipropd-slave/Makefile.depend38
-rw-r--r--kerberos5/libexec/kadmind/Makefile.depend38
-rw-r--r--kerberos5/libexec/kcm/Makefile.depend34
-rw-r--r--kerberos5/libexec/kdc/Makefile.depend36
-rw-r--r--kerberos5/libexec/kdigest/Makefile.depend42
-rw-r--r--kerberos5/libexec/kfd/Makefile.depend31
-rw-r--r--kerberos5/libexec/kimpersonate/Makefile.depend32
-rw-r--r--kerberos5/libexec/kpasswdd/Makefile.depend36
-rw-r--r--kerberos5/tools/asn1_compile/Makefile.depend56
-rw-r--r--kerberos5/tools/make-roken/Makefile.depend19
-rw-r--r--kerberos5/tools/slc/Makefile.depend30
-rw-r--r--kerberos5/usr.bin/hxtool/Makefile.depend36
-rw-r--r--kerberos5/usr.bin/kadmin/Makefile.depend75
-rw-r--r--kerberos5/usr.bin/kcc/Makefile.depend47
-rw-r--r--kerberos5/usr.bin/kdestroy/Makefile.depend32
-rw-r--r--kerberos5/usr.bin/kf/Makefile.depend31
-rw-r--r--kerberos5/usr.bin/kgetcred/Makefile.depend32
-rw-r--r--kerberos5/usr.bin/kinit/Makefile.depend33
-rw-r--r--kerberos5/usr.bin/kpasswd/Makefile.depend34
-rw-r--r--kerberos5/usr.bin/krb5-config/Makefile.depend11
-rw-r--r--kerberos5/usr.bin/ksu/Makefile.depend32
-rw-r--r--kerberos5/usr.bin/string2key/Makefile.depend34
-rw-r--r--kerberos5/usr.bin/verify_krb5_conf/Makefile.depend31
-rw-r--r--kerberos5/usr.sbin/iprop-log/Makefile.depend45
-rw-r--r--kerberos5/usr.sbin/kstash/Makefile.depend35
-rw-r--r--kerberos5/usr.sbin/ktutil/Makefile.depend59
-rw-r--r--lib/atf/libatf-c++/Makefile.depend23
-rw-r--r--lib/atf/libatf-c/Makefile.depend19
-rw-r--r--lib/clang/clang.build.mk22
-rw-r--r--lib/clang/include/Makefile3
-rw-r--r--lib/clang/include/Makefile.depend11
-rw-r--r--lib/clang/libclanganalysis/Makefile.depend196
-rw-r--r--lib/clang/libclangarcmigrate/Makefile.depend286
-rw-r--r--lib/clang/libclangast/Makefile.depend622
-rw-r--r--lib/clang/libclangbasic/Makefile.depend69
-rw-r--r--lib/clang/libclangcodegen/Makefile.depend601
-rw-r--r--lib/clang/libclangdriver/Makefile.depend71
-rw-r--r--lib/clang/libclangedit/Makefile.depend26
-rw-r--r--lib/clang/libclangfrontend/Makefile.depend225
-rw-r--r--lib/clang/libclangfrontendtool/Makefile.depend29
-rw-r--r--lib/clang/libclanglex/Makefile.depend85
-rw-r--r--lib/clang/libclangparse/Makefile.depend250
-rw-r--r--lib/clang/libclangrewrite/Makefile.depend20
-rw-r--r--lib/clang/libclangrewritefrontend/Makefile.depend50
-rw-r--r--lib/clang/libclangsema/Makefile.depend722
-rw-r--r--lib/clang/libclangserialization/Makefile.depend132
-rw-r--r--lib/clang/libclangstaticanalyzercheckers/Makefile.depend792
-rw-r--r--lib/clang/libclangstaticanalyzercore/Makefile.depend332
-rw-r--r--lib/clang/libclangstaticanalyzerfrontend/Makefile.depend66
-rw-r--r--lib/clang/liblldb/Makefile.depend28
-rw-r--r--lib/clang/liblldbAPI/Makefile.depend338
-rw-r--r--lib/clang/liblldbBreakpoint/Makefile.depend88
-rw-r--r--lib/clang/liblldbCommands/Makefile.depend352
-rw-r--r--lib/clang/liblldbCore/Makefile.depend289
-rw-r--r--lib/clang/liblldbDataFormatters/Makefile.depend248
-rw-r--r--lib/clang/liblldbExpression/Makefile.depend195
-rw-r--r--lib/clang/liblldbHostCommon/Makefile.depend46
-rw-r--r--lib/clang/liblldbHostFreeBSD/Makefile.depend25
-rw-r--r--lib/clang/liblldbHostPOSIX/Makefile.depend15
-rw-r--r--lib/clang/liblldbInterpreter/Makefile.depend233
-rw-r--r--lib/clang/liblldbPluginABISysV_ppc/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginABISysV_ppc64/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginABISysV_x86_64/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginCXXItaniumABI/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginDisassemblerLLVM/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginDynamicLoaderPosixDYLD/Makefile.depend34
-rw-r--r--lib/clang/liblldbPluginDynamicLoaderStatic/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginInstructionARM/Makefile.depend16
-rw-r--r--lib/clang/liblldbPluginInstructionARM64/Makefile.depend15
-rw-r--r--lib/clang/liblldbPluginInstrumentationRuntimeAddressSanitizer/Makefile.depend28
-rw-r--r--lib/clang/liblldbPluginJITLoaderGDB/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginMemoryHistoryASan/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginObjectContainerBSDArchive/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginObjectFileELF/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginObjectFileJIT/Makefile.depend28
-rw-r--r--lib/clang/liblldbPluginPlatformFreeBSD/Makefile.depend28
-rw-r--r--lib/clang/liblldbPluginPlatformGDB/Makefile.depend28
-rw-r--r--lib/clang/liblldbPluginProcessElfCore/Makefile.depend26
-rw-r--r--lib/clang/liblldbPluginProcessFreeBSD/Makefile.depend22
-rw-r--r--lib/clang/liblldbPluginProcessGDBRemote/Makefile.depend50
-rw-r--r--lib/clang/liblldbPluginProcessPOSIX/Makefile.depend48
-rw-r--r--lib/clang/liblldbPluginProcessUtility/Makefile.depend90
-rw-r--r--lib/clang/liblldbPluginSymbolFileDWARF/Makefile.depend199
-rw-r--r--lib/clang/liblldbPluginSymbolFileSymtab/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginSymbolVendorELF/Makefile.depend24
-rw-r--r--lib/clang/liblldbPluginUnwindAssemblyInstEmulation/Makefile.depend18
-rw-r--r--lib/clang/liblldbPluginUnwindAssemblyX86/Makefile.depend18
-rw-r--r--lib/clang/liblldbSymbol/Makefile.depend208
-rw-r--r--lib/clang/liblldbTarget/Makefile.depend224
-rw-r--r--lib/clang/liblldbUtility/Makefile.depend15
-rw-r--r--lib/clang/libllvmaarch64asmparser/Makefile.depend24
-rw-r--r--lib/clang/libllvmaarch64codegen/Makefile.depend204
-rw-r--r--lib/clang/libllvmaarch64desc/Makefile.depend48
-rw-r--r--lib/clang/libllvmaarch64disassembler/Makefile.depend24
-rw-r--r--lib/clang/libllvmaarch64info/Makefile.depend16
-rw-r--r--lib/clang/libllvmaarch64instprinter/Makefile.depend26
-rw-r--r--lib/clang/libllvmaarch64utils/Makefile.depend22
-rw-r--r--lib/clang/libllvmanalysis/Makefile.depend58
-rw-r--r--lib/clang/libllvmarmasmparser/Makefile.depend24
-rw-r--r--lib/clang/libllvmarmcodegen/Makefile.depend214
-rw-r--r--lib/clang/libllvmarmdesc/Makefile.depend66
-rw-r--r--lib/clang/libllvmarmdisassembler/Makefile.depend24
-rw-r--r--lib/clang/libllvmarminfo/Makefile.depend22
-rw-r--r--lib/clang/libllvmarminstprinter/Makefile.depend24
-rw-r--r--lib/clang/libllvmasmparser/Makefile.depend15
-rw-r--r--lib/clang/libllvmasmprinter/Makefile.depend18
-rw-r--r--lib/clang/libllvmbitreader/Makefile.depend18
-rw-r--r--lib/clang/libllvmbitwriter/Makefile.depend15
-rw-r--r--lib/clang/libllvmcodegen/Makefile.depend40
-rw-r--r--lib/clang/libllvmcore/Makefile.depend40
-rw-r--r--lib/clang/libllvmexecutionengine/Makefile.depend15
-rw-r--r--lib/clang/libllvminstcombine/Makefile.depend42
-rw-r--r--lib/clang/libllvminstrumentation/Makefile.depend30
-rw-r--r--lib/clang/libllvminterpreter/Makefile.depend24
-rw-r--r--lib/clang/libllvmipa/Makefile.depend24
-rw-r--r--lib/clang/libllvmipo/Makefile.depend30
-rw-r--r--lib/clang/libllvmirreader/Makefile.depend15
-rw-r--r--lib/clang/libllvmlinker/Makefile.depend15
-rw-r--r--lib/clang/libllvmmc/Makefile.depend15
-rw-r--r--lib/clang/libllvmmcdisassembler/Makefile.depend15
-rw-r--r--lib/clang/libllvmmcjit/Makefile.depend15
-rw-r--r--lib/clang/libllvmmcparser/Makefile.depend15
-rw-r--r--lib/clang/libllvmmipsasmparser/Makefile.depend24
-rw-r--r--lib/clang/libllvmmipscodegen/Makefile.depend238
-rw-r--r--lib/clang/libllvmmipsdesc/Makefile.depend72
-rw-r--r--lib/clang/libllvmmipsdisassembler/Makefile.depend24
-rw-r--r--lib/clang/libllvmmipsinfo/Makefile.depend22
-rw-r--r--lib/clang/libllvmmipsinstprinter/Makefile.depend24
-rw-r--r--lib/clang/libllvmobjcarcopts/Makefile.depend18
-rw-r--r--lib/clang/libllvmobject/Makefile.depend15
-rw-r--r--lib/clang/libllvmoption/Makefile.depend15
-rw-r--r--lib/clang/libllvmpowerpcasmparser/Makefile.depend24
-rw-r--r--lib/clang/libllvmpowerpccodegen/Makefile.depend124
-rw-r--r--lib/clang/libllvmpowerpcdesc/Makefile.depend48
-rw-r--r--lib/clang/libllvmpowerpcdisassembler/Makefile.depend24
-rw-r--r--lib/clang/libllvmpowerpcinfo/Makefile.depend22
-rw-r--r--lib/clang/libllvmpowerpcinstprinter/Makefile.depend24
-rw-r--r--lib/clang/libllvmprofiledata/Makefile.depend15
-rw-r--r--lib/clang/libllvmruntimedyld/Makefile.depend15
-rw-r--r--lib/clang/libllvmscalaropts/Makefile.depend74
-rw-r--r--lib/clang/libllvmselectiondag/Makefile.depend30
-rw-r--r--lib/clang/libllvmsparcasmparser/Makefile.depend24
-rw-r--r--lib/clang/libllvmsparccodegen/Makefile.depend82
-rw-r--r--lib/clang/libllvmsparcdesc/Makefile.depend42
-rw-r--r--lib/clang/libllvmsparcdisassembler/Makefile.depend24
-rw-r--r--lib/clang/libllvmsparcinfo/Makefile.depend22
-rw-r--r--lib/clang/libllvmsparcinstprinter/Makefile.depend24
-rw-r--r--lib/clang/libllvmsupport/Makefile.depend17
-rw-r--r--lib/clang/libllvmtablegen/Makefile.depend15
-rw-r--r--lib/clang/libllvmtarget/Makefile.depend15
-rw-r--r--lib/clang/libllvmtransformutils/Makefile.depend46
-rw-r--r--lib/clang/libllvmvectorize/Makefile.depend22
-rw-r--r--lib/clang/libllvmx86asmparser/Makefile.depend30
-rw-r--r--lib/clang/libllvmx86codegen/Makefile.depend136
-rw-r--r--lib/clang/libllvmx86desc/Makefile.depend70
-rw-r--r--lib/clang/libllvmx86disassembler/Makefile.depend22
-rw-r--r--lib/clang/libllvmx86info/Makefile.depend22
-rw-r--r--lib/clang/libllvmx86instprinter/Makefile.depend38
-rw-r--r--lib/clang/libllvmx86utils/Makefile.depend15
-rw-r--r--lib/csu/Makefile.inc5
-rw-r--r--lib/csu/amd64/Makefile.depend12
-rw-r--r--lib/csu/arm/Makefile.depend16
-rw-r--r--lib/csu/i386/Makefile.depend14
-rw-r--r--lib/csu/mips/Makefile.depend16
-rw-r--r--lib/csu/powerpc/Makefile.depend16
-rw-r--r--lib/csu/powerpc64/Makefile.depend16
-rw-r--r--lib/csu/sparc64/Makefile.depend16
-rw-r--r--lib/libalias/libalias/Makefile.depend20
-rw-r--r--lib/libalias/modules/cuseeme/Makefile.depend18
-rw-r--r--lib/libalias/modules/dummy/Makefile.depend18
-rw-r--r--lib/libalias/modules/ftp/Makefile.depend18
-rw-r--r--lib/libalias/modules/irc/Makefile.depend18
-rw-r--r--lib/libalias/modules/nbt/Makefile.depend18
-rw-r--r--lib/libalias/modules/pptp/Makefile.depend18
-rw-r--r--lib/libalias/modules/skinny/Makefile.depend18
-rw-r--r--lib/libalias/modules/smedia/Makefile.depend18
-rw-r--r--lib/libarchive/Makefile.depend24
-rw-r--r--lib/libauditd/Makefile.depend19
-rw-r--r--lib/libbegemot/Makefile.depend19
-rw-r--r--lib/libblocksruntime/Makefile.depend21
-rw-r--r--lib/libbluetooth/Makefile.depend19
-rw-r--r--lib/libbsm/Makefile.depend20
-rw-r--r--lib/libbsnmp/libbsnmp/Makefile.depend20
-rw-r--r--lib/libbz2/Makefile.depend19
-rw-r--r--lib/libc++/Makefile4
-rw-r--r--lib/libc++/Makefile.depend37
-rw-r--r--lib/libc/Makefile18
-rw-r--r--lib/libc/Makefile.depend168
-rw-r--r--lib/libc/arm/aeabi/Makefile.inc8
-rw-r--r--lib/libc/arm/aeabi/Symbol.map17
-rw-r--r--lib/libc/net/sctp_bindx.34
-rw-r--r--lib/libc/resolv/res_comp.c6
-rw-r--r--lib/libc/sys/stack_protector.c13
-rw-r--r--lib/libc_nonshared/Makefile.depend13
-rw-r--r--lib/libcalendar/Makefile.depend18
-rw-r--r--lib/libcam/Makefile.depend20
-rw-r--r--lib/libcapsicum/Makefile.depend20
-rw-r--r--lib/libcom_err/Makefile.depend19
-rw-r--r--lib/libcompat/Makefile.depend13
-rw-r--r--lib/libcompiler_rt/Makefile.depend12
-rw-r--r--lib/libcrypt/Makefile.depend20
-rw-r--r--lib/libcrypt/tests/Makefile.depend22
-rw-r--r--lib/libcuse/Makefile.depend22
-rw-r--r--lib/libcxxrt/Makefile.depend19
-rw-r--r--lib/libcxxrt/Makefile.depend.host14
-rw-r--r--lib/libdevinfo/Makefile.depend19
-rw-r--r--lib/libdevstat/Makefile.depend20
-rw-r--r--lib/libdpv/Makefile.depend24
-rw-r--r--lib/libdwarf/Makefile.depend53
-rw-r--r--lib/libedit/Makefile.depend65
-rw-r--r--lib/libedit/edit/readline/Makefile.depend11
-rw-r--r--lib/libelf/Makefile.depend28
-rw-r--r--lib/libelftc/Makefile.depend14
-rw-r--r--lib/libevent/Makefile.depend15
-rw-r--r--lib/libexecinfo/Makefile.depend20
-rw-r--r--lib/libexpat/Makefile.depend19
-rw-r--r--lib/libfetch/Makefile.depend27
-rw-r--r--lib/libfigpar/Makefile.depend19
-rw-r--r--lib/libgeom/Makefile.depend21
-rw-r--r--lib/libgpib/Makefile.depend20
-rw-r--r--lib/libgpio/Makefile.depend19
-rw-r--r--lib/libgssapi/Makefile.depend20
-rw-r--r--lib/libiconv_modules/BIG5/Makefile.depend21
-rw-r--r--lib/libiconv_modules/DECHanyu/Makefile.depend21
-rw-r--r--lib/libiconv_modules/EUC/Makefile.depend21
-rw-r--r--lib/libiconv_modules/EUCTW/Makefile.depend21
-rw-r--r--lib/libiconv_modules/GBK2K/Makefile.depend21
-rw-r--r--lib/libiconv_modules/HZ/Makefile.depend21
-rw-r--r--lib/libiconv_modules/ISO2022/Makefile.depend21
-rw-r--r--lib/libiconv_modules/JOHAB/Makefile.depend21
-rw-r--r--lib/libiconv_modules/MSKanji/Makefile.depend21
-rw-r--r--lib/libiconv_modules/UES/Makefile.depend21
-rw-r--r--lib/libiconv_modules/UTF1632/Makefile.depend21
-rw-r--r--lib/libiconv_modules/UTF7/Makefile.depend21
-rw-r--r--lib/libiconv_modules/UTF8/Makefile.depend21
-rw-r--r--lib/libiconv_modules/VIQR/Makefile.depend21
-rw-r--r--lib/libiconv_modules/ZW/Makefile.depend21
-rw-r--r--lib/libiconv_modules/iconv_none/Makefile.depend21
-rw-r--r--lib/libiconv_modules/iconv_std/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_646/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_none/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_parallel/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_serial/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_std/Makefile.depend21
-rw-r--r--lib/libiconv_modules/mapper_zone/Makefile.depend21
-rw-r--r--lib/libipsec/Makefile.depend30
-rw-r--r--lib/libjail/Makefile.depend20
-rw-r--r--lib/libkiconv/Makefile.depend19
-rw-r--r--lib/libkvm/Makefile.depend19
-rw-r--r--lib/libldns/Makefile.depend22
-rw-r--r--lib/liblzma/Makefile.depend21
-rw-r--r--lib/libmagic/Makefile.depend20
-rw-r--r--lib/libmagic/config.h18
-rw-r--r--lib/libmd/Makefile.depend40
-rw-r--r--lib/libmd/Makefile.depend.host35
-rw-r--r--lib/libmemstat/Makefile.depend20
-rw-r--r--lib/libmilter/Makefile.depend59
-rw-r--r--lib/libmp/Makefile.depend20
-rw-r--r--lib/libmt/Makefile.depend21
-rw-r--r--lib/libnetbsd/Makefile.depend14
-rw-r--r--lib/libnetgraph/Makefile.depend19
-rw-r--r--lib/libngatm/Makefile.depend20
-rw-r--r--lib/libnv/Makefile.depend19
-rw-r--r--lib/libohash/Makefile.depend13
-rw-r--r--lib/libopie/Makefile.depend21
-rw-r--r--lib/libpam/Makefile2
-rw-r--r--lib/libpam/libpam/Makefile25
-rw-r--r--lib/libpam/libpam/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_chroot/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_deny/Makefile.depend18
-rw-r--r--lib/libpam/modules/pam_echo/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_exec/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_ftpusers/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_group/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_guest/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_krb5/Makefile.depend23
-rw-r--r--lib/libpam/modules/pam_ksu/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_lastlog/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_login_access/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_nologin/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_opie/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_opieaccess/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_passwdqc/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_permit/Makefile.depend18
-rw-r--r--lib/libpam/modules/pam_radius/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_rhosts/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_rootok/Makefile.depend18
-rw-r--r--lib/libpam/modules/pam_securetty/Makefile.depend19
-rw-r--r--lib/libpam/modules/pam_self/Makefile.depend18
-rw-r--r--lib/libpam/modules/pam_ssh/Makefile.depend23
-rw-r--r--lib/libpam/modules/pam_tacplus/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_unix/Makefile.depend23
-rw-r--r--lib/libpam/static_modules/Makefile71
-rw-r--r--lib/libpam/static_modules/Makefile.depend38
-rw-r--r--lib/libpcap/Makefile.depend36
-rw-r--r--lib/libpmc/Makefile.depend19
-rw-r--r--lib/libpmc/libpmc.c63
-rw-r--r--lib/libproc/Makefile3
-rw-r--r--lib/libproc/Makefile.depend23
-rw-r--r--lib/libprocstat/Makefile.depend23
-rw-r--r--lib/libprocstat/zfs/Makefile.depend15
-rw-r--r--lib/libradius/Makefile.depend21
-rw-r--r--lib/librpcsec_gss/Makefile.depend22
-rw-r--r--lib/librpcsvc/Makefile.depend63
-rw-r--r--lib/librt/Makefile.depend20
-rw-r--r--lib/librtld_db/Makefile.depend22
-rw-r--r--lib/libsbuf/Makefile2
-rw-r--r--lib/libsbuf/Makefile.depend19
-rw-r--r--lib/libsbuf/Symbol.map4
-rw-r--r--lib/libsbuf/Version.def3
-rw-r--r--lib/libsdp/Makefile.depend21
-rw-r--r--lib/libsm/Makefile.depend154
-rw-r--r--lib/libsmb/Makefile.depend23
-rw-r--r--lib/libsmdb/Makefile.depend22
-rw-r--r--lib/libsmutil/Makefile.depend27
-rw-r--r--lib/libsqlite3/Makefile.depend20
-rw-r--r--lib/libstand/Makefile.depend59
-rw-r--r--lib/libstdbuf/Makefile.depend21
-rw-r--r--lib/libstdthreads/Makefile.depend22
-rw-r--r--lib/libtacplus/Makefile.depend20
-rw-r--r--lib/libtelnet/Makefile3
-rw-r--r--lib/libtelnet/Makefile.depend18
-rw-r--r--lib/libthr/Makefile.depend18
-rw-r--r--lib/libthr/thread/thr_sig.c4
-rw-r--r--lib/libthread_db/Makefile.depend19
-rw-r--r--lib/libucl/Makefile.depend20
-rw-r--r--lib/libufs/Makefile.depend19
-rw-r--r--lib/libugidfw/Makefile.depend19
-rw-r--r--lib/libugidfw/ugidfw.c12
-rw-r--r--lib/libulog/Makefile.depend20
-rw-r--r--lib/libunbound/Makefile.depend37
-rw-r--r--lib/libusb/Makefile.depend20
-rw-r--r--lib/libusbhid/Makefile.depend19
-rw-r--r--lib/libutil/Makefile2
-rw-r--r--lib/libutil/Makefile.depend20
-rw-r--r--lib/libutil/hexdump.319
-rw-r--r--lib/libvgl/Makefile.depend21
-rw-r--r--lib/libvmmapi/Makefile.depend22
-rw-r--r--lib/libvmmapi/vmmapi.c320
-rw-r--r--lib/libvmmapi/vmmapi.h52
-rw-r--r--lib/libwrap/Makefile.depend20
-rw-r--r--lib/libxo/Makefile.depend19
-rw-r--r--lib/liby/Makefile.depend12
-rw-r--r--lib/libypclnt/Makefile.depend54
-rw-r--r--lib/libz/Makefile.depend19
-rw-r--r--lib/msun/Makefile2
-rw-r--r--lib/msun/Makefile.depend19
-rw-r--r--lib/msun/src/s_ccosh.c41
-rw-r--r--lib/msun/src/s_ccoshf.c25
-rw-r--r--lib/msun/src/s_csinh.c59
-rw-r--r--lib/msun/src/s_csinhf.c31
-rw-r--r--lib/msun/src/s_ctanh.c35
-rw-r--r--lib/msun/src/s_ctanhf.c9
-rw-r--r--lib/ncurses/form/Makefile.depend140
-rw-r--r--lib/ncurses/formw/Makefile.depend139
-rw-r--r--lib/ncurses/menu/Makefile.depend101
-rw-r--r--lib/ncurses/menuw/Makefile.depend100
-rw-r--r--lib/ncurses/ncurses/Makefile2
-rw-r--r--lib/ncurses/ncurses/Makefile.depend1799
-rw-r--r--lib/ncurses/ncursesw/Makefile.depend2530
-rw-r--r--lib/ncurses/panel/Makefile.depend66
-rw-r--r--lib/ncurses/panelw/Makefile.depend65
-rw-r--r--libexec/atf/atf-check/Makefile.depend23
-rw-r--r--libexec/atf/atf-sh/Makefile.depend23
-rw-r--r--libexec/atrun/Makefile.depend20
-rw-r--r--libexec/bootpd/Makefile.depend21
-rw-r--r--libexec/bootpd/bootpgw/Makefile.depend19
-rw-r--r--libexec/bootpd/tools/bootpef/Makefile.depend19
-rw-r--r--libexec/bootpd/tools/bootptest/Makefile.depend19
-rw-r--r--libexec/comsat/Makefile.depend18
-rw-r--r--libexec/fingerd/Makefile.depend20
-rw-r--r--libexec/ftpd/Makefile2
-rw-r--r--libexec/ftpd/Makefile.depend29
-rw-r--r--libexec/getty/Makefile.depend19
-rw-r--r--libexec/mail.local/Makefile.depend23
-rw-r--r--libexec/mknetid/Makefile.depend20
-rw-r--r--libexec/pppoed/Makefile.depend20
-rw-r--r--libexec/rbootd/Makefile.depend18
-rw-r--r--libexec/revnetgroup/Makefile.depend18
-rw-r--r--libexec/rlogind/Makefile.depend20
-rw-r--r--libexec/rpc.rquotad/Makefile.depend23
-rw-r--r--libexec/rpc.rstatd/Makefile.depend23
-rw-r--r--libexec/rpc.rusersd/Makefile.depend21
-rw-r--r--libexec/rpc.rwalld/Makefile.depend22
-rw-r--r--libexec/rpc.sprayd/Makefile.depend21
-rw-r--r--libexec/rshd/Makefile.depend21
-rw-r--r--libexec/rtld-elf/Makefile.depend14
-rw-r--r--libexec/save-entropy/Makefile1
-rw-r--r--libexec/save-entropy/Makefile.depend11
-rw-r--r--libexec/smrsh/Makefile.depend22
-rw-r--r--libexec/talkd/Makefile.depend20
-rw-r--r--libexec/tcpd/Makefile.depend19
-rw-r--r--libexec/telnetd/Makefile.depend35
-rw-r--r--libexec/tftp-proxy/Makefile.depend19
-rw-r--r--libexec/tftpd/Makefile.depend20
-rw-r--r--libexec/ulog-helper/Makefile.depend20
-rw-r--r--libexec/ypxfr/Makefile.depend30
-rw-r--r--release/Makefile.azure53
-rw-r--r--release/Makefile.vm1
-rw-r--r--release/arm/WANDBOARD.conf3
-rw-r--r--release/tools/azure.conf4
-rw-r--r--rescue/librescue/Makefile.depend21
-rw-r--r--sbin/adjkerntz/Makefile.depend18
-rw-r--r--sbin/atm/atmconfig/Makefile.depend24
-rw-r--r--sbin/badsect/Makefile.depend19
-rw-r--r--sbin/bsdlabel/Makefile.depend21
-rw-r--r--sbin/camcontrol/Makefile2
-rw-r--r--sbin/camcontrol/Makefile.depend21
-rw-r--r--sbin/camcontrol/attrib.c509
-rw-r--r--sbin/camcontrol/camcontrol.8145
-rw-r--r--sbin/camcontrol/camcontrol.c27
-rw-r--r--sbin/camcontrol/camcontrol.h3
-rw-r--r--sbin/ccdconfig/Makefile.depend21
-rw-r--r--sbin/clri/Makefile.depend18
-rw-r--r--sbin/comcontrol/Makefile.depend18
-rw-r--r--sbin/conscontrol/Makefile.depend18
-rw-r--r--sbin/ddb/Makefile.depend19
-rw-r--r--sbin/devd/Makefile.depend29
-rw-r--r--sbin/devfs/Makefile.depend18
-rw-r--r--sbin/dhclient/Makefile.depend20
-rw-r--r--sbin/dmesg/Makefile.depend19
-rw-r--r--sbin/dump/Makefile.depend19
-rw-r--r--sbin/dumpfs/Makefile.depend19
-rw-r--r--sbin/dumpon/Makefile.depend18
-rw-r--r--sbin/etherswitchcfg/Makefile.depend18
-rw-r--r--sbin/fdisk/Makefile.depend21
-rw-r--r--sbin/fdisk_pc98/Makefile.depend21
-rw-r--r--sbin/ffsinfo/Makefile.depend19
-rw-r--r--sbin/fsck/Makefile.depend18
-rw-r--r--sbin/fsck_ffs/Makefile.depend19
-rw-r--r--sbin/fsck_msdosfs/Makefile.depend18
-rw-r--r--sbin/fsdb/Makefile.depend21
-rw-r--r--sbin/fsirand/Makefile.depend18
-rw-r--r--sbin/gbde/Makefile.depend25
-rw-r--r--sbin/geom/class/cache/Makefile.depend20
-rw-r--r--sbin/geom/class/concat/Makefile.depend20
-rw-r--r--sbin/geom/class/eli/Makefile.depend22
-rw-r--r--sbin/geom/class/eli/geom_eli.c2
-rw-r--r--sbin/geom/class/journal/Makefile.depend22
-rw-r--r--sbin/geom/class/label/Makefile.depend20
-rw-r--r--sbin/geom/class/mirror/Makefile.depend21
-rw-r--r--sbin/geom/class/mountver/Makefile.depend20
-rw-r--r--sbin/geom/class/multipath/Makefile.depend20
-rw-r--r--sbin/geom/class/multipath/gmultipath.818
-rw-r--r--sbin/geom/class/nop/Makefile.depend20
-rw-r--r--sbin/geom/class/part/Makefile.depend21
-rw-r--r--sbin/geom/class/raid/Makefile.depend21
-rw-r--r--sbin/geom/class/raid3/Makefile.depend21
-rw-r--r--sbin/geom/class/sched/Makefile.depend20
-rw-r--r--sbin/geom/class/shsec/Makefile.depend20
-rw-r--r--sbin/geom/class/stripe/Makefile.depend20
-rw-r--r--sbin/geom/class/virstor/Makefile.depend20
-rw-r--r--sbin/geom/core/Makefile.depend22
-rw-r--r--sbin/ggate/ggatec/Makefile.depend24
-rw-r--r--sbin/ggate/ggated/Makefile.depend22
-rw-r--r--sbin/ggate/ggatel/Makefile.depend23
-rw-r--r--sbin/growfs/Makefile.depend19
-rw-r--r--sbin/gvinum/Makefile.depend24
-rw-r--r--sbin/hastctl/Makefile.depend28
-rw-r--r--sbin/hastd/Makefile.depend32
-rw-r--r--sbin/ifconfig/Makefile.depend23
-rw-r--r--sbin/init/Makefile.depend20
-rw-r--r--sbin/ipf/ipf/Makefile.depend33
-rw-r--r--sbin/ipf/ipfs/Makefile.depend21
-rw-r--r--sbin/ipf/ipfstat/Makefile.depend22
-rw-r--r--sbin/ipf/ipftest/Makefile.depend52
-rw-r--r--sbin/ipf/ipmon/Makefile.depend32
-rw-r--r--sbin/ipf/ipnat/Makefile.depend32
-rw-r--r--sbin/ipf/ippool/Makefile.depend32
-rw-r--r--sbin/ipf/ipresend/Makefile.depend22
-rw-r--r--sbin/ipf/libipf/Makefile.depend15
-rw-r--r--sbin/ipfw/Makefile.depend21
-rw-r--r--sbin/iscontrol/Makefile.depend22
-rw-r--r--sbin/kldconfig/Makefile.depend18
-rw-r--r--sbin/kldload/Makefile.depend18
-rw-r--r--sbin/kldstat/Makefile.depend17
-rw-r--r--sbin/kldunload/Makefile.depend17
-rw-r--r--sbin/ldconfig/Makefile.depend18
-rw-r--r--sbin/md5/Makefile.depend19
-rw-r--r--sbin/mdconfig/Makefile.depend24
-rw-r--r--sbin/mdmfs/Makefile.depend18
-rw-r--r--sbin/mknod/Makefile.depend18
-rw-r--r--sbin/mksnap_ffs/Makefile.depend18
-rw-r--r--sbin/mount/Makefile.depend19
-rw-r--r--sbin/mount_cd9660/Makefile.depend20
-rw-r--r--sbin/mount_fusefs/Makefile.depend18
-rw-r--r--sbin/mount_msdosfs/Makefile.depend20
-rw-r--r--sbin/mount_nfs/Makefile.depend21
-rw-r--r--sbin/mount_nullfs/Makefile.depend18
-rw-r--r--sbin/mount_udf/Makefile.depend19
-rw-r--r--sbin/mount_unionfs/Makefile.depend18
-rw-r--r--sbin/natd/Makefile.depend20
-rw-r--r--sbin/newfs/Makefile.depend20
-rw-r--r--sbin/newfs_msdos/Makefile.depend18
-rw-r--r--sbin/nfsiod/Makefile.depend17
-rw-r--r--sbin/nos-tun/Makefile.depend19
-rw-r--r--sbin/nvmecontrol/Makefile.depend18
-rw-r--r--sbin/pfctl/Makefile.depend24
-rw-r--r--sbin/pflogd/Makefile.depend19
-rw-r--r--sbin/ping/Makefile.depend23
-rw-r--r--sbin/ping6/Makefile.depend22
-rw-r--r--sbin/quotacheck/Makefile.depend19
-rw-r--r--sbin/rcorder/Makefile.depend19
-rw-r--r--sbin/reboot/Makefile.depend18
-rw-r--r--sbin/recoverdisk/Makefile.depend18
-rw-r--r--sbin/resolvconf/Makefile.depend11
-rw-r--r--sbin/restore/Makefile.depend19
-rw-r--r--sbin/route/Makefile.depend21
-rw-r--r--sbin/routed/Makefile.depend23
-rw-r--r--sbin/routed/rtquery/Makefile.depend21
-rw-r--r--sbin/rtsol/Makefile.depend19
-rw-r--r--sbin/savecore/Makefile.depend20
-rw-r--r--sbin/sconfig/Makefile.depend20
-rw-r--r--sbin/setkey/Makefile.depend29
-rw-r--r--sbin/shutdown/Makefile.depend18
-rw-r--r--sbin/spppcontrol/Makefile.depend18
-rw-r--r--sbin/sunlabel/Makefile.depend21
-rw-r--r--sbin/swapon/Makefile.depend19
-rw-r--r--sbin/sysctl/Makefile.depend18
-rw-r--r--sbin/tunefs/Makefile.depend19
-rw-r--r--sbin/umount/Makefile.depend20
-rw-r--r--sbin/umount/umount.85
-rw-r--r--secure/lib/libcrypt/crypt-blowfish.c3
-rw-r--r--secure/lib/libcrypto/Makefile.depend24
-rw-r--r--secure/lib/libcrypto/Makefile.inc4
-rw-r--r--secure/lib/libcrypto/engines/lib4758cca/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libaep/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libatalla/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libchil/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libcswift/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libgost/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libnuron/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libsureware/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/engines/libubsec/Makefile.depend19
-rw-r--r--secure/lib/libcrypto/man/ASN1_OBJECT_new.34
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_length.34
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_new.34
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_print_ex.34
-rw-r--r--secure/lib/libcrypto/man/ASN1_generate_nconf.34
-rw-r--r--secure/lib/libcrypto/man/BIO_ctrl.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_base64.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_buffer.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_cipher.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_md.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_null.34
-rw-r--r--secure/lib/libcrypto/man/BIO_f_ssl.34
-rw-r--r--secure/lib/libcrypto/man/BIO_find_type.34
-rw-r--r--secure/lib/libcrypto/man/BIO_new.34
-rw-r--r--secure/lib/libcrypto/man/BIO_new_CMS.34
-rw-r--r--secure/lib/libcrypto/man/BIO_push.34
-rw-r--r--secure/lib/libcrypto/man/BIO_read.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_accept.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_bio.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_connect.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_fd.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_file.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_mem.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_null.34
-rw-r--r--secure/lib/libcrypto/man/BIO_s_socket.34
-rw-r--r--secure/lib/libcrypto/man/BIO_set_callback.34
-rw-r--r--secure/lib/libcrypto/man/BIO_should_retry.34
-rw-r--r--secure/lib/libcrypto/man/BN_BLINDING_new.34
-rw-r--r--secure/lib/libcrypto/man/BN_CTX_new.34
-rw-r--r--secure/lib/libcrypto/man/BN_CTX_start.34
-rw-r--r--secure/lib/libcrypto/man/BN_add.34
-rw-r--r--secure/lib/libcrypto/man/BN_add_word.34
-rw-r--r--secure/lib/libcrypto/man/BN_bn2bin.34
-rw-r--r--secure/lib/libcrypto/man/BN_cmp.34
-rw-r--r--secure/lib/libcrypto/man/BN_copy.34
-rw-r--r--secure/lib/libcrypto/man/BN_generate_prime.34
-rw-r--r--secure/lib/libcrypto/man/BN_mod_inverse.34
-rw-r--r--secure/lib/libcrypto/man/BN_mod_mul_montgomery.34
-rw-r--r--secure/lib/libcrypto/man/BN_mod_mul_reciprocal.34
-rw-r--r--secure/lib/libcrypto/man/BN_new.34
-rw-r--r--secure/lib/libcrypto/man/BN_num_bytes.34
-rw-r--r--secure/lib/libcrypto/man/BN_rand.37
-rw-r--r--secure/lib/libcrypto/man/BN_set_bit.312
-rw-r--r--secure/lib/libcrypto/man/BN_swap.34
-rw-r--r--secure/lib/libcrypto/man/BN_zero.34
-rw-r--r--secure/lib/libcrypto/man/CMS_add0_cert.34
-rw-r--r--secure/lib/libcrypto/man/CMS_add1_recipient_cert.34
-rw-r--r--secure/lib/libcrypto/man/CMS_add1_signer.34
-rw-r--r--secure/lib/libcrypto/man/CMS_compress.34
-rw-r--r--secure/lib/libcrypto/man/CMS_decrypt.34
-rw-r--r--secure/lib/libcrypto/man/CMS_encrypt.34
-rw-r--r--secure/lib/libcrypto/man/CMS_final.34
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_RecipientInfos.34
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_SignerInfos.34
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_type.34
-rw-r--r--secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.34
-rw-r--r--secure/lib/libcrypto/man/CMS_sign.34
-rw-r--r--secure/lib/libcrypto/man/CMS_sign_receipt.34
-rw-r--r--secure/lib/libcrypto/man/CMS_uncompress.34
-rw-r--r--secure/lib/libcrypto/man/CMS_verify.34
-rw-r--r--secure/lib/libcrypto/man/CMS_verify_receipt.34
-rw-r--r--secure/lib/libcrypto/man/CONF_modules_free.34
-rw-r--r--secure/lib/libcrypto/man/CONF_modules_load_file.34
-rw-r--r--secure/lib/libcrypto/man/CRYPTO_set_ex_data.34
-rw-r--r--secure/lib/libcrypto/man/DH_generate_key.34
-rw-r--r--secure/lib/libcrypto/man/DH_generate_parameters.34
-rw-r--r--secure/lib/libcrypto/man/DH_get_ex_new_index.34
-rw-r--r--secure/lib/libcrypto/man/DH_new.34
-rw-r--r--secure/lib/libcrypto/man/DH_set_method.34
-rw-r--r--secure/lib/libcrypto/man/DH_size.34
-rw-r--r--secure/lib/libcrypto/man/DSA_SIG_new.34
-rw-r--r--secure/lib/libcrypto/man/DSA_do_sign.34
-rw-r--r--secure/lib/libcrypto/man/DSA_dup_DH.34
-rw-r--r--secure/lib/libcrypto/man/DSA_generate_key.34
-rw-r--r--secure/lib/libcrypto/man/DSA_generate_parameters.34
-rw-r--r--secure/lib/libcrypto/man/DSA_get_ex_new_index.34
-rw-r--r--secure/lib/libcrypto/man/DSA_new.34
-rw-r--r--secure/lib/libcrypto/man/DSA_set_method.34
-rw-r--r--secure/lib/libcrypto/man/DSA_sign.34
-rw-r--r--secure/lib/libcrypto/man/DSA_size.34
-rw-r--r--secure/lib/libcrypto/man/ERR_GET_LIB.34
-rw-r--r--secure/lib/libcrypto/man/ERR_clear_error.34
-rw-r--r--secure/lib/libcrypto/man/ERR_error_string.34
-rw-r--r--secure/lib/libcrypto/man/ERR_get_error.34
-rw-r--r--secure/lib/libcrypto/man/ERR_load_crypto_strings.34
-rw-r--r--secure/lib/libcrypto/man/ERR_load_strings.34
-rw-r--r--secure/lib/libcrypto/man/ERR_print_errors.34
-rw-r--r--secure/lib/libcrypto/man/ERR_put_error.34
-rw-r--r--secure/lib/libcrypto/man/ERR_remove_state.34
-rw-r--r--secure/lib/libcrypto/man/ERR_set_mark.34
-rw-r--r--secure/lib/libcrypto/man/EVP_BytesToKey.34
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestSignInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestVerifyInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_EncryptInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_OpenInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_CTX_new.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_cmp.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_decrypt.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_derive.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_encrypt.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_keygen.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_new.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_print_private.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_sign.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_verify.34
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_verify_recover.34
-rw-r--r--secure/lib/libcrypto/man/EVP_SealInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_SignInit.34
-rw-r--r--secure/lib/libcrypto/man/EVP_VerifyInit.34
-rw-r--r--secure/lib/libcrypto/man/OBJ_nid2obj.34
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_Applink.34
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.34
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_config.34
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_ia32cap.34
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.34
-rw-r--r--secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.34
-rw-r--r--secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.34
-rw-r--r--secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.34
-rw-r--r--secure/lib/libcrypto/man/PKCS12_create.34
-rw-r--r--secure/lib/libcrypto/man/PKCS12_parse.34
-rw-r--r--secure/lib/libcrypto/man/PKCS7_decrypt.34
-rw-r--r--secure/lib/libcrypto/man/PKCS7_encrypt.34
-rw-r--r--secure/lib/libcrypto/man/PKCS7_sign.34
-rw-r--r--secure/lib/libcrypto/man/PKCS7_sign_add_signer.34
-rw-r--r--secure/lib/libcrypto/man/PKCS7_verify.34
-rw-r--r--secure/lib/libcrypto/man/RAND_add.34
-rw-r--r--secure/lib/libcrypto/man/RAND_bytes.34
-rw-r--r--secure/lib/libcrypto/man/RAND_cleanup.34
-rw-r--r--secure/lib/libcrypto/man/RAND_egd.34
-rw-r--r--secure/lib/libcrypto/man/RAND_load_file.34
-rw-r--r--secure/lib/libcrypto/man/RAND_set_rand_method.34
-rw-r--r--secure/lib/libcrypto/man/RSA_blinding_on.34
-rw-r--r--secure/lib/libcrypto/man/RSA_check_key.34
-rw-r--r--secure/lib/libcrypto/man/RSA_generate_key.34
-rw-r--r--secure/lib/libcrypto/man/RSA_get_ex_new_index.34
-rw-r--r--secure/lib/libcrypto/man/RSA_new.34
-rw-r--r--secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.34
-rw-r--r--secure/lib/libcrypto/man/RSA_print.34
-rw-r--r--secure/lib/libcrypto/man/RSA_private_encrypt.34
-rw-r--r--secure/lib/libcrypto/man/RSA_public_encrypt.34
-rw-r--r--secure/lib/libcrypto/man/RSA_set_method.34
-rw-r--r--secure/lib/libcrypto/man/RSA_sign.34
-rw-r--r--secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.34
-rw-r--r--secure/lib/libcrypto/man/RSA_size.34
-rw-r--r--secure/lib/libcrypto/man/SMIME_read_CMS.34
-rw-r--r--secure/lib/libcrypto/man/SMIME_read_PKCS7.34
-rw-r--r--secure/lib/libcrypto/man/SMIME_write_CMS.34
-rw-r--r--secure/lib/libcrypto/man/SMIME_write_PKCS7.34
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.34
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.34
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.34
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_print_ex.34
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_get_error.34
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.34
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_new.34
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.34
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.34
-rw-r--r--secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.312
-rw-r--r--secure/lib/libcrypto/man/X509_new.34
-rw-r--r--secure/lib/libcrypto/man/X509_verify_cert.34
-rw-r--r--secure/lib/libcrypto/man/bio.34
-rw-r--r--secure/lib/libcrypto/man/blowfish.34
-rw-r--r--secure/lib/libcrypto/man/bn.34
-rw-r--r--secure/lib/libcrypto/man/bn_internal.34
-rw-r--r--secure/lib/libcrypto/man/buffer.34
-rw-r--r--secure/lib/libcrypto/man/crypto.34
-rw-r--r--secure/lib/libcrypto/man/d2i_ASN1_OBJECT.34
-rw-r--r--secure/lib/libcrypto/man/d2i_CMS_ContentInfo.34
-rw-r--r--secure/lib/libcrypto/man/d2i_DHparams.34
-rw-r--r--secure/lib/libcrypto/man/d2i_DSAPublicKey.34
-rw-r--r--secure/lib/libcrypto/man/d2i_ECPrivateKey.34
-rw-r--r--secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.34
-rw-r--r--secure/lib/libcrypto/man/d2i_RSAPublicKey.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_ALGOR.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_CRL.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_NAME.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_REQ.34
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_SIG.34
-rw-r--r--secure/lib/libcrypto/man/des.34
-rw-r--r--secure/lib/libcrypto/man/dh.34
-rw-r--r--secure/lib/libcrypto/man/dsa.34
-rw-r--r--secure/lib/libcrypto/man/ecdsa.34
-rw-r--r--secure/lib/libcrypto/man/engine.34
-rw-r--r--secure/lib/libcrypto/man/err.34
-rw-r--r--secure/lib/libcrypto/man/evp.34
-rw-r--r--secure/lib/libcrypto/man/hmac.34
-rw-r--r--secure/lib/libcrypto/man/i2d_CMS_bio_stream.34
-rw-r--r--secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.34
-rw-r--r--secure/lib/libcrypto/man/lh_stats.34
-rw-r--r--secure/lib/libcrypto/man/lhash.34
-rw-r--r--secure/lib/libcrypto/man/md5.34
-rw-r--r--secure/lib/libcrypto/man/mdc2.34
-rw-r--r--secure/lib/libcrypto/man/pem.331
-rw-r--r--secure/lib/libcrypto/man/rand.34
-rw-r--r--secure/lib/libcrypto/man/rc4.34
-rw-r--r--secure/lib/libcrypto/man/ripemd.34
-rw-r--r--secure/lib/libcrypto/man/rsa.34
-rw-r--r--secure/lib/libcrypto/man/sha.34
-rw-r--r--secure/lib/libcrypto/man/threads.34
-rw-r--r--secure/lib/libcrypto/man/ui.34
-rw-r--r--secure/lib/libcrypto/man/ui_compat.34
-rw-r--r--secure/lib/libcrypto/man/x509.34
-rw-r--r--secure/lib/libssh/Makefile.depend27
-rw-r--r--secure/lib/libssl/Makefile.depend21
-rw-r--r--secure/lib/libssl/man/SSL_CIPHER_get_name.34
-rw-r--r--secure/lib/libssl/man/SSL_COMP_add_compression_method.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_add_session.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_ctrl.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_flush_sessions.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_free.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_get_ex_new_index.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_get_verify_mode.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_load_verify_locations.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_new.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_number.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sessions.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cert_store.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cipher_list.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_client_CA_list.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_generate_session_id.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_info_callback.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_max_cert_list.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_mode.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_msg_callback.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_options.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_read_ahead.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_session_id_context.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_ssl_version.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_timeout.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3112
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_verify.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_use_certificate.34
-rw-r--r--secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.34
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_free.34
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.34
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_get_time.34
-rw-r--r--secure/lib/libssl/man/SSL_accept.34
-rw-r--r--secure/lib/libssl/man/SSL_alert_type_string.34
-rw-r--r--secure/lib/libssl/man/SSL_clear.34
-rw-r--r--secure/lib/libssl/man/SSL_connect.34
-rw-r--r--secure/lib/libssl/man/SSL_do_handshake.34
-rw-r--r--secure/lib/libssl/man/SSL_free.34
-rw-r--r--secure/lib/libssl/man/SSL_get_SSL_CTX.34
-rw-r--r--secure/lib/libssl/man/SSL_get_ciphers.34
-rw-r--r--secure/lib/libssl/man/SSL_get_client_CA_list.34
-rw-r--r--secure/lib/libssl/man/SSL_get_current_cipher.34
-rw-r--r--secure/lib/libssl/man/SSL_get_default_timeout.34
-rw-r--r--secure/lib/libssl/man/SSL_get_error.34
-rw-r--r--secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.34
-rw-r--r--secure/lib/libssl/man/SSL_get_ex_new_index.34
-rw-r--r--secure/lib/libssl/man/SSL_get_fd.34
-rw-r--r--secure/lib/libssl/man/SSL_get_peer_cert_chain.34
-rw-r--r--secure/lib/libssl/man/SSL_get_peer_certificate.34
-rw-r--r--secure/lib/libssl/man/SSL_get_psk_identity.34
-rw-r--r--secure/lib/libssl/man/SSL_get_rbio.34
-rw-r--r--secure/lib/libssl/man/SSL_get_session.34
-rw-r--r--secure/lib/libssl/man/SSL_get_verify_result.34
-rw-r--r--secure/lib/libssl/man/SSL_get_version.34
-rw-r--r--secure/lib/libssl/man/SSL_library_init.34
-rw-r--r--secure/lib/libssl/man/SSL_load_client_CA_file.34
-rw-r--r--secure/lib/libssl/man/SSL_new.34
-rw-r--r--secure/lib/libssl/man/SSL_pending.34
-rw-r--r--secure/lib/libssl/man/SSL_read.34
-rw-r--r--secure/lib/libssl/man/SSL_rstate_string.34
-rw-r--r--secure/lib/libssl/man/SSL_session_reused.34
-rw-r--r--secure/lib/libssl/man/SSL_set_bio.34
-rw-r--r--secure/lib/libssl/man/SSL_set_connect_state.34
-rw-r--r--secure/lib/libssl/man/SSL_set_fd.34
-rw-r--r--secure/lib/libssl/man/SSL_set_session.34
-rw-r--r--secure/lib/libssl/man/SSL_set_shutdown.34
-rw-r--r--secure/lib/libssl/man/SSL_set_verify_result.34
-rw-r--r--secure/lib/libssl/man/SSL_shutdown.34
-rw-r--r--secure/lib/libssl/man/SSL_state_string.34
-rw-r--r--secure/lib/libssl/man/SSL_want.34
-rw-r--r--secure/lib/libssl/man/SSL_write.34
-rw-r--r--secure/lib/libssl/man/d2i_SSL_SESSION.34
-rw-r--r--secure/lib/libssl/man/ssl.34
-rw-r--r--secure/libexec/sftp-server/Makefile.depend26
-rw-r--r--secure/libexec/ssh-keysign/Makefile.depend26
-rw-r--r--secure/libexec/ssh-pkcs11-helper/Makefile.depend26
-rw-r--r--secure/usr.bin/bdes/Makefile.depend19
-rw-r--r--secure/usr.bin/openssl/Makefile.depend22
-rw-r--r--secure/usr.bin/openssl/man/CA.pl.14
-rw-r--r--secure/usr.bin/openssl/man/asn1parse.14
-rw-r--r--secure/usr.bin/openssl/man/c_rehash.14
-rw-r--r--secure/usr.bin/openssl/man/ca.14
-rw-r--r--secure/usr.bin/openssl/man/ciphers.14
-rw-r--r--secure/usr.bin/openssl/man/cms.111
-rw-r--r--secure/usr.bin/openssl/man/crl.14
-rw-r--r--secure/usr.bin/openssl/man/crl2pkcs7.14
-rw-r--r--secure/usr.bin/openssl/man/dgst.14
-rw-r--r--secure/usr.bin/openssl/man/dhparam.117
-rw-r--r--secure/usr.bin/openssl/man/dsa.14
-rw-r--r--secure/usr.bin/openssl/man/dsaparam.14
-rw-r--r--secure/usr.bin/openssl/man/ec.14
-rw-r--r--secure/usr.bin/openssl/man/ecparam.14
-rw-r--r--secure/usr.bin/openssl/man/enc.14
-rw-r--r--secure/usr.bin/openssl/man/errstr.14
-rw-r--r--secure/usr.bin/openssl/man/gendsa.14
-rw-r--r--secure/usr.bin/openssl/man/genpkey.14
-rw-r--r--secure/usr.bin/openssl/man/genrsa.14
-rw-r--r--secure/usr.bin/openssl/man/nseq.14
-rw-r--r--secure/usr.bin/openssl/man/ocsp.111
-rw-r--r--secure/usr.bin/openssl/man/openssl.14
-rw-r--r--secure/usr.bin/openssl/man/passwd.14
-rw-r--r--secure/usr.bin/openssl/man/pkcs12.14
-rw-r--r--secure/usr.bin/openssl/man/pkcs7.14
-rw-r--r--secure/usr.bin/openssl/man/pkcs8.14
-rw-r--r--secure/usr.bin/openssl/man/pkey.14
-rw-r--r--secure/usr.bin/openssl/man/pkeyparam.14
-rw-r--r--secure/usr.bin/openssl/man/pkeyutl.14
-rw-r--r--secure/usr.bin/openssl/man/rand.14
-rw-r--r--secure/usr.bin/openssl/man/req.14
-rw-r--r--secure/usr.bin/openssl/man/rsa.14
-rw-r--r--secure/usr.bin/openssl/man/rsautl.14
-rw-r--r--secure/usr.bin/openssl/man/s_client.112
-rw-r--r--secure/usr.bin/openssl/man/s_server.111
-rw-r--r--secure/usr.bin/openssl/man/s_time.14
-rw-r--r--secure/usr.bin/openssl/man/sess_id.14
-rw-r--r--secure/usr.bin/openssl/man/smime.111
-rw-r--r--secure/usr.bin/openssl/man/speed.14
-rw-r--r--secure/usr.bin/openssl/man/spkac.14
-rw-r--r--secure/usr.bin/openssl/man/ts.14
-rw-r--r--secure/usr.bin/openssl/man/tsget.14
-rw-r--r--secure/usr.bin/openssl/man/verify.115
-rw-r--r--secure/usr.bin/openssl/man/version.14
-rw-r--r--secure/usr.bin/openssl/man/x509.14
-rw-r--r--secure/usr.bin/openssl/man/x509v3_config.14
-rw-r--r--secure/usr.bin/scp/Makefile.depend26
-rw-r--r--secure/usr.bin/sftp/Makefile.depend28
-rw-r--r--secure/usr.bin/ssh-add/Makefile.depend26
-rw-r--r--secure/usr.bin/ssh-agent/Makefile.depend26
-rw-r--r--secure/usr.bin/ssh-keygen/Makefile.depend26
-rw-r--r--secure/usr.bin/ssh-keyscan/Makefile.depend26
-rw-r--r--secure/usr.bin/ssh/Makefile.depend31
-rw-r--r--secure/usr.sbin/sshd/Makefile.depend40
-rw-r--r--share/colldef/Makefile2
-rw-r--r--share/colldef/Makefile.depend11
-rw-r--r--share/dict/Makefile2
-rw-r--r--share/dict/Makefile.depend11
-rw-r--r--share/doc/IPv6/Makefile1
-rw-r--r--share/doc/IPv6/Makefile.depend11
-rw-r--r--share/doc/atf/Makefile2
-rw-r--r--share/doc/atf/Makefile.depend11
-rw-r--r--share/doc/legal/intel_ipw/Makefile1
-rw-r--r--share/doc/legal/intel_ipw/Makefile.depend11
-rw-r--r--share/doc/legal/intel_iwi/Makefile1
-rw-r--r--share/doc/legal/intel_iwi/Makefile.depend11
-rw-r--r--share/doc/legal/intel_iwn/Makefile1
-rw-r--r--share/doc/legal/intel_iwn/Makefile.depend11
-rw-r--r--share/doc/legal/intel_wpi/Makefile1
-rw-r--r--share/doc/legal/intel_wpi/Makefile.depend11
-rw-r--r--share/doc/legal/realtek/Makefile1
-rw-r--r--share/doc/legal/realtek/Makefile.depend13
-rw-r--r--share/doc/llvm/Makefile2
-rw-r--r--share/doc/llvm/Makefile.depend15
-rw-r--r--share/doc/llvm/clang/Makefile2
-rw-r--r--share/doc/llvm/clang/Makefile.depend11
-rw-r--r--share/doc/pjdfstest/Makefile2
-rw-r--r--share/doc/usd/13.viref/Makefile11
-rw-r--r--share/doc/usd/13.viref/merge.awk17
-rw-r--r--share/dtrace/toolkit/Makefile2
-rw-r--r--share/dtrace/toolkit/Makefile.depend11
-rwxr-xr-xshare/examples/bhyve/vmrun.sh12
-rw-r--r--share/examples/ipfilter/Makefile.depend11
-rw-r--r--share/examples/libvgl/Makefile.depend20
-rw-r--r--share/examples/pf/Makefile2
-rw-r--r--share/examples/pf/Makefile.depend11
-rw-r--r--share/i18n/csmapper/APPLE/Makefile.depend12
-rw-r--r--share/i18n/csmapper/AST/Makefile.depend12
-rw-r--r--share/i18n/csmapper/BIG5/Makefile.depend12
-rw-r--r--share/i18n/csmapper/CNS/Makefile.depend12
-rw-r--r--share/i18n/csmapper/CP/Makefile.depend12
-rw-r--r--share/i18n/csmapper/EBCDIC/Makefile.depend12
-rw-r--r--share/i18n/csmapper/GB/Makefile.depend12
-rw-r--r--share/i18n/csmapper/GEORGIAN/Makefile.depend12
-rw-r--r--share/i18n/csmapper/ISO-8859/Makefile.depend12
-rw-r--r--share/i18n/csmapper/ISO646/Makefile.depend11
-rw-r--r--share/i18n/csmapper/JIS/Makefile.depend12
-rw-r--r--share/i18n/csmapper/KAZAKH/Makefile.depend12
-rw-r--r--share/i18n/csmapper/KOI/Makefile.depend12
-rw-r--r--share/i18n/csmapper/KS/Makefile.depend12
-rw-r--r--share/i18n/csmapper/MISC/Makefile.depend12
-rw-r--r--share/i18n/csmapper/Makefile.depend28
-rw-r--r--share/i18n/csmapper/Makefile.inc5
-rw-r--r--share/i18n/csmapper/TCVN/Makefile.depend12
-rw-r--r--share/i18n/esdb/APPLE/Makefile.depend12
-rw-r--r--share/i18n/esdb/AST/Makefile.depend12
-rw-r--r--share/i18n/esdb/BIG5/Makefile.depend12
-rw-r--r--share/i18n/esdb/CP/Makefile.depend12
-rw-r--r--share/i18n/esdb/DEC/Makefile.depend12
-rw-r--r--share/i18n/esdb/EBCDIC/Makefile.depend12
-rw-r--r--share/i18n/esdb/EUC/Makefile.depend12
-rw-r--r--share/i18n/esdb/GB/Makefile.depend12
-rw-r--r--share/i18n/esdb/GEORGIAN/Makefile.depend12
-rw-r--r--share/i18n/esdb/ISO-2022/Makefile.depend12
-rw-r--r--share/i18n/esdb/ISO-8859/Makefile.depend12
-rw-r--r--share/i18n/esdb/ISO646/Makefile.depend12
-rw-r--r--share/i18n/esdb/KAZAKH/Makefile.depend12
-rw-r--r--share/i18n/esdb/KOI/Makefile.depend12
-rw-r--r--share/i18n/esdb/MISC/Makefile.depend12
-rw-r--r--share/i18n/esdb/Makefile.depend29
-rw-r--r--share/i18n/esdb/Makefile.inc5
-rw-r--r--share/i18n/esdb/TCVN/Makefile.depend12
-rw-r--r--share/i18n/esdb/UTF/Makefile.depend12
-rw-r--r--share/man/man1/Makefile.depend11
-rw-r--r--share/man/man3/Makefile.depend11
-rw-r--r--share/man/man4/Makefile1
-rw-r--r--share/man/man4/Makefile.depend11
-rw-r--r--share/man/man4/aacraid.49
-rw-r--r--share/man/man4/acpi_hp.416
-rw-r--r--share/man/man4/acpi_ibm.48
-rw-r--r--share/man/man4/acpi_panasonic.44
-rw-r--r--share/man/man4/ada.420
-rw-r--r--share/man/man4/bwn.410
-rw-r--r--share/man/man4/man4.arm/Makefile.depend15
-rw-r--r--share/man/man4/man4.i386/Makefile.depend15
-rw-r--r--share/man/man4/man4.powerpc/Makefile.depend15
-rw-r--r--share/man/man4/man4.sparc64/Makefile.depend15
-rw-r--r--share/man/man4/ugold.460
-rw-r--r--share/man/man5/Makefile.depend11
-rw-r--r--share/man/man5/src.conf.526
-rw-r--r--share/man/man6/Makefile.depend11
-rw-r--r--share/man/man7/Makefile.depend11
-rw-r--r--share/man/man8/Makefile.depend11
-rw-r--r--share/man/man9/Makefile.depend11
-rw-r--r--share/man/man9/ifnet.92
-rw-r--r--share/man/man9/pci_iov_schema.914
-rw-r--r--share/man/man9/sbuf.920
-rw-r--r--share/man/man9/taskqueue.94
-rw-r--r--share/me/Makefile.depend11
-rw-r--r--share/misc/Makefile1
-rw-r--r--share/misc/Makefile.depend11
-rw-r--r--share/mk/Makefile10
-rw-r--r--share/mk/atf.test.mk84
-rw-r--r--share/mk/auto.obj.mk65
-rw-r--r--share/mk/bsd.compiler.mk8
-rw-r--r--share/mk/bsd.crunchgen.mk5
-rw-r--r--share/mk/bsd.dep.mk9
-rw-r--r--share/mk/bsd.doc.mk2
-rw-r--r--share/mk/bsd.files.mk22
-rw-r--r--share/mk/bsd.incs.mk23
-rw-r--r--share/mk/bsd.init.mk10
-rw-r--r--share/mk/bsd.lib.mk64
-rw-r--r--share/mk/bsd.man.mk16
-rw-r--r--share/mk/bsd.nls.mk11
-rw-r--r--share/mk/bsd.obj.mk58
-rw-r--r--share/mk/bsd.opts.mk12
-rw-r--r--share/mk/bsd.own.mk2
-rw-r--r--share/mk/bsd.prog.mk9
-rw-r--r--share/mk/bsd.progs.mk22
-rw-r--r--share/mk/bsd.subdir.mk11
-rw-r--r--share/mk/bsd.sys.mk112
-rw-r--r--share/mk/bsd.test.mk25
-rw-r--r--share/mk/dirdeps.mk652
-rw-r--r--share/mk/gendirdeps.mk347
-rw-r--r--share/mk/host-target.mk36
-rw-r--r--share/mk/install-new.mk54
-rw-r--r--share/mk/local.autodep.mk25
-rw-r--r--share/mk/local.dirdeps.mk99
-rw-r--r--share/mk/local.gendirdeps.mk50
-rw-r--r--share/mk/local.init.mk35
-rw-r--r--share/mk/local.meta.sys.mk209
-rw-r--r--share/mk/local.sys.env.mk43
-rw-r--r--share/mk/local.sys.mk25
-rw-r--r--share/mk/meta.autodep.mk294
-rw-r--r--share/mk/meta.stage.mk289
-rw-r--r--share/mk/meta.subdir.mk80
-rw-r--r--share/mk/meta.sys.mk143
-rwxr-xr-xshare/mk/meta2deps.py714
-rwxr-xr-xshare/mk/meta2deps.sh404
-rw-r--r--share/mk/src.libnames.mk4
-rw-r--r--share/mk/src.opts.mk7
-rw-r--r--share/mk/src.sys.env.mk24
-rw-r--r--share/mk/src.sys.mk17
-rwxr-xr-xshare/mk/stage-install.sh99
-rw-r--r--share/mk/sys.dependfile.mk58
-rw-r--r--share/mk/sys.mk50
-rw-r--r--share/mklocale/Makefile2
-rw-r--r--share/mklocale/Makefile.depend11
-rw-r--r--share/monetdef/Makefile2
-rw-r--r--share/monetdef/Makefile.depend11
-rw-r--r--share/msgdef/Makefile2
-rw-r--r--share/msgdef/Makefile.depend11
-rw-r--r--share/numericdef/Makefile2
-rw-r--r--share/numericdef/Makefile.depend11
-rw-r--r--share/security/Makefile.depend15
-rw-r--r--share/sendmail/Makefile2
-rw-r--r--share/sendmail/Makefile.depend11
-rw-r--r--share/skel/Makefile1
-rw-r--r--share/skel/Makefile.depend11
-rw-r--r--share/snmp/mibs/Makefile1
-rw-r--r--share/snmp/mibs/Makefile.depend11
-rw-r--r--share/syscons/fonts/Makefile2
-rw-r--r--share/syscons/fonts/Makefile.depend11
-rw-r--r--share/syscons/keymaps/Makefile2
-rw-r--r--share/syscons/keymaps/Makefile.depend11
-rw-r--r--share/syscons/scrnmaps/Makefile.depend17
-rw-r--r--share/tabset/Makefile.depend11
-rw-r--r--share/termcap/Makefile.depend11
-rw-r--r--share/timedef/Makefile2
-rw-r--r--share/timedef/Makefile.depend11
-rw-r--r--share/zoneinfo/Makefile.depend11
-rw-r--r--sys/amd64/amd64/gdb_machdep.c4
-rw-r--r--sys/amd64/amd64/trap.c4
-rw-r--r--sys/amd64/conf/NOTES17
-rw-r--r--sys/amd64/include/vmm.h35
-rw-r--r--sys/amd64/include/vmm_dev.h38
-rw-r--r--sys/amd64/linux/linux_machdep.c2
-rw-r--r--sys/amd64/linux32/linux32_machdep.c2
-rw-r--r--sys/amd64/vmm/amd/svm.c2
-rw-r--r--sys/amd64/vmm/intel/vmx.c2
-rw-r--r--sys/amd64/vmm/io/ppt.c16
-rw-r--r--sys/amd64/vmm/vmm.c471
-rw-r--r--sys/amd64/vmm/vmm_dev.c398
-rw-r--r--sys/amd64/vmm/vmm_instruction_emul.c12
-rw-r--r--sys/amd64/vmm/vmm_mem.c32
-rw-r--r--sys/amd64/vmm/vmm_mem.h2
-rw-r--r--sys/arm/arm/bcopyinout.S3
-rw-r--r--sys/arm/arm/bcopyinout_xscale.S4
-rw-r--r--sys/arm/arm/copystr.S3
-rw-r--r--sys/arm/arm/generic_timer.c112
-rw-r--r--sys/arm/arm/locore-v4.S3
-rw-r--r--sys/arm/arm/locore-v6.S2
-rw-r--r--sys/arm/arm/machdep.c2
-rw-r--r--sys/arm/arm/trap-v6.c4
-rw-r--r--sys/arm/arm/trap.c19
-rw-r--r--sys/arm/conf/BEAGLEBONE8
-rw-r--r--sys/arm/conf/NOTES23
-rw-r--r--sys/arm/include/pcpu.h6
-rw-r--r--sys/arm/ti/am335x/am335x_lcd.c579
-rw-r--r--sys/arm/ti/am335x/am335x_lcd.h8
-rw-r--r--sys/arm/ti/am335x/am335x_pmic.c2
-rw-r--r--sys/arm/ti/am335x/am335x_prcm.c88
-rw-r--r--sys/arm/ti/am335x/files.am335x3
-rw-r--r--sys/arm/ti/am335x/hdmi.h38
-rw-r--r--sys/arm/ti/am335x/hdmi_if.m50
-rw-r--r--sys/arm/ti/am335x/tda19988.c810
-rw-r--r--sys/arm/ti/am335x/tps65217x.h2
-rw-r--r--sys/arm/ti/omap4/omap4_prcm_clks.c14
-rw-r--r--sys/arm/ti/ti_prcm.c37
-rw-r--r--sys/arm/ti/ti_prcm.h3
-rw-r--r--sys/arm64/acpica/OsdEnvironment.c76
-rw-r--r--sys/arm64/acpica/acpi_machdep.c217
-rw-r--r--sys/arm64/acpica/acpi_wakeup.c61
-rw-r--r--sys/arm64/arm64/db_interface.c4
-rw-r--r--sys/arm64/arm64/db_trace.c25
-rw-r--r--sys/arm64/arm64/gic.c58
-rw-r--r--sys/arm64/arm64/gic.h (renamed from usr.bin/make/pathnames.h)56
-rw-r--r--sys/arm64/arm64/gic_acpi.c161
-rw-r--r--sys/arm64/arm64/gic_fdt.c87
-rw-r--r--sys/arm64/arm64/machdep.c2
-rw-r--r--sys/arm64/arm64/nexus.c166
-rw-r--r--sys/arm64/arm64/unwind.c (renamed from usr.bin/make/proc.h)51
-rw-r--r--sys/arm64/arm64/vfp.c2
-rw-r--r--sys/arm64/conf/GENERIC1
-rw-r--r--sys/arm64/include/acpica_machdep.h (renamed from usr.bin/make/for.h)49
-rw-r--r--sys/arm64/include/atomic.h28
-rw-r--r--sys/arm64/include/iodev.h65
-rw-r--r--sys/arm64/include/pci_cfgreg.h1
-rw-r--r--sys/arm64/include/pcpu.h3
-rw-r--r--sys/arm64/include/stack.h8
-rw-r--r--sys/boot/Makefile2
-rw-r--r--sys/boot/common/Makefile10
-rw-r--r--sys/boot/common/Makefile.inc5
-rw-r--r--sys/boot/efi/libefi/Makefile.depend17
-rw-r--r--sys/boot/efi/loader/arch/arm64/exec.c40
-rw-r--r--sys/boot/fdt/dts/arm/beaglebone-black.dts22
-rw-r--r--sys/boot/ficl/Makefile.depend21
-rw-r--r--sys/boot/i386/boot0/Makefile.depend15
-rw-r--r--sys/boot/i386/boot0sio/Makefile.depend15
-rw-r--r--sys/boot/i386/boot2/Makefile.depend15
-rw-r--r--sys/boot/i386/loader/Makefile1
-rw-r--r--sys/boot/i386/loader/Makefile.depend15
-rw-r--r--sys/boot/i386/zfsloader/Makefile.depend15
-rw-r--r--sys/boot/mips/beri/loader/Makefile1
-rw-r--r--sys/boot/pc98/loader/Makefile1
-rw-r--r--sys/boot/powerpc/kboot/Makefile1
-rw-r--r--sys/boot/powerpc/ofw/Makefile1
-rw-r--r--sys/boot/powerpc/ps3/Makefile1
-rw-r--r--sys/boot/sparc64/loader/Makefile1
-rw-r--r--sys/boot/uboot/lib/copy.c7
-rw-r--r--sys/boot/uboot/lib/glue.c2
-rw-r--r--sys/cam/cam.c50
-rw-r--r--sys/cam/cam.h12
-rw-r--r--sys/cam/ctl/ctl.c200
-rw-r--r--sys/cam/ctl/ctl_frontend.c28
-rw-r--r--sys/cam/ctl/ctl_frontend.h6
-rw-r--r--sys/cam/ctl/ctl_frontend_cam_sim.c8
-rw-r--r--sys/cam/ctl/ctl_frontend_internal.c24
-rw-r--r--sys/cam/ctl/ctl_frontend_iscsi.c10
-rw-r--r--sys/cam/ctl/ctl_private.h4
-rw-r--r--sys/cam/ctl/ctl_tpc.c31
-rw-r--r--sys/cam/ctl/ctl_tpc_local.c8
-rw-r--r--sys/cam/ctl/scsi_ctl.c123
-rw-r--r--sys/cam/scsi/scsi_all.c892
-rw-r--r--sys/cam/scsi/scsi_all.h283
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c6
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c34
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c76
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c2
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c5
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h4
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c18
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c25
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c2
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c33
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c24
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h11
-rw-r--r--sys/cddl/dev/dtrace/arm/dtrace_asm.S1
-rw-r--r--sys/compat/linux/linux_event.c4
-rw-r--r--sys/compat/linux/linux_event.h2
-rw-r--r--sys/compat/linux/linux_file.c3
-rw-r--r--sys/compat/linux/linux_fork.c2
-rw-r--r--sys/compat/linux/linux_misc.c14
-rw-r--r--sys/compat/svr4/imgact_svr4.c2
-rw-r--r--sys/compat/svr4/svr4_misc.c30
-rw-r--r--sys/compat/svr4/svr4_resource.c16
-rw-r--r--sys/conf/NOTES2
-rw-r--r--sys/conf/files24
-rw-r--r--sys/conf/files.amd647
-rw-r--r--sys/conf/files.arm5
-rw-r--r--sys/conf/files.arm648
-rw-r--r--sys/conf/files.i3867
-rw-r--r--sys/conf/files.mips2
-rw-r--r--sys/conf/files.powerpc7
-rw-r--r--sys/conf/kern.post.mk20
-rw-r--r--sys/conf/kern.pre.mk25
-rw-r--r--sys/conf/kmod.mk11
-rwxr-xr-xsys/contrib/dev/acpica/acpica_prep.sh24
-rw-r--r--sys/contrib/dev/acpica/changes.txt129
-rw-r--r--sys/contrib/dev/acpica/common/adisasm.c2
-rw-r--r--sys/contrib/dev/acpica/common/ahids.c2
-rw-r--r--sys/contrib/dev/acpica/common/ahpredef.c2
-rw-r--r--sys/contrib/dev/acpica/common/ahuuids.c2
-rw-r--r--sys/contrib/dev/acpica/common/dmextern.c16
-rw-r--r--sys/contrib/dev/acpica/common/dmrestag.c8
-rw-r--r--sys/contrib/dev/acpica/common/dmtable.c4
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump.c6
-rw-r--r--sys/contrib/dev/acpica/common/dmtbinfo.c13
-rw-r--r--sys/contrib/dev/acpica/common/getopt.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslanalyze.c10
-rw-r--r--sys/contrib/dev/acpica/compiler/aslascii.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcodegen.c11
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompile.c13
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompiler.h2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompiler.l2
-rw-r--r--sys/contrib/dev/acpica/compiler/asldefine.h5
-rw-r--r--sys/contrib/dev/acpica/compiler/aslerror.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslfileio.c38
-rw-r--r--sys/contrib/dev/acpica/compiler/aslfiles.c55
-rw-r--r--sys/contrib/dev/acpica/compiler/aslfold.c59
-rw-r--r--sys/contrib/dev/acpica/compiler/aslglobal.h4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmain.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmapenter.c8
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmapoutput.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmethod.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslopcodes.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/asloperands.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslopt.c22
-rw-r--r--sys/contrib/dev/acpica/compiler/asloptions.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslprintf.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslstartup.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslsupport.l9
-rw-r--r--sys/contrib/dev/acpica/compiler/asltypes.h54
-rw-r--r--sys/contrib/dev/acpica/compiler/aslutils.c25
-rw-r--r--sys/contrib/dev/acpica/compiler/asluuid.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompile.c8
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompiler.h8
-rw-r--r--sys/contrib/dev/acpica/compiler/dtexpress.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/dtfield.c12
-rw-r--r--sys/contrib/dev/acpica/compiler/dtio.c30
-rw-r--r--sys/contrib/dev/acpica/compiler/dtparser.y15
-rw-r--r--sys/contrib/dev/acpica/compiler/dtsubtable.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/dttable.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/dttemplate.c28
-rw-r--r--sys/contrib/dev/acpica/compiler/dttemplate.h11
-rw-r--r--sys/contrib/dev/acpica/compiler/dtutils.c10
-rw-r--r--sys/contrib/dev/acpica/compiler/prparser.y11
-rw-r--r--sys/contrib/dev/acpica/compiler/prscan.c160
-rw-r--r--sys/contrib/dev/acpica/compiler/prutils.c9
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbcmds.c16
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbconvert.c8
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbdisply.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbexec.c14
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbfileio.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbhistry.c8
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbinput.c10
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbmethod.c8
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbnames.c10
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbtest.c20
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbutils.c4
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbxface.c2
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmbuffer.c8
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmcstyle.c89
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmopcode.c6
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsfield.c2
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsinit.c2
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsobject.c4
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsutils.c2
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dswload.c15
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpe.c5
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpeinit.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exconfig.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exconvrt.c4
-rw-r--r--sys/contrib/dev/acpica/components/executer/exdebug.c35
-rw-r--r--sys/contrib/dev/acpica/components/executer/exdump.c13
-rw-r--r--sys/contrib/dev/acpica/components/executer/exfield.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exfldio.c18
-rw-r--r--sys/contrib/dev/acpica/components/executer/exmisc.c18
-rw-r--r--sys/contrib/dev/acpica/components/executer/exnames.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg2.c9
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg3.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exregion.c4
-rw-r--r--sys/contrib/dev/acpica/components/executer/exstorob.c12
-rw-r--r--sys/contrib/dev/acpica/components/executer/exutils.c37
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwgpe.c13
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwxfsleep.c93
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsaccess.c17
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsconvert.c4
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsdump.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nseval.c7
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsinit.c4
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsparse.c8
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsrepair2.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nssearch.c38
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsutils.c2
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsxfeval.c4
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsxfname.c32
-rw-r--r--sys/contrib/dev/acpica/components/parser/psutils.c2
-rw-r--r--sys/contrib/dev/acpica/components/resources/rscreate.c4
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsmisc.c8
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsutils.c8
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsxface.c6
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbdata.c4
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbfadt.c21
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbfind.c14
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbinstal.c4
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbprint.c6
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbutils.c34
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbxface.c6
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbxfload.c13
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utalloc.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utbuffer.c4
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utcache.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utcopy.c16
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utids.c104
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utmisc.c7
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utosi.c8
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utpredef.c4
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utprint.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utstring.c32
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uttrack.c8
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utxface.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utxfinit.c11
-rw-r--r--sys/contrib/dev/acpica/include/acclib.h167
-rw-r--r--sys/contrib/dev/acpica/include/accommon.h3
-rw-r--r--sys/contrib/dev/acpica/include/acglobal.h2
-rw-r--r--sys/contrib/dev/acpica/include/acinterp.h5
-rw-r--r--sys/contrib/dev/acpica/include/aclocal.h1
-rw-r--r--sys/contrib/dev/acpica/include/acnames.h1
-rw-r--r--sys/contrib/dev/acpica/include/acnamesp.h1
-rw-r--r--sys/contrib/dev/acpica/include/acobject.h15
-rw-r--r--sys/contrib/dev/acpica/include/acoutput.h13
-rw-r--r--sys/contrib/dev/acpica/include/acpixf.h26
-rw-r--r--sys/contrib/dev/acpica/include/acstruct.h1
-rw-r--r--sys/contrib/dev/acpica/include/actbl.h1
-rw-r--r--sys/contrib/dev/acpica/include/actbl1.h14
-rw-r--r--sys/contrib/dev/acpica/include/actbl2.h87
-rw-r--r--sys/contrib/dev/acpica/include/actbl3.h39
-rw-r--r--sys/contrib/dev/acpica/include/actypes.h37
-rw-r--r--sys/contrib/dev/acpica/include/acutils.h113
-rw-r--r--sys/contrib/dev/acpica/include/platform/acenv.h38
-rw-r--r--sys/contrib/dev/acpica/include/platform/acenvex.h6
-rw-r--r--sys/contrib/dev/acpica/include/platform/acgcc.h4
-rw-r--r--sys/ddb/db_sym.c2
-rw-r--r--sys/dev/acpi_support/acpi_ibm.c5
-rw-r--r--sys/dev/acpica/Osd/OsdHardware.c10
-rw-r--r--sys/dev/acpica/acpi_cpu.c18
-rw-r--r--sys/dev/atkbdc/psm.c146
-rw-r--r--sys/dev/bxe/bxe.c123
-rw-r--r--sys/dev/bxe/bxe.h6
-rw-r--r--sys/dev/bxe/ecore_reg.h1
-rw-r--r--sys/dev/bxe/ecore_sp.c2
-rw-r--r--sys/dev/cxgbe/adapter.h22
-rw-r--r--sys/dev/cxgbe/common/t4_hw.c4
-rw-r--r--sys/dev/cxgbe/t4_main.c6
-rw-r--r--sys/dev/drm2/i915/i915_gem.c5
-rw-r--r--sys/dev/drm2/ttm/ttm_page_alloc.c109
-rw-r--r--sys/dev/filemon/filemon.h2
-rw-r--r--sys/dev/filemon/filemon_wrapper.c78
-rw-r--r--sys/dev/gpio/ofw_gpiobus.c8
-rw-r--r--sys/dev/hwpmc/hwpmc_armv7.c90
-rw-r--r--sys/dev/hwpmc/hwpmc_armv7.h5
-rw-r--r--sys/dev/hwpmc/pmc_events.h369
-rw-r--r--sys/dev/ichsmb/ichsmb_pci.c8
-rw-r--r--sys/dev/isp/isp_freebsd.c8
-rw-r--r--sys/dev/iwn/if_iwn.c140
-rw-r--r--sys/dev/iwn/if_iwnvar.h11
-rw-r--r--sys/dev/ixl/if_ixl.c2
-rw-r--r--sys/dev/mii/mii.h43
-rw-r--r--sys/dev/ofw/ofw_bus_subr.c41
-rw-r--r--sys/dev/ofw/ofw_bus_subr.h3
-rw-r--r--sys/dev/pci/pci_host_generic.c626
-rw-r--r--sys/dev/proto/proto_bus_pci.c19
-rw-r--r--sys/dev/proto/proto_busdma.c22
-rw-r--r--sys/dev/proto/proto_dev.h6
-rw-r--r--sys/dev/uart/uart_bus_pci.c7
-rw-r--r--sys/dev/usb/misc/ugold.c405
-rw-r--r--sys/dev/usb/usbdevs7
-rw-r--r--sys/dev/videomode/videomode.h1
-rw-r--r--sys/dev/virtio/mmio/virtio_mmio.h4
-rw-r--r--sys/dev/virtio/network/if_vtnet.c10
-rw-r--r--sys/dev/xen/blkback/blkback.c222
-rw-r--r--sys/dev/xen/blkfront/blkfront.c212
-rw-r--r--sys/dev/xen/blkfront/block.h20
-rw-r--r--sys/fs/fdescfs/fdesc_vfsops.c4
-rw-r--r--sys/fs/fdescfs/fdesc_vnops.c2
-rw-r--r--sys/fs/nfsclient/nfs_clbio.c6
-rw-r--r--sys/fs/tmpfs/tmpfs_subr.c11
-rw-r--r--sys/geom/label/g_label.c15
-rw-r--r--sys/geom/label/g_label.h2
-rw-r--r--sys/geom/label/g_label_iso9660.c10
-rw-r--r--sys/geom/label/g_label_msdosfs.c10
-rw-r--r--sys/i386/conf/NOTES17
-rw-r--r--sys/i386/i386/exception.s36
-rw-r--r--sys/i386/i386/gdb_machdep.c16
-rw-r--r--sys/i386/i386/machdep.c1
-rw-r--r--sys/i386/i386/trap.c4
-rw-r--r--sys/i386/ibcs2/ibcs2_misc.c34
-rw-r--r--sys/i386/include/asmacros.h9
-rw-r--r--sys/i386/include/gdb_machdep.h2
-rw-r--r--sys/i386/linux/imgact_linux.c2
-rw-r--r--sys/i386/linux/linux_machdep.c2
-rw-r--r--sys/kern/imgact_aout.c2
-rw-r--r--sys/kern/imgact_binmisc.c87
-rw-r--r--sys/kern/imgact_elf.c8
-rw-r--r--sys/kern/imgact_gzip.c2
-rw-r--r--sys/kern/init_main.c8
-rw-r--r--sys/kern/kern_descrip.c145
-rw-r--r--sys/kern/kern_event.c6
-rw-r--r--sys/kern/kern_exec.c13
-rw-r--r--sys/kern/kern_fork.c7
-rw-r--r--sys/kern/kern_jail.c2
-rw-r--r--sys/kern/kern_kthread.c2
-rw-r--r--sys/kern/kern_mutex.c34
-rw-r--r--sys/kern/kern_proc.c2
-rw-r--r--sys/kern/kern_prot.c5
-rw-r--r--sys/kern/kern_racct.c24
-rw-r--r--sys/kern/kern_resource.c92
-rw-r--r--sys/kern/kern_rwlock.c56
-rw-r--r--sys/kern/kern_sig.c2
-rw-r--r--sys/kern/kern_sx.c51
-rw-r--r--sys/kern/kern_syscalls.c3
-rw-r--r--sys/kern/kern_tc.c5
-rw-r--r--sys/kern/kern_thr.c6
-rw-r--r--sys/kern/kern_thread.c49
-rw-r--r--sys/kern/stack_protector.c5
-rw-r--r--sys/kern/subr_prf.c63
-rw-r--r--sys/kern/subr_syscall.c4
-rw-r--r--sys/kern/subr_trap.c4
-rw-r--r--sys/kern/subr_uio.c4
-rw-r--r--sys/kern/sysv_shm.c2
-rw-r--r--sys/kern/tty_pts.c4
-rw-r--r--sys/kern/uipc_shm.c18
-rw-r--r--sys/kern/uipc_sockbuf.c4
-rw-r--r--sys/kern/uipc_syscalls.c5
-rw-r--r--sys/kern/uipc_usrreq.c15
-rw-r--r--sys/kern/vfs_acl.c8
-rw-r--r--sys/kern/vfs_extattr.c8
-rw-r--r--sys/kern/vfs_subr.c46
-rw-r--r--sys/kern/vfs_syscalls.c30
-rw-r--r--sys/kern/vfs_vnops.c7
-rw-r--r--sys/mips/conf/AR934X_BASE2
-rw-r--r--sys/modules/usb/Makefile2
-rw-r--r--sys/modules/usb/ugold/Makefile13
-rw-r--r--sys/net/if_bridge.c11
-rw-r--r--sys/netinet/if_ether.c15
-rw-r--r--sys/netinet/ip_encap.c49
-rw-r--r--sys/netinet/sctp_asconf.c28
-rw-r--r--sys/netinet/sctp_input.c42
-rw-r--r--sys/netinet/sctp_input.h2
-rw-r--r--sys/netinet/sctp_os_bsd.h9
-rw-r--r--sys/netinet/sctp_output.c151
-rw-r--r--sys/netinet/sctp_output.h6
-rw-r--r--sys/netinet/sctp_pcb.c5
-rw-r--r--sys/netinet/sctp_pcb.h1
-rw-r--r--sys/netinet/sctp_syscalls.c8
-rw-r--r--sys/netinet/sctp_usrreq.c42
-rw-r--r--sys/netinet/sctp_var.h1
-rw-r--r--sys/netinet/sctputil.c8
-rw-r--r--sys/netinet/sctputil.h2
-rw-r--r--sys/netinet/tcp_timer.c55
-rw-r--r--sys/netinet/tcp_timer.h6
-rw-r--r--sys/netinet6/sctp6_usrreq.c4
-rw-r--r--sys/netipsec/key.c8
-rw-r--r--sys/netipsec/key.h1
-rw-r--r--sys/netpfil/pf/pf_norm.c12
-rw-r--r--sys/ofed/drivers/infiniband/core/umem.c2
-rw-r--r--sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c3
-rw-r--r--sys/ofed/include/linux/file.h16
-rw-r--r--sys/opencrypto/crypto.c2
-rw-r--r--sys/powerpc/conf/NOTES22
-rw-r--r--sys/powerpc/powerpc/trap.c4
-rw-r--r--sys/security/audit/audit_arg.c4
-rw-r--r--sys/sparc64/sparc64/trap.c4
-rw-r--r--sys/sys/filedesc.h10
-rw-r--r--sys/sys/lockstat.h3
-rw-r--r--sys/sys/param.h2
-rw-r--r--sys/sys/pmc.h7
-rw-r--r--sys/sys/proc.h14
-rw-r--r--sys/sys/resourcevar.h11
-rw-r--r--sys/sys/sbuf.h10
-rw-r--r--sys/sys/vnode.h2
-rw-r--r--sys/ufs/ffs/ffs_alloc.c4
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c14
-rw-r--r--sys/vm/swap_pager.c8
-rw-r--r--sys/vm/vm_fault.c13
-rw-r--r--sys/vm/vm_glue.c17
-rw-r--r--sys/vm/vm_kern.c3
-rw-r--r--sys/vm/vm_map.c14
-rw-r--r--sys/vm/vm_mmap.c12
-rw-r--r--sys/vm/vm_object.c8
-rw-r--r--sys/vm/vm_pageout.c34
-rw-r--r--sys/vm/vm_pager.c72
-rw-r--r--sys/vm/vm_pager.h40
-rw-r--r--sys/vm/vm_unix.c8
-rw-r--r--sys/x86/acpica/acpi_wakeup.c4
-rw-r--r--sys/xen/blkif.h8
-rw-r--r--sys/xen/interface/io/blkif.h42
-rw-r--r--targets/Makefile181
-rw-r--r--targets/Makefile.inc53
-rw-r--r--targets/Makefile.xtras59
-rw-r--r--targets/pseudo/Makefile.inc13
-rw-r--r--targets/pseudo/bootstrap-tools/Makefile79
-rw-r--r--targets/pseudo/bootstrap-tools/Makefile.depend.host10
-rw-r--r--targets/pseudo/clang/Makefile3
-rw-r--r--targets/pseudo/clang/Makefile.depend23
-rw-r--r--targets/pseudo/gcc/Makefile3
-rw-r--r--targets/pseudo/gcc/Makefile.depend24
-rw-r--r--targets/pseudo/hosttools/Makefile3
-rw-r--r--targets/pseudo/hosttools/Makefile.depend24
-rw-r--r--targets/pseudo/kernel/Makefile31
-rw-r--r--targets/pseudo/kernel/Makefile.depend13
-rw-r--r--targets/pseudo/stage/Makefile17
-rw-r--r--targets/pseudo/the-lot/Makefile3
-rw-r--r--targets/pseudo/the-lot/Makefile.depend12
-rw-r--r--targets/pseudo/toolchain/Makefile3
-rw-r--r--targets/pseudo/toolchain/Makefile.depend51
-rw-r--r--targets/pseudo/universe/Makefile73
-rw-r--r--targets/pseudo/universe/Makefile.depend15
-rw-r--r--targets/pseudo/userland/Makefile3
-rw-r--r--targets/pseudo/userland/Makefile.depend788
-rw-r--r--targets/pseudo/userland/Makefile.inc3
-rw-r--r--targets/pseudo/userland/cddl/Makefile3
-rw-r--r--targets/pseudo/userland/cddl/Makefile.depend50
-rw-r--r--targets/pseudo/userland/games/Makefile3
-rw-r--r--targets/pseudo/userland/games/Makefile.depend24
-rw-r--r--targets/pseudo/userland/gnu/Makefile3
-rw-r--r--targets/pseudo/userland/gnu/Makefile.depend110
-rw-r--r--targets/pseudo/userland/include/Makefile3
-rw-r--r--targets/pseudo/userland/include/Makefile.depend16
-rw-r--r--targets/pseudo/userland/kerberos5/Makefile3
-rw-r--r--targets/pseudo/userland/kerberos5/Makefile.depend61
-rw-r--r--targets/pseudo/userland/lib/Makefile3
-rw-r--r--targets/pseudo/userland/lib/Makefile.depend160
-rw-r--r--targets/pseudo/userland/libexec/Makefile3
-rw-r--r--targets/pseudo/userland/libexec/Makefile.depend42
-rw-r--r--targets/pseudo/userland/misc/Makefile3
-rw-r--r--targets/pseudo/userland/misc/Makefile.depend53
-rw-r--r--targets/pseudo/userland/secure/Makefile3
-rw-r--r--targets/pseudo/userland/secure/Makefile.depend35
-rw-r--r--targets/pseudo/userland/share/Makefile3
-rw-r--r--targets/pseudo/userland/share/Makefile.depend155
-rw-r--r--tests/sys/pjdfstest/pjdfstest/Makefile2
-rw-r--r--tools/build/Makefile.depend13
-rw-r--r--tools/build/mk/Makefile.boot3
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc24
-rw-r--r--tools/bus_space/C/Makefile4
-rw-r--r--tools/bus_space/C/lang.c59
-rw-r--r--tools/bus_space/C/libbus.h (renamed from tools/bus_space/C/libbus_space.h)29
-rw-r--r--tools/bus_space/Makefile.inc2
-rw-r--r--tools/bus_space/Python/Makefile2
-rw-r--r--tools/bus_space/Python/lang.c81
-rw-r--r--tools/bus_space/bus.c (renamed from tools/bus_space/bus_space.c)2
-rw-r--r--tools/bus_space/bus.h (renamed from tools/bus_space/bus_space.h)0
-rw-r--r--tools/bus_space/busdma.c166
-rw-r--r--tools/bus_space/busdma.h6
-rw-r--r--tools/regression/include/stdatomic/Makefile.depend19
-rw-r--r--tools/tools/ath/ath_ee_9300_print/Makefile.depend21
-rw-r--r--tools/tools/drm/radeon/mkregtable/Makefile.depend19
-rw-r--r--tools/tools/makeroot/Makefile.depend13
-rw-r--r--tools/tools/usbtest/Makefile.depend20
-rw-r--r--usr.bin/Makefile4
-rw-r--r--usr.bin/addr2line/Makefile.depend21
-rw-r--r--usr.bin/alias/Makefile1
-rw-r--r--usr.bin/alias/Makefile.depend11
-rw-r--r--usr.bin/apply/Makefile.depend19
-rw-r--r--usr.bin/ar/Makefile.depend33
-rw-r--r--usr.bin/asa/Makefile.depend17
-rw-r--r--usr.bin/at/Makefile.depend18
-rw-r--r--usr.bin/atm/sscop/Makefile.depend20
-rw-r--r--usr.bin/awk/Makefile.depend40
-rw-r--r--usr.bin/banner/Makefile.depend18
-rw-r--r--usr.bin/basename/Makefile.depend18
-rw-r--r--usr.bin/bc/Makefile.depend27
-rw-r--r--usr.bin/biff/Makefile.depend18
-rw-r--r--usr.bin/bluetooth/bthost/Makefile.depend19
-rw-r--r--usr.bin/bluetooth/btsockstat/Makefile.depend20
-rw-r--r--usr.bin/bluetooth/rfcomm_sppd/Makefile.depend21
-rw-r--r--usr.bin/bmake/Makefile4
-rw-r--r--usr.bin/bmake/Makefile.depend18
-rw-r--r--usr.bin/brandelf/Makefile.depend18
-rw-r--r--usr.bin/bsdiff/bsdiff/Makefile.depend19
-rw-r--r--usr.bin/bsdiff/bspatch/Makefile.depend19
-rw-r--r--usr.bin/bzip2/Makefile.depend20
-rw-r--r--usr.bin/bzip2recover/Makefile.depend18
-rw-r--r--usr.bin/c89/Makefile.depend18
-rw-r--r--usr.bin/c99/Makefile.depend18
-rw-r--r--usr.bin/calendar/Makefile.depend19
-rw-r--r--usr.bin/calendar/calendars/calendar.freebsd1
-rw-r--r--usr.bin/calendar/calendars/calendar.holiday2
-rw-r--r--usr.bin/cap_mkdb/Makefile.depend18
-rw-r--r--usr.bin/catman/Makefile.depend18
-rw-r--r--usr.bin/chat/Makefile.depend18
-rw-r--r--usr.bin/checknr/Makefile.depend18
-rw-r--r--usr.bin/chkey/Makefile.depend23
-rw-r--r--usr.bin/chpass/Makefile.depend21
-rw-r--r--usr.bin/cksum/Makefile.depend18
-rw-r--r--usr.bin/clang/clang-tblgen/Makefile.depend23
-rw-r--r--usr.bin/clang/clang.prog.mk5
-rw-r--r--usr.bin/clang/clang/Makefile.depend128
-rw-r--r--usr.bin/clang/lldb/Makefile3
-rw-r--r--usr.bin/clang/lldb/Makefile.depend146
-rw-r--r--usr.bin/clang/tblgen/Makefile.depend23
-rw-r--r--usr.bin/cmp/Makefile.depend18
-rw-r--r--usr.bin/col/Makefile.depend18
-rw-r--r--usr.bin/colcrt/Makefile.depend18
-rw-r--r--usr.bin/colldef/Makefile.depend27
-rw-r--r--usr.bin/colrm/Makefile.depend18
-rw-r--r--usr.bin/column/Makefile.depend18
-rw-r--r--usr.bin/comm/Makefile.depend18
-rw-r--r--usr.bin/compile_et/Makefile.depend31
-rw-r--r--usr.bin/compress/Makefile.depend18
-rw-r--r--usr.bin/cpio/Makefile.depend25
-rw-r--r--usr.bin/cpuset/Makefile.depend18
-rw-r--r--usr.bin/csplit/Makefile.depend18
-rw-r--r--usr.bin/ctags/Makefile.depend18
-rw-r--r--usr.bin/ctlstat/Makefile.depend18
-rw-r--r--usr.bin/cut/Makefile.depend18
-rw-r--r--usr.bin/dc/Makefile.depend20
-rw-r--r--usr.bin/dirname/Makefile.depend17
-rw-r--r--usr.bin/du/Makefile.depend19
-rw-r--r--usr.bin/ee/Makefile.depend19
-rw-r--r--usr.bin/elf2aout/Makefile.depend18
-rw-r--r--usr.bin/elfcopy/Makefile.depend27
-rw-r--r--usr.bin/elfdump/Makefile.depend18
-rw-r--r--usr.bin/enigma/Makefile.depend19
-rw-r--r--usr.bin/env/Makefile.depend18
-rw-r--r--usr.bin/expand/Makefile.depend18
-rw-r--r--usr.bin/false/Makefile.depend17
-rw-r--r--usr.bin/fetch/Makefile.depend21
-rw-r--r--usr.bin/file/Makefile.depend20
-rw-r--r--usr.bin/file2c/Makefile.depend17
-rw-r--r--usr.bin/find/Makefile.depend21
-rw-r--r--usr.bin/finger/Makefile.depend18
-rw-r--r--usr.bin/fmt/Makefile.depend18
-rw-r--r--usr.bin/fold/Makefile.depend18
-rw-r--r--usr.bin/from/Makefile.depend18
-rw-r--r--usr.bin/fstat/Makefile.depend22
-rw-r--r--usr.bin/fsync/Makefile.depend17
-rw-r--r--usr.bin/ftp/Makefile.depend21
-rw-r--r--usr.bin/gcore/Makefile.depend20
-rw-r--r--usr.bin/gencat/Makefile.depend19
-rw-r--r--usr.bin/getconf/Makefile.depend28
-rw-r--r--usr.bin/getent/Makefile.depend20
-rw-r--r--usr.bin/getopt/Makefile.depend17
-rw-r--r--usr.bin/gprof/Makefile.depend18
-rw-r--r--usr.bin/grep/Makefile2
-rw-r--r--usr.bin/grep/Makefile.depend23
-rw-r--r--usr.bin/gzip/Makefile.depend22
-rw-r--r--usr.bin/head/Makefile.depend18
-rw-r--r--usr.bin/hexdump/Makefile.depend18
-rw-r--r--usr.bin/host/Makefile.depend21
-rw-r--r--usr.bin/id/Makefile.depend18
-rw-r--r--usr.bin/indent/Makefile.depend18
-rw-r--r--usr.bin/ipcrm/Makefile.depend19
-rw-r--r--usr.bin/ipcs/Makefile.depend19
-rw-r--r--usr.bin/join/Makefile.depend18
-rw-r--r--usr.bin/jot/Makefile.depend18
-rw-r--r--usr.bin/kdump/Makefile28
-rw-r--r--usr.bin/kdump/Makefile.depend34
-rw-r--r--usr.bin/kdump/mkioctls2
-rw-r--r--usr.bin/keylogin/Makefile.depend21
-rw-r--r--usr.bin/keylogout/Makefile.depend20
-rw-r--r--usr.bin/killall/Makefile.depend19
-rw-r--r--usr.bin/ktrace/Makefile.depend18
-rw-r--r--usr.bin/ktrdump/Makefile.depend19
-rw-r--r--usr.bin/lam/Makefile.depend18
-rw-r--r--usr.bin/last/Makefile.depend18
-rw-r--r--usr.bin/lastcomm/Makefile.depend18
-rw-r--r--usr.bin/ldd/Makefile.depend19
-rw-r--r--usr.bin/leave/Makefile.depend18
-rw-r--r--usr.bin/less/Makefile.depend19
-rw-r--r--usr.bin/lessecho/Makefile.depend18
-rw-r--r--usr.bin/lesskey/Makefile.depend18
-rw-r--r--usr.bin/lex/Makefile.depend30
-rw-r--r--usr.bin/lex/lib/Makefile.depend11
-rw-r--r--usr.bin/limits/Makefile.depend19
-rw-r--r--usr.bin/locale/Makefile.depend18
-rw-r--r--usr.bin/locate/bigram/Makefile.depend17
-rw-r--r--usr.bin/locate/code/Makefile.depend18
-rw-r--r--usr.bin/locate/locate/Makefile.depend19
-rw-r--r--usr.bin/lock/Makefile.depend19
-rw-r--r--usr.bin/lockf/Makefile.depend17
-rw-r--r--usr.bin/logger/Makefile.depend18
-rw-r--r--usr.bin/login/Makefile.depend21
-rw-r--r--usr.bin/logins/Makefile.depend18
-rw-r--r--usr.bin/logname/Makefile.depend17
-rw-r--r--usr.bin/look/Makefile.depend18
-rw-r--r--usr.bin/lorder/Makefile.depend11
-rw-r--r--usr.bin/lsvfs/Makefile.depend18
-rw-r--r--usr.bin/lzmainfo/Makefile.depend20
-rw-r--r--usr.bin/m4/Makefile.depend29
-rw-r--r--usr.bin/mail/Makefile.depend18
-rw-r--r--usr.bin/make/GNode.h224
-rw-r--r--usr.bin/make/Makefile120
-rw-r--r--usr.bin/make/Makefile.dist10
-rw-r--r--usr.bin/make/arch.c1224
-rw-r--r--usr.bin/make/arch.h61
-rw-r--r--usr.bin/make/buf.c291
-rw-r--r--usr.bin/make/buf.h92
-rw-r--r--usr.bin/make/cond.c1221
-rw-r--r--usr.bin/make/cond.h73
-rw-r--r--usr.bin/make/config.h111
-rw-r--r--usr.bin/make/dir.c1217
-rw-r--r--usr.bin/make/dir.h72
-rw-r--r--usr.bin/make/for.c267
-rw-r--r--usr.bin/make/globals.h116
-rw-r--r--usr.bin/make/hash.c398
-rw-r--r--usr.bin/make/hash.h103
-rw-r--r--usr.bin/make/hash_tables.c130
-rw-r--r--usr.bin/make/job.c3391
-rw-r--r--usr.bin/make/job.h80
-rw-r--r--usr.bin/make/lst.c344
-rw-r--r--usr.bin/make/lst.h175
-rw-r--r--usr.bin/make/main.c1339
-rw-r--r--usr.bin/make/make.11843
-rw-r--r--usr.bin/make/make.c819
-rw-r--r--usr.bin/make/make.h75
-rw-r--r--usr.bin/make/parse.c2545
-rw-r--r--usr.bin/make/parse.h86
-rw-r--r--usr.bin/make/proc.c134
-rw-r--r--usr.bin/make/shell.c472
-rw-r--r--usr.bin/make/shell.h110
-rw-r--r--usr.bin/make/str.c559
-rw-r--r--usr.bin/make/str.h81
-rw-r--r--usr.bin/make/suff.c2205
-rw-r--r--usr.bin/make/suff.h61
-rw-r--r--usr.bin/make/targ.c472
-rw-r--r--usr.bin/make/targ.h73
-rw-r--r--usr.bin/make/util.c316
-rw-r--r--usr.bin/make/util.h116
-rw-r--r--usr.bin/make/var.c2623
-rw-r--r--usr.bin/make/var.h85
-rw-r--r--usr.bin/makewhatis/Makefile.depend19
-rw-r--r--usr.bin/man/Makefile.depend11
-rw-r--r--usr.bin/mandoc/Makefile.depend22
-rw-r--r--usr.bin/mesg/Makefile.depend18
-rw-r--r--usr.bin/minigzip/Makefile.depend19
-rw-r--r--usr.bin/ministat/Makefile.depend19
-rw-r--r--usr.bin/mkcsmapper_static/Makefile3
-rw-r--r--usr.bin/mkcsmapper_static/Makefile.depend25
-rw-r--r--usr.bin/mkdep/Makefile.depend11
-rw-r--r--usr.bin/mkesdb_static/Makefile3
-rw-r--r--usr.bin/mkfifo/Makefile.depend18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu19
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu30
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu19
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu29
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu30
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu30
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu20
-rw-r--r--usr.bin/mkimg/vhd.c107
-rw-r--r--usr.bin/mklocale/Makefile.depend26
-rw-r--r--usr.bin/mkstr/Makefile.depend18
-rw-r--r--usr.bin/mktemp/Makefile.depend18
-rw-r--r--usr.bin/mkulzma/Makefile.depend20
-rw-r--r--usr.bin/mkuzip/Makefile.depend19
-rw-r--r--usr.bin/msgs/Makefile.depend19
-rw-r--r--usr.bin/mt/Makefile.depend21
-rw-r--r--usr.bin/nc/Makefile.depend20
-rw-r--r--usr.bin/ncal/Makefile.depend20
-rw-r--r--usr.bin/netstat/Makefile.depend24
-rw-r--r--usr.bin/newgrp/Makefile.depend20
-rw-r--r--usr.bin/newkey/Makefile.depend23
-rw-r--r--usr.bin/nfsstat/Makefile.depend19
-rw-r--r--usr.bin/nice/Makefile.depend18
-rw-r--r--usr.bin/nl/Makefile.depend18
-rw-r--r--usr.bin/nm/Makefile.depend21
-rw-r--r--usr.bin/nohup/Makefile.depend18
-rw-r--r--usr.bin/opieinfo/Makefile.depend20
-rw-r--r--usr.bin/opiekey/Makefile.depend20
-rw-r--r--usr.bin/opiepasswd/Makefile.depend20
-rw-r--r--usr.bin/pagesize/Makefile.depend11
-rw-r--r--usr.bin/pamtest/Makefile.depend21
-rw-r--r--usr.bin/passwd/Makefile.depend18
-rw-r--r--usr.bin/paste/Makefile.depend18
-rw-r--r--usr.bin/pathchk/Makefile.depend18
-rw-r--r--usr.bin/perror/Makefile.depend18
-rw-r--r--usr.bin/pr/Makefile.depend18
-rw-r--r--usr.bin/printenv/Makefile.depend18
-rw-r--r--usr.bin/printf/Makefile.depend18
-rw-r--r--usr.bin/procstat/Makefile.depend23
-rw-r--r--usr.bin/quota/Makefile.depend22
-rw-r--r--usr.bin/rctl/Makefile.depend19
-rw-r--r--usr.bin/readelf/Makefile.depend21
-rw-r--r--usr.bin/renice/Makefile.depend18
-rw-r--r--usr.bin/rev/Makefile.depend18
-rw-r--r--usr.bin/revoke/Makefile.depend17
-rw-r--r--usr.bin/rlogin/Makefile.depend18
-rw-r--r--usr.bin/rpcgen/Makefile.depend18
-rw-r--r--usr.bin/rpcinfo/Makefile.depend20
-rw-r--r--usr.bin/rs/Makefile.depend18
-rw-r--r--usr.bin/rsh/Makefile.depend19
-rw-r--r--usr.bin/rup/Makefile.depend22
-rw-r--r--usr.bin/ruptime/Makefile.depend19
-rw-r--r--usr.bin/rusers/Makefile.depend22
-rw-r--r--usr.bin/rwall/Makefile.depend20
-rw-r--r--usr.bin/rwho/Makefile.depend19
-rw-r--r--usr.bin/script/Makefile.depend19
-rw-r--r--usr.bin/sed/Makefile.depend18
-rw-r--r--usr.bin/seq/Makefile.depend19
-rw-r--r--usr.bin/setchannel/Makefile.depend20
-rw-r--r--usr.bin/shar/Makefile.depend11
-rw-r--r--usr.bin/showmount/Makefile.depend20
-rw-r--r--usr.bin/size/Makefile.depend20
-rw-r--r--usr.bin/smbutil/Makefile.depend22
-rw-r--r--usr.bin/sockstat/Makefile.depend19
-rw-r--r--usr.bin/sockstat/sockstat.18
-rw-r--r--usr.bin/sockstat/sockstat.c570
-rw-r--r--usr.bin/sort/Makefile.depend20
-rw-r--r--usr.bin/split/Makefile.depend19
-rw-r--r--usr.bin/ssh-copy-id/Makefile.depend11
-rw-r--r--usr.bin/stat/Makefile.depend18
-rw-r--r--usr.bin/stdbuf/Makefile.depend17
-rw-r--r--usr.bin/strings/Makefile.depend20
-rw-r--r--usr.bin/su/Makefile.depend21
-rw-r--r--usr.bin/svn/lib/libapr/Makefile.depend17
-rw-r--r--usr.bin/svn/lib/libapr_util/Makefile.depend16
-rw-r--r--usr.bin/svn/lib/libserf/Makefile.depend18
-rw-r--r--usr.bin/svn/lib/libsvn_client/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_delta/Makefile.depend16
-rw-r--r--usr.bin/svn/lib/libsvn_diff/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_fs/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_fs_util/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_ra/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_ra_local/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend16
-rw-r--r--usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_repos/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_subr/Makefile.depend18
-rw-r--r--usr.bin/svn/lib/libsvn_wc/Makefile.depend15
-rw-r--r--usr.bin/svn/svn/Makefile.depend43
-rw-r--r--usr.bin/svn/svnadmin/Makefile.depend31
-rw-r--r--usr.bin/svn/svndumpfilter/Makefile.depend31
-rw-r--r--usr.bin/svn/svnlook/Makefile.depend32
-rw-r--r--usr.bin/svn/svnmucc/Makefile.depend41
-rw-r--r--usr.bin/svn/svnrdump/Makefile.depend43
-rw-r--r--usr.bin/svn/svnserve/Makefile.depend40
-rw-r--r--usr.bin/svn/svnsync/Makefile.depend40
-rw-r--r--usr.bin/svn/svnversion/Makefile.depend29
-rw-r--r--usr.bin/systat/Makefile.depend23
-rw-r--r--usr.bin/tabs/Makefile.depend19
-rw-r--r--usr.bin/tail/Makefile.depend18
-rw-r--r--usr.bin/talk/Makefile.depend21
-rw-r--r--usr.bin/tar/Makefile.depend25
-rw-r--r--usr.bin/tcopy/Makefile.depend18
-rw-r--r--usr.bin/tee/Makefile.depend18
-rw-r--r--usr.bin/telnet/Makefile.depend35
-rw-r--r--usr.bin/tftp/Makefile.depend21
-rw-r--r--usr.bin/time/Makefile.depend18
-rw-r--r--usr.bin/timeout/Makefile.depend18
-rw-r--r--usr.bin/tip/tip/Makefile.depend18
-rw-r--r--usr.bin/top/Makefile3
-rw-r--r--usr.bin/top/Makefile.depend30
-rw-r--r--usr.bin/touch/Makefile.depend18
-rw-r--r--usr.bin/tput/Makefile.depend19
-rw-r--r--usr.bin/tr/Makefile.depend18
-rw-r--r--usr.bin/true/Makefile.depend16
-rw-r--r--usr.bin/truncate/Makefile.depend19
-rw-r--r--usr.bin/truss/Makefile2
-rw-r--r--usr.bin/truss/Makefile.depend.amd6428
-rw-r--r--usr.bin/tset/Makefile.depend19
-rw-r--r--usr.bin/tsort/Makefile.depend18
-rw-r--r--usr.bin/tty/Makefile.depend17
-rw-r--r--usr.bin/ul/Makefile.depend19
-rw-r--r--usr.bin/uname/Makefile.depend17
-rw-r--r--usr.bin/unexpand/Makefile.depend18
-rw-r--r--usr.bin/unifdef/Makefile.depend18
-rw-r--r--usr.bin/uniq/Makefile.depend18
-rw-r--r--usr.bin/units/Makefile.depend20
-rw-r--r--usr.bin/unvis/Makefile.depend17
-rw-r--r--usr.bin/unzip/Makefile.depend25
-rw-r--r--usr.bin/usbhidaction/Makefile.depend19
-rw-r--r--usr.bin/usbhidctl/Makefile.depend19
-rw-r--r--usr.bin/users/Makefile.depend21
-rw-r--r--usr.bin/uudecode/Makefile.depend19
-rw-r--r--usr.bin/uuencode/Makefile.depend19
-rw-r--r--usr.bin/vacation/Makefile.depend24
-rw-r--r--usr.bin/vgrind/Makefile.depend18
-rw-r--r--usr.bin/vgrind/RETEST/Makefile.depend20
-rw-r--r--usr.bin/vi/Makefile.depend21
-rw-r--r--usr.bin/vis/Makefile.depend18
-rw-r--r--usr.bin/vmstat/Makefile.depend22
-rw-r--r--usr.bin/vtfontcvt/Makefile.depend18
-rw-r--r--usr.bin/w/Makefile.depend23
-rw-r--r--usr.bin/wall/Makefile.depend18
-rw-r--r--usr.bin/wc/Makefile.depend19
-rw-r--r--usr.bin/what/Makefile.depend17
-rw-r--r--usr.bin/whereis/Makefile.depend18
-rw-r--r--usr.bin/which/Makefile.depend18
-rw-r--r--usr.bin/who/Makefile.depend18
-rw-r--r--usr.bin/whois/Makefile.depend19
-rw-r--r--usr.bin/write/Makefile.depend18
-rw-r--r--usr.bin/xargs/Makefile.depend18
-rw-r--r--usr.bin/xinstall/Makefile.depend20
-rw-r--r--usr.bin/xinstall/Makefile.depend.host13
-rw-r--r--usr.bin/xlint/lint1/Makefile.depend31
-rw-r--r--usr.bin/xlint/lint2/Makefile.depend18
-rw-r--r--usr.bin/xlint/llib/Makefile4
-rw-r--r--usr.bin/xlint/llib/Makefile.depend14
-rw-r--r--usr.bin/xlint/xlint/Makefile.depend18
-rw-r--r--usr.bin/xstr/Makefile.depend18
-rw-r--r--usr.bin/xz/Makefile.depend20
-rw-r--r--usr.bin/xzdec/Makefile.depend20
-rw-r--r--usr.bin/yacc/Makefile.depend18
-rw-r--r--usr.bin/yes/Makefile.depend17
-rw-r--r--usr.bin/ypcat/Makefile.depend20
-rw-r--r--usr.bin/ypmatch/Makefile.depend20
-rw-r--r--usr.bin/ypwhich/Makefile.depend21
-rw-r--r--usr.sbin/ac/Makefile.depend18
-rw-r--r--usr.sbin/accton/Makefile.depend18
-rw-r--r--usr.sbin/acpi/acpiconf/Makefile.depend18
-rw-r--r--usr.sbin/acpi/acpidb/Makefile.depend19
-rw-r--r--usr.sbin/acpi/acpidump/Makefile.depend18
-rw-r--r--usr.sbin/acpi/iasl/Makefile.depend107
-rw-r--r--usr.sbin/adduser/Makefile.depend11
-rw-r--r--usr.sbin/amd/amd/Makefile.depend33
-rw-r--r--usr.sbin/amd/amq/Makefile.depend24
-rw-r--r--usr.sbin/amd/fixmount/Makefile.depend25
-rw-r--r--usr.sbin/amd/fsinfo/Makefile.depend33
-rw-r--r--usr.sbin/amd/hlfsd/Makefile.depend24
-rw-r--r--usr.sbin/amd/include/Makefile.depend12
-rw-r--r--usr.sbin/amd/libamu/Makefile.depend22
-rw-r--r--usr.sbin/amd/mk-amd-map/Makefile.depend24
-rw-r--r--usr.sbin/amd/pawd/Makefile.depend24
-rw-r--r--usr.sbin/amd/scripts/Makefile.depend11
-rw-r--r--usr.sbin/amd/wire-test/Makefile.depend24
-rw-r--r--usr.sbin/ancontrol/Makefile.depend20
-rw-r--r--usr.sbin/apm/Makefile.depend18
-rw-r--r--usr.sbin/apmd/Makefile.depend26
-rw-r--r--usr.sbin/arp/Makefile.depend19
-rw-r--r--usr.sbin/asf/Makefile.depend19
-rw-r--r--usr.sbin/audit/Makefile.depend19
-rw-r--r--usr.sbin/auditd/Makefile.depend20
-rw-r--r--usr.sbin/auditreduce/Makefile.depend19
-rw-r--r--usr.sbin/authpf/Makefile.depend21
-rw-r--r--usr.sbin/bhyve/Makefile1
-rw-r--r--usr.sbin/bhyve/bhyve.828
-rw-r--r--usr.sbin/bhyve/bhyverun.c93
-rw-r--r--usr.sbin/bhyve/bootrom.c111
-rw-r--r--usr.sbin/bhyve/bootrom.h (renamed from usr.bin/make/hash_tables.h)22
-rw-r--r--usr.sbin/bhyve/dbgport.c9
-rw-r--r--usr.sbin/bhyve/pci_lpc.c27
-rw-r--r--usr.sbin/bhyve/pci_lpc.h1
-rw-r--r--usr.sbin/bhyve/pci_passthru.c8
-rw-r--r--usr.sbin/bhyvectl/Makefile2
-rw-r--r--usr.sbin/bhyvectl/bhyvectl.c111
-rw-r--r--usr.sbin/bhyveload/bhyveload.85
-rw-r--r--usr.sbin/bhyveload/bhyveload.c11
-rw-r--r--usr.sbin/bluetooth/ath3kfw/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/bcmfw/Makefile.depend19
-rw-r--r--usr.sbin/bluetooth/bt3cfw/Makefile.depend19
-rw-r--r--usr.sbin/bluetooth/bthidcontrol/Makefile.depend28
-rw-r--r--usr.sbin/bluetooth/bthidd/Makefile.depend27
-rw-r--r--usr.sbin/bluetooth/btpand/Makefile.depend21
-rw-r--r--usr.sbin/bluetooth/hccontrol/Makefile.depend19
-rw-r--r--usr.sbin/bluetooth/hcsecd/Makefile.depend26
-rw-r--r--usr.sbin/bluetooth/hcseriald/Makefile.depend19
-rw-r--r--usr.sbin/bluetooth/l2control/Makefile.depend19
-rw-r--r--usr.sbin/bluetooth/l2ping/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/sdpcontrol/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/sdpd/Makefile.depend21
-rw-r--r--usr.sbin/boot0cfg/Makefile.depend21
-rw-r--r--usr.sbin/boot98cfg/Makefile.depend21
-rw-r--r--usr.sbin/bootparamd/bootparamd/Makefile.depend33
-rw-r--r--usr.sbin/bootparamd/callbootd/Makefile.depend31
-rw-r--r--usr.sbin/bsdconfig/packages/Makefile.depend13
-rw-r--r--usr.sbin/bsdconfig/packages/include/Makefile.depend13
-rw-r--r--usr.sbin/bsdconfig/share/packages/Makefile.depend13
-rw-r--r--usr.sbin/bsdconfig/usermgmt/share/group.subr10
-rw-r--r--usr.sbin/bsdconfig/usermgmt/share/user.subr10
-rw-r--r--usr.sbin/bsdinstall/Makefile.depend15
-rw-r--r--usr.sbin/bsdinstall/distextract/Makefile.depend31
-rw-r--r--usr.sbin/bsdinstall/distfetch/Makefile.depend24
-rw-r--r--usr.sbin/bsdinstall/partedit/Makefile.depend25
-rw-r--r--usr.sbin/bsdinstall/scripts/Makefile.depend11
-rw-r--r--usr.sbin/bsnmpd/bsnmpd/Makefile.depend51
-rw-r--r--usr.sbin/bsnmpd/gensnmptree/Makefile.depend18
-rw-r--r--usr.sbin/bsnmpd/modules/Makefile.depend11
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend35
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend42
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend37
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend83
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend29
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend71
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend30
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend29
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend28
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend28
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend28
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend32
-rw-r--r--usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend21
-rw-r--r--usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend21
-rw-r--r--usr.sbin/btxld/Makefile.depend18
-rw-r--r--usr.sbin/cdcontrol/Makefile.depend21
-rw-r--r--usr.sbin/chkgrp/Makefile.depend18
-rw-r--r--usr.sbin/chown/Makefile.depend18
-rw-r--r--usr.sbin/chroot/Makefile.depend18
-rw-r--r--usr.sbin/ckdist/Makefile.depend19
-rw-r--r--usr.sbin/clear_locks/Makefile.depend21
-rw-r--r--usr.sbin/config/Makefile.depend37
-rw-r--r--usr.sbin/cpucontrol/Makefile.depend18
-rw-r--r--usr.sbin/crashinfo/Makefile.depend11
-rw-r--r--usr.sbin/cron/cron/Makefile.depend21
-rw-r--r--usr.sbin/cron/crontab/Makefile.depend21
-rw-r--r--usr.sbin/cron/lib/Makefile.depend14
-rw-r--r--usr.sbin/crunch/crunchgen/Makefile.depend20
-rw-r--r--usr.sbin/crunch/crunchgen/crunchgen.c5
-rw-r--r--usr.sbin/crunch/crunchide/Makefile.depend18
-rw-r--r--usr.sbin/ctladm/Makefile.depend22
-rw-r--r--usr.sbin/ctld/token.l2
-rw-r--r--usr.sbin/ctm/ctm/Makefile.depend19
-rw-r--r--usr.sbin/ctm/ctm_dequeue/Makefile.depend18
-rw-r--r--usr.sbin/ctm/ctm_rmail/Makefile.depend18
-rw-r--r--usr.sbin/ctm/ctm_smail/Makefile.depend18
-rw-r--r--usr.sbin/daemon/Makefile.depend18
-rw-r--r--usr.sbin/dconschat/Makefile.depend20
-rw-r--r--usr.sbin/devinfo/Makefile.depend18
-rw-r--r--usr.sbin/digictl/Makefile.depend18
-rw-r--r--usr.sbin/diskinfo/Makefile.depend19
-rw-r--r--usr.sbin/dumpcis/Makefile.depend18
-rw-r--r--usr.sbin/editmap/Makefile.depend24
-rw-r--r--usr.sbin/edquota/Makefile.depend19
-rw-r--r--usr.sbin/eeprom/Makefile.depend20
-rw-r--r--usr.sbin/etcupdate/Makefile.depend11
-rw-r--r--usr.sbin/extattr/Makefile.depend19
-rw-r--r--usr.sbin/extattrctl/Makefile.depend19
-rw-r--r--usr.sbin/fdcontrol/Makefile.depend18
-rw-r--r--usr.sbin/fdformat/Makefile.depend18
-rw-r--r--usr.sbin/fdread/Makefile.depend18
-rw-r--r--usr.sbin/fdwrite/Makefile.depend18
-rw-r--r--usr.sbin/fifolog/fifolog_create/Makefile.depend20
-rw-r--r--usr.sbin/fifolog/fifolog_reader/Makefile.depend20
-rw-r--r--usr.sbin/fifolog/fifolog_writer/Makefile.depend20
-rw-r--r--usr.sbin/fifolog/lib/Makefile.depend17
-rw-r--r--usr.sbin/flowctl/Makefile.depend20
-rw-r--r--usr.sbin/freebsd-update/Makefile.depend11
-rw-r--r--usr.sbin/freebsd-update/freebsd-update.sh16
-rw-r--r--usr.sbin/fstyp/Makefile34
-rw-r--r--usr.sbin/fstyp/cd9660.c10
-rw-r--r--usr.sbin/fstyp/fstyp.848
-rw-r--r--usr.sbin/fstyp/fstyp.c44
-rw-r--r--usr.sbin/fstyp/fstyp.h5
-rw-r--r--usr.sbin/fstyp/geli.c76
-rw-r--r--usr.sbin/fstyp/msdosfs.c10
-rw-r--r--usr.sbin/fstyp/zfs.c73
-rw-r--r--usr.sbin/fwcontrol/Makefile.depend19
-rw-r--r--usr.sbin/getfmac/Makefile.depend18
-rw-r--r--usr.sbin/getpmac/Makefile.depend18
-rw-r--r--usr.sbin/gpioctl/Makefile.depend19
-rw-r--r--usr.sbin/gssd/Makefile.depend44
-rw-r--r--usr.sbin/gstat/Makefile.depend25
-rw-r--r--usr.sbin/i2c/Makefile.depend18
-rw-r--r--usr.sbin/ifmcstat/Makefile.depend19
-rw-r--r--usr.sbin/inetd/Makefile.depend23
-rw-r--r--usr.sbin/iostat/Makefile.depend21
-rw-r--r--usr.sbin/ip6addrctl/Makefile.depend18
-rw-r--r--usr.sbin/ipfwpcap/Makefile.depend19
-rw-r--r--usr.sbin/jail/Makefile.depend30
-rw-r--r--usr.sbin/jexec/Makefile.depend21
-rw-r--r--usr.sbin/jls/Makefile.depend20
-rw-r--r--usr.sbin/kbdcontrol/Makefile.depend21
-rw-r--r--usr.sbin/kbdmap/Makefile.depend18
-rw-r--r--usr.sbin/keyserv/Makefile.depend29
-rw-r--r--usr.sbin/kgmon/Makefile.depend19
-rw-r--r--usr.sbin/kgzip/Makefile.depend20
-rw-r--r--usr.sbin/kldxref/Makefile.depend18
-rw-r--r--usr.sbin/lastlogin/Makefile.depend18
-rw-r--r--usr.sbin/lmcconfig/Makefile.depend19
-rw-r--r--usr.sbin/lpr/chkprintcap/Makefile.depend19
-rw-r--r--usr.sbin/lpr/common_source/Makefile.depend14
-rw-r--r--usr.sbin/lpr/filters.ru/Makefile.depend15
-rw-r--r--usr.sbin/lpr/filters.ru/koi2855/Makefile.depend17
-rw-r--r--usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend17
-rw-r--r--usr.sbin/lpr/filters/Makefile.depend18
-rw-r--r--usr.sbin/lpr/lp/Makefile.depend11
-rw-r--r--usr.sbin/lpr/lpc/Makefile.depend21
-rw-r--r--usr.sbin/lpr/lpd/Makefile.depend20
-rw-r--r--usr.sbin/lpr/lpq/Makefile.depend19
-rw-r--r--usr.sbin/lpr/lpr/Makefile.depend19
-rw-r--r--usr.sbin/lpr/lprm/Makefile.depend19
-rw-r--r--usr.sbin/lpr/lptest/Makefile.depend17
-rw-r--r--usr.sbin/lpr/pac/Makefile.depend19
-rw-r--r--usr.sbin/lptcontrol/Makefile.depend17
-rw-r--r--usr.sbin/mailstats/Makefile.depend23
-rw-r--r--usr.sbin/mailwrapper/Makefile.depend19
-rw-r--r--usr.sbin/makefs/Makefile.depend21
-rw-r--r--usr.sbin/makemap/Makefile.depend24
-rw-r--r--usr.sbin/manctl/Makefile.depend11
-rw-r--r--usr.sbin/memcontrol/Makefile.depend18
-rw-r--r--usr.sbin/mergemaster/Makefile.depend11
-rw-r--r--usr.sbin/mfiutil/Makefile.depend19
-rw-r--r--usr.sbin/mixer/Makefile.depend18
-rw-r--r--usr.sbin/mld6query/Makefile.depend19
-rw-r--r--usr.sbin/mlxcontrol/Makefile.depend18
-rw-r--r--usr.sbin/mount_smbfs/Makefile.depend21
-rw-r--r--usr.sbin/mountd/Makefile.depend22
-rw-r--r--usr.sbin/moused/Makefile.depend20
-rw-r--r--usr.sbin/mptable/Makefile.depend18
-rw-r--r--usr.sbin/mptutil/Makefile.depend21
-rw-r--r--usr.sbin/mtest/Makefile.depend19
-rw-r--r--usr.sbin/mtree/Makefile.depend19
-rw-r--r--usr.sbin/ndiscvt/Makefile.depend26
-rw-r--r--usr.sbin/ndp/Makefile.depend19
-rw-r--r--usr.sbin/newsyslog/Makefile.depend18
-rw-r--r--usr.sbin/nfscbd/Makefile.depend19
-rw-r--r--usr.sbin/nfsd/Makefile.depend21
-rw-r--r--usr.sbin/nfsdumpstate/Makefile.depend19
-rw-r--r--usr.sbin/nfsrevoke/Makefile.depend18
-rw-r--r--usr.sbin/nfsuserd/Makefile.depend19
-rw-r--r--usr.sbin/ngctl/Makefile.depend22
-rw-r--r--usr.sbin/nghook/Makefile.depend19
-rw-r--r--usr.sbin/nmtree/Makefile.depend16
-rw-r--r--usr.sbin/nologin/Makefile.depend17
-rw-r--r--usr.sbin/nscd/Makefile.depend21
-rw-r--r--usr.sbin/ntp/doc/Makefile.depend11
-rw-r--r--usr.sbin/ntp/libntp/Makefile.depend19
-rw-r--r--usr.sbin/ntp/libntpevent/Makefile.depend16
-rw-r--r--usr.sbin/ntp/libopts/Makefile.depend13
-rw-r--r--usr.sbin/ntp/libparse/Makefile.depend16
-rw-r--r--usr.sbin/ntp/ntp-keygen/Makefile.depend24
-rw-r--r--usr.sbin/ntp/ntpd/Makefile.depend27
-rw-r--r--usr.sbin/ntp/ntpdate/Makefile.depend25
-rw-r--r--usr.sbin/ntp/ntpdc/Makefile.depend28
-rw-r--r--usr.sbin/ntp/ntpq/Makefile.depend28
-rw-r--r--usr.sbin/ntp/ntptime/Makefile.depend23
-rw-r--r--usr.sbin/ntp/sntp/Makefile.depend25
-rw-r--r--usr.sbin/ofwdump/Makefile.depend20
-rw-r--r--usr.sbin/pc-sysinstall/backend-partmanager/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/backend-query/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend-query/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/backend/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/conf/Makefile2
-rw-r--r--usr.sbin/pc-sysinstall/conf/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/doc/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/doc/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/examples/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/examples/Makefile.depend11
-rw-r--r--usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend11
-rw-r--r--usr.sbin/pciconf/Makefile.depend18
-rw-r--r--usr.sbin/periodic/Makefile.depend11
-rw-r--r--usr.sbin/pkg/Makefile.depend31
-rw-r--r--usr.sbin/pmcannotate/Makefile.depend18
-rw-r--r--usr.sbin/pmccontrol/Makefile.depend19
-rw-r--r--usr.sbin/pmcstat/Makefile.depend23
-rw-r--r--usr.sbin/pnpinfo/Makefile.depend20
-rw-r--r--usr.sbin/portsnap/make_index/Makefile.depend18
-rw-r--r--usr.sbin/portsnap/phttpget/Makefile.depend18
-rw-r--r--usr.sbin/portsnap/portsnap/Makefile.depend11
-rw-r--r--usr.sbin/powerd/Makefile.depend19
-rw-r--r--usr.sbin/ppp/Makefile.depend27
-rw-r--r--usr.sbin/pppctl/Makefile.depend22
-rw-r--r--usr.sbin/praliases/Makefile.depend24
-rw-r--r--usr.sbin/praudit/Makefile.depend19
-rw-r--r--usr.sbin/procctl/Makefile.depend18
-rw-r--r--usr.sbin/pstat/Makefile.depend20
-rw-r--r--usr.sbin/pw/Makefile.depend21
-rw-r--r--usr.sbin/pw/pw.84
-rw-r--r--usr.sbin/pwd_mkdb/Makefile.depend19
-rw-r--r--usr.sbin/quot/Makefile.depend18
-rw-r--r--usr.sbin/quotaon/Makefile.depend19
-rw-r--r--usr.sbin/rarpd/Makefile.depend20
-rw-r--r--usr.sbin/repquota/Makefile.depend19
-rw-r--r--usr.sbin/rip6query/Makefile.depend19
-rw-r--r--usr.sbin/rmt/Makefile.depend18
-rw-r--r--usr.sbin/route6d/Makefile.depend19
-rw-r--r--usr.sbin/rpc.lockd/Makefile.depend25
-rw-r--r--usr.sbin/rpc.statd/Makefile.depend32
-rw-r--r--usr.sbin/rpc.umntall/Makefile.depend20
-rw-r--r--usr.sbin/rpc.yppasswdd/Makefile.depend48
-rw-r--r--usr.sbin/rpc.ypupdated/Makefile.depend29
-rw-r--r--usr.sbin/rpc.ypxfrd/Makefile.depend30
-rw-r--r--usr.sbin/rpcbind/Makefile.depend23
-rw-r--r--usr.sbin/rrenumd/Makefile.depend29
-rw-r--r--usr.sbin/rtadvctl/Makefile.depend19
-rw-r--r--usr.sbin/rtadvd/Makefile.depend20
-rw-r--r--usr.sbin/rtprio/Makefile.depend18
-rw-r--r--usr.sbin/rtsold/Makefile.depend19
-rw-r--r--usr.sbin/rwhod/Makefile.depend20
-rw-r--r--usr.sbin/sa/Makefile.depend18
-rw-r--r--usr.sbin/sendmail/Makefile.depend106
-rw-r--r--usr.sbin/service/Makefile.depend11
-rw-r--r--usr.sbin/services_mkdb/Makefile.depend19
-rw-r--r--usr.sbin/setfib/Makefile.depend18
-rw-r--r--usr.sbin/setfmac/Makefile.depend18
-rw-r--r--usr.sbin/setpmac/Makefile.depend18
-rw-r--r--usr.sbin/sicontrol/Makefile.depend18
-rw-r--r--usr.sbin/smbmsg/Makefile.depend18
-rw-r--r--usr.sbin/snapinfo/Makefile.depend19
-rw-r--r--usr.sbin/spkrtest/Makefile.depend11
-rw-r--r--usr.sbin/spray/Makefile.depend21
-rw-r--r--usr.sbin/syslogd/Makefile.depend20
-rw-r--r--usr.sbin/syslogd/syslogd.84
-rw-r--r--usr.sbin/syslogd/syslogd.c67
-rw-r--r--usr.sbin/tcpdchk/Makefile.depend20
-rw-r--r--usr.sbin/tcpdmatch/Makefile.depend20
-rw-r--r--usr.sbin/tcpdrop/Makefile.depend18
-rw-r--r--usr.sbin/tcpdump/tcpdump/Makefile.depend27
-rw-r--r--usr.sbin/timed/timed/Makefile.depend22
-rw-r--r--usr.sbin/timed/timedc/Makefile.depend20
-rw-r--r--usr.sbin/traceroute/Makefile.depend22
-rw-r--r--usr.sbin/traceroute6/Makefile.depend20
-rw-r--r--usr.sbin/trpt/Makefile.depend19
-rw-r--r--usr.sbin/tzsetup/Makefile.depend21
-rw-r--r--usr.sbin/uathload/Makefile.depend18
-rw-r--r--usr.sbin/ugidfw/Makefile.depend19
-rw-r--r--usr.sbin/uhsoctl/Makefile.depend20
-rw-r--r--usr.sbin/usbconfig/Makefile.depend20
-rw-r--r--usr.sbin/usbdump/Makefile.depend18
-rw-r--r--usr.sbin/utx/Makefile.depend18
-rw-r--r--usr.sbin/vidcontrol/Makefile.depend18
-rw-r--r--usr.sbin/vipw/Makefile.depend19
-rw-r--r--usr.sbin/wake/Makefile.depend18
-rw-r--r--usr.sbin/watch/Makefile.depend19
-rw-r--r--usr.sbin/watchdogd/Makefile.depend20
-rw-r--r--usr.sbin/wlandebug/Makefile.depend18
-rw-r--r--usr.sbin/wlconfig/Makefile.depend20
-rw-r--r--usr.sbin/wpa/hostapd/Makefile.depend23
-rw-r--r--usr.sbin/wpa/hostapd_cli/Makefile.depend20
-rw-r--r--usr.sbin/wpa/ndis_events/Makefile.depend19
-rw-r--r--usr.sbin/wpa/wpa_cli/Makefile.depend20
-rw-r--r--usr.sbin/wpa/wpa_passphrase/Makefile.depend20
-rw-r--r--usr.sbin/wpa/wpa_supplicant/Makefile.depend23
-rw-r--r--usr.sbin/yp_mkdb/Makefile.depend20
-rw-r--r--usr.sbin/ypbind/Makefile.depend21
-rw-r--r--usr.sbin/yppoll/Makefile.depend20
-rw-r--r--usr.sbin/yppush/Makefile.depend28
-rw-r--r--usr.sbin/ypserv/Makefile.depend34
-rw-r--r--usr.sbin/ypset/Makefile.depend21
-rw-r--r--usr.sbin/zic/zdump/Makefile.depend18
-rw-r--r--usr.sbin/zic/zic/Makefile.depend18
-rw-r--r--usr.sbin/zzz/Makefile.depend11
2796 files changed, 72251 insertions, 30934 deletions
diff --git a/Makefile b/Makefile
index 34ffe76..ac62b98 100644
--- a/Makefile
+++ b/Makefile
@@ -99,6 +99,14 @@
#
# For more information, see the build(7) manual page.
#
+
+# Note: we use this awkward construct to be compatible with FreeBSD's
+# old make used in 10.0 and 9.2 and earlier.
+.if defined(MK_META_MODE) && ${MK_META_MODE} == "yes"
+# targets/Makefile plays the role of top-level
+.include "targets/Makefile"
+.else
+
TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
check-old check-old-dirs check-old-files check-old-libs \
checkdpadd clean cleandepend cleandir \
@@ -430,9 +438,12 @@ universe_epilogue: universe_${target}
universe_${target}: universe_${target}_prologue
universe_${target}_prologue: universe_prologue
@echo ">> ${target} started on `LC_ALL=C date`"
+universe_${target}_worlds:
+
.if !defined(MAKE_JUST_KERNELS)
+universe_${target}_done: universe_${target}_worlds
.for target_arch in ${TARGET_ARCHES_${target}}
-universe_${target}: universe_${target}_${target_arch}
+universe_${target}_worlds: universe_${target}_${target_arch}
universe_${target}_${target_arch}: universe_${target}_prologue .MAKE
@echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`"
@(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \
@@ -445,15 +456,11 @@ universe_${target}_${target_arch}: universe_${target}_prologue .MAKE
${MAKEFAIL}))
@echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} completed on `LC_ALL=C date`"
.endfor
-.endif
+.endif # !MAKE_JUST_KERNELS
+
.if !defined(MAKE_JUST_WORLDS)
-# If we are building world and kernels wait for the required worlds to finish
-.if !defined(MAKE_JUST_KERNELS)
-.for target_arch in ${TARGET_ARCHES_${target}}
-universe_${target}_kernels: universe_${target}_${target_arch}
-.endfor
-.endif
-universe_${target}: universe_${target}_kernels
+universe_${target}_done: universe_${target}_kernels
+universe_${target}_kernels: universe_${target}_worlds
universe_${target}_kernels: universe_${target}_prologue .MAKE
.if exists(${KERNSRCDIR}/${target}/conf/NOTES)
@(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
@@ -463,7 +470,11 @@ universe_${target}_kernels: universe_${target}_prologue .MAKE
.endif
@cd ${.CURDIR} && ${SUB_MAKE} ${.MAKEFLAGS} TARGET=${target} \
universe_kernels
-.endif
+.endif # !MAKE_JUST_WORLDS
+
+# Tell the user the worlds and kernels have completed
+universe_${target}: universe_${target}_done
+universe_${target}_done:
@echo ">> ${target} completed on `LC_ALL=C date`"
.endfor
universe_kernels: universe_kernconfs
@@ -517,9 +528,23 @@ buildLINT:
${MAKE} -C ${.CURDIR}/sys/${_TARGET}/conf LINT
.if defined(.PARSEDIR)
+# This makefile does not run in meta mode
+.MAKE.MODE= normal
+# Normally the things we run from here don't either.
+# Using -DWITH_META_FILES
+# we can buildworld with meta files created which are useful
+# for debugging, but without any of the rest of a meta mode build.
+MK_META_MODE= no
+MK_STAGING= no
+# tell meta.autodep.mk to not even think about updating anything.
+UPDATE_DEPENDFILE= NO
+.export MK_META_MODE MK_STAGING UPDATE_DEPENDFILE
+
.if make(universe)
# we do not want a failure of one branch abort all.
MAKE_JOB_ERROR_TOKEN= no
.export MAKE_JOB_ERROR_TOKEN
.endif
-.endif
+.endif # bmake
+
+.endif # META_MODE
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index c51cf7c..c00a657 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -100,9 +100,9 @@ OLD_DIRS+=usr/lib/clang/3.6.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.6.1/lib
OLD_DIRS+=usr/lib/clang/3.6.1
# 20150528: PCI IOV device driver methods moved to a separate kobj interface.
-OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9
-OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9
-OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9
+OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9.gz
+OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9.gz
+OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9.gz
# 20150525: new clang import which bumps version from 3.6.0 to 3.6.1.
OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h
@@ -178,9 +178,13 @@ OLD_FILES+=usr/lib32/libheimsqlite.a
OLD_FILES+=usr/lib32/libheimsqlite.so
OLD_LIBS+=usr/lib32/libheimsqlite.so.11
OLD_FILES+=usr/lib32/libheimsqlite_p.a
+# 20150518: tzdata2015c update
+OLD_FILES+=usr/share/zoneinfo/America/Montreal
# 20150506
OLD_FILES+=usr/share/man/man9/NDHASGIANT.9.gz
# 20150504
+OLD_FILES+=usr/share/examples/etc/libmap32.conf
+OLD_FILES+=usr/include/bsdstat.h
OLD_LIBS+=usr/lib32/private/libatf-c++.so.2
OLD_LIBS+=usr/lib32/private/libbsdstat.so.1
OLD_LIBS+=usr/lib32/private/libheimipcs.so.11
@@ -221,6 +225,7 @@ OLD_FILES+=usr/share/man/man3/nvlist_addv_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_string.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_existsf.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_descriptor.3.gz
@@ -229,6 +234,7 @@ OLD_FILES+=usr/share/man/man3/nvlist_existsf_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_type.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_existsv.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_descriptor.3.gz
@@ -237,6 +243,7 @@ OLD_FILES+=usr/share/man/man3/nvlist_existsv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_type.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_freef.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_descriptor.3.gz
@@ -245,6 +252,7 @@ OLD_FILES+=usr/share/man/man3/nvlist_freef_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_type.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_freev.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_descriptor.3.gz
@@ -265,10 +273,33 @@ OLD_FILES+=usr/share/man/man3/nvlist_getv_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_string.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movef_binary.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movef_descriptor.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movef_nvlist.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movef_string.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movev_binary.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movev_descriptor.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movev_nvlist.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_movev_string.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_binary.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_bool.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_descriptor.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_number.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_nvlist.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takef_string.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_binary.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_bool.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_descriptor.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_number.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_nvlist.3.gz
+OLD_FILES+=usr/share/man/man3/nvlist_takev_string.3.gz
# 20150429:
OLD_FILES+=usr/share/docs/papers/hwpmc.ascii.gz
# 20150427: test/sys/kern/mmap_test moved to test/sys/vm/mmap_test
OLD_FILES+=usr/tests/sys/kern/mmap_test
+# 20150422: zlib.c moved from net to libkern
+OLD_FILES+=usr/include/net/zlib.h
+OLD_FILES+=usr/include/net/zutil.h
# 20150418
OLD_FILES+=sbin/mount_oldnfs
OLD_FILES+=usr/share/man/man8/mount_oldnfs.8.gz
@@ -358,7 +389,7 @@ OLD_FILES+=usr/bin/ppt
OLD_FILES+=usr/share/man/man6/bcd.6.gz
OLD_FILES+=usr/share/man/man6/ppt.6.gz
# 20150217: Removed remnants of ar(4) driver
-OLD_FILES+=usr/include/sys/dev/ic/hd64570.h
+OLD_FILES+=usr/include/dev/ic/hd64570.h
# 20150212: /usr/games moving into /usr/bin
OLD_FILES+=usr/games/bcd
OLD_FILES+=usr/games/caesar
@@ -378,19 +409,21 @@ OLD_DIRS+=usr/games
# 20150209: liblzma header
OLD_FILES+=usr/include/lzma/lzma.h
# 20150124: spl.9 and friends
-OLD_FILES+=usr/share/man/man9/spl.9
-OLD_FILES+=usr/share/man/man9/spl0.9
-OLD_FILES+=usr/share/man/man9/splbio.9
-OLD_FILES+=usr/share/man/man9/splclock.9
-OLD_FILES+=usr/share/man/man9/splhigh.9
-OLD_FILES+=usr/share/man/man9/splimp.9
-OLD_FILES+=usr/share/man/man9/splnet.9
-OLD_FILES+=usr/share/man/man9/splsoftclock.9
-OLD_FILES+=usr/share/man/man9/splsofttty.9
-OLD_FILES+=usr/share/man/man9/splstatclock.9
-OLD_FILES+=usr/share/man/man9/spltty.9
-OLD_FILES+=usr/share/man/man9/splvm.9
-OLD_FILES+=usr/share/man/man9/splx.9
+OLD_FILES+=usr/share/man/man9/spl.9.gz
+OLD_FILES+=usr/share/man/man9/spl0.9.gz
+OLD_FILES+=usr/share/man/man9/splbio.9.gz
+OLD_FILES+=usr/share/man/man9/splclock.9.gz
+OLD_FILES+=usr/share/man/man9/splhigh.9.gz
+OLD_FILES+=usr/share/man/man9/splimp.9.gz
+OLD_FILES+=usr/share/man/man9/splnet.9.gz
+OLD_FILES+=usr/share/man/man9/splsoftclock.9.gz
+OLD_FILES+=usr/share/man/man9/splsofttty.9.gz
+OLD_FILES+=usr/share/man/man9/splstatclock.9.gz
+OLD_FILES+=usr/share/man/man9/spltty.9.gz
+OLD_FILES+=usr/share/man/man9/splvm.9.gz
+OLD_FILES+=usr/share/man/man9/splx.9.gz
+# 20150118: toeplitz.c moved from netinet to net
+OLD_FILES+=usr/include/netinet/toeplitz.h
# 20150118: new clang import which bumps version from 3.5.0 to 3.5.1.
OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_pclmul.h
@@ -445,6 +478,8 @@ OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.5.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.5.0/lib
OLD_DIRS+=usr/lib/clang/3.5.0
+# 20150102: removal of asr(4)
+OLD_FILES+=usr/share/man/man4/asr.4.gz
# 20150102: removal of texinfo
OLD_FILES+=usr/bin/info
OLD_FILES+=usr/bin/infokey
@@ -513,7 +548,7 @@ OLD_FILES+=usr/include/clang/3.4.1/x86intrin.h
OLD_FILES+=usr/include/clang/3.4.1/xmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/xopintrin.h
OLD_DIRS+=usr/include/clang/3.4.1
-# 20141226: Remove gpib/ieee488
+# 20141225: Remove gpib/ieee488
OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h
OLD_FILES+=usr/include/dev/ieee488/tnt4882.h
OLD_FILES+=usr/include/dev/ieee488/ugpib.h
@@ -526,16 +561,28 @@ OLD_FILES+=usr/lib/libgpib_p.a
OLD_FILES+=usr/lib/libgpib.so
OLD_LIBS+=usr/lib/libgpib.so.3
OLD_FILES+=usr/lib/libgpib_p.a
-OLD_FILES+=share/man/man4/pcii.4.gz
-OLD_FILES+=share/man/man4/gpib.4.gz
-OLD_FILES+=share/man/man4/tnt4882.4.gz
-.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libgpib.a
OLD_FILES+=usr/lib32/libgpib_p.a
OLD_FILES+=usr/lib32/libgpib.so
OLD_LIBS+=usr/lib32/libgpib.so.3
-.endif
-
+OLD_FILES+=usr/share/man/man3/gpib.3.gz
+OLD_FILES+=usr/share/man/man3/ibclr.3.gz
+OLD_FILES+=usr/share/man/man3/ibdev.3.gz
+OLD_FILES+=usr/share/man/man3/ibdma.3.gz
+OLD_FILES+=usr/share/man/man3/ibeos.3.gz
+OLD_FILES+=usr/share/man/man3/ibeot.3.gz
+OLD_FILES+=usr/share/man/man3/ibloc.3.gz
+OLD_FILES+=usr/share/man/man3/ibonl.3.gz
+OLD_FILES+=usr/share/man/man3/ibpad.3.gz
+OLD_FILES+=usr/share/man/man3/ibrd.3.gz
+OLD_FILES+=usr/share/man/man3/ibsad.3.gz
+OLD_FILES+=usr/share/man/man3/ibsic.3.gz
+OLD_FILES+=usr/share/man/man3/ibtmo.3.gz
+OLD_FILES+=usr/share/man/man3/ibtrg.3.gz
+OLD_FILES+=usr/share/man/man3/ibwrt.3.gz
+OLD_FILES+=usr/share/man/man4/gpib.4.gz
+OLD_FILES+=usr/share/man/man4/pcii.4.gz
+OLD_FILES+=usr/share/man/man4/tnt4882.4.gz
# 20141224: libxo moved to /lib
OLD_LIBS+=usr/lib/libxo.so.0
# 20141223: remove in6_gif.h, in_gif.h and if_stf.h
@@ -553,6 +600,11 @@ OLD_FILES+=usr/tests/sbin/mdconfig/mdconfig.test
OLD_FILES+=usr/tests/sbin/mdconfig/run.pl
# 20141126: remove xform_ipip decapsulation fallback
OLD_FILES+=usr/include/netipsec/ipip_var.h
+# 20141122: mandoc updated to 1.13.1
+OLD_FILES+=usr/share/mdocml/external.png
+# 20141111: SF_KQUEUE code removed
+OLD_FILES+=usr/include/sys/sf_base.h
+OLD_FILES+=usr/include/sys/sf_sync.h
# 20141109: faith/faithd removal
OLD_FILES+=etc/rc.d/faith
OLD_FILES+=usr/share/man/man4/faith.4.gz
@@ -565,6 +617,8 @@ OLD_FILES+=usr/include/netinet/ip_gre.h
OLD_FILES+=etc/rc.d/postrandom
# 20141031: initrandom obsoleted by new /dev/random code
OLD_FILES+=etc/rc.d/initrandom
+# 20141030: atf 0.21 import
+OLD_FILES+=usr/share/man/man3/atf-c++-api.3.gz
# 20141028: debug files accidentally installed as directory name
OLD_FILES+=usr/lib/debug/usr/lib/i18n
OLD_FILES+=usr/lib/debug/usr/lib/private
@@ -572,6 +626,9 @@ OLD_FILES+=usr/lib/debug/usr/lib32/i18n
OLD_FILES+=usr/lib/debug/usr/lib32/private
# 20141015: OpenSSL 1.0.1j import
OLD_FILES+=usr/share/openssl/man/man3/CMS_sign_add1_signer.3.gz
+# 20141003: libproc version bump
+OLD_LIBS+=usr/lib/libproc.so.2
+OLD_LIBS+=usr/lib32/libproc.so.2
# 20140922: sleepq_calc_signal_retval.9 and sleepq_catch_signals.9 removed
OLD_FILES+=usr/share/man/man9/sleepq_calc_signal_retval.9.gz
OLD_FILES+=usr/share/man/man9/sleepq_catch_signals.9.gz
@@ -581,6 +638,10 @@ OLD_FILES+=etc/rc.d/hv_kvpd
OLD_LIBS+=usr/lib/libnv.so.0
# 20140829: rc.d/kerberos removed
OLD_FILES+=etc/rc.d/kerberos
+# 20140827: tzdata2014f import
+OLD_FILES+=usr/share/zoneinfo/Asia/Chongqing
+OLD_FILES+=usr/share/zoneinfo/Asia/Harbin
+OLD_FILES+=usr/share/zoneinfo/Asia/Kashgar
# 20140814: libopie version bump
OLD_LIBS+=usr/lib/libopie.so.7
OLD_LIBS+=usr/lib32/libopie.so.7
@@ -646,12 +707,15 @@ OLD_FILES+=usr/lib/private/libucl_p.a
OLD_FILES+=usr/share/man/man9/pmap_change_wiring.9.gz
# 20140728: libsbuf restored to old version.
OLD_LIBS+=lib/libsbuf.so.7
+OLD_LIBS+=usr/lib32/libsbuf.so.7
# 20140728: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/VOP_GETVOBJECT.9.gz
OLD_FILES+=usr/share/man/man9/VOP_CREATEVOBJECT.9.gz
OLD_FILES+=usr/share/man/man9/VOP_DESTROYVOBJECT.9.gz
# 20140723: renamed to PCBGROUP.9
OLD_FILES+=usr/share/man/man9/PCBGROUPS.9.gz
+# 20140722: browse_packages_ftp.sh removed
+OLD_FILES+=usr/share/examples/bsdconfig/browse_packages_ftp.sh
# 20140718: Remove obsolete man pages
OLD_FILES+=usr/share/man/man9/zero_copy.9.gz
OLD_FILES+=usr/share/man/man9/zero_copy_sockets.9.gz
@@ -672,6 +736,14 @@ OLD_FILES+=usr/lib/libhistory.a
OLD_FILES+=usr/lib/libhistory_p.a
OLD_FILES+=usr/lib/libhistory.so
OLD_LIBS+=usr/lib/libhistory.so.8
+OLD_FILES+=usr/lib32/libhistory.a
+OLD_FILES+=usr/lib32/libhistory.so
+OLD_LIBS+=usr/lib32/libhistory.so.8
+OLD_FILES+=usr/lib32/libhistory_p.a
+OLD_FILES+=usr/lib32/libreadline.a
+OLD_FILES+=usr/lib32/libreadline.so
+OLD_LIBS+=usr/lib32/libreadline.so.8
+OLD_FILES+=usr/lib32/libreadline_p.a
OLD_FILES+=usr/include/readline/chardefs.h
OLD_FILES+=usr/include/readline/history.h
OLD_FILES+=usr/include/readline/keymaps.h
@@ -684,6 +756,7 @@ OLD_FILES+=usr/include/readline/rltypedefs.h
OLD_DIRS+=usr/include/readline
OLD_FILES+=usr/share/info/readline.info.gz
OLD_FILES+=usr/share/man/man3/readline.3.gz
+OLD_FILES+=usr/share/man/man3/rlhistory.3.gz
# 20140625: csup removal
OLD_FILES+=usr/bin/csup
OLD_FILES+=usr/bin/cpasswd
@@ -2062,7 +2135,6 @@ OLD_LIBS+=usr/lib/libpanel.so.4
OLD_LIBS+=usr/lib/libpanelw.so.4
OLD_LIBS+=usr/lib/libpmc.so.4
OLD_LIBS+=usr/lib/libproc.so.1
-OLD_LIBS+=usr/lib/libproc.so.2
OLD_LIBS+=usr/lib/libradius.so.3
OLD_LIBS+=usr/lib/librpcsvc.so.4
OLD_LIBS+=usr/lib/libsdp.so.3
diff --git a/UPDATING b/UPDATING
index beb052a..0952828 100644
--- a/UPDATING
+++ b/UPDATING
@@ -36,6 +36,64 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
20141231 entry below for information about prerequisites and upgrading,
if you are not already using 3.5.0 or higher.
+20150616:
+ /etc/make.conf now included earlier.
+ sys.mk now includes /etc/make.conf and {local,src}.sys.mk earlier
+ than previously.
+ This makes it simple to interpose external toolchains etc.
+ However it may cause problems for users who have things like::
+
+ INSTALL+= something
+
+ in /etc/make.conf, since INSTALL is not yet defined.
+ A safe fix for that is to have::
+
+ INSTALL?= install
+ INSTALL+= something
+
+ which is equivalent to previous behavior.
+
+20150616:
+ FreeBSD's old make (fmake) has been removed from the system. It is
+ available as the devel/fmake port or via pkg install fmake.
+
+20150615:
+ The fix for the issue described in the 20150614 sendmail entry
+ below has been been committed in revision 284436. The work
+ around described in that entry is no longer needed unless the
+ default setting is overridden by a confDH_PARAMETERS configuration
+ setting of '5' or pointing to a 512 bit DH parameter file.
+
+20150614:
+ ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
+ atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
+ and devel/kyua to version 0.20+ and adjust any calling code to work
+ with Kyuafile and kyua.
+
+20150614:
+ The import of openssl to address the FreeBSD-SA-15:10.openssl
+ security advisory includes a change which rejects handshakes
+ with DH parameters below 768 bits. sendmail releases prior
+ to 8.15.2 (not yet released), defaulted to a 512 bit
+ DH parameter setting for client connections. To work around
+ this interoperability, sendmail can be configured to use a
+ 2048 bit DH parameter by:
+
+ 1. Edit /etc/mail/`hostname`.mc
+ 2. If a setting for confDH_PARAMETERS does not exist or
+ exists and is set to a string beginning with '5',
+ replace it with '2'.
+ 3. If a setting for confDH_PARAMETERS exists and is set to
+ a file path, create a new file with:
+ openssl dhparam -out /path/to/file 2048
+ 4. Rebuild the .cf file:
+ cd /etc/mail/; make; make install
+ 5. Restart sendmail:
+ cd /etc/mail/; make restart
+
+ A sendmail patch is coming, at which time this file will be
+ updated.
+
20150604:
Generation of legacy formatted entries have been disabled by default
in pwd_mkdb(8), as all base system consumers of the legacy formatted
diff --git a/bin/cat/Makefile.depend b/bin/cat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/cat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chflags/Makefile.depend b/bin/chflags/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/chflags/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chio/Makefile.depend b/bin/chio/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/chio/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chmod/Makefile.depend b/bin/chmod/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/chmod/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/cp/Makefile.depend b/bin/cp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/cp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/csh/Makefile.depend b/bin/csh/Makefile.depend
new file mode 100644
index 0000000..ab84f40
--- /dev/null
+++ b/bin/csh/Makefile.depend
@@ -0,0 +1,243 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ed.chared.o: ed.defns.h
+ed.chared.o: sh.err.h
+ed.chared.o: tc.const.h
+ed.chared.po: ed.defns.h
+ed.chared.po: sh.err.h
+ed.chared.po: tc.const.h
+ed.defns.o: sh.err.h
+ed.defns.o: tc.const.h
+ed.defns.po: sh.err.h
+ed.defns.po: tc.const.h
+ed.init.o: ed.defns.h
+ed.init.o: sh.err.h
+ed.init.o: tc.const.h
+ed.init.po: ed.defns.h
+ed.init.po: sh.err.h
+ed.init.po: tc.const.h
+ed.inputl.o: ed.defns.h
+ed.inputl.o: sh.err.h
+ed.inputl.o: tc.const.h
+ed.inputl.po: ed.defns.h
+ed.inputl.po: sh.err.h
+ed.inputl.po: tc.const.h
+ed.refresh.o: sh.err.h
+ed.refresh.o: tc.const.h
+ed.refresh.po: sh.err.h
+ed.refresh.po: tc.const.h
+ed.screen.o: ed.defns.h
+ed.screen.o: sh.err.h
+ed.screen.o: tc.const.h
+ed.screen.po: ed.defns.h
+ed.screen.po: sh.err.h
+ed.screen.po: tc.const.h
+ed.term.o: sh.err.h
+ed.term.o: tc.const.h
+ed.term.po: sh.err.h
+ed.term.po: tc.const.h
+ed.xmap.o: ed.defns.h
+ed.xmap.o: sh.err.h
+ed.xmap.o: tc.const.h
+ed.xmap.po: ed.defns.h
+ed.xmap.po: sh.err.h
+ed.xmap.po: tc.const.h
+glob.o: sh.err.h
+glob.o: tc.const.h
+glob.po: sh.err.h
+glob.po: tc.const.h
+mi.termios.o: sh.err.h
+mi.termios.o: tc.const.h
+mi.termios.po: sh.err.h
+mi.termios.po: tc.const.h
+sh.char.o: sh.err.h
+sh.char.o: tc.const.h
+sh.char.po: sh.err.h
+sh.char.po: tc.const.h
+sh.dir.o: sh.err.h
+sh.dir.o: tc.const.h
+sh.dir.po: sh.err.h
+sh.dir.po: tc.const.h
+sh.dol.o: sh.err.h
+sh.dol.o: tc.const.h
+sh.dol.po: sh.err.h
+sh.dol.po: tc.const.h
+sh.err.o: sh.err.h
+sh.err.o: tc.const.h
+sh.err.po: sh.err.h
+sh.err.po: tc.const.h
+sh.exec.o: sh.err.h
+sh.exec.o: tc.const.h
+sh.exec.po: sh.err.h
+sh.exec.po: tc.const.h
+sh.exp.o: sh.err.h
+sh.exp.o: tc.const.h
+sh.exp.po: sh.err.h
+sh.exp.po: tc.const.h
+sh.file.o: sh.err.h
+sh.file.o: tc.const.h
+sh.file.po: sh.err.h
+sh.file.po: tc.const.h
+sh.func.o: sh.err.h
+sh.func.o: tc.const.h
+sh.func.po: sh.err.h
+sh.func.po: tc.const.h
+sh.glob.o: sh.err.h
+sh.glob.o: tc.const.h
+sh.glob.po: sh.err.h
+sh.glob.po: tc.const.h
+sh.hist.o: sh.err.h
+sh.hist.o: tc.const.h
+sh.hist.po: sh.err.h
+sh.hist.po: tc.const.h
+sh.init.o: sh.err.h
+sh.init.o: tc.const.h
+sh.init.po: sh.err.h
+sh.init.po: tc.const.h
+sh.lex.o: sh.err.h
+sh.lex.o: tc.const.h
+sh.lex.po: sh.err.h
+sh.lex.po: tc.const.h
+sh.misc.o: sh.err.h
+sh.misc.o: tc.const.h
+sh.misc.po: sh.err.h
+sh.misc.po: tc.const.h
+sh.o: sh.err.h
+sh.o: tc.const.h
+sh.parse.o: sh.err.h
+sh.parse.o: tc.const.h
+sh.parse.po: sh.err.h
+sh.parse.po: tc.const.h
+sh.po: sh.err.h
+sh.po: tc.const.h
+sh.print.o: sh.err.h
+sh.print.o: tc.const.h
+sh.print.po: sh.err.h
+sh.print.po: tc.const.h
+sh.proc.o: sh.err.h
+sh.proc.o: tc.const.h
+sh.proc.po: sh.err.h
+sh.proc.po: tc.const.h
+sh.sem.o: sh.err.h
+sh.sem.o: tc.const.h
+sh.sem.po: sh.err.h
+sh.sem.po: tc.const.h
+sh.set.o: sh.err.h
+sh.set.o: tc.const.h
+sh.set.po: sh.err.h
+sh.set.po: tc.const.h
+sh.time.o: sh.err.h
+sh.time.o: tc.const.h
+sh.time.po: sh.err.h
+sh.time.po: tc.const.h
+tc.alloc.o: sh.err.h
+tc.alloc.o: tc.const.h
+tc.alloc.po: sh.err.h
+tc.alloc.po: tc.const.h
+tc.bind.o: ed.defns.h
+tc.bind.o: sh.err.h
+tc.bind.o: tc.const.h
+tc.bind.po: ed.defns.h
+tc.bind.po: sh.err.h
+tc.bind.po: tc.const.h
+tc.const.o: sh.err.h
+tc.const.o: tc.const.h
+tc.const.po: sh.err.h
+tc.const.po: tc.const.h
+tc.defs.o: sh.err.h
+tc.defs.o: tc.const.h
+tc.defs.o: tc.defs.c
+tc.defs.po: sh.err.h
+tc.defs.po: tc.const.h
+tc.defs.po: tc.defs.c
+tc.disc.o: sh.err.h
+tc.disc.o: tc.const.h
+tc.disc.po: sh.err.h
+tc.disc.po: tc.const.h
+tc.func.o: ed.defns.h
+tc.func.o: sh.err.h
+tc.func.o: tc.const.h
+tc.func.po: ed.defns.h
+tc.func.po: sh.err.h
+tc.func.po: tc.const.h
+tc.nls.o: sh.err.h
+tc.nls.o: tc.const.h
+tc.nls.po: sh.err.h
+tc.nls.po: tc.const.h
+tc.os.o: ed.defns.h
+tc.os.o: sh.err.h
+tc.os.o: tc.const.h
+tc.os.po: ed.defns.h
+tc.os.po: sh.err.h
+tc.os.po: tc.const.h
+tc.printf.o: sh.err.h
+tc.printf.o: tc.const.h
+tc.printf.po: sh.err.h
+tc.printf.po: tc.const.h
+tc.prompt.o: sh.err.h
+tc.prompt.o: tc.const.h
+tc.prompt.po: sh.err.h
+tc.prompt.po: tc.const.h
+tc.sched.o: sh.err.h
+tc.sched.o: tc.const.h
+tc.sched.po: sh.err.h
+tc.sched.po: tc.const.h
+tc.sig.o: sh.err.h
+tc.sig.o: tc.const.h
+tc.sig.po: sh.err.h
+tc.sig.po: tc.const.h
+tc.str.o: sh.err.h
+tc.str.o: tc.const.h
+tc.str.po: sh.err.h
+tc.str.po: tc.const.h
+tc.vers.o: sh.err.h
+tc.vers.o: tc.const.h
+tc.vers.po: sh.err.h
+tc.vers.po: tc.const.h
+tc.who.o: sh.err.h
+tc.who.o: tc.const.h
+tc.who.po: sh.err.h
+tc.who.po: tc.const.h
+tw.color.o: sh.err.h
+tw.color.o: tc.const.h
+tw.color.po: sh.err.h
+tw.color.po: tc.const.h
+tw.comp.o: sh.err.h
+tw.comp.o: tc.const.h
+tw.comp.po: sh.err.h
+tw.comp.po: tc.const.h
+tw.help.o: sh.err.h
+tw.help.o: tc.const.h
+tw.help.po: sh.err.h
+tw.help.po: tc.const.h
+tw.init.o: sh.err.h
+tw.init.o: tc.const.h
+tw.init.po: sh.err.h
+tw.init.po: tc.const.h
+tw.parse.o: sh.err.h
+tw.parse.o: tc.const.h
+tw.parse.po: sh.err.h
+tw.parse.po: tc.const.h
+tw.spell.o: sh.err.h
+tw.spell.o: tc.const.h
+tw.spell.po: sh.err.h
+tw.spell.po: tc.const.h
+.endif
diff --git a/bin/date/Makefile.depend b/bin/date/Makefile.depend
new file mode 100644
index 0000000..26cae4e
--- /dev/null
+++ b/bin/date/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/dd/Makefile.depend b/bin/dd/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/dd/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/df/Makefile.depend b/bin/df/Makefile.depend
new file mode 100644
index 0000000..137678c
--- /dev/null
+++ b/bin/df/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libxo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/domainname/Makefile.depend b/bin/domainname/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/domainname/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/echo/Makefile.depend b/bin/echo/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/echo/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ed/Makefile.depend b/bin/ed/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/bin/ed/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/expr/Makefile.depend b/bin/expr/Makefile.depend
new file mode 100644
index 0000000..9d55364
--- /dev/null
+++ b/bin/expr/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+expr.o: expr.c
+expr.po: expr.c
+.endif
diff --git a/bin/freebsd-version/Makefile.depend b/bin/freebsd-version/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/bin/freebsd-version/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/getfacl/Makefile.depend b/bin/getfacl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/getfacl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/hostname/Makefile.depend b/bin/hostname/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/hostname/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/kenv/Makefile.depend b/bin/kenv/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/kenv/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/kill/Makefile.depend b/bin/kill/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/kill/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ln/Makefile.depend b/bin/ln/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/ln/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ls/Makefile b/bin/ls/Makefile
index 58206e0..3349b7a 100644
--- a/bin/ls/Makefile
+++ b/bin/ls/Makefile
@@ -10,7 +10,7 @@ LIBADD= util
.if !defined(RELEASE_CRUNCH) && \
${MK_LS_COLORS} != no
CFLAGS+= -DCOLORLS
-LIBADD+= termcapw
+LIBADD+= termcapw xo
.endif
.include <bsd.prog.mk>
diff --git a/bin/ls/Makefile.depend b/bin/ls/Makefile.depend
new file mode 100644
index 0000000..6151c71
--- /dev/null
+++ b/bin/ls/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libxo \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ls/extern.h b/bin/ls/extern.h
index 90a20a8..e4b5059 100644
--- a/bin/ls/extern.h
+++ b/bin/ls/extern.h
@@ -45,14 +45,17 @@ int revsizecmp(const FTSENT *, const FTSENT *);
void printcol(const DISPLAY *);
void printlong(const DISPLAY *);
-int printname(const char *);
+int printname(const char *, const char *);
void printscol(const DISPLAY *);
void printstream(const DISPLAY *);
void usage(void);
-int prn_normal(const char *);
+int prn_normal(const char *, const char *);
+char * getname(const char *);
size_t len_octal(const char *, int);
-int prn_octal(const char *);
-int prn_printable(const char *);
+int prn_octal(const char *, const char *);
+char * get_octal(const char *);
+int prn_printable(const char *, const char *);
+char * get_printable(const char *);
#ifdef COLORLS
void parsecolors(const char *cs);
void colorquit(int);
diff --git a/bin/ls/ls.1 b/bin/ls/ls.1
index ee8e4ff..3e02229 100644
--- a/bin/ls/ls.1
+++ b/bin/ls/ls.1
@@ -32,7 +32,7 @@
.\" @(#)ls.1 8.7 (Berkeley) 7/29/94
.\" $FreeBSD$
.\"
-.Dd April 4, 2014
+.Dd June 8, 2015
.Dt LS 1
.Os
.Sh NAME
@@ -40,6 +40,7 @@
.Nd list directory contents
.Sh SYNOPSIS
.Nm
+.Op Fl -libxo
.Op Fl ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,
.Op Fl D Ar format
.Op Ar
@@ -797,9 +798,11 @@ specification.
.Xr getfacl 1 ,
.Xr sort 1 ,
.Xr xterm 1 ,
+.Xr libxo 3 ,
.Xr localeconv 3 ,
.Xr strftime 3 ,
.Xr strmode 3 ,
+.Xr xo_parse_args 3 ,
.Xr termcap 5 ,
.Xr maclabel 7 ,
.Xr sticky 7 ,
diff --git a/bin/ls/ls.c b/bin/ls/ls.c
index 74276c1..926d2bc 100644
--- a/bin/ls/ls.c
+++ b/bin/ls/ls.c
@@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$");
#include <termcap.h>
#include <signal.h>
#endif
+#include <libxo/xo.h>
#include "ls.h"
#include "extern.h"
@@ -185,6 +186,12 @@ main(int argc, char *argv[])
fts_options = FTS_PHYSICAL;
if (getenv("LS_SAMESORT"))
f_samesort = 1;
+
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ return (1);
+ xo_set_flags(NULL, XOF_COLUMNS);
+
while ((ch = getopt(argc, argv,
"1ABCD:FGHILPRSTUWXZabcdfghiklmnopqrstuwxy,")) != -1) {
switch (ch) {
@@ -381,7 +388,7 @@ main(int argc, char *argv[])
f_color = 1;
}
#else
- warnx("color support not compiled in");
+ xo_warnx("color support not compiled in");
#endif /*COLORLS*/
#ifdef COLORLS
@@ -479,10 +486,13 @@ main(int argc, char *argv[])
else
printfcn = printcol;
+ xo_open_container("file-information");
if (argc)
traverse(argc, argv, fts_options);
else
traverse(1, dotav, fts_options);
+ xo_close_container("file-information");
+ xo_finish();
exit(rval);
}
@@ -500,10 +510,11 @@ traverse(int argc, char *argv[], int options)
FTS *ftsp;
FTSENT *p, *chp;
int ch_options;
+ int first = 1;
if ((ftsp =
fts_open(argv, options, f_nosort ? NULL : mastercmp)) == NULL)
- err(1, "fts_open");
+ xo_err(1, "fts_open");
/*
* We ignore errors from fts_children here since they will be
@@ -525,11 +536,11 @@ traverse(int argc, char *argv[], int options)
while ((p = fts_read(ftsp)) != NULL)
switch (p->fts_info) {
case FTS_DC:
- warnx("%s: directory causes a cycle", p->fts_name);
+ xo_warnx("%s: directory causes a cycle", p->fts_name);
break;
case FTS_DNR:
case FTS_ERR:
- warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
+ xo_warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
rval = 1;
break;
case FTS_D:
@@ -537,31 +548,40 @@ traverse(int argc, char *argv[], int options)
p->fts_name[0] == '.' && !f_listdot)
break;
+ if (first) {
+ first = 0;
+ xo_open_list("directory");
+ }
+ xo_open_instance("directory");
+
/*
* If already output something, put out a newline as
* a separator. If multiple arguments, precede each
* directory with its name.
*/
if (output) {
- putchar('\n');
- (void)printname(p->fts_path);
- puts(":");
+ xo_emit("\n");
+ (void)printname("path", p->fts_path);
+ xo_emit(":\n");
} else if (argc > 1) {
- (void)printname(p->fts_path);
- puts(":");
+ (void)printname("path", p->fts_path);
+ xo_emit(":\n");
output = 1;
}
chp = fts_children(ftsp, ch_options);
display(p, chp, options);
+ xo_close_instance("directory");
if (!f_recursive && chp != NULL)
(void)fts_set(ftsp, p, FTS_SKIP);
break;
default:
break;
}
+ if (!first)
+ xo_close_list("directory");
if (errno)
- err(1, "fts_read");
+ xo_err(1, "fts_read");
}
/*
@@ -608,7 +628,7 @@ display(const FTSENT *p, FTSENT *list, int options)
/* Fill-in "::" as "0:0:0" for the sake of scanf. */
jinitmax = malloc(strlen(initmax) * 2 + 2);
if (jinitmax == NULL)
- err(1, "malloc");
+ xo_err(1, "malloc");
initmax2 = jinitmax;
if (*initmax == ':')
strcpy(initmax2, "0:"), initmax2 += 2;
@@ -679,7 +699,7 @@ display(const FTSENT *p, FTSENT *list, int options)
flags = NULL;
for (cur = list, entries = 0; cur; cur = cur->fts_link) {
if (cur->fts_info == FTS_ERR || cur->fts_info == FTS_NS) {
- warnx("%s: %s",
+ xo_warnx("%s: %s",
cur->fts_name, strerror(cur->fts_errno));
cur->fts_number = NO_PRINT;
rval = 1;
@@ -745,7 +765,7 @@ display(const FTSENT *p, FTSENT *list, int options)
flags = strdup("-");
}
if (flags == NULL)
- err(1, "fflagstostr");
+ xo_err(1, "fflagstostr");
flen = strlen(flags);
if (flen > (size_t)maxflags)
maxflags = flen;
@@ -759,7 +779,7 @@ display(const FTSENT *p, FTSENT *list, int options)
error = mac_prepare_file_label(&label);
if (error == -1) {
- warn("MAC label for %s/%s",
+ xo_warn("MAC label for %s/%s",
cur->fts_parent->fts_path,
cur->fts_name);
goto label_out;
@@ -780,7 +800,7 @@ display(const FTSENT *p, FTSENT *list, int options)
error = mac_get_link(name,
label);
if (error == -1) {
- warn("MAC label for %s/%s",
+ xo_warn("MAC label for %s/%s",
cur->fts_parent->fts_path,
cur->fts_name);
mac_free(label);
@@ -790,7 +810,7 @@ display(const FTSENT *p, FTSENT *list, int options)
error = mac_to_text(label,
&labelstr);
if (error == -1) {
- warn("MAC label for %s/%s",
+ xo_warn("MAC label for %s/%s",
cur->fts_parent->fts_path,
cur->fts_name);
mac_free(label);
@@ -808,7 +828,7 @@ label_out:
if ((np = malloc(sizeof(NAMES) + labelstrlen +
ulen + glen + flen + 4)) == NULL)
- err(1, "malloc");
+ xo_err(1, "malloc");
np->user = &np->data[0];
(void)strcpy(np->user, user);
diff --git a/bin/ls/print.c b/bin/ls/print.c
index 930d6ea..2d1425d 100644
--- a/bin/ls/print.c
+++ b/bin/ls/print.c
@@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$");
#include <termcap.h>
#include <signal.h>
#endif
+#include <libxo/xo.h>
#include "ls.h"
#include "extern.h"
@@ -65,9 +66,9 @@ __FBSDID("$FreeBSD$");
static int printaname(const FTSENT *, u_long, u_long);
static void printdev(size_t, dev_t);
static void printlink(const FTSENT *);
-static void printtime(time_t);
+static void printtime(const char *, time_t);
static int printtype(u_int);
-static void printsize(size_t, off_t);
+static void printsize(const char *, size_t, off_t);
#ifdef COLORLS
static void endcolor(int);
static int colortype(mode_t);
@@ -109,26 +110,46 @@ printscol(const DISPLAY *dp)
{
FTSENT *p;
+ xo_open_list("entry");
for (p = dp->list; p; p = p->fts_link) {
if (IS_NOPRINT(p))
continue;
+ xo_open_instance("entry");
(void)printaname(p, dp->s_inode, dp->s_block);
- (void)putchar('\n');
+ xo_close_instance("entry");
+ xo_emit("\n");
}
+ xo_close_list("entry");
}
/*
* print name in current style
*/
int
-printname(const char *name)
+printname(const char *field, const char *name)
+{
+ char fmt[BUFSIZ];
+ char *s = getname(name);
+ int rc;
+
+ snprintf(fmt, sizeof(fmt), "{:%s/%%hs}", field);
+ rc = xo_emit(fmt, s);
+ free(s);
+ return rc;
+}
+
+/*
+ * print name in current style
+ */
+char *
+getname(const char *name)
{
if (f_octal || f_octal_escape)
- return prn_octal(name);
+ return get_octal(name);
else if (f_nonprint)
- return prn_printable(name);
+ return get_printable(name);
else
- return prn_normal(name);
+ return strdup(name);
}
void
@@ -144,46 +165,59 @@ printlong(const DISPLAY *dp)
if ((dp->list == NULL || dp->list->fts_level != FTS_ROOTLEVEL) &&
(f_longform || f_size)) {
- (void)printf("total %lu\n", howmany(dp->btotal, blocksize));
+ xo_emit("{L:total} {:total-blocks/%lu}\n",
+ howmany(dp->btotal, blocksize));
}
+ xo_open_list("entry");
for (p = dp->list; p; p = p->fts_link) {
+ char *name;
if (IS_NOPRINT(p))
continue;
+ xo_open_instance("entry");
sp = p->fts_statp;
+ name = getname(p->fts_name);
+ if (name)
+ xo_emit("{ke:name/%hs}", name);
if (f_inode)
- (void)printf("%*ju ",
+ xo_emit("{:inode/%*ju} ",
dp->s_inode, (uintmax_t)sp->st_ino);
if (f_size)
- (void)printf("%*jd ",
+ xo_emit("{:blocks/%*jd} ",
dp->s_block, howmany(sp->st_blocks, blocksize));
strmode(sp->st_mode, buf);
aclmode(buf, p);
np = p->fts_pointer;
- (void)printf("%s %*u %-*s %-*s ", buf, dp->s_nlink,
- sp->st_nlink, dp->s_user, np->user, dp->s_group,
- np->group);
+ xo_attr("value", "%03o", (int) sp->st_mode & ALLPERMS);
+ xo_emit("{t:mode/%s} {:links/%*u} {:user/%-*s} {:group/%-*s} ",
+ buf, dp->s_nlink, sp->st_nlink,
+ dp->s_user, np->user, dp->s_group, np->group);
if (f_flags)
- (void)printf("%-*s ", dp->s_flags, np->flags);
+ xo_emit("{:flags/%-*s} ", dp->s_flags, np->flags);
if (f_label)
- (void)printf("%-*s ", dp->s_label, np->label);
+ xo_emit("{:label/%-*s} ", dp->s_label, np->label);
if (S_ISCHR(sp->st_mode) || S_ISBLK(sp->st_mode))
printdev(dp->s_size, sp->st_rdev);
else
- printsize(dp->s_size, sp->st_size);
+ printsize("size", dp->s_size, sp->st_size);
if (f_accesstime)
- printtime(sp->st_atime);
+ printtime("access-time", sp->st_atime);
else if (f_birthtime)
- printtime(sp->st_birthtime);
+ printtime("birth-time", sp->st_birthtime);
else if (f_statustime)
- printtime(sp->st_ctime);
+ printtime("change-time", sp->st_ctime);
else
- printtime(sp->st_mtime);
+ printtime("modify-time", sp->st_mtime);
#ifdef COLORLS
if (f_color)
color_printed = colortype(sp->st_mode);
#endif
- (void)printname(p->fts_name);
+
+ if (name) {
+ xo_emit("{dk:name/%hs}", name);
+ free(name);
+ }
+
#ifdef COLORLS
if (f_color && color_printed)
endcolor(0);
@@ -192,8 +226,10 @@ printlong(const DISPLAY *dp)
(void)printtype(sp->st_mode);
if (S_ISLNK(sp->st_mode))
printlink(p);
- (void)putchar('\n');
+ xo_close_instance("entry");
+ xo_emit("\n");
}
+ xo_close_list("entry");
}
void
@@ -208,17 +244,17 @@ printstream(const DISPLAY *dp)
/* XXX strlen does not take octal escapes into account. */
if (strlen(p->fts_name) + chcnt +
(p->fts_link ? 2 : 0) >= (unsigned)termwidth) {
- putchar('\n');
+ xo_emit("\n");
chcnt = 0;
}
chcnt += printaname(p, dp->s_inode, dp->s_block);
if (p->fts_link) {
- printf(", ");
+ xo_emit(", ");
chcnt += 2;
}
}
if (chcnt)
- putchar('\n');
+ xo_emit("\n");
}
void
@@ -252,7 +288,6 @@ printcol(const DISPLAY *dp)
if (dp->entries > lastentries) {
if ((narray =
realloc(array, dp->entries * sizeof(FTSENT *))) == NULL) {
- warn(NULL);
printscol(dp);
return;
}
@@ -283,17 +318,21 @@ printcol(const DISPLAY *dp)
if ((dp->list == NULL || dp->list->fts_level != FTS_ROOTLEVEL) &&
(f_longform || f_size)) {
- (void)printf("total %lu\n", howmany(dp->btotal, blocksize));
+ xo_emit("{L:total} {:total-blocks/%lu}\n",
+ howmany(dp->btotal, blocksize));
}
+ xo_open_list("entry");
base = 0;
for (row = 0; row < numrows; ++row) {
endcol = colwidth;
if (!f_sortacross)
base = row;
for (col = 0, chcnt = 0; col < numcols; ++col) {
+ xo_open_instance("entry");
chcnt += printaname(array[base], dp->s_inode,
dp->s_block);
+ xo_close_instance("entry");
if (f_sortacross)
base++;
else
@@ -304,13 +343,14 @@ printcol(const DISPLAY *dp)
<= endcol) {
if (f_sortacross && col + 1 >= numcols)
break;
- (void)putchar(f_notabs ? ' ' : '\t');
+ xo_emit(f_notabs ? " " : "\t");
chcnt = cnt;
}
endcol += colwidth;
}
- (void)putchar('\n');
+ xo_emit("\n");
}
+ xo_close_list("entry");
}
/*
@@ -329,16 +369,16 @@ printaname(const FTSENT *p, u_long inodefield, u_long sizefield)
sp = p->fts_statp;
chcnt = 0;
if (f_inode)
- chcnt += printf("%*ju ",
+ chcnt += xo_emit("{:inode/%*ju} ",
(int)inodefield, (uintmax_t)sp->st_ino);
if (f_size)
- chcnt += printf("%*jd ",
+ chcnt += xo_emit("{:size/%*jd} ",
(int)sizefield, howmany(sp->st_blocks, blocksize));
#ifdef COLORLS
if (f_color)
color_printed = colortype(sp->st_mode);
#endif
- chcnt += printname(p->fts_name);
+ chcnt += printname("name", p->fts_name);
#ifdef COLORLS
if (f_color && color_printed)
endcolor(0);
@@ -354,14 +394,14 @@ printaname(const FTSENT *p, u_long inodefield, u_long sizefield)
static void
printdev(size_t width, dev_t dev)
{
-
- (void)printf("%#*jx ", (u_int)width, (uintmax_t)dev);
+ xo_emit("{:device/%#*jx} ", (u_int)width, (uintmax_t)dev);
}
static void
-printtime(time_t ftime)
+printtime(const char *field, time_t ftime)
{
char longstring[80];
+ char fmt[BUFSIZ];
static time_t now = 0;
const char *format;
static int d_first = -1;
@@ -384,8 +424,10 @@ printtime(time_t ftime)
/* mmm dd yyyy || dd mmm yyyy */
format = d_first ? "%e %b %Y" : "%b %e %Y";
strftime(longstring, sizeof(longstring), format, localtime(&ftime));
- fputs(longstring, stdout);
- fputc(' ', stdout);
+
+ snprintf(fmt, sizeof(fmt), "{:%s/%%hs} ", field);
+ xo_attr("value", "%ld", (long) ftime);
+ xo_emit(fmt, longstring);
}
static int
@@ -394,7 +436,7 @@ printtype(u_int mode)
if (f_slash) {
if ((mode & S_IFMT) == S_IFDIR) {
- (void)putchar('/');
+ xo_emit("{D:\\/}{e:type/directory}");
return (1);
}
return (0);
@@ -402,25 +444,25 @@ printtype(u_int mode)
switch (mode & S_IFMT) {
case S_IFDIR:
- (void)putchar('/');
+ xo_emit("{D:/\\/}{e:type/directory}");
return (1);
case S_IFIFO:
- (void)putchar('|');
+ xo_emit("{D:|}{e:type/fifo}");
return (1);
case S_IFLNK:
- (void)putchar('@');
+ xo_emit("{D:@}{e:type/link}");
return (1);
case S_IFSOCK:
- (void)putchar('=');
+ xo_emit("{D:=}{e:type/socket}");
return (1);
case S_IFWHT:
- (void)putchar('%');
+ xo_emit("{D:%}{e:type/whiteout}");
return (1);
default:
break;
}
if (mode & (S_IXUSR | S_IXGRP | S_IXOTH)) {
- (void)putchar('*');
+ xo_emit("{D:*}{e:executable/}");
return (1);
}
return (0);
@@ -430,7 +472,7 @@ printtype(u_int mode)
static int
putch(int c)
{
- (void)putchar(c);
+ xo_emit("{D:/%c}", c);
return 0;
}
@@ -539,7 +581,7 @@ parsecolors(const char *cs)
if (c[j] >= '0' && c[j] <= '7') {
colors[i].num[j] = c[j] - '0';
if (!legacy_warn) {
- warnx("LSCOLORS should use "
+ xo_warnx("LSCOLORS should use "
"characters a-h instead of 0-9 ("
"see the manual page)");
}
@@ -552,7 +594,7 @@ parsecolors(const char *cs)
} else if (tolower((unsigned char)c[j]) == 'x')
colors[i].num[j] = -1;
else {
- warnx("invalid character '%c' in LSCOLORS"
+ xo_warnx("invalid character '%c' in LSCOLORS"
" env var", c[j]);
colors[i].num[j] = -1;
}
@@ -584,18 +626,19 @@ printlink(const FTSENT *p)
(void)snprintf(name, sizeof(name),
"%s/%s", p->fts_parent->fts_accpath, p->fts_name);
if ((lnklen = readlink(name, path, sizeof(path) - 1)) == -1) {
- (void)fprintf(stderr, "\nls: %s: %s\n", name, strerror(errno));
+ xo_error("\nls: %s: %s\n", name, strerror(errno));
return;
}
path[lnklen] = '\0';
- (void)printf(" -> ");
- (void)printname(path);
+ xo_emit(" -> ");
+ (void)printname("target", path);
}
static void
-printsize(size_t width, off_t bytes)
+printsize(const char *field, size_t width, off_t bytes)
{
-
+ char fmt[BUFSIZ];
+
if (f_humanval) {
/*
* Reserve one space before the size and allocate room for
@@ -605,13 +648,15 @@ printsize(size_t width, off_t bytes)
humanize_number(buf, sizeof(buf), (int64_t)bytes, "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
- (void)printf("%*s ", (u_int)width, buf);
- } else if (f_thousands) { /* with commas */
+ snprintf(fmt, sizeof(fmt), "{:%s/%%%ds} ", field, (int) width);
+ xo_attr("value", "%jd", (intmax_t) bytes);
+ xo_emit(fmt, buf);
+ } else { /* with commas */
/* This format assignment needed to work round gcc bug. */
- const char *format = "%*j'd ";
- (void)printf(format, (u_int)width, bytes);
- } else
- (void)printf("%*jd ", (u_int)width, bytes);
+ snprintf(fmt, sizeof(fmt), "{:%s/%%%dj%sd} ",
+ field, (int) width, f_thousands ? "'" : "");
+ xo_emit(fmt, (intmax_t) bytes);
+ }
}
/*
@@ -654,7 +699,7 @@ aclmode(char *buf, const FTSENT *p)
type = ACL_TYPE_NFS4;
supports_acls = 1;
} else if (ret < 0 && errno != EINVAL) {
- warn("%s", name);
+ xo_warn("%s", name);
return;
}
if (supports_acls == 0) {
@@ -663,7 +708,7 @@ aclmode(char *buf, const FTSENT *p)
type = ACL_TYPE_ACCESS;
supports_acls = 1;
} else if (ret < 0 && errno != EINVAL) {
- warn("%s", name);
+ xo_warn("%s", name);
return;
}
}
@@ -672,12 +717,12 @@ aclmode(char *buf, const FTSENT *p)
return;
facl = acl_get_link_np(name, type);
if (facl == NULL) {
- warn("%s", name);
+ xo_warn("%s", name);
return;
}
if (acl_is_trivial_np(facl, &trivial)) {
acl_free(facl);
- warn("%s", name);
+ xo_warn("%s", name);
return;
}
if (!trivial)
diff --git a/bin/ls/util.c b/bin/ls/util.c
index f8466cd..b75cbec 100644
--- a/bin/ls/util.c
+++ b/bin/ls/util.c
@@ -50,13 +50,19 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include <wchar.h>
#include <wctype.h>
+#include <libxo/xo.h>
#include "ls.h"
#include "extern.h"
int
-prn_normal(const char *s)
+prn_normal(const char *field, const char *s)
{
+ char fmt[_POSIX2_LINE_MAX];
+
+ snprintf(fmt, sizeof(fmt), "{:%s/%%hs}", field);
+ return xo_emit(fmt, s);
+#if 0
mbstate_t mbs;
wchar_t wc;
int i, n;
@@ -83,43 +89,47 @@ prn_normal(const char *s)
n += wcwidth(wc);
}
return (n);
+#endif
}
-int
-prn_printable(const char *s)
+char *
+get_printable(const char *s)
{
mbstate_t mbs;
wchar_t wc;
int i, n;
size_t clen;
+ int slen = strlen(s);
+ char *buf = alloca(slen + 1), *bp = buf;
memset(&mbs, 0, sizeof(mbs));
n = 0;
while ((clen = mbrtowc(&wc, s, MB_LEN_MAX, &mbs)) != 0) {
if (clen == (size_t)-1) {
- putchar('?');
+ *bp++ = '?';
s++;
n++;
memset(&mbs, 0, sizeof(mbs));
continue;
}
if (clen == (size_t)-2) {
- putchar('?');
+ *bp++ = '?';
n++;
break;
}
if (!iswprint(wc)) {
- putchar('?');
+ *bp++ = '?';
s += clen;
n++;
continue;
}
for (i = 0; i < (int)clen; i++)
- putchar((unsigned char)s[i]);
+ *bp++ = (unsigned char)s[i];
s += clen;
n += wcwidth(wc);
}
- return (n);
+ *bp = '\0';
+ return strdup(buf);
}
/*
@@ -165,8 +175,8 @@ len_octal(const char *s, int len)
return (r);
}
-int
-prn_octal(const char *s)
+char *
+get_octal(const char *s)
{
static const char esc[] = "\\\\\"\"\aa\bb\ff\nn\rr\tt\vv";
const char *p;
@@ -175,6 +185,8 @@ prn_octal(const char *s)
size_t clen;
unsigned char ch;
int goodchar, i, len, prtlen;
+ int slen = strlen(s);
+ char *buf = alloca(slen * 4 + 1), *bp = buf;
memset(&mbs, 0, sizeof(mbs));
len = 0;
@@ -182,7 +194,7 @@ prn_octal(const char *s)
goodchar = clen != (size_t)-1 && clen != (size_t)-2;
if (goodchar && iswprint(wc) && wc != L'\"' && wc != L'\\') {
for (i = 0; i < (int)clen; i++)
- putchar((unsigned char)s[i]);
+ *bp++ = (unsigned char)s[i];
len += wcwidth(wc);
} else if (goodchar && f_octal_escape &&
#if WCHAR_MIN < 0
@@ -190,8 +202,8 @@ prn_octal(const char *s)
#endif
wc <= (wchar_t)UCHAR_MAX &&
(p = strchr(esc, (char)wc)) != NULL) {
- putchar('\\');
- putchar(p[1]);
+ *bp ++ = '\\';
+ *bp++ = p[1];
len += 2;
} else {
if (goodchar)
@@ -202,10 +214,10 @@ prn_octal(const char *s)
prtlen = strlen(s);
for (i = 0; i < prtlen; i++) {
ch = (unsigned char)s[i];
- putchar('\\');
- putchar('0' + (ch >> 6));
- putchar('0' + ((ch >> 3) & 7));
- putchar('0' + (ch & 7));
+ *bp++ = '\\';
+ *bp++ = '0' + (ch >> 6);
+ *bp++ = '0' + ((ch >> 3) & 7);
+ *bp++ = '0' + (ch & 7);
len += 4;
}
}
@@ -217,13 +229,15 @@ prn_octal(const char *s)
} else
s += clen;
}
- return (len);
+
+ *bp = '\0';
+ return strdup(buf);
}
void
usage(void)
{
- (void)fprintf(stderr,
+ xo_error(
#ifdef COLORLS
"usage: ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwxy1,] [-D format]"
#else
diff --git a/bin/mkdir/Makefile.depend b/bin/mkdir/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/mkdir/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/mv/Makefile.depend b/bin/mv/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/mv/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pax/Makefile.depend b/bin/pax/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/pax/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pkill/Makefile.depend b/bin/pkill/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/bin/pkill/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ps/Makefile.depend b/bin/ps/Makefile.depend
new file mode 100644
index 0000000..aeeba62
--- /dev/null
+++ b/bin/ps/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/libxo \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pwait/Makefile.depend b/bin/pwait/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/pwait/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pwd/Makefile.depend b/bin/pwd/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/pwd/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rcp/Makefile.depend b/bin/rcp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/rcp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/realpath/Makefile.depend b/bin/realpath/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/bin/realpath/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rm/Makefile.depend b/bin/rm/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/rm/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rmail/Makefile.depend b/bin/rmail/Makefile.depend
new file mode 100644
index 0000000..377032c
--- /dev/null
+++ b/bin/rmail/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+rmail.o: sm_os.h
+rmail.po: sm_os.h
+.endif
diff --git a/bin/rmdir/Makefile.depend b/bin/rmdir/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/rmdir/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/setfacl/Makefile.depend b/bin/setfacl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/setfacl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/sh/Makefile.depend b/bin/sh/Makefile.depend
new file mode 100644
index 0000000..9eb4fba
--- /dev/null
+++ b/bin/sh/Makefile.depend
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+alias.o: builtins.h
+alias.po: builtins.h
+arith_yylex.o: syntax.h
+arith_yylex.po: syntax.h
+builtins.o: builtins.c
+builtins.o: builtins.h
+builtins.po: builtins.c
+builtins.po: builtins.h
+cd.o: builtins.h
+cd.o: nodes.h
+cd.po: builtins.h
+cd.po: nodes.h
+echo.o: builtins.h
+echo.po: builtins.h
+error.o: nodes.h
+error.po: nodes.h
+eval.o: builtins.h
+eval.o: nodes.h
+eval.o: syntax.h
+eval.po: builtins.h
+eval.po: nodes.h
+eval.po: syntax.h
+exec.o: builtins.h
+exec.o: nodes.h
+exec.o: syntax.h
+exec.po: builtins.h
+exec.po: nodes.h
+exec.po: syntax.h
+expand.o: builtins.h
+expand.o: nodes.h
+expand.o: syntax.h
+expand.po: builtins.h
+expand.po: nodes.h
+expand.po: syntax.h
+histedit.o: builtins.h
+histedit.po: builtins.h
+input.o: syntax.h
+input.po: syntax.h
+jobs.o: builtins.h
+jobs.o: nodes.h
+jobs.o: syntax.h
+jobs.po: builtins.h
+jobs.po: nodes.h
+jobs.po: syntax.h
+kill.o: builtins.h
+kill.po: builtins.h
+main.o: builtins.h
+main.o: nodes.h
+main.po: builtins.h
+main.po: nodes.h
+miscbltin.o: syntax.h
+miscbltin.po: syntax.h
+mystring.o: syntax.h
+mystring.po: syntax.h
+nodes.o: nodes.c
+nodes.o: nodes.h
+nodes.po: nodes.c
+nodes.po: nodes.h
+options.o: builtins.h
+options.o: nodes.h
+options.po: builtins.h
+options.po: nodes.h
+output.o: syntax.h
+output.po: syntax.h
+parser.o: nodes.h
+parser.o: syntax.h
+parser.o: token.h
+parser.po: nodes.h
+parser.po: syntax.h
+parser.po: token.h
+printf.o: builtins.h
+printf.po: builtins.h
+redir.o: nodes.h
+redir.po: nodes.h
+show.o: nodes.h
+show.po: nodes.h
+syntax.o: syntax.c
+syntax.o: syntax.h
+syntax.po: syntax.c
+syntax.po: syntax.h
+test.o: builtins.h
+test.po: builtins.h
+trap.o: builtins.h
+trap.o: nodes.h
+trap.o: syntax.h
+trap.po: builtins.h
+trap.po: nodes.h
+trap.po: syntax.h
+var.o: builtins.h
+var.o: nodes.h
+var.o: syntax.h
+var.po: builtins.h
+var.po: nodes.h
+var.po: syntax.h
+.endif
diff --git a/bin/sleep/Makefile.depend b/bin/sleep/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/sleep/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/stty/Makefile.depend b/bin/stty/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/stty/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/sync/Makefile.depend b/bin/sync/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/bin/sync/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/test/Makefile.depend b/bin/test/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/bin/test/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/uuidgen/Makefile.depend b/bin/uuidgen/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/bin/uuidgen/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c b/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c
index 4c0c0d4..5c71160 100644
--- a/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c
+++ b/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c
@@ -157,14 +157,22 @@ static ls_event_info_t g_event_info[LS_MAX_EVENTS] = {
"lockstat:::rw-block", "arg2 != 0 && arg3 == 1" },
{ 'C', "Lock", "R/W reader blocked by write wanted", "nsec",
"lockstat:::rw-block", "arg2 != 0 && arg3 == 0 && arg4" },
- { 'C', "Lock", "Unknown event (type 8)", "units" },
- { 'C', "Lock", "Unknown event (type 9)", "units" },
- { 'C', "Lock", "Unknown event (type 10)", "units" },
- { 'C', "Lock", "Unknown event (type 11)", "units" },
- { 'C', "Lock", "Unknown event (type 12)", "units" },
- { 'C', "Lock", "Unknown event (type 13)", "units" },
- { 'C', "Lock", "Unknown event (type 14)", "units" },
- { 'C', "Lock", "Unknown event (type 15)", "units" },
+ { 'C', "Lock", "R/W writer spin on writer", "nsec",
+ "lockstat:::rw-spin", "arg2 == 0 && arg3 == 1" },
+ { 'C', "Lock", "R/W writer spin on readers", "nsec",
+ "lockstat:::rw-spin", "arg2 == 0 && arg3 == 0 && arg4" },
+ { 'C', "Lock", "R/W reader spin on writer", "nsec",
+ "lockstat:::rw-spin", "arg2 != 0 && arg3 == 1" },
+ { 'C', "Lock", "R/W reader spin on write wanted", "nsec",
+ "lockstat:::rw-spin", "arg2 != 0 && arg3 == 0 && arg4" },
+ { 'C', "Lock", "SX exclusive block", "nsec",
+ "lockstat:::sx-block", "arg2 == 0" },
+ { 'C', "Lock", "SX shared block", "nsec",
+ "lockstat:::sx-block", "arg2 != 0" },
+ { 'C', "Lock", "SX exclusive spin", "nsec",
+ "lockstat:::sx-spin", "arg2 == 0" },
+ { 'C', "Lock", "SX shared spin", "nsec",
+ "lockstat:::sx-spin", "arg2 != 0" },
{ 'C', "Lock", "Unknown event (type 16)", "units" },
{ 'C', "Lock", "Unknown event (type 17)", "units" },
{ 'C', "Lock", "Unknown event (type 18)", "units" },
@@ -188,13 +196,17 @@ static ls_event_info_t g_event_info[LS_MAX_EVENTS] = {
"lockstat:::spin-release", NULL,
"lockstat:::spin-acquire" },
{ 'H', "Lock", "R/W writer hold", "nsec",
- "lockstat:::rw-release", "arg1 == 0",
- "lockstat:::rw-acquire" },
+ "lockstat::rw_wunlock:rw-release", NULL,
+ "lockstat::rw_wlock:rw-acquire" },
{ 'H', "Lock", "R/W reader hold", "nsec",
- "lockstat:::rw-release", "arg1 != 0",
- "lockstat:::rw-acquire" },
- { 'H', "Lock", "Unknown event (type 36)", "units" },
- { 'H', "Lock", "Unknown event (type 37)", "units" },
+ "lockstat::rw_runlock:rw-release", NULL,
+ "lockstat::rw_rlock:rw-acquire" },
+ { 'H', "Lock", "SX shared hold", "nsec",
+ "lockstat::sx_sunlock:sx-release", NULL,
+ "lockstat::sx_slock:sx-acquire" },
+ { 'H', "Lock", "SX exclusive hold", "nsec",
+ "lockstat::sx_xunlock:sx-release", NULL,
+ "lockstat::sx_xlock:sx-acquire" },
{ 'H', "Lock", "Unknown event (type 38)", "units" },
{ 'H', "Lock", "Unknown event (type 39)", "units" },
{ 'H', "Lock", "Unknown event (type 40)", "units" },
diff --git a/cddl/contrib/opensolaris/cmd/zdb/zdb.c b/cddl/contrib/opensolaris/cmd/zdb/zdb.c
index 34912cd..45b6dbd 100644
--- a/cddl/contrib/opensolaris/cmd/zdb/zdb.c
+++ b/cddl/contrib/opensolaris/cmd/zdb/zdb.c
@@ -90,10 +90,10 @@ uint8_t dump_opt[256];
typedef void object_viewer_t(objset_t *, uint64_t, void *data, size_t size);
extern void dump_intent_log(zilog_t *);
-uint64_t *zopt_object = NULL;
-int zopt_objects = 0;
-libzfs_handle_t *g_zfs;
-uint64_t max_inflight = 1000;
+static uint64_t *zopt_object = NULL;
+static int zopt_objects = 0;
+static libzfs_handle_t *g_zfs;
+static uint64_t max_inflight = 1000;
/*
* These libumem hooks provide a reasonable set of defaults for the allocator's
@@ -1488,16 +1488,14 @@ dump_deadlist(dsl_deadlist_t *dl)
dle = AVL_NEXT(&dl->dl_tree, dle)) {
if (dump_opt['d'] >= 5) {
char buf[128];
- (void) snprintf(buf, sizeof (buf), "mintxg %llu -> ",
- (longlong_t)dle->dle_mintxg,
+ (void) snprintf(buf, sizeof (buf), "mintxg %llu -> "
+ "obj %llu", (longlong_t)dle->dle_mintxg,
(longlong_t)dle->dle_bpobj.bpo_object);
-
dump_bpobj(&dle->dle_bpobj, buf, 0);
} else {
(void) printf("mintxg %llu -> obj %llu\n",
(longlong_t)dle->dle_mintxg,
(longlong_t)dle->dle_bpobj.bpo_object);
-
}
}
}
diff --git a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
index d7c702b..389b248 100644
--- a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
+++ b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
@@ -593,6 +593,17 @@ finish_progress(char *done)
}
/*
+ * Check if the dataset is mountable and should be automatically mounted.
+ */
+static boolean_t
+should_auto_mount(zfs_handle_t *zhp)
+{
+ if (!zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, zfs_get_type(zhp)))
+ return (B_FALSE);
+ return (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_ON);
+}
+
+/*
* zfs clone [-p] [-o prop=value] ... <snap> <fs | vol>
*
* Given an existing dataset, create a writable copy whose initial contents
@@ -677,9 +688,22 @@ zfs_do_clone(int argc, char **argv)
clone = zfs_open(g_zfs, argv[1], ZFS_TYPE_DATASET);
if (clone != NULL) {
- if (zfs_get_type(clone) != ZFS_TYPE_VOLUME)
- if ((ret = zfs_mount(clone, NULL, 0)) == 0)
- ret = zfs_share(clone);
+ /*
+ * If the user doesn't want the dataset
+ * automatically mounted, then skip the mount/share
+ * step.
+ */
+ if (should_auto_mount(clone)) {
+ if ((ret = zfs_mount(clone, NULL, 0)) != 0) {
+ (void) fprintf(stderr, gettext("clone "
+ "successfully created, "
+ "but not mounted\n"));
+ } else if ((ret = zfs_share(clone)) != 0) {
+ (void) fprintf(stderr, gettext("clone "
+ "successfully created, "
+ "but not shared\n"));
+ }
+ }
zfs_close(clone);
}
}
@@ -728,7 +752,6 @@ zfs_do_create(int argc, char **argv)
int ret = 1;
nvlist_t *props;
uint64_t intval;
- int canmount = ZFS_CANMOUNT_OFF;
if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0)
nomem();
@@ -868,19 +891,15 @@ zfs_do_create(int argc, char **argv)
goto error;
ret = 0;
- /*
- * if the user doesn't want the dataset automatically mounted,
- * then skip the mount/share step
- */
- if (zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, type))
- canmount = zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT);
/*
* Mount and/or share the new filesystem as appropriate. We provide a
* verbose error message to let the user know that their filesystem was
* in fact created, even if we failed to mount or share it.
+ * If the user doesn't want the dataset automatically mounted,
+ * then skip the mount/share step altogether.
*/
- if (!nomount && canmount == ZFS_CANMOUNT_ON) {
+ if (!nomount && should_auto_mount(zhp)) {
if (zfs_mount(zhp, NULL, 0) != 0) {
(void) fprintf(stderr, gettext("filesystem "
"successfully created, but not mounted\n"));
diff --git a/cddl/contrib/opensolaris/cmd/ztest/ztest.c b/cddl/contrib/opensolaris/cmd/ztest/ztest.c
index ab69154..0695834 100644
--- a/cddl/contrib/opensolaris/cmd/ztest/ztest.c
+++ b/cddl/contrib/opensolaris/cmd/ztest/ztest.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2012 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
@@ -969,21 +969,6 @@ ztest_random_spa_version(uint64_t initial_version)
return (version);
}
-/*
- * Find the largest ashift used
- */
-static uint64_t
-ztest_spa_get_ashift() {
- uint64_t i;
- uint64_t ashift = SPA_MINBLOCKSHIFT;
- vdev_t *rvd = ztest_spa->spa_root_vdev;
-
- for (i = 0; i < rvd->vdev_children; i++) {
- ashift = MAX(ashift, rvd->vdev_child[i]->vdev_ashift);
- }
- return (ashift);
-}
-
static int
ztest_random_blocksize(void)
{
@@ -995,7 +980,7 @@ ztest_random_blocksize(void)
int maxbs = SPA_OLD_MAXBLOCKSHIFT;
if (spa_maxblocksize(ztest_spa) == SPA_MAXBLOCKSIZE)
maxbs = 20;
- block_shift = ztest_random(maxbs - ztest_spa_get_ashift() + 1);
+ block_shift = ztest_random(maxbs - ztest_spa->spa_max_ashift + 1);
return (1 << (SPA_MINBLOCKSHIFT + block_shift));
}
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
index c4e9ada..0987024 100644
--- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
+++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
@@ -23,6 +23,7 @@
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright 2015 RackTop Systems.
*/
/*
@@ -1094,11 +1095,7 @@ zpool_open_func(void *arg)
}
(void) close(fd);
-
rn->rn_config = config;
- if (config != NULL) {
- assert(rn->rn_nozpool == B_FALSE);
- }
}
/*
diff --git a/cddl/lib/drti/Makefile.depend b/cddl/lib/drti/Makefile.depend
new file mode 100644
index 0000000..422dbea
--- /dev/null
+++ b/cddl/lib/drti/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libelf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libavl/Makefile.depend b/cddl/lib/libavl/Makefile.depend
new file mode 100644
index 0000000..3699b06
--- /dev/null
+++ b/cddl/lib/libavl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libctf/Makefile.depend b/cddl/lib/libctf/Makefile.depend
new file mode 100644
index 0000000..4b536f7
--- /dev/null
+++ b/cddl/lib/libctf/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libz \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libdtrace/Makefile.depend b/cddl/lib/libdtrace/Makefile.depend
new file mode 100644
index 0000000..124d5c7
--- /dev/null
+++ b/cddl/lib/libdtrace/Makefile.depend
@@ -0,0 +1,53 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libproc \
+ lib/librtld_db \
+ lib/libthr \
+ usr.bin/xinstall.host \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dt_cc.So: dt_grammar.h
+dt_cc.o: dt_grammar.h
+dt_cc.po: dt_grammar.h
+dt_cg.So: dt_grammar.h
+dt_cg.o: dt_grammar.h
+dt_cg.po: dt_grammar.h
+dt_errtags.So: dt_errtags.c
+dt_errtags.o: dt_errtags.c
+dt_errtags.po: dt_errtags.c
+dt_grammar.So: dt_grammar.c
+dt_grammar.o: dt_grammar.c
+dt_grammar.po: dt_grammar.c
+dt_lex.So: dt_grammar.h
+dt_lex.So: dt_lex.c
+dt_lex.o: dt_grammar.h
+dt_lex.o: dt_lex.c
+dt_lex.po: dt_grammar.h
+dt_lex.po: dt_lex.c
+dt_names.So: dt_names.c
+dt_names.o: dt_names.c
+dt_names.po: dt_names.c
+dt_parser.So: dt_grammar.h
+dt_parser.o: dt_grammar.h
+dt_parser.po: dt_grammar.h
+dt_xlator.So: dt_grammar.h
+dt_xlator.o: dt_grammar.h
+dt_xlator.po: dt_grammar.h
+.endif
diff --git a/cddl/lib/libnvpair/Makefile.depend b/cddl/lib/libnvpair/Makefile.depend
new file mode 100644
index 0000000..3dce64a
--- /dev/null
+++ b/cddl/lib/libnvpair/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libumem/Makefile.depend b/cddl/lib/libumem/Makefile.depend
new file mode 100644
index 0000000..3699b06
--- /dev/null
+++ b/cddl/lib/libumem/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libuutil/Makefile.depend b/cddl/lib/libuutil/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/cddl/lib/libuutil/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzfs/Makefile b/cddl/lib/libzfs/Makefile
index b2f4352..19a3f2e 100644
--- a/cddl/lib/libzfs/Makefile
+++ b/cddl/lib/libzfs/Makefile
@@ -37,7 +37,6 @@ SRCS+= libzfs_changelist.c \
zfs_comutil.c \
zfs_deleg.c \
zfs_fletcher.c \
- zfs_ioctl_compat.c \
zfs_namecheck.c \
zfs_prop.c \
zpool_prop.c \
diff --git a/cddl/lib/libzfs/Makefile.depend b/cddl/lib/libzfs/Makefile.depend
new file mode 100644
index 0000000..8c2b34b
--- /dev/null
+++ b/cddl/lib/libzfs/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzfs_core/Makefile b/cddl/lib/libzfs_core/Makefile
index a470fbc..99ab34d 100644
--- a/cddl/lib/libzfs_core/Makefile
+++ b/cddl/lib/libzfs_core/Makefile
@@ -11,7 +11,8 @@ DPADD= ${LIBNVPAIR}
LDADD= -lnvpair
SRCS= libzfs_core.c \
- libzfs_core_compat.c
+ libzfs_core_compat.c \
+ zfs_ioctl_compat.c
SRCS+= libzfs_compat.c
diff --git a/cddl/lib/libzfs_core/Makefile.depend b/cddl/lib/libzfs_core/Makefile.depend
new file mode 100644
index 0000000..9e7fae2
--- /dev/null
+++ b/cddl/lib/libzfs_core/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libnvpair \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzpool/Makefile.depend b/cddl/lib/libzpool/Makefile.depend
new file mode 100644
index 0000000..cb67e22
--- /dev/null
+++ b/cddl/lib/libzpool/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libthr \
+ lib/libz \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/sbin/zfs/Makefile.depend b/cddl/sbin/zfs/Makefile.depend
new file mode 100644
index 0000000..03bb95d
--- /dev/null
+++ b/cddl/sbin/zfs/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libjail \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/sbin/zpool/Makefile.depend b/cddl/sbin/zpool/Makefile.depend
new file mode 100644
index 0000000..08245ad
--- /dev/null
+++ b/cddl/sbin/zpool/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfconvert/Makefile.depend b/cddl/usr.bin/ctfconvert/Makefile.depend
new file mode 100644
index 0000000..f479cfc
--- /dev/null
+++ b/cddl/usr.bin/ctfconvert/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfdump/Makefile.depend b/cddl/usr.bin/ctfdump/Makefile.depend
new file mode 100644
index 0000000..6b3e8f7
--- /dev/null
+++ b/cddl/usr.bin/ctfdump/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfmerge/Makefile.depend b/cddl/usr.bin/ctfmerge/Makefile.depend
new file mode 100644
index 0000000..f479cfc
--- /dev/null
+++ b/cddl/usr.bin/ctfmerge/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/sgsmsg/Makefile.depend b/cddl/usr.bin/sgsmsg/Makefile.depend
new file mode 100644
index 0000000..b767569
--- /dev/null
+++ b/cddl/usr.bin/sgsmsg/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/zinject/Makefile.depend b/cddl/usr.bin/zinject/Makefile.depend
new file mode 100644
index 0000000..deb1256
--- /dev/null
+++ b/cddl/usr.bin/zinject/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/zstreamdump/Makefile.depend b/cddl/usr.bin/zstreamdump/Makefile.depend
new file mode 100644
index 0000000..138e88b
--- /dev/null
+++ b/cddl/usr.bin/zstreamdump/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libthr \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ztest/Makefile.depend b/cddl/usr.bin/ztest/Makefile.depend
new file mode 100644
index 0000000..deb1256
--- /dev/null
+++ b/cddl/usr.bin/ztest/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/dtrace/Makefile.depend b/cddl/usr.sbin/dtrace/Makefile.depend
new file mode 100644
index 0000000..2efd35c
--- /dev/null
+++ b/cddl/usr.sbin/dtrace/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ cddl/lib/libdtrace \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libproc \
+ lib/librtld_db \
+ lib/libthr \
+ lib/libutil \
+ lib/liby \
+ lib/libz \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/dtruss/Makefile.depend b/cddl/usr.sbin/dtruss/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/cddl/usr.sbin/dtruss/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/lockstat/Makefile.depend b/cddl/usr.sbin/lockstat/Makefile.depend
new file mode 100644
index 0000000..70f0672
--- /dev/null
+++ b/cddl/usr.sbin/lockstat/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ cddl/lib/libdtrace \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libproc \
+ lib/librt \
+ lib/librtld_db \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/zdb/Makefile.depend b/cddl/usr.sbin/zdb/Makefile.depend
new file mode 100644
index 0000000..deb1256
--- /dev/null
+++ b/cddl/usr.sbin/zdb/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/zhack/Makefile.depend b/cddl/usr.sbin/zhack/Makefile.depend
new file mode 100644
index 0000000..deb1256
--- /dev/null
+++ b/cddl/usr.sbin/zhack/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/contrib/bmake/ChangeLog b/contrib/bmake/ChangeLog
index f46e95d..e1d6f10 100644
--- a/contrib/bmake/ChangeLog
+++ b/contrib/bmake/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-06 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * Makefile (MAKE_VERSION): 20150606
+ Merge with NetBSD make, pick up
+ o make.1: document .OBJDIR target
+
2015-05-05 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (MAKE_VERSION): 20150505
diff --git a/contrib/bmake/Makefile b/contrib/bmake/Makefile
index 803997a..e5427a8 100644
--- a/contrib/bmake/Makefile
+++ b/contrib/bmake/Makefile
@@ -1,7 +1,7 @@
-# $Id: Makefile,v 1.38 2015/05/05 21:58:05 sjg Exp $
+# $Id: Makefile,v 1.39 2015/06/07 15:54:37 sjg Exp $
# Base version on src date
-MAKE_VERSION= 20150505
+MAKE_VERSION= 20150606
PROG= bmake
diff --git a/contrib/bmake/bmake.1 b/contrib/bmake/bmake.1
index 702d392..39d28c4 100644
--- a/contrib/bmake/bmake.1
+++ b/contrib/bmake/bmake.1
@@ -1,4 +1,4 @@
-.\" $NetBSD: make.1,v 1.247 2015/04/10 08:43:32 wiz Exp $
+.\" $NetBSD: make.1,v 1.249 2015/06/05 07:33:40 wiz Exp $
.\"
.\" Copyright (c) 1990, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
.\"
-.Dd April 9, 2015
+.Dd June 4, 2015
.Dt MAKE 1
.Os
.Sh NAME
@@ -993,14 +993,15 @@ This is especially useful with
.Ql Ev MAKEOBJDIR .
.Pp
.Ql Va .OBJDIR
-may be modified in the makefile as a global variable.
+may be modified in the makefile via the special target
+.Ql Ic .OBJDIR .
In all cases,
.Nm
will
.Xr chdir 2
-to
+to the specified directory if it exists, and set
.Ql Va .OBJDIR
-and set
+and
.Ql Ev PWD
to that directory before executing any targets.
.
@@ -2001,6 +2002,15 @@ Disable parallel mode.
Synonym for
.Ic .NOTPARALLEL ,
for compatibility with other pmake variants.
+.It Ic .OBJDIR
+The source is a new value for
+.Ql Va .OBJDIR .
+If it exists,
+.Nm
+will
+.Xr chdir 2
+to it and update the value of
+.Ql Va .OBJDIR .
.It Ic .ORDER
The named targets are made in sequence.
This ordering does not add targets to the list of targets to be made.
diff --git a/contrib/bmake/bmake.cat1 b/contrib/bmake/bmake.cat1
index 5c62c1b..4d43e2d 100644
--- a/contrib/bmake/bmake.cat1
+++ b/contrib/bmake/bmake.cat1
@@ -647,10 +647,10 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
may be used. This is especially useful with
`MAKEOBJDIR'.
- `_._O_B_J_D_I_R' may be modified in the makefile as a global
- variable. In all cases, bbmmaakkee will chdir(2) to `_._O_B_J_D_I_R'
- and set `PWD' to that directory before executing any tar-
- gets.
+ `_._O_B_J_D_I_R' may be modified in the makefile via the special
+ target `..OOBBJJDDIIRR'. In all cases, bbmmaakkee will chdir(2) to
+ the specified directory if it exists, and set `_._O_B_J_D_I_R'
+ and `PWD' to that directory before executing any targets.
_._P_A_R_S_E_D_I_R A path to the directory of the current `_M_a_k_e_f_i_l_e' being
parsed.
@@ -1271,6 +1271,9 @@ SSPPEECCIIAALL TTAARRGGEETTSS
Synonym for ..NNOOTTPPAARRAALLLLEELL, for compatibility with other pmake
variants.
+ ..OOBBJJDDIIRR The source is a new value for `_._O_B_J_D_I_R'. If it exists, bbmmaakkee
+ will chdir(2) to it and update the value of `_._O_B_J_D_I_R'.
+
..OORRDDEERR The named targets are made in sequence. This ordering does not
add targets to the list of targets to be made. Since the depen-
dents of a target do not get built until the target itself could
@@ -1449,4 +1452,4 @@ BBUUGGSS
There is no way of escaping a space character in a filename.
-NetBSD 5.1 April 9, 2015 NetBSD 5.1
+NetBSD 5.1 June 4, 2015 NetBSD 5.1
diff --git a/contrib/bmake/make.1 b/contrib/bmake/make.1
index 3acc02a..38bba31 100644
--- a/contrib/bmake/make.1
+++ b/contrib/bmake/make.1
@@ -1,4 +1,4 @@
-.\" $NetBSD: make.1,v 1.247 2015/04/10 08:43:32 wiz Exp $
+.\" $NetBSD: make.1,v 1.249 2015/06/05 07:33:40 wiz Exp $
.\"
.\" Copyright (c) 1990, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
.\"
-.Dd April 9, 2015
+.Dd June 4, 2015
.Dt MAKE 1
.Os
.Sh NAME
@@ -1004,14 +1004,15 @@ This is especially useful with
.Ql Ev MAKEOBJDIR .
.Pp
.Ql Va .OBJDIR
-may be modified in the makefile as a global variable.
+may be modified in the makefile via the special target
+.Ql Ic .OBJDIR .
In all cases,
.Nm
will
.Xr chdir 2
-to
+to the specified directory if it exists, and set
.Ql Va .OBJDIR
-and set
+and
.Ql Ev PWD
to that directory before executing any targets.
.
@@ -2012,6 +2013,15 @@ Disable parallel mode.
Synonym for
.Ic .NOTPARALLEL ,
for compatibility with other pmake variants.
+.It Ic .OBJDIR
+The source is a new value for
+.Ql Va .OBJDIR .
+If it exists,
+.Nm
+will
+.Xr chdir 2
+to it and update the value of
+.Ql Va .OBJDIR .
.It Ic .ORDER
The named targets are made in sequence.
This ordering does not add targets to the list of targets to be made.
diff --git a/contrib/bmake/mk/ChangeLog b/contrib/bmake/mk/ChangeLog
index 9b4059e1..85c8ae1 100644
--- a/contrib/bmake/mk/ChangeLog
+++ b/contrib/bmake/mk/ChangeLog
@@ -1,3 +1,29 @@
+2015-06-06 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): 20150606
+
+ * dirdeps.mk: don't rely on manually maintained Makefile.depend
+ to set DEP_RELDIR and reset DIRDEPS.
+ By setting DEP_RELDIR ourselves we can skip :tA
+
+ * gendirdeps.mk: skip setting DEP_RELDIR.
+
+2015-05-24 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * dirdeps.mk: avoid wildcards like make(bootstrap*)
+
+2015-05-20 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): 20150520
+
+ * dirdeps.mk: when we are building dirdeps cache file we *want*
+ meta_oodate to look at all the Makefile.depend files, so
+ set .MAKE.DEPENDFILE to something that won't match.
+
+ * meta.stage.mk: for STAGE_AS_* basename of file may not be unique
+ so first use absolute path as key.
+ Also skip staging at level 0.
+
2015-04-30 Simon J. Gerraty <sjg@bad.crufty.net>
* install-mk (MK_VERSION): 20150430
diff --git a/contrib/bmake/mk/dirdeps.mk b/contrib/bmake/mk/dirdeps.mk
index 4186346..4aa101f 100644
--- a/contrib/bmake/mk/dirdeps.mk
+++ b/contrib/bmake/mk/dirdeps.mk
@@ -1,4 +1,4 @@
-# $Id: dirdeps.mk,v 1.51 2015/05/06 06:07:30 sjg Exp $
+# $Id: dirdeps.mk,v 1.54 2015/06/08 20:55:11 sjg Exp $
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
@@ -383,6 +383,7 @@ ${DIRDEPS_CACHE}: .META .NOMETA_CMP
DIRDEPS="${DIRDEPS}" \
MAKEFLAGS= ${.MAKE} -C ${_CURDIR} -f ${BUILD_DIRDEPS_MAKEFILE} \
${BUILD_DIRDEPS_TARGETS} BUILD_DIRDEPS_CACHE=yes \
+ .MAKE.DEPENDFILE=.none \
3>&1 1>&2 | sed 's,${SRCTOP},$${SRCTOP},g' >> ${.TARGET}.new && \
mv ${.TARGET}.new ${.TARGET}
@@ -587,6 +588,11 @@ _qm := ${_m:C;(\.depend)$;\1.${d:E};:${M_dep_qual_fixes:ts:}}
_DEP_TARGET_SPEC := ${d:E}
# some makefiles may still look at this
_DEP_MACHINE := ${d:E:C/,.*//}
+# set this "just in case"
+# we can skip :tA since we computed the path above
+DEP_RELDIR := ${_m:H:S,${SRCTOP}/,,}
+# and reset this
+DIRDEPS =
.if ${_debug_reldir} && ${_qm} != ${_m}
.info loading ${_m} for ${d:E}
.endif
@@ -602,13 +608,15 @@ _DEP_MACHINE := ${d:E:C/,.*//}
.elif ${.MAKE.LEVEL} > 42
.error You should have stopped recursing by now.
.else
-_DEP_RELDIR := ${DEP_RELDIR}
+# we are building something
+DEP_RELDIR := ${RELDIR}
+_DEP_RELDIR := ${RELDIR}
# pickup local dependencies
.-include <.depend>
.endif
# bootstrapping new dependencies made easy?
-.if make(bootstrap*) && !target(bootstrap)
+.if (make(bootstrap) || make(bootstrap-recurse)) && !target(bootstrap)
.if exists(${.CURDIR}/${.MAKE.DEPENDFILE:T})
# stop here
diff --git a/contrib/bmake/mk/gendirdeps.mk b/contrib/bmake/mk/gendirdeps.mk
index 28e1f21..614a20e 100644
--- a/contrib/bmake/mk/gendirdeps.mk
+++ b/contrib/bmake/mk/gendirdeps.mk
@@ -1,4 +1,4 @@
-# $Id: gendirdeps.mk,v 1.26 2014/09/05 04:40:52 sjg Exp $
+# $Id: gendirdeps.mk,v 1.27 2015/06/08 20:55:11 sjg Exp $
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
@@ -311,7 +311,6 @@ CAT_DEPEND ?= .depend
# to output _{VAR} tokens which we will turn into proper ${VAR} references.
${_DEPENDFILE}: ${CAT_DEPEND:M.depend} ${META_FILES:O:u:@m@${exists($m):?$m:}@} ${_this} ${META2DEPS}
@(echo '# Autogenerated - do NOT edit!'; echo; \
- echo 'DEP_RELDIR := $${_PARSEDIR:S,$${SRCTOP}/,,}'; echo; \
echo 'DIRDEPS = \'; \
echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
${_include_src_dirdeps} \
@@ -332,7 +331,6 @@ all: ${_DEPENDFILE}
${_DEPENDFILE}: ${MAKEFILE} ${_this}
@(echo '# Autogenerated - do NOT edit!'; echo; \
- echo 'DEP_RELDIR := $${_PARSEDIR:S,$${SRCTOP}/,,}'; echo; \
echo 'DIRDEPS = \'; \
echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
echo '.include <dirdeps.mk>'; \
diff --git a/contrib/bmake/mk/install-mk b/contrib/bmake/mk/install-mk
index 598cf39..05facd5 100644
--- a/contrib/bmake/mk/install-mk
+++ b/contrib/bmake/mk/install-mk
@@ -55,7 +55,7 @@
# Simon J. Gerraty <sjg@crufty.net>
# RCSid:
-# $Id: install-mk,v 1.110 2015/05/01 06:37:49 sjg Exp $
+# $Id: install-mk,v 1.112 2015/06/08 20:55:11 sjg Exp $
#
# @(#) Copyright (c) 1994 Simon J. Gerraty
#
@@ -70,7 +70,7 @@
# sjg@crufty.net
#
-MK_VERSION=20150430
+MK_VERSION=20150606
OWNER=
GROUP=
MODE=444
diff --git a/contrib/bmake/mk/meta.stage.mk b/contrib/bmake/mk/meta.stage.mk
index cd95113..588f50e 100644
--- a/contrib/bmake/mk/meta.stage.mk
+++ b/contrib/bmake/mk/meta.stage.mk
@@ -1,4 +1,4 @@
-# $Id: meta.stage.mk,v 1.34 2014/11/20 22:40:08 sjg Exp $
+# $Id: meta.stage.mk,v 1.35 2015/05/20 06:40:33 sjg Exp $
#
# @(#) Copyright (c) 2011, Simon J. Gerraty
#
@@ -218,7 +218,7 @@ STAGE_AS.$s ?= ${.ALLSRC:N.dirdep}
stage_as: stage_as.$s
stage_as.$s: .dirdep
- @${STAGE_AS_SCRIPT}; StageAs ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_AS.$s:@f@$f ${STAGE_AS_${f:T}:U${f:T}}@}
+ @${STAGE_AS_SCRIPT}; StageAs ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_AS.$s:@f@$f ${STAGE_AS_${f:tA}:U${STAGE_AS_${f:T}:U${f:T}}}@}
@touch $@
.endfor
@@ -238,7 +238,9 @@ staging:
# generally we want staging to wait until everything else is done
STAGING_WAIT ?= .WAIT
+.if ${.MAKE.LEVEL} > 0
all: ${STAGING_WAIT} staging
+.endif
.if exists(${.PARSEDIR}/stage-install.sh) && !defined(STAGE_INSTALL)
# this will run install(1) and then followup with .dirdep files.
diff --git a/contrib/bmake/mk/meta.sys.mk b/contrib/bmake/mk/meta.sys.mk
index bcafd55..1f7ac49 100644
--- a/contrib/bmake/mk/meta.sys.mk
+++ b/contrib/bmake/mk/meta.sys.mk
@@ -1,4 +1,4 @@
-# $Id: meta.sys.mk,v 1.20 2014/08/04 05:12:27 sjg Exp $
+# $Id: meta.sys.mk,v 1.21 2015/06/01 22:43:49 sjg Exp $
#
# @(#) Copyright (c) 2010, Simon J. Gerraty
@@ -108,11 +108,16 @@ _metaError: .NOMETA .NOTMAIN
.if ${.MAKE.MODE:Mmeta*} != ""
MKDEP_MK = meta.autodep.mk
-# if we think we are updating dependencies,
-# then filemon had better be present
-.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !exists(/dev/filemon)
+.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no"
+.if ${.MAKEFLAGS:Uno:M-k} != ""
+# make this more obvious
+.warning Setting UPDATE_DEPENDFILE=NO due to -k
+UPDATE_DEPENDFILE= NO
+.export UPDATE_DEPENDFILE
+.elif !exists(/dev/filemon)
.error ${.newline}ERROR: The filemon module (/dev/filemon) is not loaded.
.endif
+.endif
.if ${.MAKE.LEVEL} == 0
# make sure dirdeps target exists and do it first
diff --git a/contrib/bmake/mk/mkopt.sh b/contrib/bmake/mk/mkopt.sh
index 38b624e..c3a39c5 100755
--- a/contrib/bmake/mk/mkopt.sh
+++ b/contrib/bmake/mk/mkopt.sh
@@ -1,5 +1,5 @@
:
-# $Id: mkopt.sh,v 1.8 2014/11/15 07:07:18 sjg Exp $
+# $Id: mkopt.sh,v 1.10 2015/06/07 17:29:08 sjg Exp $
#
# @(#) Copyright (c) 2014, Simon J. Gerraty
#
@@ -19,9 +19,10 @@
# no need to be included more than once
_MKOPT_SH=:
+_MKOPT_PREFIX=${_MKOPT_PREFIX:-MK_}
#
-# _mk_opt OPT default
+# _mk_opt default OPT
#
# Set MK_$OPT
#
@@ -35,7 +36,7 @@ _MKOPT_SH=:
#
_mk_opt() {
_d=$1
- _mo=MK_$2 _wo=WITHOUT_$2 _wi=WITH_$2
+ _mo=${_MKOPT_PREFIX}$2 _wo=WITHOUT_$2 _wi=WITH_$2
eval "_mov=\$$_mo _wov=\$$_wo _wiv=\$$_wi"
case "$_wiv" in
@@ -63,15 +64,23 @@ _mk_opts() {
_d=no
for _o in "$@"
do
- case "$_o" in
+ case "$_o" in
+ */*) # option is dirname default comes from basename
+ eval "_d=\$${_MKOPT_PREFIX}${_o#*/}"
+ _o=${_o%/*}
+ ;;
yes|no) _d=$_o; continue;;
esac
_mk_opt $_d $_o
done
}
+# handle either options.mk style OPTIONS_DEFAULT_*
+# or FreeBSD's new bsd.mkopt.mk style __DEFAULT_*_OPTIONS
_mk_opts_defaults() {
- _mk_opts no $__DEFAULT_NO_OPTIONS yes $__DEFAULT_YES_OPTIONS
+ _mk_opts no $OPTIONS_DEFAULT_NO $__DEFAULT_NO_OPTIONS \
+ yes $OPTIONS_DEFAULT_YES $__DEFAULT_YES_OPTIONS \
+ $OPTIONS_DEFAULT_DEPENDENT $__DEFAULT_DEPENDENT_OPTIONS
}
case "/$0" in
diff --git a/contrib/bmake/targ.c b/contrib/bmake/targ.c
index 527206e..5db5477 100644
--- a/contrib/bmake/targ.c
+++ b/contrib/bmake/targ.c
@@ -1,4 +1,4 @@
-/* $NetBSD: targ.c,v 1.59 2014/09/07 20:55:34 joerg Exp $ */
+/* $NetBSD: targ.c,v 1.60 2015/05/25 09:01:06 manu Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: targ.c,v 1.59 2014/09/07 20:55:34 joerg Exp $";
+static char rcsid[] = "$NetBSD: targ.c,v 1.60 2015/05/25 09:01:06 manu Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: targ.c,v 1.59 2014/09/07 20:55:34 joerg Exp $");
+__RCSID("$NetBSD: targ.c,v 1.60 2015/05/25 09:01:06 manu Exp $");
#endif
#endif /* not lint */
#endif
diff --git a/contrib/elftoolchain/elfcopy/sections.c b/contrib/elftoolchain/elfcopy/sections.c
index a407a42..a6fd25d 100644
--- a/contrib/elftoolchain/elfcopy/sections.c
+++ b/contrib/elftoolchain/elfcopy/sections.c
@@ -1349,6 +1349,14 @@ set_shstrtab(struct elfcopy *ecp)
s = ecp->shstrtab;
+ if (s->os == NULL) {
+ /* Input object does not contain .shstrtab section */
+ if ((s->os = elf_newscn(ecp->eout)) == NULL)
+ errx(EXIT_FAILURE, "elf_newscn failed: %s",
+ elf_errmsg(-1));
+ insert_to_sec_list(ecp, s, 1);
+ }
+
if (gelf_getshdr(s->os, &sh) == NULL)
errx(EXIT_FAILURE, "692 gelf_getshdr() failed: %s",
elf_errmsg(-1));
diff --git a/contrib/file/ChangeLog b/contrib/file/ChangeLog
index 98cdcc4..0922fc7 100644
--- a/contrib/file/ChangeLog
+++ b/contrib/file/ChangeLog
@@ -1,3 +1,56 @@
+2015-06-11 8:52 Christos Zoulas <christos@zoulas.com>
+
+ * redo long option encoding to fix off-by-one in 5.23
+
+2015-06-10 13:50 Christos Zoulas <christos@zoulas.com>
+
+ * release 5.23
+
+2015-06-09 16:10 Christos Zoulas <christos@zoulas.com>
+
+ * Fix issue with regex range for magic with offset
+ * Always return true from mget with USE (success to mget not match
+ indication). Fixes mime evaluation after USE magic
+ * PR/459: Don't insert magic entries to the list if there are parsing
+ errors for them.
+
+2015-06-03 16:00 Christos Zoulas <christos@zoulas.com>
+
+ * PR/455: Add utf-7 encoding
+
+2015-06-03 14:30 Christos Zoulas <christos@zoulas.com>
+
+ * PR/455: Implement -Z, look inside, but don't report on compression
+ * PR/454: Fix allocation error on bad magic.
+
+2015-05-29 10:30 Christos Zoulas <christos@zoulas.com>
+
+ * handle MAGIC_CONTINUE everywhere, not just in softmagic
+
+2015-05-21 14:30 Christos Zoulas <christos@zoulas.com>
+
+ * don't print descriptions for NAME types when mime.
+
+2015-04-09 15:59 Christos Zoulas <christos@zoulas.com>
+
+ * Add --extension to list the known extensions for this file type
+ Idea by Andrew J Roazen
+
+2015-02-14 12:23 Christos Zoulas <christos@zoulas.com>
+
+ * Bump file search buffer size to 1M.
+
+2015-01-09 14:35 Christos Zoulas <christos@zoulas.com>
+
+ * Fix multiple issues with date formats reported by Christoph Biedl:
+ - T_LOCAL meaning was reversed
+ - Arithmetic did not work
+ Also stop adjusting daylight savings for gmt printing.
+
+2015-01-05 13:00 Christos Zoulas <christos@zoulas.com>
+
+ * PR/411: Fix memory corruption from corrupt cdf file.
+
2015-01-02 15:15 Christos Zoulas <christos@zoulas.com>
* release 5.22
diff --git a/contrib/file/Makefile.in b/contrib/file/Makefile.in
index eed0318..cb2dfc3 100644
--- a/contrib/file/Makefile.in
+++ b/contrib/file/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -77,11 +87,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/configure $(am__configure_deps) \
- $(srcdir)/config.h.in AUTHORS COPYING ChangeLog INSTALL NEWS \
- README TODO compile config.guess config.sub depcomp install-sh \
- missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -89,6 +94,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
@@ -152,6 +159,9 @@ ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+ COPYING ChangeLog INSTALL NEWS README TODO compile \
+ config.guess config.sub depcomp install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -336,7 +346,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -567,15 +576,15 @@ dist-xz: distdir
$(am__post_remove_distdir)
dist-tarZ: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -611,16 +620,17 @@ distcheck: dist
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_inst
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -797,6 +807,8 @@ uninstall-am:
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am
+.PRECIOUS: Makefile
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/contrib/file/TODO b/contrib/file/TODO
index eef01ed..5c2ed49 100644
--- a/contrib/file/TODO
+++ b/contrib/file/TODO
@@ -17,3 +17,6 @@ hard-wired routines). In this regard, note that hplip, which is
BSD-licensed, has a magic reimplementation in Python.
Read the kerberos magic entry for more ideas.
+
+Write a string merger to make magic entry sizes dynamic.
+Strings will be converted to offsets from the string table.
diff --git a/contrib/file/aclocal.m4 b/contrib/file/aclocal.m4
index a9ddc4b..4398374 100644
--- a/contrib/file/aclocal.m4
+++ b/contrib/file/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -21,7 +21,7 @@ If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# visibility.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2005, 2008, 2010-2013 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -98,7 +98,7 @@ AC_DEFUN([gl_VISIBILITY],
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
])
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -110,10 +110,10 @@ AC_DEFUN([gl_VISIBILITY],
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14], [],
+m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -129,14 +129,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -181,15 +181,14 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -220,7 +219,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -411,7 +410,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -487,7 +486,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -577,8 +576,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -651,7 +650,11 @@ to "yes", and re-run configure.
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
-fi])
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -680,7 +683,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -691,7 +694,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -701,7 +704,7 @@ if test x"${install_sh}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -722,7 +725,7 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -772,7 +775,7 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -811,7 +814,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -840,7 +843,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -887,7 +890,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -906,7 +909,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -987,7 +990,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1047,7 +1050,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1075,7 +1078,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1094,7 +1097,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/contrib/file/compile b/contrib/file/compile
index 531136b..a85b723 100755
--- a/contrib/file/compile
+++ b/contrib/file/compile
@@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/contrib/file/config.h.in b/contrib/file/config.h.in
index 066bd2f..0397fe4 100644
--- a/contrib/file/config.h.in
+++ b/contrib/file/config.h.in
@@ -62,6 +62,9 @@
/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
+/* Define to 1 if you have the `gmtime_r' function. */
+#undef HAVE_GMTIME_R
+
/* Define to 1 if the system has the type `intptr_t'. */
#undef HAVE_INTPTR_T
@@ -80,6 +83,9 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC
@@ -107,6 +113,12 @@
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Have sig_t type */
+#undef HAVE_SIG_T
+
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
diff --git a/contrib/file/configure b/contrib/file/configure
index 3cf1d77..e77c3b0 100755
--- a/contrib/file/configure
+++ b/contrib/file/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for file 5.22.
+# Generated by GNU Autoconf 2.69 for file 5.23.
#
# Report bugs to <christos@astron.com>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='file'
PACKAGE_TARNAME='file'
-PACKAGE_VERSION='5.22'
-PACKAGE_STRING='file 5.22'
+PACKAGE_VERSION='5.23'
+PACKAGE_STRING='file 5.23'
PACKAGE_BUGREPORT='christos@astron.com'
PACKAGE_URL=''
@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures file 5.22 to adapt to many kinds of systems.
+\`configure' configures file 5.23 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1397,7 +1397,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of file 5.22:";;
+ short | recursive ) echo "Configuration of file 5.23:";;
esac
cat <<\_ACEOF
@@ -1507,7 +1507,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-file configure 5.22
+file configure 5.23
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by file $as_me 5.22, which was
+It was created by file $as_me 5.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2514,7 +2514,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version='1.14'
+am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2715,8 +2715,8 @@ test "$program_suffix" != NONE &&
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
@@ -2735,7 +2735,7 @@ else
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -3029,7 +3029,7 @@ fi
# Define the identity of the package.
PACKAGE='file'
- VERSION='5.22'
+ VERSION='5.23'
cat >>confdefs.h <<_ACEOF
@@ -3063,8 +3063,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
@@ -3121,6 +3121,7 @@ END
as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
fi
fi
+
# Check whether --enable-silent-rules was given.
if test "${enable_silent_rules+set}" = set; then :
enableval=$enable_silent_rules;
@@ -12785,7 +12786,7 @@ fi
done
-for ac_header in getopt.h err.h xlocale.h
+for ac_header in getopt.h err.h xlocale.h signal.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -12823,6 +12824,17 @@ fi
done
+ac_fn_c_check_type "$LINENO" "sig_t" "ac_cv_type_sig_t" "
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+"
+if test "x$ac_cv_type_sig_t" = xyes; then :
+
+$as_echo "#define HAVE_SIG_T 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
@@ -14308,6 +14320,32 @@ esac
fi
+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
+if test "x$ac_cv_func_localtime_r" = xyes; then :
+ $as_echo "#define HAVE_LOCALTIME_R 1" >>confdefs.h
+
+else
+ case " $LIBOBJS " in
+ *" localtime_r.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS localtime_r.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"
+if test "x$ac_cv_func_gmtime_r" = xyes; then :
+ $as_echo "#define HAVE_GMTIME_R 1" >>confdefs.h
+
+else
+ case " $LIBOBJS " in
+ *" gmtime_r.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS gmtime_r.$ac_objext"
+ ;;
+esac
+
+fi
+
ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
if test "x$ac_cv_func_pread" = xyes; then :
$as_echo "#define HAVE_PREAD 1" >>confdefs.h
@@ -14998,7 +15036,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by file $as_me 5.22, which was
+This file was extended by file $as_me 5.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15064,7 +15102,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-file config.status 5.22
+file config.status 5.23
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/contrib/file/configure.ac b/contrib/file/configure.ac
index 1e2457c..857b7fe 100644
--- a/contrib/file/configure.ac
+++ b/contrib/file/configure.ac
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([file],[5.22],[christos@astron.com])
+AC_INIT([file],[5.23],[christos@astron.com])
AM_INIT_AUTOMAKE([subdir-objects foreign])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -82,9 +82,13 @@ AC_HEADER_MAJOR
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(stdint.h fcntl.h locale.h stdint.h inttypes.h unistd.h)
AC_CHECK_HEADERS(stddef.h utime.h wchar.h wctype.h limits.h)
-AC_CHECK_HEADERS(getopt.h err.h xlocale.h)
+AC_CHECK_HEADERS(getopt.h err.h xlocale.h signal.h)
AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h)
AC_CHECK_HEADERS(zlib.h)
+AC_CHECK_TYPE([sig_t],[AC_DEFINE([HAVE_SIG_T],1,[Have sig_t type])],,[
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
@@ -141,7 +145,7 @@ dnl Checks for functions
AC_CHECK_FUNCS(strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale setlocale)
dnl Provide implementation of some required functions if necessary
-AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r pread strcasestr fmtcheck)
+AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r localtime_r gmtime_r pread strcasestr fmtcheck)
dnl Checks for libraries
AC_CHECK_LIB(z,gzopen)
diff --git a/contrib/file/depcomp b/contrib/file/depcomp
index 4ebd5b3..fc98710 100755
--- a/contrib/file/depcomp
+++ b/contrib/file/depcomp
@@ -3,7 +3,7 @@
scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/contrib/file/doc/Makefile.in b/contrib/file/doc/Makefile.in
index 8d0fa7b..165918a 100644
--- a/contrib/file/doc/Makefile.in
+++ b/contrib/file/doc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -77,7 +87,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -85,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -144,6 +154,7 @@ man5dir = $(mandir)/man5
NROFF = nroff
MANS = $(man_MANS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgdatadir = @pkgdatadir@
ACLOCAL = @ACLOCAL@
@@ -286,7 +297,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign doc/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -642,6 +652,8 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \
tags-am uninstall uninstall-am uninstall-man uninstall-man1 \
uninstall-man3 uninstall-man4 uninstall-man5
+.PRECIOUS: Makefile
+
file.1: Makefile file.man
@rm -f $@
diff --git a/contrib/file/doc/file.man b/contrib/file/doc/file.man
index 109c676..d4d3e58 100644
--- a/contrib/file/doc/file.man
+++ b/contrib/file/doc/file.man
@@ -1,5 +1,5 @@
-.\" $File: file.man,v 1.111 2014/12/16 23:18:40 christos Exp $
-.Dd December 16, 2014
+.\" $File: file.man,v 1.117 2015/06/03 19:51:27 christos Exp $
+.Dd June 3, 2015
.Dt FILE __CSECTION__
.Os
.Sh NAME
@@ -8,8 +8,9 @@
.Sh SYNOPSIS
.Nm
.Bk -words
-.Op Fl bcEhiklLNnprsvz0
+.Op Fl bcEhiklLNnprsvzZ0
.Op Fl Fl apple
+.Op Fl Fl extension
.Op Fl Fl mime-encoding
.Op Fl Fl mime-type
.Op Fl e Ar testname
@@ -213,6 +214,8 @@ Consults magic files.
.It tar
Examines tar files.
.El
+.It Fl Fl extension
+Print a slash-separated list of valid extensions for the file type found.
.It Fl F , Fl Fl separator Ar separator
Use the specified string as the separator between the filename and the
file result returned.
@@ -343,6 +346,9 @@ since on some systems it reports a zero size for raw disk partitions.
Print the version of the program and exit.
.It Fl z , Fl Fl uncompress
Try to look inside compressed files.
+.It Fl Z , Fl Fl uncompress-noreport
+Try to look inside compressed files, but report information about the contents
+only not the compression.
.It Fl 0 , Fl Fl print0
Output a null character
.Sq \e0
@@ -587,20 +593,30 @@ last-pushed (most specific, one hopes) value at the end, or
use a default if the list is empty.
This should not slow down evaluation.
.Pp
+The handling of
+.Dv MAGIC_CONTINUE
+and printing \e012- between entries is clumsy and complicated; refactor
+and centralize.
+.Pp
+Some of the encoding logic is hard-coded in encoding.c and can be moved
+to the magic files if we had a !:charset annotation
+.Pp
Continue to squash all magic bugs.
See Debian BTS for a good source.
.Pp
Store arbitrarily long strings, for example for %s patterns, so that
they can be printed out.
Fixes Debian bug #271672.
-Would require more complex store/load code in apprentice.
+This can be done by allocating strings in a string pool, storing the
+string pool at the end of the magic file and converting all the string
+pointers to relative offsets from the string pool.
.Pp
Add syntax for relative offsets after current level (Debian bug #466037).
.Pp
Make file -ki work, i.e. give multiple MIME types.
.Pp
Add a zip library so we can peek inside Office2007 documents to
-figure out what they are.
+print more details about their contents.
.Pp
Add an option to print URLs for the sources of the file descriptions.
.Pp
@@ -610,6 +626,9 @@ string to be looked up in a table).
This would avoid adding the same magic repeatedly for each new
hash-bang interpreter.
.Pp
+When a file descriptor is available, we can skip and adjust the buffer
+instead of the hacky buffer management we do now.
+.Pp
Fix
.Dq name
and
@@ -627,6 +646,15 @@ Make
more efficient by keeping a sorted list of names.
Special-case ^ to flip endianness in the parser so that it does not
have to be escaped, and document it.
+.Pp
+If the offsets specified internally in the file exceed the buffer size
+(
+.Dv HOWMANY
+variable in file.h), then we don't seek to that offset, but we give up.
+It would be better if buffer managements was done when the file descriptor
+is available so move around the file.
+One must be careful though because this has performance (and thus security
+considerations).
.Sh AVAILABILITY
You can obtain the original author's latest version by anonymous FTP
on
diff --git a/contrib/file/doc/libmagic.man b/contrib/file/doc/libmagic.man
index 3c907ca..64170a3 100644
--- a/contrib/file/doc/libmagic.man
+++ b/contrib/file/doc/libmagic.man
@@ -1,4 +1,4 @@
-.\" $File: libmagic.man,v 1.34 2014/12/16 23:18:40 christos Exp $
+.\" $File: libmagic.man,v 1.37 2015/06/03 18:21:24 christos Exp $
.\"
.\" Copyright (c) Christos Zoulas 2003.
.\" All Rights Reserved.
@@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd December 16, 2014
+.Dd June 3, 2015
.Dt LIBMAGIC 3
.Os
.Sh NAME
@@ -132,6 +132,10 @@ Treat operating system errors while trying to open files and follow symlinks
as real errors, instead of printing them in the magic buffer.
.It Dv MAGIC_APPLE
Return the Apple creator and type.
+.It Dv MAGIC_EXTENSION
+Return a slash-separated list of extensions for this file type.
+.It Dv MAGIC_COMPRESS_TRANSP
+Don't report on compression, only report about the uncompressed data.
.It Dv MAGIC_NO_CHECK_APPTYPE
Don't check for
.Dv EMX
diff --git a/contrib/file/ltmain.sh b/contrib/file/ltmain.sh
index f53abfd..f07ffc8 100755
--- a/contrib/file/ltmain.sh
+++ b/contrib/file/ltmain.sh
@@ -6900,7 +6900,11 @@ func_mode_link ()
# Finalize command for both is simple: just hardcode it.
if test "$hardcode_direct" = yes &&
test "$hardcode_direct_absolute" = no; then
- add="$libdir/$linklib"
+ if test -f "$inst_prefix_dir$libdir/$linklib"; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
elif test "$hardcode_minus_L" = yes; then
add_dir="-L$libdir"
add="-l$name"
diff --git a/contrib/file/magic/Magdir/android b/contrib/file/magic/Magdir/android
index da98b57..7675c1c 100644
--- a/contrib/file/magic/Magdir/android
+++ b/contrib/file/magic/Magdir/android
@@ -1,6 +1,6 @@
#------------------------------------------------------------
-# $File: android,v 1.7 2014/11/10 05:08:23 christos Exp $
+# $File: android,v 1.8 2015/03/19 18:04:37 christos Exp $
# Various android related magic entries
#------------------------------------------------------------
@@ -137,3 +137,9 @@
>16 lelong x \b, Total of %d
>12 lelong x \b %d-byte output blocks in
>20 lelong x \b %d input chunks.
+
+# Android binary XML magic
+# In include/androidfw/ResourceTypes.h:
+# RES_XML_TYPE = 0x0003 followed by the size of the header (ResXMLTree_header),
+# which is 8 bytes (2 bytes type + 2 bytes header size + 4 bytes size).
+0 lelong 0x00080003 Android binary XML
diff --git a/contrib/file/magic/Magdir/apple b/contrib/file/magic/Magdir/apple
index e3dd059..dcfa878 100644
--- a/contrib/file/magic/Magdir/apple
+++ b/contrib/file/magic/Magdir/apple
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: apple,v 1.29 2014/04/30 21:41:02 christos Exp $
+# $File: apple,v 1.30 2015/04/13 13:09:06 christos Exp $
# apple: file(1) magic for Apple file formats
#
0 search/1/t FiLeStArTfIlEsTaRt binscii (apple ][) text
@@ -300,3 +300,12 @@
#http://wiki.mozilla.org/DS_Store_File_Format`
#http://en.wikipedia.org/wiki/.DS_Store
0 string \0\0\0\1Bud1\0 Apple Desktop Services Store
+
+# HFS/HFS+ Resource fork files (andrew.roazen@nau.edu Apr 13 2015)
+# Usually not in separate files, but have either filename rsrc with
+# no extension, or a filename corresponding to another file, with
+# extensions rsr/rsrc
+0 string \000\000\001\000
+>4 leshort 0
+>>16 lelong 0 Apple HFS/HFS+ resource fork
+
diff --git a/contrib/file/magic/Magdir/archive b/contrib/file/magic/Magdir/archive
index 4ef73a7..30cced0 100644
--- a/contrib/file/magic/Magdir/archive
+++ b/contrib/file/magic/Magdir/archive
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
-# $File: archive,v 1.88 2014/08/16 10:42:17 christos Exp $
+# $File: archive,v 1.90 2015/04/24 15:44:12 christos Exp $
# archive: file(1) magic for archive formats (see also "msdos" for self-
# extracting compressed archives)
#
@@ -714,7 +714,7 @@
>>>4 byte 0x0a \b, at least v1.0 to extract
>>>4 byte 0x0b \b, at least v1.1 to extract
>>>4 byte 0x14 \b, at least v2.0 to extract
->>>4 byte 0x2d \b, at least v3.0 to extract
+>>>4 byte 0x2d \b, at least v4.5 to extract
>>>0x161 string WINZIP \b, WinZIP self-extracting
# StarView Metafile
@@ -911,6 +911,9 @@
# ZPAQ: http://mattmahoney.net/dc/zpaq.html
0 string zPQ ZPAQ stream
>3 byte x \b, level %d
+# From: Barry Carter <carter.barry@gmail.com>
+# http://encode.ru/threads/456-zpaq-updates/page32
+0 string 7kSt ZPAQ file
# BBeB ebook, unencrypted (LRF format)
# URL: http://www.sven.de/librie/Librie/LrfFormat
diff --git a/contrib/file/magic/Magdir/audio b/contrib/file/magic/Magdir/audio
index 338d8ae..e1d52c2 100644
--- a/contrib/file/magic/Magdir/audio
+++ b/contrib/file/magic/Magdir/audio
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: audio,v 1.71 2014/05/14 23:30:28 christos Exp $
+# $File: audio,v 1.73 2015/03/15 23:21:42 christos Exp $
# audio: file(1) magic for sound formats (see also "iff")
#
# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
@@ -300,7 +300,7 @@
>>5 byte &0x40 \b, extended header
>>5 byte &0x20 \b, experimental
>>5 byte &0x10 \b, footer present
->(6.I) indirect x \b, contains:
+>(6.I+10) indirect x \b, contains:
# NSF (NES sound file) magic
0 string NESM\x1a NES Sound File
@@ -313,6 +313,21 @@
>122 byte&0x1 =1 PAL
>122 byte&0x1 =0 NTSC
+# NSFE (Extended NES sound file) magic
+# http://slickproductions.org/docs/NSF/nsfespec.txt
+# From: David Pflug <david@pflug.email>
+0 string NSFE Extended NES Sound File
+>48 search/0x1000 auth
+>>&0 string >\0 ("%s"
+>>>&1 string >\0 by %s
+>>>>&1 string >\0 \b, copyright %s
+>>>>>&1 string >\0 \b, ripped by %s
+>20 byte x \b), %d tracks,
+>18 byte&0x2 =1 dual PAL/NTSC
+>18 byte&0x2 =0
+>>18 byte&0x1 =1 PAL
+>>18 byte&0x1 =0 NTSC
+
# Type: SNES SPC700 sound files
# From: Josh Triplett <josh@freedesktop.org>
0 string SNES-SPC700\ Sound\ File\ Data\ v SNES SPC700 sound file
diff --git a/contrib/file/magic/Magdir/cafebabe b/contrib/file/magic/Magdir/cafebabe
index 4c58fc6..51e97c4 100644
--- a/contrib/file/magic/Magdir/cafebabe
+++ b/contrib/file/magic/Magdir/cafebabe
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: cafebabe,v 1.17 2015/01/01 17:07:00 christos Exp $
+# $File: cafebabe,v 1.20 2015/05/29 14:21:58 christos Exp $
# Cafe Babes unite!
#
# Since Java bytecode and Mach-O universal binaries have the same magic number,
@@ -28,6 +28,8 @@
>>4 belong 0x0030 (Java 1.4)
>>4 belong 0x0031 (Java 1.5)
>>4 belong 0x0032 (Java 1.6)
+>>4 belong 0x0033 (Java 1.7)
+>>4 belong 0x0034 (Java 1.8)
0 belong 0xcafed00d JAR compressed with pack200,
>5 byte x version %d.
@@ -50,14 +52,18 @@
0 belong 0xcafebabe
>4 belong 1 Mach-O universal binary with 1 architecture:
+!:mime application/x-mach-binary
>>8 use mach-o \b
>4 belong >1
>>4 belong <20 Mach-O universal binary with %d architectures:
+!:mime application/x-mach-binary
>>>8 use mach-o \b
>>>28 use mach-o \b
->>4 belong >2
+>>4 belong 2
>>>48 use mach-o \b
->>4 belong >3
+>>4 belong 3
>>>68 use mach-o \b
+>>4 belong 4
+>>>88 use mach-o \b
### MACH-O END ###
diff --git a/contrib/file/magic/Magdir/cbor b/contrib/file/magic/Magdir/cbor
new file mode 100644
index 0000000..c780dc6
--- /dev/null
+++ b/contrib/file/magic/Magdir/cbor
@@ -0,0 +1,21 @@
+
+#------------------------------------------------------------------------------
+# $File: cbor,v 1.1 2015/01/28 01:05:21 christos Exp $
+# cbor: file(1) magic for CBOR files as defined in RFC 7049
+
+0 string \xd9\xd9\xf7 Concise Binary Object Representation (CBOR) container
+!:mime application/cbor
+>3 ubyte <0x20 (positive integer)
+>3 ubyte <0x40
+>>3 ubyte >0x1f (negative integer)
+>3 ubyte <0x60
+>>3 ubyte >0x3f (byte string)
+>3 ubyte <0x80
+>>3 ubyte >0x5f (text string)
+>3 ubyte <0xa0
+>3 ubyte >0x7f (array)
+>3 ubyte <0xc0
+>>3 ubyte >0x9f (map)
+>3 ubyte <0xe0
+>>3 ubyte >0xbf (tagged)
+>3 ubyte >0xdf (other)
diff --git a/contrib/file/magic/Magdir/commands b/contrib/file/magic/Magdir/commands
index 3d97489..153af5e 100644
--- a/contrib/file/magic/Magdir/commands
+++ b/contrib/file/magic/Magdir/commands
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: commands,v 1.51 2014/09/27 00:12:55 christos Exp $
+# $File: commands,v 1.52 2015/06/04 19:16:55 christos Exp $
# commands: file(1) magic for various shells and interpreters
#
#0 string/w : shell archive or script for antique kernel text
@@ -78,6 +78,8 @@
!:mime text/x-shellscript
0 string/wb #!\ /usr/local/bin/bash Bourne-Again shell script executable (binary data)
!:mime text/x-shellscript
+0 string/wt #!\ /usr/bin/env\ bash Bourne-Again shell script text executable
+!:mime text/x-shellscript
# PHP scripts
# Ulf Harnhammar <ulfh@update.uu.se>
diff --git a/contrib/file/magic/Magdir/compress b/contrib/file/magic/Magdir/compress
index beb8ebe..c2266d4 100644
--- a/contrib/file/magic/Magdir/compress
+++ b/contrib/file/magic/Magdir/compress
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
-# $File: compress,v 1.62 2014/09/13 14:27:12 christos Exp $
+# $File: compress,v 1.63 2015/03/11 19:27:35 christos Exp $
# compress: file(1) magic for pure-compression formats (no archives)
#
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
@@ -201,6 +201,7 @@
# http://tukaani.org/xz/xz-file-format.txt
0 ustring \xFD7zXZ\x00 XZ compressed data
+!:strength * 2
!:mime application/x-xz
# https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
diff --git a/contrib/file/magic/Magdir/console b/contrib/file/magic/Magdir/console
index 27227a4..9dee3ff 100644
--- a/contrib/file/magic/Magdir/console
+++ b/contrib/file/magic/Magdir/console
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: console,v 1.19 2013/02/06 14:18:52 christos Exp $
+# $File: console,v 1.20 2015/03/15 23:21:42 christos Exp $
# Console game magic
# Toby Deshane <hac@shoelace.digivill.net>
# ines: file(1) magic for Marat's iNES Nintendo Entertainment System
@@ -177,9 +177,19 @@
# From: Serge van den Boom <svdb@stack.nl>
0 string \x01ZZZZZ\x01 3DO "Opera" file system
-# From Gurkan Sengun <gurkan@linuks.mine.nu>, www.linuks.mine.nu
+# From: Gurkan Sengun <gurkan@linuks.mine.nu>, www.linuks.mine.nu
+# From: David Pflug <david@pflug.email>
+# is the offset 12 or the offset 16 correct?
+# GBS (Game Boy Sound) magic
+# ftp://ftp.modland.com/pub/documents/format_documentation/\
+# Gameboy%20Sound%20System%20(.gbs).txt
0 string GBS Nintendo Gameboy Music/Audio Data
-12 string GameBoy\ Music\ Module Nintendo Gameboy Music Module
+#12 string GameBoy\ Music\ Module Nintendo Gameboy Music Module
+>16 string >\0 ("%s" by
+>48 string >\0 %s, copyright
+>80 string >\0 %s),
+>3 byte x version %d,
+>4 byte x %d tracks
# Playstations Patch Files from: From: Thomas Klausner <tk@giga.or.at>
0 string PPF30 Playstation Patch File version 3.0
diff --git a/contrib/file/magic/Magdir/dyadic b/contrib/file/magic/Magdir/dyadic
index 18f18bc..ab73465 100644
--- a/contrib/file/magic/Magdir/dyadic
+++ b/contrib/file/magic/Magdir/dyadic
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: dyadic,v 1.6 2014/06/01 19:14:42 christos Exp $
+# $File: dyadic,v 1.7 2015/05/27 18:02:48 christos Exp $
# Dyadic: file(1) magic for Dyalog APL.
#
# updated by Joerg Jenderek at Oct 2013
@@ -46,6 +46,11 @@
>>>1 byte 0x12 component file 64-bit level 3 journaled checksummed
>>>1 byte 0x13 component file 32-bit non-journaled checksummed
>>>1 byte 0x14 component file 64-bit non-journaled checksummed
+>>>1 byte 0x15 component file under construction
+>>>1 byte 0x16 DFS component file 64-bit level 1 journaled checksummed
+>>>1 byte 0x17 DFS component file 64-bit level 2 journaled checksummed
+>>>1 byte 0x18 DFS component file 64-bit level 3 journaled checksummed
+>>>1 byte 0x19 external workspace
>>>1 byte 0x80 DDB
>>>2 byte x version %d
>>>3 byte x \b.%d
diff --git a/contrib/file/magic/Magdir/filesystems b/contrib/file/magic/Magdir/filesystems
index 939a092..d8a802a 100644
--- a/contrib/file/magic/Magdir/filesystems
+++ b/contrib/file/magic/Magdir/filesystems
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
-# $File: filesystems,v 1.108 2015/01/01 17:43:47 christos Exp $
+# $File: filesystems,v 1.109 2015/02/22 01:22:54 christos Exp $
# filesystems: file(1) magic for different filesystems
#
0 name partid
@@ -1928,6 +1928,7 @@
>>38917 string 3 (version 2.0)
>>38917 byte >0x33 (unknown version, ID 0x%X)
>>38917 byte <0x31 (unknown version, ID 0x%X)
+>0x1FE leshort 0xAA55 (DOS/MBR boot sector)
# "application id" which appears to be used as a volume label
>32808 string/T >\0 '%s'
>34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable)
diff --git a/contrib/file/magic/Magdir/gnu b/contrib/file/magic/Magdir/gnu
index e4a0a16..c94cefc 100644
--- a/contrib/file/magic/Magdir/gnu
+++ b/contrib/file/magic/Magdir/gnu
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: gnu,v 1.15 2014/02/06 14:21:02 christos Exp $
+# $File: gnu,v 1.16 2015/04/19 22:59:25 christos Exp $
# gnu: file(1) magic for various GNU tools
#
# GNU nlsutils message catalog file format
@@ -79,5 +79,7 @@
0 long 0x950412DE GNU-format message catalog data
# gettext message catalogue
-0 regex \^msgid\ GNU gettext message catalogue text
+0 search/1024 \nmsgid
+>&0 search/1024 \nmsgstr GNU gettext message catalogue text
+!:strength +100
!:mime text/x-po
diff --git a/contrib/file/magic/Magdir/images b/contrib/file/magic/Magdir/images
index 672dd88..e6dd414 100644
--- a/contrib/file/magic/Magdir/images
+++ b/contrib/file/magic/Magdir/images
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: images,v 1.102 2015/01/02 02:36:35 christos Exp $
+# $File: images,v 1.106 2015/02/22 01:26:05 christos Exp $
# images: file(1) magic for image formats (see also "iff", and "c-lang" for
# XPM bitmaps)
#
@@ -36,42 +36,48 @@
# PBMPLUS images
# The next byte following the magic is always whitespace.
# strength is changed to try these patterns before "x86 boot sector"
+0 name netpbm
+>3 regex/s =[0-9]{1,50}\ [0-9]{1,50} Netpbm PPM image data
+>>&0 regex =[0-9]{1,50} \b, size = %s x
+>>>&0 regex =[0-9]{1,50} \b %s
+
0 search/1 P1
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PBM image text
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, bitmap
!:strength + 45
!:mime image/x-portable-bitmap
+
0 search/1 P2
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PGM image text
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, greymap
!:strength + 45
!:mime image/x-portable-greymap
+
0 search/1 P3
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PPM image text
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, pixmap
!:strength + 45
!:mime image/x-portable-pixmap
+
+
0 string P4
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PBM "rawbits" image data
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, rawbits, bitmap
!:strength + 45
!:mime image/x-portable-bitmap
+
0 string P5
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PGM "rawbits" image data
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, rawbits, greymap
!:strength + 45
!:mime image/x-portable-greymap
+
0 string P6
->3 regex =[0-9]{0,50}\ [0-9]{0,50} Netpbm PPM "rawbits" image data
->3 regex =[0-9]{1,50}\ \b, size = %sx
->>3 regex =\ [0-9]{1,50} \b%s
+>0 use netpbm
+>>0 string x \b, rawbits, pixmap
!:strength + 45
!:mime image/x-portable-pixmap
+
0 string P7 Netpbm PAM image file
!:mime image/x-portable-pixmap
@@ -167,6 +173,7 @@
>>>>8 leshort x \b(unknown 0x%x)
>>>12 use tiff_entry
>0 leshort 0x106 \b, PhotometricIntepretation=
+>>8 clear x
>>8 leshort 0 \bWhiteIsZero
>>8 leshort 1 \bBlackIsZero
>>8 leshort 2 \bRGB
@@ -175,6 +182,7 @@
>>8 leshort 5 \bCMYK
>>8 leshort 6 \bYCbCr
>>8 leshort 8 \bCIELab
+>>8 default x
>>>8 leshort x \b(unknown=0x%x)
>>12 use tiff_entry
# FillOrder
@@ -678,7 +686,26 @@
>25 string >\0 dated %.14s
# GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
-0 belong 0x00010008 GEM Image data
+# Format variations from: Bernd Nuernberger <bernd.nuernberger@web.de>
+# See http://fileformats.archiveteam.org/wiki/GEM_Raster
+# For variations, also see:
+# http://www.seasip.info/Gem/ff_img.html (Ventura)
+# http://www.atari-wiki.com/?title=IMG_file (XIMG, STTT)
+# http://www.fileformat.info/format/gemraster/spec/index.htm (XIMG, STTT)
+# http://sylvana.net/1stguide/1STGUIDE.ENG (TIMG)
+0 beshort 0x0001
+>2 beshort 0x0008 GEM Image data
+>>0 use gem_info
+>2 beshort 0x0009 GEM Image data (Ventura)
+>>0 use gem_info
+16 string XIMG\0 GEM XIMG Image data
+>0 use gem_info
+16 string STTT\0\x10 GEM STTT Image data
+>0 use gem_info
+16 string TIMG\0 GEM TIMG Image data
+>0 use gem_info
+
+0 name gem_info
>12 beshort x %d x
>14 beshort x %d,
>4 beshort x %d planes,
@@ -1036,11 +1063,6 @@
# From: "Tano M. Fotang" <mfotang@quanteq.com>
0 string \x46\x4d\x52\x00 ISO/IEC 19794-2 Format Minutiae Record (FMR)
-# WEBP https://developers.google.com/speed/webp/docs/riff_container
-#0 string RIFF
-#>8 string WEBP Web/P image data
-#>>4 lelong x \b, %d bytes
-
# doc: http://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
# example: http://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
90 bequad 0x574D50484F544F00 JPEG-XR Image
diff --git a/contrib/file/magic/Magdir/jpeg b/contrib/file/magic/Magdir/jpeg
index cfe8973..b20b19f 100644
--- a/contrib/file/magic/Magdir/jpeg
+++ b/contrib/file/magic/Magdir/jpeg
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: jpeg,v 1.25 2015/01/02 16:56:50 christos Exp $
+# $File: jpeg,v 1.29 2015/04/10 15:36:02 christos Exp $
# JPEG images
# SunOS 5.5.1 had
#
@@ -12,7 +12,8 @@
0 beshort 0xffd8 JPEG image data
!:mime image/jpeg
!:apple 8BIMJPEG
-!:strength +2
+!:strength *3
+!:ext jpeg/jpg/jpe/jfif
>6 string JFIF \b, JFIF standard
# The following added by Erik Rossen <rossen@freesurf.ch> 1999-09-06
# in a vain attempt to add image size reporting for JFIF. Note that these
@@ -41,7 +42,8 @@
# This uses recursion...
0 name jpeg_segment
>0 beshort 0xFFFE
->>(2.S+2) use jpeg_segment
+# Recursion handled by FFE0
+#>>(2.S+2) use jpeg_segment
>>2 pstring/HJ x \b, comment: "%s"
>0 beshort 0xFFC0
@@ -70,6 +72,7 @@
>>(2.S+2) use jpeg_segment
>0 beshort 0xFFE1
+# Recursion handled by FFE0
#>>(2.S+2) use jpeg_segment
>>4 string Exif \b, Exif Standard: [
>>>10 indirect/r x
@@ -85,7 +88,8 @@
# D9: End of image
# Dn: Restart
>0 beshort&0xFFD0 =0xFFD0
->>(2.S+2) use jpeg_segment
+>>0 beshort&0xFFE0 !0xFFE0
+>>>(2.S+2) use jpeg_segment
#>0 beshort x unknown 0x%x
#>>(2.S+2) use jpeg_segment
diff --git a/contrib/file/magic/Magdir/linux b/contrib/file/magic/Magdir/linux
index d3f6a9d..44aaa66 100644
--- a/contrib/file/magic/Magdir/linux
+++ b/contrib/file/magic/Magdir/linux
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: linux,v 1.59 2014/11/03 21:03:36 christos Exp $
+# $File: linux,v 1.62 2015/05/03 13:06:36 christos Exp $
# linux: file(1) magic for Linux files
#
# Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
@@ -432,3 +432,28 @@
>12 byte x \b, version %d
>13 byte 1 \b, require visibility
>16 string x \b, root %s
+
+# Dump files for iproute2 tool. Generated by the "ip r|a save" command. URL:
+# https://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
+# From: Pavel Emelyanov <xemul@parallels.com>
+0 lelong 0x45311224 iproute2 routes dump
+0 lelong 0x47361222 iproute2 addresses dump
+
+# Image and service files for CRIU tool.
+# URL: http://criu.org
+# From: Pavel Emelyanov <xemul@parallels.com>
+0 lelong 0x54564319 CRIU image file v1.1
+0 lelong 0x55105940 CRIU service file
+0 lelong 0x58313116 CRIU inventory
+
+# Kdump compressed dump files
+# http://sourceforge.net/p/makedumpfile/code/ci/master/tree/IMPLEMENTATION
+
+0 string KDUMP Kdump compressed dump
+>8 long x v%d
+>12 string >\0 \b, system %s
+>77 string >\0 \b, node %s
+>142 string >\0 \b, release %s
+>207 string >\0 \b, version %s
+>272 string >\0 \b, machine %s
+>337 string >\0 \b, domain %s
diff --git a/contrib/file/magic/Magdir/mach b/contrib/file/magic/Magdir/mach
index 23b9f8a..7782e5b 100644
--- a/contrib/file/magic/Magdir/mach
+++ b/contrib/file/magic/Magdir/mach
@@ -1,6 +1,6 @@
#------------------------------------------------------------
-# $File: mach,v 1.19 2014/04/30 21:41:02 christos Exp $
+# $File: mach,v 1.20 2015/05/21 18:28:41 christos Exp $
# Mach has two magic numbers, 0xcafebabe and 0xfeedface.
# Unfortunately the first, cafebabe, is shared with
# Java ByteCode, so they are both handled in the file "cafebabe".
@@ -207,8 +207,10 @@
#
0 lelong&0xfffffffe 0xfeedface Mach-O
!:strength +1
+!:mime application/x-mach-binary
>0 use \^mach-o-be
0 belong&0xfffffffe 0xfeedface Mach-O
!:strength +1
+!:mime application/x-mach-binary
>0 use mach-o-be
diff --git a/contrib/file/magic/Magdir/mathematica b/contrib/file/magic/Magdir/mathematica
index 3c10a57..a93899e 100644
--- a/contrib/file/magic/Magdir/mathematica
+++ b/contrib/file/magic/Magdir/mathematica
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: mathematica,v 1.7 2009/09/19 16:28:10 christos Exp $
+# $File: mathematica,v 1.8 2015/04/09 20:01:40 christos Exp $
# mathematica: file(1) magic for mathematica files
# "H. Nanosecond" <aldomel@ix.netcom.com>
# Mathematica a multi-purpose math program
@@ -8,13 +8,16 @@
#mathematica .mb
0 string \064\024\012\000\035\000\000\000 Mathematica version 2 notebook
+!:ext mb
0 string \064\024\011\000\035\000\000\000 Mathematica version 2 notebook
+!:ext mb
# .ma
# multiple possibilites:
0 string (*^\n\n::[\011frontEndVersion\ =\ Mathematica notebook
#>41 string >\0 %s
+!:ext mb
#0 string (*^\n\n::[\011palette Mathematica notebook version 2.x
@@ -25,13 +28,21 @@
# generic:
0 string (*^\r\r::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\r\n\r\n::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\015 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\n\r\n\r::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\r::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\r\n::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\n\n::[\011 Mathematica notebook version 2.x
+!:ext mb
0 string (*^\n::[\011 Mathematica notebook version 2.x
+!:ext mb
# Mathematica .mx files
diff --git a/contrib/file/magic/Magdir/misctools b/contrib/file/magic/Magdir/misctools
index 0367ec0..d09a543 100644
--- a/contrib/file/magic/Magdir/misctools
+++ b/contrib/file/magic/Magdir/misctools
@@ -1,13 +1,22 @@
#-----------------------------------------------------------------------------
-# $File: misctools,v 1.14 2014/03/06 16:08:58 christos Exp $
+# $File: misctools,v 1.15 2015/04/15 18:29:30 christos Exp $
# misctools: file(1) magic for miscellaneous UNIX tools.
#
0 search/1 %%!! X-Post-It-Note text
0 string/c BEGIN:VCALENDAR vCalendar calendar file
!:mime text/calendar
+# updated by Joerg Jenderek at Apr 2015
+# Extension: .vcf
+# http://en.wikipedia.org/wiki/VCard
0 string/c BEGIN:VCARD vCard visiting card
-!:mime text/x-vcard
+# deprecated
+#!:mime text/x-vcard
+!:mime text/vcard
+# VERSION must come right after BEGIN for 3.0 or 4.0 except in 2.1 , where it can be anywhere
+>12 search/14000/c VERSION:
+# VERSION 2.1 , 3.0 or 4.0
+>>&0 string x \b, version %-.3s
# Summary: Libtool library file
# Extension: .la
diff --git a/contrib/file/magic/Magdir/modem b/contrib/file/magic/Magdir/modem
index 84bdb28..d3bf7fa 100644
--- a/contrib/file/magic/Magdir/modem
+++ b/contrib/file/magic/Magdir/modem
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: modem,v 1.5 2010/09/20 18:55:20 rrt Exp $
+# $File: modem,v 1.6 2015/02/14 17:35:47 christos Exp $
# modem: file(1) magic for modem programs
#
# From: Florian La Roche <florian@knorke.saar.de>
@@ -33,3 +33,14 @@
0 string PVF2\n portable voice format
>5 string >\0 (ascii %s)
+# From: Bernd Nuernberger <bernd.nuernberger@web.de>
+# Brooktrout G3 fax data incl. 128 byte header
+# Common suffixes: 3??, BRK, BRT, BTR
+0 leshort 0x01bb
+>2 leshort 0x0100 Brooktrout 301 fax image,
+>>9 leshort x %d x
+>>0x2d leshort x %d
+>>6 leshort 200 \b, fine resolution
+>>6 leshort 100 \b, normal resolution
+>>11 byte 1 \b, G3 compression
+>>11 byte 2 \b, G32D compression
diff --git a/contrib/file/magic/Magdir/mozilla b/contrib/file/magic/Magdir/mozilla
index 1f89589..173018c 100644
--- a/contrib/file/magic/Magdir/mozilla
+++ b/contrib/file/magic/Magdir/mozilla
@@ -1,9 +1,10 @@
#------------------------------------------------------------------------------
-# $File: mozilla,v 1.4 2009/09/19 16:28:11 christos Exp $
+# $File: mozilla,v 1.6 2015/01/25 16:20:46 christos Exp $
# mozilla: file(1) magic for Mozilla XUL fastload files
# (XUL.mfasl and XPC.mfasl)
# URL: http://www.mozilla.org/
# From: Josh Triplett <josh@freedesktop.org>
0 string XPCOM\nMozFASL\r\n\x1A Mozilla XUL fastload data
+0 string mozLz4a Mozilla lz4 compressed bookmark data
diff --git a/contrib/file/magic/Magdir/nasa b/contrib/file/magic/Magdir/nasa
new file mode 100644
index 0000000..49673b3
--- /dev/null
+++ b/contrib/file/magic/Magdir/nasa
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# nasa: file(1) magic
+
+# From: Barry Carter <carter.barry@gmail.com>
+0 string DAF/SPK NASA SPICE file (binary format)
+0 string DAFETF\ NAIF\ DAF\ ENCODED NASA SPICE file (transfer format)
diff --git a/contrib/file/magic/Magdir/os2 b/contrib/file/magic/Magdir/os2
index 8643adc..25fb728 100644
--- a/contrib/file/magic/Magdir/os2
+++ b/contrib/file/magic/Magdir/os2
@@ -1,13 +1,14 @@
#------------------------------------------------------------------------------
-# $File: os2,v 1.7 2009/09/19 16:28:11 christos Exp $
+# $File: os2,v 1.8 2015/01/05 00:17:13 christos Exp $
# os2: file(1) magic for OS/2 files
#
# Provided 1998/08/22 by
# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
1 search/1 InternetShortcut MS Windows 95 Internet shortcut text
->24 search/1 >\ (URL=<%s>)
+>17 search/100 URL= (URL=<
+>>&0 string x \b%s>)
# OS/2 URL objects
# Provided 1998/08/22 by
diff --git a/contrib/file/magic/Magdir/pdf b/contrib/file/magic/Magdir/pdf
index dc2f799..b43a675 100644
--- a/contrib/file/magic/Magdir/pdf
+++ b/contrib/file/magic/Magdir/pdf
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: pdf,v 1.7 2013/08/22 07:47:26 christos Exp $
+# $File: pdf,v 1.8 2015/01/11 18:19:18 christos Exp $
# pdf: file(1) magic for Portable Document Format
#
@@ -9,6 +9,11 @@
>5 byte x \b, version %c
>7 byte x \b.%c
+0 string \012%PDF- PDF document
+!:mime application/pdf
+>6 byte x \b, version %c
+>8 byte x \b.%c
+
# From: Nick Schmalenberger <nick@schmalenberger.us>
# Forms Data Format
0 string %FDF- FDF document
diff --git a/contrib/file/magic/Magdir/perl b/contrib/file/magic/Magdir/perl
index b5b54fb..127a373 100644
--- a/contrib/file/magic/Magdir/perl
+++ b/contrib/file/magic/Magdir/perl
@@ -1,47 +1,57 @@
#------------------------------------------------------------------------------
-# $File: perl,v 1.22 2014/04/28 12:04:35 christos Exp $
+# $File: perl,v 1.24 2015/03/27 17:58:58 christos Exp $
# perl: file(1) magic for Larry Wall's perl language.
#
# The `eval' lines recognizes an outrageously clever hack.
# Keith Waclena <keith@cerberus.uchicago.edu>
# Send additions to <perl5-porters@perl.org>
-0 search/1 eval\ "exec\ /bin/perl Perl script text
+0 search/1024 eval\ "exec\ perl Perl script text
!:mime text/x-perl
-0 search/1 eval\ "exec\ /usr/bin/perl Perl script text
+0 search/1024 eval\ "exec\ /bin/perl Perl script text
!:mime text/x-perl
-0 search/1 eval\ "exec\ /usr/local/bin/perl Perl script text
+0 search/1024 eval\ "exec\ /usr/bin/perl Perl script text
!:mime text/x-perl
-0 search/1 eval\ '(exit\ $?0)'\ &&\ eval\ 'exec Perl script text
+0 search/1024 eval\ "exec\ /usr/local/bin/perl Perl script text
!:mime text/x-perl
-0 search/1 #!/usr/bin/env\ perl Perl script text executable
+0 search/1024 eval\ 'exec\ perl Perl script text
!:mime text/x-perl
-0 search/1 #!\ /usr/bin/env\ perl Perl script text executable
+0 search/1024 eval\ 'exec\ /bin/perl Perl script text
!:mime text/x-perl
-0 search/1 #!
->0 regex \^#!.*/bin/perl$ Perl script text executable
+0 search/1024 eval\ 'exec\ /usr/bin/perl Perl script text
+!:mime text/x-perl
+0 search/1024 eval\ 'exec\ /usr/local/bin/perl Perl script text
+!:mime text/x-perl
+0 search/1024 eval\ '(exit\ $?0)'\ &&\ eval\ 'exec Perl script text
+!:mime text/x-perl
+0 search/1024 #!/usr/bin/env\ perl Perl script text executable
+!:mime text/x-perl
+0 search/1024 #!\ /usr/bin/env\ perl Perl script text executable
+!:mime text/x-perl
+0 search/1024 #!
+>0 regex \^#!.*/bin/perl([[:space:]].*)*$ Perl script text executable
!:mime text/x-perl
# by Dmitry V. Levin and Alexey Tourbin
# check the first line
-0 search/1 package
+0 search/1024 package
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *; Perl5 module source text
!:strength + 10
# not 'p', check other lines
-0 search/1 !p
+0 search/1024 !p
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *;
>>0 regex \^1\ *;|\^(use|sub|my)\ .*[(;{=] Perl5 module source text
!:strength + 10
# Perl POD documents
# From: Tom Hukins <tom@eborcom.com>
-0 search/1/W \=pod\n Perl POD document text
-0 search/1/W \n\=pod\n Perl POD document text
-0 search/1/W \=head1\ Perl POD document text
-0 search/1/W \n\=head1\ Perl POD document text
-0 search/1/W \=head2\ Perl POD document text
-0 search/1/W \n\=head2\ Perl POD document text
-0 search/1/W \=encoding\ Perl POD document text
-0 search/1/W \n\=encoding\ Perl POD document text
+0 search/1024/W \=pod\n Perl POD document text
+0 search/1024/W \n\=pod\n Perl POD document text
+0 search/1024/W \=head1\ Perl POD document text
+0 search/1024/W \n\=head1\ Perl POD document text
+0 search/1024/W \=head2\ Perl POD document text
+0 search/1024/W \n\=head2\ Perl POD document text
+0 search/1024/W \=encoding\ Perl POD document text
+0 search/1024/W \n\=encoding\ Perl POD document text
# Perl Storable data files.
diff --git a/contrib/file/magic/Magdir/riff b/contrib/file/magic/Magdir/riff
index e551292..55cfb20 100644
--- a/contrib/file/magic/Magdir/riff
+++ b/contrib/file/magic/Magdir/riff
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: riff,v 1.30 2014/09/23 17:02:12 christos Exp $
+# $File: riff,v 1.31 2015/02/14 17:30:03 christos Exp $
# riff: file(1) magic for RIFF format
# See
#
@@ -230,6 +230,7 @@
# AMV-type AVI file: http://wiki.multimedia.cx/index.php?title=AMV
>8 string AMV\040 \b, AMV
>8 string WEBP \b, Web/P image
+!:mime image/webp
>>12 use riff-walk
#
diff --git a/contrib/file/magic/Magdir/sereal b/contrib/file/magic/Magdir/sereal
index 7fa4503..ead78d5 100644
--- a/contrib/file/magic/Magdir/sereal
+++ b/contrib/file/magic/Magdir/sereal
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: sereal,v 1.2 2014/11/11 20:10:49 christos Exp $
+# $File: sereal,v 1.3 2015/02/05 19:14:45 christos Exp $
# sereal: file(1) magic the Sereal binary serialization format
#
# From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ -16,10 +16,20 @@
#
# See https://github.com/Sereal/Sereal/commit/35372ae01d in the
# Sereal.git repository for test Sereal data.
-0 string \=srl Sereal data
+0 name sereal
+>4 byte&0x0F x (version %d,
+>4 byte&0xF0 0x00 uncompressed)
+>4 byte&0xF0 0x10 compressed with non-incremental Snappy)
+>4 byte&0xF0 0x20 compressed with incremental Snappy)
+>4 byte&0xF0 >0x20 unknown subformat, flag: %d>>4)
+
+0 string/b \=srl Sereal data packet
+!:mime application/sereal
+>&0 use sereal
+0 string/b \=\xF3rl Sereal data packet
!:mime application/sereal
->4 byte&0x0F x (version %d,
->4 byte&0xF0 0x00 uncompressed)
->4 byte&0xF0 0x10 compressed with non-incremental Snappy)
->4 byte&0xF0 0x20 compressed with incremental Snappy)
->4 byte&0xF0 >0x20 unknown subformat, flag: %d>>4)
+>&0 use sereal
+0 string/b \=\xC3\xB3rl Sereal data packet, UTF-8 encoded
+!:mime application/sereal
+>&0 use sereal
+
diff --git a/contrib/file/magic/Magdir/sgml b/contrib/file/magic/Magdir/sgml
index f9cab08..cf2b40e 100644
--- a/contrib/file/magic/Magdir/sgml
+++ b/contrib/file/magic/Magdir/sgml
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
-# $File: sgml,v 1.30 2013/12/21 14:27:24 christos Exp $
+# $File: sgml,v 1.31 2015/03/11 19:38:04 christos Exp $
# Type: SVG Vectorial Graphics
# From: Noel Torres <tecnico@ejerciciosresueltos.com>
0 string \<?xml\ version="
@@ -44,24 +44,44 @@
0 search/4096/cWt \<!doctype\ html HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<head HTML document text
+
+0 search/4096/cwt \<head\> HTML document text
+!:mime text/html
+!:strength + 5
+0 search/4096/cWt \<head\ HTML document text
+!:mime text/html
+!:strength + 5
+0 search/4096/cwt \<title\> HTML document text
+!:mime text/html
+!:strength + 5
+0 search/4096/cWt \<title\ HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<title HTML document text
+0 search/4096/cwt \<html\> HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<html HTML document text
+0 search/4096/cWt \<html\ HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<script HTML document text
+0 search/4096/cwt \<script\> HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<style HTML document text
+0 search/4096/cWt \<script\ HTML document text
!:mime text/html
!:strength + 5
-0 search/4096/cwt \<table HTML document text
+0 search/4096/cwt \<style\> HTML document text
!:mime text/html
!:strength + 5
+0 search/4096/cWt \<style\ HTML document text
+!:mime text/html
+!:strength + 5
+0 search/4096/cwt \<table\> HTML document text
+!:mime text/html
+!:strength + 5
+0 search/4096/cWt \<table\ HTML document text
+!:mime text/html
+!:strength + 5
+
0 search/4096/cwt \<a\ href= HTML document text
!:mime text/html
!:strength + 5
diff --git a/contrib/file/magic/Magdir/varied.script b/contrib/file/magic/Magdir/varied.script
index eb71b2f..7f4e405 100644
--- a/contrib/file/magic/Magdir/varied.script
+++ b/contrib/file/magic/Magdir/varied.script
@@ -1,38 +1,30 @@
#------------------------------------------------------------------------------
-# $File: varied.script,v 1.10 2014/03/01 22:32:39 christos Exp $
+# $File: varied.script,v 1.11 2015/03/27 17:59:39 christos Exp $
# varied.script: file(1) magic for various interpreter scripts
0 string/t #!\ / a
>3 string >\0 %s script text executable
-!:strength / 2
0 string/b #!\ / a
>3 string >\0 %s script executable (binary data)
-!:strength / 2
0 string/t #!\t/ a
>3 string >\0 %s script text executable
-!:strength / 2
0 string/b #!\t/ a
>3 string >\0 %s script executable (binary data)
-!:strength / 2
0 string/t #!/ a
>2 string >\0 %s script text executable
-!:strength / 2
0 string/b #!/ a
>2 string >\0 %s script executable (binary data)
-!:strength / 2
0 string/t #!\ script text executable
>3 string >\0 for %s
-!:strength / 3
0 string/b #!\ script executable
>3 string >\0 for %s (binary data)
-!:strength / 3
# using env
0 string/t #!/usr/bin/env a
diff --git a/contrib/file/magic/Magdir/vorbis b/contrib/file/magic/Magdir/vorbis
index d337398..3b5e51f 100644
--- a/contrib/file/magic/Magdir/vorbis
+++ b/contrib/file/magic/Magdir/vorbis
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
-# $File: vorbis,v 1.20 2014/09/23 16:35:08 christos Exp $
+# $File: vorbis,v 1.22 2015/03/28 15:14:55 christos Exp $
# vorbis: file(1) magic for Ogg/Vorbis files
#
# From Felix von Leitner <leitner@fefe.de>
@@ -47,8 +47,8 @@
# non-Vorbis content: Skeleton
>>28 string fishead\0 \b, Skeleton
!:mime video/ogg
->>>36 short x v%u
->>>40 short x \b.%u
+>>>36 leshort x v%u
+>>>40 leshort x \b.%u
# non-Vorbis content: Speex
>>28 string Speex\ \ \ \b, Speex audio
!:mime audio/ogg
@@ -122,3 +122,25 @@
>>>>>>(84.b+117) string 20020717 (1.0)
>>>>>>(84.b+117) string 20030909 (1.0.1)
>>>>>>(84.b+117) string 20040629 (1.1.0 RC1)
+
+# non-Vorbis content: Opus https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+>>28 string OpusHead \b, Opus audio,
+!:mime audio/ogg
+>>>36 ubyte >0x0F UNKNOWN VERSION %u,
+>>>36 ubyte &0x0F version 0.%d
+>>>>46 ubyte >1
+>>>>>46 ubyte !255 unknown channel mapping family %u,
+>>>>>37 ubyte x %u channels
+>>>>46 ubyte 0
+>>>>>37 ubyte 1 mono
+>>>>>37 ubyte 2 stereo
+>>>>46 ubyte 1
+>>>>>37 ubyte 1 mono
+>>>>>37 ubyte 2 stereo
+>>>>>37 ubyte 3 linear surround
+>>>>>37 ubyte 4 quadraphonic
+>>>>>37 ubyte 5 5.0 surround
+>>>>>37 ubyte 6 5.1 surround
+>>>>>37 ubyte 7 6.1 surround
+>>>>>37 ubyte 8 7.1 surround
+>>>>40 lelong !0 \b, %u Hz
diff --git a/contrib/file/magic/Makefile.am b/contrib/file/magic/Makefile.am
index 7bc327d..cb62f95 100644
--- a/contrib/file/magic/Makefile.am
+++ b/contrib/file/magic/Makefile.am
@@ -1,5 +1,5 @@
#
-# $File: Makefile.am,v 1.101 2014/12/12 16:48:39 christos Exp $
+# $File: Makefile.am,v 1.103 2015/03/17 15:15:12 christos Exp $
#
MAGIC_FRAGMENT_BASE = Magdir
MAGIC_DIR = $(top_srcdir)/magic
@@ -42,6 +42,7 @@ $(MAGIC_FRAGMENT_DIR)/c-lang \
$(MAGIC_FRAGMENT_DIR)/c64 \
$(MAGIC_FRAGMENT_DIR)/cad \
$(MAGIC_FRAGMENT_DIR)/cafebabe \
+$(MAGIC_FRAGMENT_DIR)/cbor \
$(MAGIC_FRAGMENT_DIR)/cddb \
$(MAGIC_FRAGMENT_DIR)/chord \
$(MAGIC_FRAGMENT_DIR)/cisco \
@@ -160,6 +161,7 @@ $(MAGIC_FRAGMENT_DIR)/msx \
$(MAGIC_FRAGMENT_DIR)/msvc \
$(MAGIC_FRAGMENT_DIR)/mup \
$(MAGIC_FRAGMENT_DIR)/music \
+$(MAGIC_FRAGMENT_DIR)/nasa \
$(MAGIC_FRAGMENT_DIR)/natinst \
$(MAGIC_FRAGMENT_DIR)/ncr \
$(MAGIC_FRAGMENT_DIR)/neko \
diff --git a/contrib/file/magic/Makefile.in b/contrib/file/magic/Makefile.in
index 43f42c6..f214a56 100644
--- a/contrib/file/magic/Makefile.in
+++ b/contrib/file/magic/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -78,7 +88,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = magic
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -86,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -139,6 +149,7 @@ am__uninstall_files_from_dir = { \
am__installdirs = "$(DESTDIR)$(pkgdatadir)"
DATA = $(pkgdata_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgdatadir = @pkgdatadir@
ACLOCAL = @ACLOCAL@
@@ -262,7 +273,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#
-# $File: Makefile.am,v 1.101 2014/12/12 16:48:39 christos Exp $
+# $File: Makefile.am,v 1.103 2015/03/17 15:15:12 christos Exp $
#
MAGIC_FRAGMENT_BASE = Magdir
MAGIC_DIR = $(top_srcdir)/magic
@@ -303,6 +314,7 @@ $(MAGIC_FRAGMENT_DIR)/c-lang \
$(MAGIC_FRAGMENT_DIR)/c64 \
$(MAGIC_FRAGMENT_DIR)/cad \
$(MAGIC_FRAGMENT_DIR)/cafebabe \
+$(MAGIC_FRAGMENT_DIR)/cbor \
$(MAGIC_FRAGMENT_DIR)/cddb \
$(MAGIC_FRAGMENT_DIR)/chord \
$(MAGIC_FRAGMENT_DIR)/cisco \
@@ -421,6 +433,7 @@ $(MAGIC_FRAGMENT_DIR)/msx \
$(MAGIC_FRAGMENT_DIR)/msvc \
$(MAGIC_FRAGMENT_DIR)/mup \
$(MAGIC_FRAGMENT_DIR)/music \
+$(MAGIC_FRAGMENT_DIR)/nasa \
$(MAGIC_FRAGMENT_DIR)/natinst \
$(MAGIC_FRAGMENT_DIR)/ncr \
$(MAGIC_FRAGMENT_DIR)/neko \
@@ -555,7 +568,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign magic/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign magic/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -755,6 +767,8 @@ uninstall-am: uninstall-pkgdataDATA
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags-am uninstall uninstall-am uninstall-pkgdataDATA
+.PRECIOUS: Makefile
+
${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
@rm -fr magic
diff --git a/contrib/file/missing b/contrib/file/missing
index cdea514..f62bbae 100755
--- a/contrib/file/missing
+++ b/contrib/file/missing
@@ -1,9 +1,9 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -160,7 +160,7 @@ give_advice ()
;;
autom4te*)
echo "You might have modified some maintainer files that require"
- echo "the 'automa4te' program to be rebuilt."
+ echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
diff --git a/contrib/file/python/Makefile.in b/contrib/file/python/Makefile.in
index 63a34b4..70bf456 100644
--- a/contrib/file/python/Makefile.in
+++ b/contrib/file/python/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -77,7 +87,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = python
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -85,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -109,6 +119,7 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgdatadir = @pkgdatadir@
ACLOCAL = @ACLOCAL@
@@ -246,7 +257,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign python/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign python/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -421,6 +431,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/contrib/file/src/Makefile.in b/contrib/file/src/Makefile.in
index 41cb9f5..5e69c00 100644
--- a/contrib/file/src/Makefile.in
+++ b/contrib/file/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -81,10 +91,6 @@ build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = file$(EXEEXT)
subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ctime_r.c \
- vasprintf.c asctime_r.c asprintf.c strcasestr.c pread.c \
- getline.c strlcpy.c strlcat.c fmtcheck.c getopt_long.c \
- $(top_srcdir)/depcomp $(include_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -92,6 +98,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -205,6 +213,10 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ asctime_r.c asprintf.c ctime_r.c fmtcheck.c getline.c \
+ getopt_long.c gmtime_r.c localtime_r.c pread.c strcasestr.c \
+ strlcat.c strlcpy.c vasprintf.c
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgdatadir = @pkgdatadir@
ACLOCAL = @ACLOCAL@
@@ -363,7 +375,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -485,6 +496,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fmtcheck.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getline.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt_long.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gmtime_r.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/localtime_r.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pread.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasestr.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strlcat.Plo@am__quote@
@@ -774,6 +787,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-includeHEADERS uninstall-libLTLIBRARIES
+.PRECIOUS: Makefile
+
magic.h: ${HDR}
sed -e "s/X.YY/$$(echo @VERSION@ | tr -d .)/" < ${HDR} > $@
diff --git a/contrib/file/src/apprentice.c b/contrib/file/src/apprentice.c
index 47b4c87..607201c 100644
--- a/contrib/file/src/apprentice.c
+++ b/contrib/file/src/apprentice.c
@@ -32,7 +32,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: apprentice.c,v 1.229 2015/01/01 17:07:34 christos Exp $")
+FILE_RCSID("@(#)$File: apprentice.c,v 1.233 2015/06/10 00:57:41 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -149,6 +149,7 @@ private int get_op(char);
private int parse_mime(struct magic_set *, struct magic_entry *, const char *);
private int parse_strength(struct magic_set *, struct magic_entry *, const char *);
private int parse_apple(struct magic_set *, struct magic_entry *, const char *);
+private int parse_ext(struct magic_set *, struct magic_entry *, const char *);
private size_t magicsize = sizeof(struct magic);
@@ -163,6 +164,7 @@ private struct {
#define DECLARE_FIELD(name) { # name, sizeof(# name) - 1, parse_ ## name }
DECLARE_FIELD(mime),
DECLARE_FIELD(apple),
+ DECLARE_FIELD(ext),
DECLARE_FIELD(strength),
#undef DECLARE_FIELD
{ NULL, 0, NULL }
@@ -964,8 +966,9 @@ apprentice_list(struct mlist *mlist, int mode)
*ml->magic[magindex].mimetype == '\0')
magindex++;
- printf("Strength = %3" SIZE_T_FORMAT "u : %s [%s]\n",
+ printf("Strength = %3" SIZE_T_FORMAT "u@%u: %s [%s]\n",
apprentice_magic_strength(m),
+ ml->magic[magindex].lineno,
ml->magic[magindex].desc,
ml->magic[magindex].mimetype);
}
@@ -1839,15 +1842,19 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
}
}
/* Indirect offsets are not valid at level 0. */
- if (m->cont_level == 0 && (m->flag & (OFFADD | INDIROFFADD)))
+ if (m->cont_level == 0 && (m->flag & (OFFADD | INDIROFFADD))) {
if (ms->flags & MAGIC_CHECK)
file_magwarn(ms, "relative offset at level 0");
+ return -1;
+ }
/* get offset, then skip over it */
m->offset = (uint32_t)strtoul(l, &t, 0);
- if (l == t)
+ if (l == t) {
if (ms->flags & MAGIC_CHECK)
file_magwarn(ms, "offset `%s' invalid", l);
+ return -1;
+ }
l = t;
if (m->flag & INDIR) {
@@ -1903,7 +1910,7 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
file_magwarn(ms,
"indirect offset type `%c' invalid",
*l);
- break;
+ return -1;
}
l++;
}
@@ -1923,17 +1930,21 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
}
if (isdigit((unsigned char)*l) || *l == '-') {
m->in_offset = (int32_t)strtol(l, &t, 0);
- if (l == t)
+ if (l == t) {
if (ms->flags & MAGIC_CHECK)
file_magwarn(ms,
"in_offset `%s' invalid", l);
+ return -1;
+ }
l = t;
}
if (*l++ != ')' ||
- ((m->in_op & FILE_OPINDIRECT) && *l++ != ')'))
+ ((m->in_op & FILE_OPINDIRECT) && *l++ != ')')) {
if (ms->flags & MAGIC_CHECK)
file_magwarn(ms,
"missing ')' in indirect offset");
+ return -1;
+ }
}
EATAB;
@@ -2199,7 +2210,7 @@ parse_extra(struct magic_set *ms, struct magic_entry *me, const char *line,
size_t i;
const char *l = line;
struct magic *m = &me->mp[me->cont_count == 0 ? 0 : me->cont_count - 1];
- char *buf = (char *)m + off;
+ char *buf = CAST(char *, CAST(void *, m)) + off;
if (buf[0] != '\0') {
len = nt ? strlen(buf) : len;
@@ -2248,11 +2259,25 @@ parse_apple(struct magic_set *ms, struct magic_entry *me, const char *line)
{
struct magic *m = &me->mp[0];
- return parse_extra(ms, me, line, offsetof(struct magic, apple),
+ return parse_extra(ms, me, line,
+ CAST(off_t, offsetof(struct magic, apple)),
sizeof(m->apple), "APPLE", "!+-./", 0);
}
/*
+ * Parse a comma-separated list of extensions
+ */
+private int
+parse_ext(struct magic_set *ms, struct magic_entry *me, const char *line)
+{
+ struct magic *m = &me->mp[0];
+
+ return parse_extra(ms, me, line,
+ CAST(off_t, offsetof(struct magic, ext)),
+ sizeof(m->ext), "EXTENSION", ",!+-/", 0);
+}
+
+/*
* parse a MIME annotation line from magic file, put into magic[index - 1]
* if valid
*/
@@ -2261,7 +2286,8 @@ parse_mime(struct magic_set *ms, struct magic_entry *me, const char *line)
{
struct magic *m = &me->mp[0];
- return parse_extra(ms, me, line, offsetof(struct magic, mimetype),
+ return parse_extra(ms, me, line,
+ CAST(off_t, offsetof(struct magic, mimetype)),
sizeof(m->mimetype), "MIME", "+-/.", 1);
}
diff --git a/contrib/file/src/ascmagic.c b/contrib/file/src/ascmagic.c
index 78a6dbb..9e0f663 100644
--- a/contrib/file/src/ascmagic.c
+++ b/contrib/file/src/ascmagic.c
@@ -35,7 +35,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: ascmagic.c,v 1.91 2014/11/28 02:46:39 christos Exp $")
+FILE_RCSID("@(#)$File: ascmagic.c,v 1.92 2015/04/09 20:01:41 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -79,7 +79,7 @@ file_ascmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes,
const char *code_mime = NULL;
const char *type = NULL;
- if (ms->flags & MAGIC_APPLE)
+ if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
return 0;
nbytes = trim_nuls(buf, nbytes);
@@ -123,7 +123,7 @@ file_ascmagic_with_encoding(struct magic_set *ms, const unsigned char *buf,
size_t last_line_end = (size_t)-1;
int has_long_lines = 0;
- if (ms->flags & MAGIC_APPLE)
+ if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
return 0;
nbytes = trim_nuls(buf, nbytes);
diff --git a/contrib/file/src/cdf.c b/contrib/file/src/cdf.c
index 9e3cf9f..c979b1d 100644
--- a/contrib/file/src/cdf.c
+++ b/contrib/file/src/cdf.c
@@ -35,7 +35,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: cdf.c,v 1.69 2014/12/04 15:56:46 christos Exp $")
+FILE_RCSID("@(#)$File: cdf.c,v 1.76 2015/02/28 00:18:02 christos Exp $")
#endif
#include <assert.h>
@@ -73,8 +73,11 @@ static union {
#define CDF_TOLE8(x) ((uint64_t)(NEED_SWAP ? _cdf_tole8(x) : (uint64_t)(x)))
#define CDF_TOLE4(x) ((uint32_t)(NEED_SWAP ? _cdf_tole4(x) : (uint32_t)(x)))
#define CDF_TOLE2(x) ((uint16_t)(NEED_SWAP ? _cdf_tole2(x) : (uint16_t)(x)))
-#define CDF_TOLE(x) (sizeof(x) == 2 ? CDF_TOLE2(x) : (sizeof(x) == 4 ? \
- CDF_TOLE4(x) : CDF_TOLE8(x)))
+#define CDF_TOLE(x) (/*CONSTCOND*/sizeof(x) == 2 ? \
+ CDF_TOLE2(CAST(uint16_t, x)) : \
+ (/*CONSTCOND*/sizeof(x) == 4 ? \
+ CDF_TOLE4(CAST(uint32_t, x)) : \
+ CDF_TOLE8(CAST(uint64_t, x))))
#define CDF_GETUINT32(x, y) cdf_getuint32(x, y)
@@ -271,7 +274,7 @@ cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h,
const char *e = ((const char *)p) + tail;
size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
- (void)&line;
+ /*LINTED*/(void)&line;
if (e >= b && (size_t)(e - b) <= ss * sst->sst_len)
return 0;
DPRINTF(("%d: offset begin %p < end %p || %" SIZE_T_FORMAT "u"
@@ -744,24 +747,33 @@ cdf_read_user_stream(const cdf_info_t *info, const cdf_header_t *h,
const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst,
const cdf_dir_t *dir, const char *name, cdf_stream_t *scn)
{
- size_t i;
const cdf_directory_t *d;
- size_t name_len = strlen(name) + 1;
+ int i = cdf_find_stream(dir, name, CDF_DIR_TYPE_USER_STREAM);
+
+ if (i <= 0)
+ return -1;
+
+ d = &dir->dir_tab[i - 1];
+ return cdf_read_sector_chain(info, h, sat, ssat, sst,
+ d->d_stream_first_sector, d->d_size, scn);
+}
+
+int
+cdf_find_stream(const cdf_dir_t *dir, const char *name, int type)
+{
+ size_t i, name_len = strlen(name) + 1;
for (i = dir->dir_len; i > 0; i--)
- if (dir->dir_tab[i - 1].d_type == CDF_DIR_TYPE_USER_STREAM &&
+ if (dir->dir_tab[i - 1].d_type == type &&
cdf_namecmp(name, dir->dir_tab[i - 1].d_name, name_len)
== 0)
break;
+ if (i > 0)
+ return i;
- if (i == 0) {
- DPRINTF(("Cannot find user stream `%s'\n", name));
- errno = ESRCH;
- return -1;
- }
- d = &dir->dir_tab[i - 1];
- return cdf_read_sector_chain(info, h, sat, ssat, sst,
- d->d_stream_first_sector, d->d_size, scn);
+ DPRINTF(("Cannot find type %d `%s'\n", type, name));
+ errno = ESRCH;
+ return 0;
}
int
@@ -998,9 +1010,13 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h,
}
-#define extract_catalog_field(f, l) \
- memcpy(&ce[i].f, b + (l), sizeof(ce[i].f)); \
- ce[i].f = CDF_TOLE(ce[i].f)
+#define extract_catalog_field(t, f, l) \
+ if (b + l + sizeof(cep->f) > eb) { \
+ cep->ce_namlen = 0; \
+ break; \
+ } \
+ memcpy(&cep->f, b + (l), sizeof(cep->f)); \
+ ce[i].f = CAST(t, CDF_TOLE(cep->f))
int
cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
@@ -1010,40 +1026,58 @@ cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
const char *b = CAST(const char *, sst->sst_tab);
const char *eb = b + ss * sst->sst_len;
- size_t nr, i, k;
+ size_t nr, i, j, k;
cdf_catalog_entry_t *ce;
uint16_t reclen;
const uint16_t *np;
- for (nr = 0; b < eb; nr++) {
+ for (nr = 0;; nr++) {
memcpy(&reclen, b, sizeof(reclen));
reclen = CDF_TOLE2(reclen);
if (reclen == 0)
break;
b += reclen;
+ if (b > eb)
+ break;
}
+ nr--;
*cat = CAST(cdf_catalog_t *,
malloc(sizeof(cdf_catalog_t) + nr * sizeof(*ce)));
- (*cat)->cat_num = nr;
ce = (*cat)->cat_e;
+ memset(ce, 0, nr * sizeof(*ce));
b = CAST(const char *, sst->sst_tab);
- for (i = 0; i < nr; i++) {
- extract_catalog_field(ce_namlen, 0);
- extract_catalog_field(ce_num, 2);
- extract_catalog_field(ce_timestamp, 6);
- reclen = ce[i].ce_namlen;
- ce[i].ce_namlen =
- sizeof(ce[i].ce_name) / sizeof(ce[i].ce_name[0]) - 1;
- if (ce[i].ce_namlen > reclen - 14)
- ce[i].ce_namlen = reclen - 14;
- np = CAST(const uint16_t *, (b + 16));
- for (k = 0; k < ce[i].ce_namlen; k++) {
- ce[i].ce_name[k] = np[k];
- CDF_TOLE2(ce[i].ce_name[k]);
+ for (j = i = 0; i < nr; b += reclen) {
+ cdf_catalog_entry_t *cep = &ce[j];
+ uint16_t rlen;
+
+ extract_catalog_field(uint16_t, ce_namlen, 0);
+ extract_catalog_field(uint16_t, ce_num, 4);
+ extract_catalog_field(uint64_t, ce_timestamp, 8);
+ reclen = cep->ce_namlen;
+
+ if (reclen < 14) {
+ cep->ce_namlen = 0;
+ continue;
}
- ce[i].ce_name[ce[i].ce_namlen] = 0;
- b += reclen;
+
+ cep->ce_namlen = __arraycount(cep->ce_name) - 1;
+ rlen = reclen - 14;
+ if (cep->ce_namlen > rlen)
+ cep->ce_namlen = rlen;
+
+ np = CAST(const uint16_t *, CAST(const void *, (b + 16)));
+ if (CAST(const char *, np + cep->ce_namlen) > eb) {
+ cep->ce_namlen = 0;
+ break;
+ }
+
+ for (k = 0; k < cep->ce_namlen; k++)
+ cep->ce_name[k] = np[k]; /* XXX: CDF_TOLE2? */
+ cep->ce_name[cep->ce_namlen] = 0;
+ j = i;
+ i++;
}
+ (*cat)->cat_num = j;
return 0;
}
@@ -1188,11 +1222,12 @@ cdf_dump_sat(const char *prefix, const cdf_sat_t *sat, size_t size)
}
void
-cdf_dump(void *v, size_t len)
+cdf_dump(const void *v, size_t len)
{
size_t i, j;
- unsigned char *p = v;
+ const unsigned char *p = v;
char abuf[16];
+
(void)fprintf(stderr, "%.4x: ", 0);
for (i = 0, j = 0; i < len; i++, p++) {
(void)fprintf(stderr, "%.2x ", *p);
@@ -1327,10 +1362,10 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count)
cdf_print_elapsed_time(buf, sizeof(buf), tp);
(void)fprintf(stderr, "timestamp %s\n", buf);
} else {
- char buf[26];
+ char tbuf[26];
cdf_timestamp_to_timespec(&ts, tp);
(void)fprintf(stderr, "timestamp %s",
- cdf_ctime(&ts.tv_sec, buf));
+ cdf_ctime(&ts.tv_sec, tbuf));
}
break;
case CDF_CLIPBOARD:
@@ -1401,7 +1436,10 @@ main(int argc, char *argv[])
cdf_dir_t dir;
cdf_info_t info;
const cdf_directory_t *root;
-
+#ifdef __linux__
+#define getprogname() __progname
+ extern char *__progname;
+#endif
if (argc < 2) {
(void)fprintf(stderr, "Usage: %s <filename>\n", getprogname());
return -1;
@@ -1453,8 +1491,8 @@ main(int argc, char *argv[])
else
cdf_dump_summary_info(&h, &scn);
#endif
- if (cdf_read_catalog(&info, &h, &sat, &ssat, &sst, &dir,
- &scn) == -1)
+ if (cdf_read_user_stream(&info, &h, &sat, &ssat, &sst,
+ &dir, "Catalog", &scn) == -1)
warn("Cannot read catalog");
#ifdef CDF_DEBUG
else
diff --git a/contrib/file/src/cdf.h b/contrib/file/src/cdf.h
index 64e3648..cee8d77 100644
--- a/contrib/file/src/cdf.h
+++ b/contrib/file/src/cdf.h
@@ -314,12 +314,7 @@ int cdf_read_property_info(const cdf_stream_t *, const cdf_header_t *, uint32_t,
int cdf_read_user_stream(const cdf_info_t *, const cdf_header_t *,
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
const cdf_dir_t *, const char *, cdf_stream_t *);
-#define cdf_read_catalog(info, header, sat, ssat, stream, dir, scn) \
- cdf_read_user_stream(info, header, sat, ssat, stream, dir, "Catalog", \
- scn)
-#define cdf_read_encrypted_package(info, header, sat, ssat, stream, dir, scn) \
- cdf_read_user_stream(info, header, sat, ssat, stream, dir, \
- "EncryptedPackage", scn)
+int cdf_find_stream(const cdf_dir_t *, const char *, int);
int cdf_read_summary_info(const cdf_info_t *, const cdf_header_t *,
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
const cdf_dir_t *, cdf_stream_t *);
@@ -339,7 +334,7 @@ char *cdf_u16tos8(char *, size_t, const uint16_t *);
#ifdef CDF_DEBUG
void cdf_dump_header(const cdf_header_t *);
void cdf_dump_sat(const char *, const cdf_sat_t *, size_t);
-void cdf_dump(void *, size_t);
+void cdf_dump(const void *, size_t);
void cdf_dump_stream(const cdf_header_t *, const cdf_stream_t *);
void cdf_dump_dir(const cdf_info_t *, const cdf_header_t *, const cdf_sat_t *,
const cdf_sat_t *, const cdf_stream_t *, const cdf_dir_t *);
diff --git a/contrib/file/src/compress.c b/contrib/file/src/compress.c
index e968bb4..539031e 100644
--- a/contrib/file/src/compress.c
+++ b/contrib/file/src/compress.c
@@ -35,7 +35,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: compress.c,v 1.77 2014/12/12 16:33:01 christos Exp $")
+FILE_RCSID("@(#)$File: compress.c,v 1.80 2015/06/03 18:21:24 christos Exp $")
#endif
#include "magic.h"
@@ -45,7 +45,12 @@ FILE_RCSID("@(#)$File: compress.c,v 1.77 2014/12/12 16:33:01 christos Exp $")
#endif
#include <string.h>
#include <errno.h>
+#ifdef HAVE_SIGNAL_H
#include <signal.h>
+# ifndef HAVE_SIG_T
+typedef void (*sig_t)(int);
+# endif /* HAVE_SIG_T */
+#endif
#if !defined(__MINGW32__) && !defined(WIN32)
#include <sys/ioctl.h>
#endif
@@ -104,12 +109,16 @@ file_zmagic(struct magic_set *ms, int fd, const char *name,
size_t i, nsz;
int rv = 0;
int mime = ms->flags & MAGIC_MIME;
+#ifdef HAVE_SIGNAL_H
sig_t osigpipe;
+#endif
if ((ms->flags & MAGIC_COMPRESS) == 0)
return 0;
+#ifdef HAVE_SIGNAL_H
osigpipe = signal(SIGPIPE, SIG_IGN);
+#endif
for (i = 0; i < ncompr; i++) {
if (nbytes < compr[i].maglen)
continue;
@@ -121,7 +130,8 @@ file_zmagic(struct magic_set *ms, int fd, const char *name,
if (file_buffer(ms, -1, name, newbuf, nsz) == -1)
goto error;
- if (mime == MAGIC_MIME || mime == 0) {
+ if ((ms->flags & MAGIC_COMPRESS_TRANSP) == 0 &&
+ (mime == MAGIC_MIME || mime == 0)) {
if (file_printf(ms, mime ?
" compressed-encoding=" : " (") == -1)
goto error;
@@ -136,7 +146,9 @@ file_zmagic(struct magic_set *ms, int fd, const char *name,
}
}
error:
+#ifdef HAVE_SIGNAL_H
(void)signal(SIGPIPE, osigpipe);
+#endif
free(newbuf);
ms->flags |= MAGIC_COMPRESS;
return rv;
@@ -383,7 +395,6 @@ uncompressbuf(struct magic_set *ms, int fd, size_t method,
int fdin[2], fdout[2];
int status;
ssize_t r;
- pid_t pid;
#ifdef BUILTIN_DECOMPRESS
/* FIXME: This doesn't cope with bzip2 */
@@ -397,7 +408,7 @@ uncompressbuf(struct magic_set *ms, int fd, size_t method,
file_error(ms, errno, "cannot create pipe");
return NODATA;
}
- switch (pid = fork()) {
+ switch (fork()) {
case 0: /* child */
(void) close(0);
if (fd != -1) {
diff --git a/contrib/file/src/encoding.c b/contrib/file/src/encoding.c
index c1b23cc..3c116cd 100644
--- a/contrib/file/src/encoding.c
+++ b/contrib/file/src/encoding.c
@@ -35,7 +35,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: encoding.c,v 1.10 2014/09/11 12:08:52 christos Exp $")
+FILE_RCSID("@(#)$File: encoding.c,v 1.13 2015/06/04 19:16:28 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -47,6 +47,7 @@ FILE_RCSID("@(#)$File: encoding.c,v 1.10 2014/09/11 12:08:52 christos Exp $")
private int looks_ascii(const unsigned char *, size_t, unichar *, size_t *);
private int looks_utf8_with_BOM(const unsigned char *, size_t, unichar *,
size_t *);
+private int looks_utf7(const unsigned char *, size_t, unichar *, size_t *);
private int looks_ucs16(const unsigned char *, size_t, unichar *, size_t *);
private int looks_latin1(const unsigned char *, size_t, unichar *, size_t *);
private int looks_extended(const unsigned char *, size_t, unichar *, size_t *);
@@ -88,9 +89,15 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
}
if (looks_ascii(buf, nbytes, *ubuf, ulen)) {
- DPRINTF(("ascii %" SIZE_T_FORMAT "u\n", *ulen));
- *code = "ASCII";
- *code_mime = "us-ascii";
+ if (looks_utf7(buf, nbytes, *ubuf, ulen) > 0) {
+ DPRINTF(("utf-7 %" SIZE_T_FORMAT "u\n", *ulen));
+ *code = "UTF-7 Unicode";
+ *code_mime = "utf-7";
+ } else {
+ DPRINTF(("ascii %" SIZE_T_FORMAT "u\n", *ulen));
+ *code = "ASCII";
+ *code_mime = "us-ascii";
+ }
} else if (looks_utf8_with_BOM(buf, nbytes, *ubuf, ulen) > 0) {
DPRINTF(("utf8/bom %" SIZE_T_FORMAT "u\n", *ulen));
*code = "UTF-8 Unicode (with BOM)";
@@ -199,8 +206,8 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
#define X 3 /* character appears in non-ISO extended ASCII (Mac, IBM PC) */
private char text_chars[256] = {
- /* BEL BS HT LF FF CR */
- F, F, F, F, F, F, F, T, T, T, T, F, T, T, F, F, /* 0x0X */
+ /* BEL BS HT LF VT FF CR */
+ F, F, F, F, F, F, F, T, T, T, T, T, T, T, F, F, /* 0x0X */
/* ESC */
F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, /* 0x1X */
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x2X */
@@ -372,6 +379,25 @@ looks_utf8_with_BOM(const unsigned char *buf, size_t nbytes, unichar *ubuf,
}
private int
+looks_utf7(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
+{
+ if (nbytes > 4 && buf[0] == '+' && buf[1] == '/' && buf[2] == 'v')
+ switch (buf[3]) {
+ case '8':
+ case '9':
+ case '+':
+ case '/':
+ if (ubuf)
+ *ulen = 0;
+ return 1;
+ default:
+ return -1;
+ }
+ else
+ return -1;
+}
+
+private int
looks_ucs16(const unsigned char *buf, size_t nbytes, unichar *ubuf,
size_t *ulen)
{
diff --git a/contrib/file/src/file.c b/contrib/file/src/file.c
index 546fd8b..c700f66 100644
--- a/contrib/file/src/file.c
+++ b/contrib/file/src/file.c
@@ -32,7 +32,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: file.c,v 1.160 2014/12/16 23:18:40 christos Exp $")
+FILE_RCSID("@(#)$File: file.c,v 1.164 2015/06/03 18:21:24 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -68,14 +68,14 @@ int getopt_long(int argc, char * const *argv, const char *optstring, const struc
#endif
#ifdef S_IFLNK
-#define FILE_FLAGS "-bcEhikLlNnprsvz0"
+#define FILE_FLAGS "-bcEhikLlNnprsvzZ0"
#else
-#define FILE_FLAGS "-bcEiklNnprsvz0"
+#define FILE_FLAGS "-bcEiklNnprsvzZ0"
#endif
# define USAGE \
"Usage: %s [" FILE_FLAGS \
- "] [--apple] [--mime-encoding] [--mime-type]\n" \
+ "] [--apple] [--extension] [--mime-encoding] [--mime-type]\n" \
" [-e testname] [-F separator] [-f namefile] [-m magicfiles] " \
"file ...\n" \
" %s -C [-m magicfiles]\n" \
@@ -89,16 +89,21 @@ private int /* Global command-line options */
private const char *separator = ":"; /* Default field separator */
private const struct option long_options[] = {
+#define OPT_HELP 1
+#define OPT_APPLE 2
+#define OPT_EXTENSIONS 3
+#define OPT_MIME_TYPE 4
+#define OPT_MIME_ENCODING 5
#define OPT(shortname, longname, opt, doc) \
{longname, opt, NULL, shortname},
-#define OPT_LONGONLY(longname, opt, doc) \
- {longname, opt, NULL, 0},
+#define OPT_LONGONLY(longname, opt, doc, id) \
+ {longname, opt, NULL, id},
#include "file_opts.h"
#undef OPT
#undef OPT_LONGONLY
{0, 0, NULL, 0}
};
-#define OPTSTRING "bcCde:Ef:F:hiklLm:nNpP:rsvz0"
+#define OPTSTRING "bcCde:Ef:F:hiklLm:nNpP:rsvzZ0"
private const struct {
const char *name;
@@ -130,8 +135,14 @@ private struct {
private char *progname; /* used throughout */
+#ifdef __dead
+__dead
+#endif
private void usage(void);
private void docprint(const char *);
+#ifdef __dead
+__dead
+#endif
private void help(void);
private int unwrap(struct magic_set *, const char *);
@@ -176,21 +187,20 @@ main(int argc, char *argv[])
while ((c = getopt_long(argc, argv, OPTSTRING, long_options,
&longindex)) != -1)
switch (c) {
- case 0 :
- switch (longindex) {
- case 0:
- help();
- break;
- case 10:
- flags |= MAGIC_APPLE;
- break;
- case 11:
- flags |= MAGIC_MIME_TYPE;
- break;
- case 12:
- flags |= MAGIC_MIME_ENCODING;
- break;
- }
+ case OPT_HELP:
+ help();
+ break;
+ case OPT_APPLE:
+ flags |= MAGIC_APPLE;
+ break;
+ case OPT_EXTENSIONS:
+ flags |= MAGIC_EXTENSION;
+ break;
+ case OPT_MIME_TYPE:
+ flags |= MAGIC_MIME_TYPE;
+ break;
+ case OPT_MIME_ENCODING:
+ flags |= MAGIC_MIME_ENCODING;
break;
case '0':
nulsep = 1;
@@ -262,7 +272,6 @@ main(int argc, char *argv[])
case 'r':
flags |= MAGIC_RAW;
break;
- break;
case 's':
flags |= MAGIC_DEVICES;
break;
@@ -276,6 +285,10 @@ main(int argc, char *argv[])
case 'z':
flags |= MAGIC_COMPRESS;
break;
+
+ case 'Z':
+ flags |= MAGIC_COMPRESS|MAGIC_COMPRESS_TRANSP;
+ break;
#ifdef S_IFLNK
case 'L':
flags |= MAGIC_SYMLINK;
@@ -583,7 +596,7 @@ help(void)
#define OPT(shortname, longname, opt, doc) \
fprintf(stdout, " -%c, --" longname, shortname), \
docprint(doc);
-#define OPT_LONGONLY(longname, opt, doc) \
+#define OPT_LONGONLY(longname, opt, doc, id) \
fprintf(stdout, " --" longname), \
docprint(doc);
#include "file_opts.h"
diff --git a/contrib/file/src/file.h b/contrib/file/src/file.h
index 01aa37a..1b4ef6f 100644
--- a/contrib/file/src/file.h
+++ b/contrib/file/src/file.h
@@ -27,7 +27,7 @@
*/
/*
* file.h - definitions for file(1) program
- * @(#)$File: file.h,v 1.164 2015/01/01 17:07:34 christos Exp $
+ * @(#)$File: file.h,v 1.168 2015/04/09 20:01:41 christos Exp $
*/
#ifndef __file_h__
@@ -126,7 +126,7 @@
#endif
#ifndef HOWMANY
-# define HOWMANY (256 * 1024) /* how much of the file to look at */
+# define HOWMANY (1024 * 1024) /* how much of the file to look at */
#endif
#define MAXMAGIS 8192 /* max entries in any one magic file
or directory */
@@ -135,8 +135,8 @@
#define MAXstring 64 /* max len of "string" types */
#define MAGICNO 0xF11E041C
-#define VERSIONNO 12
-#define FILE_MAGICSIZE 248
+#define VERSIONNO 13
+#define FILE_MAGICSIZE 312
#define FILE_LOAD 0
#define FILE_CHECK 1
@@ -307,7 +307,9 @@ struct magic {
/* Words 33-52 */
char mimetype[MAXMIME]; /* MIME type */
/* Words 53-54 */
- char apple[8];
+ char apple[8]; /* APPLE CREATOR/TYPE */
+ /* Words 55-63 */
+ char ext[64]; /* Popular extensions */
};
#define BIT(A) (1 << (A))
@@ -564,6 +566,12 @@ char *ctime_r(const time_t *, char *);
#ifndef HAVE_ASCTIME_R
char *asctime_r(const struct tm *, char *);
#endif
+#ifndef HAVE_GMTIME_R
+struct tm *gmtime_r(const time_t *, struct tm *);
+#endif
+#ifndef HAVE_LOCALTIME_R
+struct tm *localtime_r(const time_t *, struct tm *);
+#endif
#ifndef HAVE_FMTCHECK
const char *fmtcheck(const char *, const char *)
__attribute__((__format_arg__(2)));
@@ -590,5 +598,8 @@ static const char *rcsid(const char *p) { \
#else
#define FILE_RCSID(id)
#endif
+#ifndef __RCSID
+#define __RCSID(a)
+#endif
#endif /* __file_h__ */
diff --git a/contrib/file/src/file_opts.h b/contrib/file/src/file_opts.h
index 3286ac6..2e30d06 100644
--- a/contrib/file/src/file_opts.h
+++ b/contrib/file/src/file_opts.h
@@ -12,11 +12,12 @@
* switch statement!
*/
-OPT_LONGONLY("help", 0, " display this help and exit\n")
+OPT_LONGONLY("help", 0, " display this help and exit\n", OPT_HELP)
OPT('v', "version", 0, " output version information and exit\n")
OPT('m', "magic-file", 1, " LIST use LIST as a colon-separated list of magic\n"
" number files\n")
OPT('z', "uncompress", 0, " try to look inside compressed files\n")
+OPT('Z', "uncompress-noreport", 0, " only print the contents of compressed files\n")
OPT('b', "brief", 0, " do not prepend filenames to output lines\n")
OPT('c', "checking-printout", 0, " print the parsed form of the magic file, use in\n"
" conjunction with -m to debug a new magic file\n"
@@ -28,9 +29,10 @@ OPT('f', "files-from", 1, " FILE read the filenames to be examined from FIL
OPT('F', "separator", 1, " STRING use string as separator instead of `:'\n")
OPT('i', "mime", 0, " output MIME type strings (--mime-type and\n"
" --mime-encoding)\n")
-OPT_LONGONLY("apple", 0, " output the Apple CREATOR/TYPE\n")
-OPT_LONGONLY("mime-type", 0, " output the MIME type\n")
-OPT_LONGONLY("mime-encoding", 0, " output the MIME encoding\n")
+OPT_LONGONLY("apple", 0, " output the Apple CREATOR/TYPE\n", OPT_APPLE)
+OPT_LONGONLY("extension", 0, " output a slash-separated list of extensions\n", OPT_EXTENSIONS)
+OPT_LONGONLY("mime-type", 0, " output the MIME type\n", OPT_MIME_TYPE)
+OPT_LONGONLY("mime-encoding", 0, " output the MIME encoding\n", OPT_MIME_ENCODING)
OPT('k', "keep-going", 0, " don't stop at the first match\n")
OPT('l', "list", 0, " list magic strength\n")
#ifdef S_IFLNK
diff --git a/contrib/file/src/fsmagic.c b/contrib/file/src/fsmagic.c
index 1e8fd74..27f982a 100644
--- a/contrib/file/src/fsmagic.c
+++ b/contrib/file/src/fsmagic.c
@@ -32,7 +32,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: fsmagic.c,v 1.75 2014/12/04 15:56:46 christos Exp $")
+FILE_RCSID("@(#)$File: fsmagic.c,v 1.76 2015/04/09 20:01:41 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -110,7 +110,7 @@ file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb)
struct stat tstatbuf;
#endif
- if (ms->flags & MAGIC_APPLE)
+ if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
return 0;
if (fn == NULL)
return 0;
diff --git a/contrib/file/src/funcs.c b/contrib/file/src/funcs.c
index a60ccaa..dc7bbd1 100644
--- a/contrib/file/src/funcs.c
+++ b/contrib/file/src/funcs.c
@@ -27,7 +27,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: funcs.c,v 1.79 2014/12/16 20:52:49 christos Exp $")
+FILE_RCSID("@(#)$File: funcs.c,v 1.82 2015/06/03 18:01:20 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -159,8 +159,20 @@ file_badread(struct magic_set *ms)
}
#ifndef COMPILE_ONLY
+
+static int
+checkdone(struct magic_set *ms, int *rv)
+{
+ if ((ms->flags & MAGIC_CONTINUE) == 0)
+ return 1;
+ if (file_printf(ms, "\n- ") == -1)
+ *rv = -1;
+ return 0;
+}
+
+/*ARGSUSED*/
protected int
-file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unused)),
+file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__unused__)),
const void *buf, size_t nb)
{
int m = 0, rv = 0, looks_text = 0;
@@ -214,7 +226,8 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unu
if ((m = file_is_tar(ms, ubuf, nb)) != 0) {
if ((ms->flags & MAGIC_DEBUG) != 0)
(void)fprintf(stderr, "tar %d\n", m);
- goto done;
+ if (checkdone(ms, &rv))
+ goto done;
}
/* Check if we have a CDF file */
@@ -222,7 +235,8 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unu
if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
if ((ms->flags & MAGIC_DEBUG) != 0)
(void)fprintf(stderr, "cdf %d\n", m);
- goto done;
+ if (checkdone(ms, &rv))
+ goto done;
}
/* try soft magic tests */
@@ -249,7 +263,8 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unu
"elf %d\n", m);
}
#endif
- goto done;
+ if (checkdone(ms, &rv))
+ goto done;
}
/* try text properties */
@@ -258,7 +273,8 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unu
if ((m = file_ascmagic(ms, ubuf, nb, looks_text)) != 0) {
if ((ms->flags & MAGIC_DEBUG) != 0)
(void)fprintf(stderr, "ascmagic %d\n", m);
- goto done;
+ if (checkdone(ms, &rv))
+ goto done;
}
}
@@ -400,7 +416,7 @@ file_check_mem(struct magic_set *ms, unsigned int level)
size_t len;
if (level >= ms->c.len) {
- len = (ms->c.len += 20) * sizeof(*ms->c.li);
+ len = (ms->c.len = 20 + level) * sizeof(*ms->c.li);
ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ?
malloc(len) :
realloc(ms->c.li, len));
@@ -549,9 +565,9 @@ file_printable(char *buf, size_t bufsiz, const char *str)
if (ptr >= eptr - 3)
break;
*ptr++ = '\\';
- *ptr++ = ((*s >> 6) & 7) + '0';
- *ptr++ = ((*s >> 3) & 7) + '0';
- *ptr++ = ((*s >> 0) & 7) + '0';
+ *ptr++ = ((CAST(unsigned int, *s) >> 6) & 7) + '0';
+ *ptr++ = ((CAST(unsigned int, *s) >> 3) & 7) + '0';
+ *ptr++ = ((CAST(unsigned int, *s) >> 0) & 7) + '0';
}
*ptr = '\0';
return buf;
diff --git a/contrib/file/src/gmtime_r.c b/contrib/file/src/gmtime_r.c
new file mode 100644
index 0000000..963dfee
--- /dev/null
+++ b/contrib/file/src/gmtime_r.c
@@ -0,0 +1,19 @@
+/* $File: gmtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $ */
+
+#include "file.h"
+#ifndef lint
+FILE_RCSID("@(#)$File: gmtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $")
+#endif /* lint */
+#include <time.h>
+#include <string.h>
+
+/* asctime_r is not thread-safe anyway */
+struct tm *
+gmtime_r(const time_t t, struct tm *tm)
+{
+ struct tm *tmp = gmtime(t);
+ if (tmp == NULL)
+ return NULL;
+ memcpy(tm, tmp, sizeof(*tm));
+ return tmp;
+}
diff --git a/contrib/file/src/is_tar.c b/contrib/file/src/is_tar.c
index 876c631..a3e5dbf 100644
--- a/contrib/file/src/is_tar.c
+++ b/contrib/file/src/is_tar.c
@@ -40,7 +40,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: is_tar.c,v 1.37 2010/11/30 14:58:53 rrt Exp $")
+FILE_RCSID("@(#)$File: is_tar.c,v 1.38 2015/04/09 20:01:41 christos Exp $")
#endif
#include "magic.h"
@@ -69,7 +69,7 @@ file_is_tar(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
int tar;
int mime = ms->flags & MAGIC_MIME;
- if ((ms->flags & MAGIC_APPLE) != 0)
+ if ((ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION)) != 0)
return 0;
tar = is_tar(buf, nbytes);
diff --git a/contrib/file/src/localtime_r.c b/contrib/file/src/localtime_r.c
new file mode 100644
index 0000000..69d78d9
--- /dev/null
+++ b/contrib/file/src/localtime_r.c
@@ -0,0 +1,19 @@
+/* $File: localtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $ */
+
+#include "file.h"
+#ifndef lint
+FILE_RCSID("@(#)$File: localtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $")
+#endif /* lint */
+#include <time.h>
+#include <string.h>
+
+/* asctime_r is not thread-safe anyway */
+struct tm *
+localtime_r(const time_t t, struct tm *tm)
+{
+ struct tm *tmp = localtime(t);
+ if (tmp == NULL)
+ return NULL;
+ memcpy(tm, tmp, sizeof(*tm));
+ return tmp;
+}
diff --git a/contrib/file/src/magic.c b/contrib/file/src/magic.c
index d16f8c6..bc8c344 100644
--- a/contrib/file/src/magic.c
+++ b/contrib/file/src/magic.c
@@ -33,7 +33,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: magic.c,v 1.91 2014/12/16 23:18:40 christos Exp $")
+FILE_RCSID("@(#)$File: magic.c,v 1.93 2015/04/15 23:47:58 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -83,6 +83,86 @@ private const char *file_or_fd(struct magic_set *, const char *, int);
#define STDIN_FILENO 0
#endif
+#ifdef WIN32
+/* HINSTANCE of this shared library. Needed for get_default_magic() */
+static HINSTANCE _w32_dll_instance = NULL;
+
+static void
+_w32_append_path(char **hmagicpath, const char *fmt, ...)
+{
+ char *tmppath;
+ char *newpath;
+ va_list ap;
+
+ va_start(ap, fmt);
+ if (vasprintf(&tmppath, fmt, ap) < 0) {
+ va_end(ap);
+ return;
+ }
+ va_end(ap);
+
+ if (access(tmppath, R_OK) == -1)
+ goto out;
+
+ if (*hmagicpath == NULL) {
+ *hmagicpath = tmppath;
+ return;
+ }
+
+ if (asprintf(&newpath, "%s%c%s", *hmagicpath, PATHSEP, tmppath) < 0)
+ goto out;
+
+ free(*hmagicpath);
+ free(tmppath);
+ *hmagicpath = newpath;
+ return;
+out:
+ free(tmppath);
+}
+
+static void
+_w32_get_magic_relative_to(char **hmagicpath, HINSTANCE module)
+{
+ static const char *trypaths[] = {
+ "%s/share/misc/magic.mgc",
+ "%s/magic.mgc",
+ };
+ LPSTR dllpath;
+ size_t sp;
+
+ dllpath = calloc(MAX_PATH + 1, sizeof(*dllpath));
+
+ if (!GetModuleFileNameA(module, dllpath, MAX_PATH))
+ goto out;
+
+ PathRemoveFileSpecA(dllpath);
+
+ sp = strlen(dllpath);
+ if (sp > 3 && stricmp(&dllpath[sp - 3], "bin") == 0) {
+ _w32_append_path(hmagicpath,
+ "%s/../share/misc/magic.mgc", dllpath);
+ goto out;
+ }
+
+ for (sp = 0; sp < __arraycount(trypaths); sp++)
+ _w32_append_path(hmagicpath, trypaths[sp], dllpath);
+out:
+ free(dllpath);
+}
+
+/* Placate GCC by offering a sacrificial previous prototype */
+BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID);
+
+BOOL WINAPI
+DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
+ LPVOID lpvReserved __attribute__((__unused__)))
+{
+ if (fdwReason == DLL_PROCESS_ATTACH)
+ _w32_dll_instance = hinstDLL;
+ return TRUE;
+}
+#endif
+
private const char *
get_default_magic(void)
{
@@ -126,75 +206,33 @@ out:
free(hmagicpath);
return MAGIC;
#else
- char *hmagicp;
- char *tmppath = NULL;
- LPTSTR dllpath;
hmagicpath = NULL;
-#define APPENDPATH() \
- do { \
- if (tmppath && access(tmppath, R_OK) != -1) { \
- if (hmagicpath == NULL) \
- hmagicpath = tmppath; \
- else { \
- if (asprintf(&hmagicp, "%s%c%s", hmagicpath, \
- PATHSEP, tmppath) >= 0) { \
- free(hmagicpath); \
- hmagicpath = hmagicp; \
- } \
- free(tmppath); \
- } \
- tmppath = NULL; \
- } \
- } while (/*CONSTCOND*/0)
-
if (default_magic) {
free(default_magic);
default_magic = NULL;
}
- /* First, try to get user-specific magic file */
- if ((home = getenv("LOCALAPPDATA")) == NULL) {
- if ((home = getenv("USERPROFILE")) != NULL)
- if (asprintf(&tmppath,
- "%s/Local Settings/Application Data%s", home,
- hmagic) < 0)
- tmppath = NULL;
- } else {
- if (asprintf(&tmppath, "%s%s", home, hmagic) < 0)
- tmppath = NULL;
- }
+ /* First, try to get a magic file from user-application data */
+ if ((home = getenv("LOCALAPPDATA")) != NULL)
+ _w32_append_path(&hmagicpath, "%s%s", home, hmagic);
- APPENDPATH();
+ /* Second, try to get a magic file from the user profile data */
+ if ((home = getenv("USERPROFILE")) != NULL)
+ _w32_append_path(&hmagicpath,
+ "%s/Local Settings/Application Data%s", home, hmagic);
- /* Second, try to get a magic file from Common Files */
- if ((home = getenv("COMMONPROGRAMFILES")) != NULL) {
- if (asprintf(&tmppath, "%s%s", home, hmagic) >= 0)
- APPENDPATH();
- }
+ /* Third, try to get a magic file from Common Files */
+ if ((home = getenv("COMMONPROGRAMFILES")) != NULL)
+ _w32_append_path(&hmagicpath, "%s%s", home, hmagic);
- /* Third, try to get magic file relative to dll location */
- dllpath = malloc(sizeof(*dllpath) * (MAX_PATH + 1));
- dllpath[MAX_PATH] = 0; /* just in case long path gets truncated and not null terminated */
- if (GetModuleFileNameA(NULL, dllpath, MAX_PATH)){
- PathRemoveFileSpecA(dllpath);
- if (strlen(dllpath) > 3 &&
- stricmp(&dllpath[strlen(dllpath) - 3], "bin") == 0) {
- if (asprintf(&tmppath,
- "%s/../share/misc/magic.mgc", dllpath) >= 0)
- APPENDPATH();
- } else {
- if (asprintf(&tmppath,
- "%s/share/misc/magic.mgc", dllpath) >= 0)
- APPENDPATH();
- else if (asprintf(&tmppath,
- "%s/magic.mgc", dllpath) >= 0)
- APPENDPATH();
- }
- }
+ /* Fourth, try to get magic file relative to exe location */
+ _w32_get_magic_relative_to(&hmagicpath, NULL);
+
+ /* Fifth, try to get magic file relative to dll location */
+ _w32_get_magic_relative_to(&hmagicpath, _w32_dll_instance);
- /* Don't put MAGIC constant - it likely points to a file within MSys
- tree */
+ /* Avoid MAGIC constant - it likely points to a file within MSys tree */
default_magic = hmagicpath;
return default_magic;
#endif
@@ -543,19 +581,19 @@ magic_setparam(struct magic_set *ms, int param, const void *val)
{
switch (param) {
case MAGIC_PARAM_INDIR_MAX:
- ms->indir_max = *(const size_t *)val;
+ ms->indir_max = (uint16_t)*(const size_t *)val;
return 0;
case MAGIC_PARAM_NAME_MAX:
- ms->name_max = *(const size_t *)val;
+ ms->name_max = (uint16_t)*(const size_t *)val;
return 0;
case MAGIC_PARAM_ELF_PHNUM_MAX:
- ms->elf_phnum_max = *(const size_t *)val;
+ ms->elf_phnum_max = (uint16_t)*(const size_t *)val;
return 0;
case MAGIC_PARAM_ELF_SHNUM_MAX:
- ms->elf_shnum_max = *(const size_t *)val;
+ ms->elf_shnum_max = (uint16_t)*(const size_t *)val;
return 0;
case MAGIC_PARAM_ELF_NOTES_MAX:
- ms->elf_notes_max = *(const size_t *)val;
+ ms->elf_notes_max = (uint16_t)*(const size_t *)val;
return 0;
default:
errno = EINVAL;
diff --git a/contrib/file/src/magic.h b/contrib/file/src/magic.h
index 721712f..0d64316 100644
--- a/contrib/file/src/magic.h
+++ b/contrib/file/src/magic.h
@@ -29,30 +29,35 @@
#include <sys/types.h>
-#define MAGIC_NONE 0x000000 /* No flags */
-#define MAGIC_DEBUG 0x000001 /* Turn on debugging */
-#define MAGIC_SYMLINK 0x000002 /* Follow symlinks */
-#define MAGIC_COMPRESS 0x000004 /* Check inside compressed files */
-#define MAGIC_DEVICES 0x000008 /* Look at the contents of devices */
-#define MAGIC_MIME_TYPE 0x000010 /* Return the MIME type */
-#define MAGIC_CONTINUE 0x000020 /* Return all matches */
-#define MAGIC_CHECK 0x000040 /* Print warnings to stderr */
-#define MAGIC_PRESERVE_ATIME 0x000080 /* Restore access time on exit */
-#define MAGIC_RAW 0x000100 /* Don't translate unprintable chars */
-#define MAGIC_ERROR 0x000200 /* Handle ENOENT etc as real errors */
-#define MAGIC_MIME_ENCODING 0x000400 /* Return the MIME encoding */
+#define MAGIC_NONE 0x0000000 /* No flags */
+#define MAGIC_DEBUG 0x0000001 /* Turn on debugging */
+#define MAGIC_SYMLINK 0x0000002 /* Follow symlinks */
+#define MAGIC_COMPRESS 0x0000004 /* Check inside compressed files */
+#define MAGIC_DEVICES 0x0000008 /* Look at the contents of devices */
+#define MAGIC_MIME_TYPE 0x0000010 /* Return the MIME type */
+#define MAGIC_CONTINUE 0x0000020 /* Return all matches */
+#define MAGIC_CHECK 0x0000040 /* Print warnings to stderr */
+#define MAGIC_PRESERVE_ATIME 0x0000080 /* Restore access time on exit */
+#define MAGIC_RAW 0x0000100 /* Don't convert unprintable chars */
+#define MAGIC_ERROR 0x0000200 /* Handle ENOENT etc as real errors */
+#define MAGIC_MIME_ENCODING 0x0000400 /* Return the MIME encoding */
#define MAGIC_MIME (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
-#define MAGIC_APPLE 0x000800 /* Return the Apple creator and type */
-
-#define MAGIC_NO_CHECK_COMPRESS 0x001000 /* Don't check for compressed files */
-#define MAGIC_NO_CHECK_TAR 0x002000 /* Don't check for tar files */
-#define MAGIC_NO_CHECK_SOFT 0x004000 /* Don't check magic entries */
-#define MAGIC_NO_CHECK_APPTYPE 0x008000 /* Don't check application type */
-#define MAGIC_NO_CHECK_ELF 0x010000 /* Don't check for elf details */
-#define MAGIC_NO_CHECK_TEXT 0x020000 /* Don't check for text files */
-#define MAGIC_NO_CHECK_CDF 0x040000 /* Don't check for cdf files */
-#define MAGIC_NO_CHECK_TOKENS 0x100000 /* Don't check tokens */
-#define MAGIC_NO_CHECK_ENCODING 0x200000 /* Don't check text encodings */
+#define MAGIC_APPLE 0x0000800 /* Return the Apple creator/type */
+#define MAGIC_EXTENSION 0x1000000 /* Return a /-separated list of
+ * extensions */
+#define MAGIC_COMPRESS_TRANSP 0x2000000 /* Check inside compressed files
+ * but not report compression */
+#define MAGIC_NODESC (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)
+
+#define MAGIC_NO_CHECK_COMPRESS 0x0001000 /* Don't check for compressed files */
+#define MAGIC_NO_CHECK_TAR 0x0002000 /* Don't check for tar files */
+#define MAGIC_NO_CHECK_SOFT 0x0004000 /* Don't check magic entries */
+#define MAGIC_NO_CHECK_APPTYPE 0x0008000 /* Don't check application type */
+#define MAGIC_NO_CHECK_ELF 0x0010000 /* Don't check for elf details */
+#define MAGIC_NO_CHECK_TEXT 0x0020000 /* Don't check for text files */
+#define MAGIC_NO_CHECK_CDF 0x0040000 /* Don't check for cdf files */
+#define MAGIC_NO_CHECK_TOKENS 0x0100000 /* Don't check tokens */
+#define MAGIC_NO_CHECK_ENCODING 0x0200000 /* Don't check text encodings */
/* No built-in tests; only consult the magic file */
#define MAGIC_NO_CHECK_BUILTIN ( \
@@ -75,7 +80,7 @@
#define MAGIC_NO_CHECK_FORTRAN 0x000000 /* Don't check ascii/fortran */
#define MAGIC_NO_CHECK_TROFF 0x000000 /* Don't check ascii/troff */
-#define MAGIC_VERSION 521 /* This implementation */
+#define MAGIC_VERSION 522 /* This implementation */
#ifdef __cplusplus
diff --git a/contrib/file/src/magic.h.in b/contrib/file/src/magic.h.in
index 0d4c5ce..500bdbd 100644
--- a/contrib/file/src/magic.h.in
+++ b/contrib/file/src/magic.h.in
@@ -29,30 +29,35 @@
#include <sys/types.h>
-#define MAGIC_NONE 0x000000 /* No flags */
-#define MAGIC_DEBUG 0x000001 /* Turn on debugging */
-#define MAGIC_SYMLINK 0x000002 /* Follow symlinks */
-#define MAGIC_COMPRESS 0x000004 /* Check inside compressed files */
-#define MAGIC_DEVICES 0x000008 /* Look at the contents of devices */
-#define MAGIC_MIME_TYPE 0x000010 /* Return the MIME type */
-#define MAGIC_CONTINUE 0x000020 /* Return all matches */
-#define MAGIC_CHECK 0x000040 /* Print warnings to stderr */
-#define MAGIC_PRESERVE_ATIME 0x000080 /* Restore access time on exit */
-#define MAGIC_RAW 0x000100 /* Don't translate unprintable chars */
-#define MAGIC_ERROR 0x000200 /* Handle ENOENT etc as real errors */
-#define MAGIC_MIME_ENCODING 0x000400 /* Return the MIME encoding */
+#define MAGIC_NONE 0x0000000 /* No flags */
+#define MAGIC_DEBUG 0x0000001 /* Turn on debugging */
+#define MAGIC_SYMLINK 0x0000002 /* Follow symlinks */
+#define MAGIC_COMPRESS 0x0000004 /* Check inside compressed files */
+#define MAGIC_DEVICES 0x0000008 /* Look at the contents of devices */
+#define MAGIC_MIME_TYPE 0x0000010 /* Return the MIME type */
+#define MAGIC_CONTINUE 0x0000020 /* Return all matches */
+#define MAGIC_CHECK 0x0000040 /* Print warnings to stderr */
+#define MAGIC_PRESERVE_ATIME 0x0000080 /* Restore access time on exit */
+#define MAGIC_RAW 0x0000100 /* Don't convert unprintable chars */
+#define MAGIC_ERROR 0x0000200 /* Handle ENOENT etc as real errors */
+#define MAGIC_MIME_ENCODING 0x0000400 /* Return the MIME encoding */
#define MAGIC_MIME (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
-#define MAGIC_APPLE 0x000800 /* Return the Apple creator and type */
-
-#define MAGIC_NO_CHECK_COMPRESS 0x001000 /* Don't check for compressed files */
-#define MAGIC_NO_CHECK_TAR 0x002000 /* Don't check for tar files */
-#define MAGIC_NO_CHECK_SOFT 0x004000 /* Don't check magic entries */
-#define MAGIC_NO_CHECK_APPTYPE 0x008000 /* Don't check application type */
-#define MAGIC_NO_CHECK_ELF 0x010000 /* Don't check for elf details */
-#define MAGIC_NO_CHECK_TEXT 0x020000 /* Don't check for text files */
-#define MAGIC_NO_CHECK_CDF 0x040000 /* Don't check for cdf files */
-#define MAGIC_NO_CHECK_TOKENS 0x100000 /* Don't check tokens */
-#define MAGIC_NO_CHECK_ENCODING 0x200000 /* Don't check text encodings */
+#define MAGIC_APPLE 0x0000800 /* Return the Apple creator/type */
+#define MAGIC_EXTENSION 0x1000000 /* Return a /-separated list of
+ * extensions */
+#define MAGIC_COMPRESS_TRANSP 0x2000000 /* Check inside compressed files
+ * but not report compression */
+#define MAGIC_NODESC (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)
+
+#define MAGIC_NO_CHECK_COMPRESS 0x0001000 /* Don't check for compressed files */
+#define MAGIC_NO_CHECK_TAR 0x0002000 /* Don't check for tar files */
+#define MAGIC_NO_CHECK_SOFT 0x0004000 /* Don't check magic entries */
+#define MAGIC_NO_CHECK_APPTYPE 0x0008000 /* Don't check application type */
+#define MAGIC_NO_CHECK_ELF 0x0010000 /* Don't check for elf details */
+#define MAGIC_NO_CHECK_TEXT 0x0020000 /* Don't check for text files */
+#define MAGIC_NO_CHECK_CDF 0x0040000 /* Don't check for cdf files */
+#define MAGIC_NO_CHECK_TOKENS 0x0100000 /* Don't check tokens */
+#define MAGIC_NO_CHECK_ENCODING 0x0200000 /* Don't check text encodings */
/* No built-in tests; only consult the magic file */
#define MAGIC_NO_CHECK_BUILTIN ( \
diff --git a/contrib/file/src/print.c b/contrib/file/src/print.c
index fa81798..07ae8f6 100644
--- a/contrib/file/src/print.c
+++ b/contrib/file/src/print.c
@@ -32,7 +32,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: print.c,v 1.76 2013/02/26 18:25:00 christos Exp $")
+FILE_RCSID("@(#)$File: print.c,v 1.79 2015/01/09 19:28:32 christos Exp $")
#endif /* lint */
#include <string.h>
@@ -164,6 +164,7 @@ file_mdump(struct magic *m)
case FILE_MELDATE:
(void)fprintf(stderr, "%s,",
file_fmttime(m->value.l, 0, tbuf));
+ break;
case FILE_QDATE:
case FILE_LEQDATE:
case FILE_BEQDATE:
@@ -231,40 +232,27 @@ protected const char *
file_fmttime(uint64_t v, int flags, char *buf)
{
char *pp;
- time_t t = (time_t)v;
- struct tm *tm;
+ time_t t;
+ struct tm *tm, tmz;
if (flags & FILE_T_WINDOWS) {
struct timespec ts;
- cdf_timestamp_to_timespec(&ts, t);
+ cdf_timestamp_to_timespec(&ts, v);
t = ts.tv_sec;
+ } else {
+ // XXX: perhaps detect and print something if overflow
+ // on 32 bit time_t?
+ t = (time_t)v;
}
if (flags & FILE_T_LOCAL) {
- pp = ctime_r(&t, buf);
+ tm = localtime_r(&t, &tmz);
} else {
-#ifndef HAVE_DAYLIGHT
- private int daylight = 0;
-#ifdef HAVE_TM_ISDST
- private time_t now = (time_t)0;
-
- if (now == (time_t)0) {
- struct tm *tm1;
- (void)time(&now);
- tm1 = localtime(&now);
- if (tm1 == NULL)
- goto out;
- daylight = tm1->tm_isdst;
- }
-#endif /* HAVE_TM_ISDST */
-#endif /* HAVE_DAYLIGHT */
- if (daylight)
- t += 3600;
- tm = gmtime(&t);
- if (tm == NULL)
- goto out;
- pp = asctime_r(tm, buf);
+ tm = gmtime_r(&t, &tmz);
}
+ if (tm == NULL)
+ goto out;
+ pp = asctime_r(tm, buf);
if (pp == NULL)
goto out;
diff --git a/contrib/file/src/readcdf.c b/contrib/file/src/readcdf.c
index 635a926..99d8ec0 100644
--- a/contrib/file/src/readcdf.c
+++ b/contrib/file/src/readcdf.c
@@ -26,7 +26,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: readcdf.c,v 1.49 2014/12/04 15:56:46 christos Exp $")
+FILE_RCSID("@(#)$File: readcdf.c,v 1.53 2015/04/09 20:01:41 christos Exp $")
#endif
#include <assert.h>
@@ -39,6 +39,10 @@ FILE_RCSID("@(#)$File: readcdf.c,v 1.49 2014/12/04 15:56:46 christos Exp $")
#include "cdf.h"
#include "magic.h"
+#ifndef __arraycount
+#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+#endif
+
#define NOTMIME(ms) (((ms)->flags & MAGIC_MIME) == 0)
static const struct nv {
@@ -96,6 +100,10 @@ cdf_clsid_to_mime(const uint64_t clsid[2], const struct cv *cv)
if (clsid[0] == cv[i].clsid[0] && clsid[1] == cv[i].clsid[1])
return cv[i].mime;
}
+#ifdef CDF_DEBUG
+ fprintf(stderr, "unknown mime %" PRIx64 ", %" PRIx64 "\n", clsid[0],
+ clsid[1]);
+#endif
return NULL;
}
@@ -117,6 +125,9 @@ cdf_app_to_mime(const char *vbuf, const struct nv *nv)
rv = nv[i].mime;
break;
}
+#ifdef CDF_DEBUG
+ fprintf(stderr, "unknown app %s\n", vbuf);
+#endif
#ifdef USE_C_LOCALE
(void)uselocale(old_lc_ctype);
freelocale(c_lc_ctype);
@@ -343,6 +354,90 @@ format_clsid(char *buf, size_t len, const uint64_t uuid[2]) {
}
#endif
+private int
+cdf_file_catalog_info(struct magic_set *ms, const cdf_info_t *info,
+ const cdf_header_t *h, const cdf_sat_t *sat, const cdf_sat_t *ssat,
+ const cdf_stream_t *sst, const cdf_dir_t *dir, cdf_stream_t *scn)
+{
+ int i;
+
+ if ((i = cdf_read_user_stream(info, h, sat, ssat, sst,
+ dir, "Catalog", scn)) == -1)
+ return i;
+#ifdef CDF_DEBUG
+ cdf_dump_catalog(&h, &scn);
+#endif
+ if ((i = cdf_file_catalog(ms, h, scn)) == -1)
+ return -1;
+ return i;
+}
+
+private struct sinfo {
+ const char *name;
+ const char *mime;
+ const char *sections[5];
+ const int types[5];
+} sectioninfo[] = {
+ { "Encrypted", "encrypted",
+ {
+ "EncryptedPackage", NULL, NULL, NULL, NULL,
+ },
+ {
+ CDF_DIR_TYPE_USER_STREAM, 0, 0, 0, 0,
+
+ },
+ },
+ { "QuickBooks", "quickbooks",
+ {
+#if 0
+ "TaxForms", "PDFTaxForms", "modulesInBackup",
+#endif
+ "mfbu_header", NULL, NULL, NULL, NULL,
+ },
+ {
+#if 0
+ CDF_DIR_TYPE_USER_STORAGE,
+ CDF_DIR_TYPE_USER_STORAGE,
+ CDF_DIR_TYPE_USER_STREAM,
+#endif
+ CDF_DIR_TYPE_USER_STREAM,
+ 0, 0, 0, 0
+ },
+ },
+};
+
+private int
+cdf_file_dir_info(struct magic_set *ms, const cdf_dir_t *dir)
+{
+ size_t sd, j;
+
+ for (sd = 0; sd < __arraycount(sectioninfo); sd++) {
+ const struct sinfo *si = &sectioninfo[sd];
+ for (j = 0; si->sections[j]; j++) {
+ if (cdf_find_stream(dir, si->sections[j], si->types[j])
+ <= 0) {
+#ifdef CDF_DEBUG
+ fprintf(stderr, "Can't read %s\n",
+ si->sections[j]);
+#endif
+ break;
+ }
+ }
+ if (si->sections[j] != NULL)
+ continue;
+ if (NOTMIME(ms)) {
+ if (file_printf(ms, "CDFV2 %s", si->name) == -1)
+ return -1;
+ } else {
+ if (file_printf(ms, "application/CDFV2-%s",
+ si->mime) == -1)
+ return -1;
+ }
+ return 1;
+ }
+ return -1;
+}
+
protected int
file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
size_t nbytes)
@@ -354,13 +449,12 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
cdf_dir_t dir;
int i;
const char *expn = "";
- const char *corrupt = "corrupt: ";
const cdf_directory_t *root_storage;
info.i_fd = fd;
info.i_buf = buf;
info.i_len = nbytes;
- if (ms->flags & MAGIC_APPLE)
+ if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
return 0;
if (cdf_read_header(&info, &h) == -1)
return 0;
@@ -435,30 +529,21 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
if ((i = cdf_read_summary_info(&info, &h, &sat, &ssat, &sst, &dir,
&scn)) == -1) {
- if (errno == ESRCH) {
- if ((i = cdf_read_catalog(&info, &h, &sat, &ssat, &sst,
- &dir, &scn)) == -1) {
- corrupt = expn;
- if ((i = cdf_read_encrypted_package(&info, &h,
- &sat, &ssat, &sst, &dir, &scn)) == -1)
- expn = "No summary info";
- else {
- expn = "Encrypted";
- i = -1;
- }
- goto out4;
- }
-#ifdef CDF_DEBUG
- cdf_dump_catalog(&h, &scn);
-#endif
- if ((i = cdf_file_catalog(ms, &h, &scn))
- < 0)
- expn = "Can't expand catalog";
- } else {
+ if (errno != ESRCH) {
expn = "Cannot read summary info";
- }
- goto out4;
- }
+ goto out4;
+ }
+ i = cdf_file_catalog_info(ms, &info, &h, &sat, &ssat, &sst,
+ &dir, &scn);
+ if (i > 0)
+ goto out4;
+ i = cdf_file_dir_info(ms, &dir);
+ if (i < 0)
+ expn = "Cannot read section info";
+ goto out4;
+ }
+
+
#ifdef CDF_DEBUG
cdf_dump_summary_info(&h, &scn);
#endif
@@ -509,11 +594,10 @@ out0:
"Composite Document File V2 Document") == -1)
return -1;
if (*expn)
- if (file_printf(ms, ", %s%s", corrupt, expn) == -1)
+ if (file_printf(ms, ", %s", expn) == -1)
return -1;
} else {
- if (file_printf(ms, "application/CDFV2-%s",
- *corrupt ? "corrupt" : "encrypted") == -1)
+ if (file_printf(ms, "application/CDFV2-unknown") == -1)
return -1;
}
i = 1;
diff --git a/contrib/file/src/readelf.c b/contrib/file/src/readelf.c
index d159620..55009e8 100644
--- a/contrib/file/src/readelf.c
+++ b/contrib/file/src/readelf.c
@@ -27,7 +27,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: readelf.c,v 1.117 2014/12/16 23:29:42 christos Exp $")
+FILE_RCSID("@(#)$File: readelf.c,v 1.119 2015/04/09 20:01:41 christos Exp $")
#endif
#ifdef BUILTIN_ELF
@@ -482,6 +482,7 @@ do_note_freebsd_version(struct magic_set *ms, int swap, void *v)
}
private int
+/*ARGSUSED*/
do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
int swap __attribute__((__unused__)), uint32_t namesz, uint32_t descsz,
size_t noff, size_t doff, int *flags)
@@ -622,7 +623,7 @@ do_pax_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
return 1;
for (i = 0; i < __arraycount(pax); i++) {
- if (((1 << i) & desc) == 0)
+ if (((1 << (int)i) & desc) == 0)
continue;
if (file_printf(ms, "%s%s", did++ ? "," : "",
pax[i]) == -1)
@@ -1008,7 +1009,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
}
/* Read offset of name section to be able to read section names later */
- if (pread(fd, xsh_addr, xsh_sizeof, off + size * strtab) < (ssize_t)xsh_sizeof) {
+ if (pread(fd, xsh_addr, xsh_sizeof, CAST(off_t, (off + size * strtab)))
+ < (ssize_t)xsh_sizeof) {
file_badread(ms);
return -1;
}
@@ -1351,7 +1353,7 @@ file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf,
Elf64_Ehdr elf64hdr;
uint16_t type, phnum, shnum, notecount;
- if (ms->flags & (MAGIC_MIME|MAGIC_APPLE))
+ if (ms->flags & (MAGIC_MIME|MAGIC_APPLE|MAGIC_EXTENSION))
return 0;
/*
* ELF executables have multiple section headers in arbitrary
diff --git a/contrib/file/src/softmagic.c b/contrib/file/src/softmagic.c
index 5e277e3..15a092f 100644
--- a/contrib/file/src/softmagic.c
+++ b/contrib/file/src/softmagic.c
@@ -32,7 +32,7 @@
#include "file.h"
#ifndef lint
-FILE_RCSID("@(#)$File: softmagic.c,v 1.206 2015/01/01 17:07:34 christos Exp $")
+FILE_RCSID("@(#)$File: softmagic.c,v 1.216 2015/06/09 22:17:52 christos Exp $")
#endif /* lint */
#include "magic.h"
@@ -147,7 +147,7 @@ match(struct magic_set *ms, struct magic *magic, uint32_t nmagic,
unsigned int cont_level = 0;
int returnvalv = 0, e; /* if a match is found it is set to 1*/
int firstline = 1; /* a flag to print X\n X\n- X */
- int print = (ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0;
+ int print = (ms->flags & MAGIC_NODESC) == 0;
if (returnval == NULL)
returnval = &returnvalv;
@@ -361,6 +361,7 @@ match(struct magic_set *ms, struct magic *magic, uint32_t nmagic,
if ((ms->flags & MAGIC_CONTINUE) == 0 && *printed_something) {
return *returnval; /* don't keep searching */
}
+ cont_level = 0;
}
return *returnval; /* This is hit if -k is set or there is no match */
}
@@ -518,7 +519,7 @@ mprint(struct magic_set *ms, struct magic *m)
t = ms->offset + strlen(str);
if (*m->value.s == '\0')
- str[strcspn(str, "\n")] = '\0';
+ str[strcspn(str, "\r\n")] = '\0';
if (m->str_flags & STRING_TRIM) {
char *last;
@@ -547,7 +548,7 @@ mprint(struct magic_set *ms, struct magic *m)
case FILE_LEDATE:
case FILE_MEDATE:
if (file_printf(ms, F(ms, m, "%s"),
- file_fmttime(p->l + m->num_mask, FILE_T_LOCAL, tbuf)) == -1)
+ file_fmttime(p->l, 0, tbuf)) == -1)
return -1;
t = ms->offset + sizeof(uint32_t);
break;
@@ -557,7 +558,7 @@ mprint(struct magic_set *ms, struct magic *m)
case FILE_LELDATE:
case FILE_MELDATE:
if (file_printf(ms, F(ms, m, "%s"),
- file_fmttime(p->l + m->num_mask, 0, tbuf)) == -1)
+ file_fmttime(p->l, FILE_T_LOCAL, tbuf)) == -1)
return -1;
t = ms->offset + sizeof(uint32_t);
break;
@@ -566,7 +567,7 @@ mprint(struct magic_set *ms, struct magic *m)
case FILE_BEQDATE:
case FILE_LEQDATE:
if (file_printf(ms, F(ms, m, "%s"),
- file_fmttime(p->q + m->num_mask, FILE_T_LOCAL, tbuf)) == -1)
+ file_fmttime(p->q, 0, tbuf)) == -1)
return -1;
t = ms->offset + sizeof(uint64_t);
break;
@@ -575,7 +576,7 @@ mprint(struct magic_set *ms, struct magic *m)
case FILE_BEQLDATE:
case FILE_LEQLDATE:
if (file_printf(ms, F(ms, m, "%s"),
- file_fmttime(p->q + m->num_mask, 0, tbuf)) == -1)
+ file_fmttime(p->q, FILE_T_LOCAL, tbuf)) == -1)
return -1;
t = ms->offset + sizeof(uint64_t);
break;
@@ -584,14 +585,14 @@ mprint(struct magic_set *ms, struct magic *m)
case FILE_BEQWDATE:
case FILE_LEQWDATE:
if (file_printf(ms, F(ms, m, "%s"),
- file_fmttime(p->q + m->num_mask, FILE_T_WINDOWS, tbuf)) == -1)
+ file_fmttime(p->q, FILE_T_WINDOWS, tbuf)) == -1)
return -1;
t = ms->offset + sizeof(uint64_t);
break;
- case FILE_FLOAT:
- case FILE_BEFLOAT:
- case FILE_LEFLOAT:
+ case FILE_FLOAT:
+ case FILE_BEFLOAT:
+ case FILE_LEFLOAT:
vf = p->f;
switch (check_fmt(ms, m)) {
case -1:
@@ -609,9 +610,9 @@ mprint(struct magic_set *ms, struct magic *m)
t = ms->offset + sizeof(float);
break;
- case FILE_DOUBLE:
- case FILE_BEDOUBLE:
- case FILE_LEDOUBLE:
+ case FILE_DOUBLE:
+ case FILE_BEDOUBLE:
+ case FILE_LEDOUBLE:
vd = p->d;
switch (check_fmt(ms, m)) {
case -1:
@@ -629,6 +630,7 @@ mprint(struct magic_set *ms, struct magic *m)
t = ms->offset + sizeof(double);
break;
+ case FILE_SEARCH:
case FILE_REGEX: {
char *cp;
int rval;
@@ -652,16 +654,6 @@ mprint(struct magic_set *ms, struct magic *m)
break;
}
- case FILE_SEARCH:
- if (file_printf(ms, F(ms, m, "%s"),
- file_printable(sbuf, sizeof(sbuf), m->value.s)) == -1)
- return -1;
- if ((m->str_flags & REGEX_OFFSET_START))
- t = ms->search.offset;
- else
- t = ms->search.offset + m->vallen;
- break;
-
case FILE_DEFAULT:
case FILE_CLEAR:
if (file_printf(ms, "%s", m->desc) == -1)
@@ -716,7 +708,7 @@ moffset(struct magic_set *ms, struct magic *m)
uint32_t t;
if (*m->value.s == '\0')
- p->s[strcspn(p->s, "\n")] = '\0';
+ p->s[strcspn(p->s, "\r\n")] = '\0';
t = CAST(uint32_t, (ms->offset + strlen(p->s)));
if (m->type == FILE_PSTRING)
t += (uint32_t)file_pstring_length_size(m);
@@ -978,8 +970,7 @@ mconvert(struct magic_set *ms, struct magic *m, int flip)
case FILE_BELDATE:
p->l = (int32_t)
((p->hl[0]<<24)|(p->hl[1]<<16)|(p->hl[2]<<8)|(p->hl[3]));
- if (type == FILE_BELONG)
- cvt_32(p, m);
+ cvt_32(p, m);
return 1;
case FILE_BEQUAD:
case FILE_BEQDATE:
@@ -990,8 +981,7 @@ mconvert(struct magic_set *ms, struct magic *m, int flip)
((uint64_t)p->hq[2]<<40)|((uint64_t)p->hq[3]<<32)|
((uint64_t)p->hq[4]<<24)|((uint64_t)p->hq[5]<<16)|
((uint64_t)p->hq[6]<<8)|((uint64_t)p->hq[7]));
- if (type == FILE_BEQUAD)
- cvt_64(p, m);
+ cvt_64(p, m);
return 1;
case FILE_LESHORT:
p->h = (short)((p->hs[1]<<8)|(p->hs[0]));
@@ -1002,8 +992,7 @@ mconvert(struct magic_set *ms, struct magic *m, int flip)
case FILE_LELDATE:
p->l = (int32_t)
((p->hl[3]<<24)|(p->hl[2]<<16)|(p->hl[1]<<8)|(p->hl[0]));
- if (type == FILE_LELONG)
- cvt_32(p, m);
+ cvt_32(p, m);
return 1;
case FILE_LEQUAD:
case FILE_LEQDATE:
@@ -1014,16 +1003,14 @@ mconvert(struct magic_set *ms, struct magic *m, int flip)
((uint64_t)p->hq[5]<<40)|((uint64_t)p->hq[4]<<32)|
((uint64_t)p->hq[3]<<24)|((uint64_t)p->hq[2]<<16)|
((uint64_t)p->hq[1]<<8)|((uint64_t)p->hq[0]));
- if (type == FILE_LEQUAD)
- cvt_64(p, m);
+ cvt_64(p, m);
return 1;
case FILE_MELONG:
case FILE_MEDATE:
case FILE_MELDATE:
p->l = (int32_t)
((p->hl[1]<<24)|(p->hl[0]<<16)|(p->hl[3]<<8)|(p->hl[2]));
- if (type == FILE_MELONG)
- cvt_32(p, m);
+ cvt_32(p, m);
return 1;
case FILE_FLOAT:
cvt_float(p, m);
@@ -1116,13 +1103,11 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
bytecnt = m->str_range;
}
- if (bytecnt == 0)
- bytecnt = 8192;
- if (bytecnt > nbytes)
- bytecnt = nbytes;
+ if (bytecnt == 0 || bytecnt > nbytes - offset)
+ bytecnt = nbytes - offset;
buf = RCAST(const char *, s) + offset;
- end = last = RCAST(const char *, s) + bytecnt;
+ end = last = RCAST(const char *, s) + bytecnt + offset;
/* mget() guarantees buf <= last */
for (lines = linecnt, b = buf; lines && b < end &&
((b = CAST(const char *,
@@ -1582,7 +1567,9 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
offset = ((((offset >> 0) & 0x7f) << 0) |
(((offset >> 8) & 0x7f) << 7) |
(((offset >> 16) & 0x7f) << 14) |
- (((offset >> 24) & 0x7f) << 21)) + 10;
+ (((offset >> 24) & 0x7f) << 21));
+ if ((ms->flags & MAGIC_DEBUG) != 0)
+ fprintf(stderr, "id3 offs=%u\n", offset);
break;
default:
break;
@@ -1666,7 +1653,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
case FILE_INDIRECT:
if (m->str_flags & INDIRECT_RELATIVE)
- offset += o;
+ offset += CAST(uint32_t, o);
if (offset == 0)
return 0;
@@ -1687,7 +1674,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
return -1;
if (rv == 1) {
- if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 &&
+ if ((ms->flags & MAGIC_NODESC) == 0 &&
file_printf(ms, F(ms, m, "%u"), offset) == -1) {
free(rbuf);
return -1;
@@ -1721,9 +1708,11 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
printed_something, need_separator, returnval);
if (rv != 1)
*need_separator = oneed_separator;
- return rv;
+ return 1;
case FILE_NAME:
+ if (ms->flags & MAGIC_NODESC)
+ return 1;
if (file_printf(ms, "%s", m->desc) == -1)
return -1;
return 1;
@@ -1965,6 +1954,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
m->str_flags);
if (v == 0) { /* found match */
ms->search.offset += idx;
+ ms->search.rm_len = m->str_range - idx;
break;
}
}
@@ -2148,6 +2138,11 @@ handle_annotation(struct magic_set *ms, struct magic *m)
return -1;
return 1;
}
+ if (ms->flags & MAGIC_EXTENSION) {
+ if (file_printf(ms, "%s", m->ext) == -1)
+ return -1;
+ return 1;
+ }
if ((ms->flags & MAGIC_MIME_TYPE) && m->mimetype[0]) {
if (file_printf(ms, "%s", m->mimetype) == -1)
return -1;
@@ -2159,7 +2154,7 @@ handle_annotation(struct magic_set *ms, struct magic *m)
private int
print_sep(struct magic_set *ms, int firstline)
{
- if (ms->flags & MAGIC_MIME)
+ if (ms->flags & MAGIC_NODESC)
return 0;
if (firstline)
return 0;
diff --git a/contrib/file/tests/Makefile.in b/contrib/file/tests/Makefile.in
index 691692b..6638369 100644
--- a/contrib/file/tests/Makefile.in
+++ b/contrib/file/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -78,8 +88,6 @@ build_triplet = @build@
host_triplet = @host@
check_PROGRAMS = test$(EXEEXT)
subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -87,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -158,6 +167,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
pkgdatadir = @pkgdatadir@
ACLOCAL = @ACLOCAL@
@@ -306,7 +316,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -595,6 +604,8 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
check-local:
MAGIC=$(top_builddir)/magic/magic ./test
for i in $T/*.testfile; do echo Running test: $$i; MAGIC=$(top_builddir)/magic/magic ./test $$i $${i%%.testfile}.result; done
diff --git a/contrib/gcc/longlong.h b/contrib/gcc/longlong.h
index 304ee8d..01f8885 100644
--- a/contrib/gcc/longlong.h
+++ b/contrib/gcc/longlong.h
@@ -584,11 +584,11 @@ UDItype __umulsidi3 (USItype, USItype);
#if defined (__mips__) && W_TYPE_SIZE == 32
#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("multu %2,%3" \
- : "=l" ((USItype) (w0)), \
- "=h" ((USItype) (w1)) \
- : "d" ((USItype) (u)), \
- "d" ((USItype) (v)))
+ do { \
+ UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \
+ w1 = __x >> 32; \
+ w0 = __x; \
+ } while (0)
#define UMUL_TIME 10
#define UDIV_TIME 100
#endif /* __mips__ */
diff --git a/contrib/libcxxrt/FREEBSD-upgrade b/contrib/libcxxrt/FREEBSD-upgrade
index ac62556..bdd74f3 100644
--- a/contrib/libcxxrt/FREEBSD-upgrade
+++ b/contrib/libcxxrt/FREEBSD-upgrade
@@ -3,4 +3,4 @@ $FreeBSD$
This is the FreeBSD copy of libcxxrt. It contains the src directory from the
upstream repository.
-When updating, copy *.{c,cc,h} and typeinfo from the upstream src/.
+When updating, copy *.{c,cc,h} from the upstream src/.
diff --git a/contrib/libcxxrt/libelftc_dem_gnu3.c b/contrib/libcxxrt/libelftc_dem_gnu3.c
index 11c2ca2..70ef3e8 100644
--- a/contrib/libcxxrt/libelftc_dem_gnu3.c
+++ b/contrib/libcxxrt/libelftc_dem_gnu3.c
@@ -59,7 +59,7 @@ struct vector_str {
enum type_qualifier {
TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT,
- TYPE_CST
+ TYPE_CST, TYPE_VEC
};
struct vector_type_qualifier {
@@ -397,6 +397,8 @@ static int cpp_demangle_read_array(struct cpp_demangle_data *);
static int cpp_demangle_read_encoding(struct cpp_demangle_data *);
static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *);
static int cpp_demangle_read_expression(struct cpp_demangle_data *);
+static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *,
+ char **);
static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *,
const char *, size_t);
static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *,
@@ -408,8 +410,12 @@ static int cpp_demangle_read_function(struct cpp_demangle_data *, int *,
static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata);
static int cpp_demangle_read_local_name(struct cpp_demangle_data *);
static int cpp_demangle_read_name(struct cpp_demangle_data *);
+static int cpp_demangle_read_name_flat(struct cpp_demangle_data *,
+ char**);
static int cpp_demangle_read_nested_name(struct cpp_demangle_data *);
static int cpp_demangle_read_number(struct cpp_demangle_data *, long *);
+static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *,
+ char **);
static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *);
static int cpp_demangle_read_offset(struct cpp_demangle_data *);
static int cpp_demangle_read_offset_number(struct cpp_demangle_data *);
@@ -423,6 +429,8 @@ static int cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *);
static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *);
static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *);
static int cpp_demangle_read_type(struct cpp_demangle_data *, int);
+static int cpp_demangle_read_type_flat(struct cpp_demangle_data *,
+ char **);
static int cpp_demangle_read_uqname(struct cpp_demangle_data *);
static int cpp_demangle_read_v_offset(struct cpp_demangle_data *);
static char *decode_fp_to_double(const char *, size_t);
@@ -601,17 +609,18 @@ cpp_demangle_push_fp(struct cpp_demangle_data *ddata,
fp = ddata->cur;
while (*ddata->cur != 'E')
++ddata->cur;
- ++ddata->cur;
if ((f = decoder(fp, ddata->cur - fp)) == NULL)
return (0);
rtn = 0;
if ((len = strlen(f)) > 0)
- rtn = cpp_demangle_push_str(ddata, f, len);
+ rtn = cpp_demangle_push_str(ddata, f, len);
free(f);
+ ++ddata->cur;
+
return (rtn);
}
@@ -695,7 +704,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, "*", 1))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
@@ -706,7 +716,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, "&", 1))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
@@ -717,7 +728,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, " complex", 8))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
@@ -726,23 +738,26 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (!cpp_demangle_push_str(ddata, " imaginary", 10))
goto clean;
if (type_str != NULL) {
- if (!vector_str_push(&subst_v, " imaginary", 10))
+ if (!vector_str_push(&subst_v, " imaginary",
+ 10))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
case TYPE_EXT:
- if (e_idx > v->ext_name.size - 1)
+ if (v->ext_name.size == 0 ||
+ e_idx > v->ext_name.size - 1)
goto clean;
- if ((e_len = strlen(v->ext_name.container[e_idx])) == 0)
+ if ((e_len = strlen(v->ext_name.container[e_idx])) ==
+ 0)
goto clean;
- if ((buf = malloc(sizeof(char) * (e_len + 1))) == NULL)
+ if ((buf = malloc(e_len + 2)) == NULL)
goto clean;
-
- memcpy(buf, " ", 1);
- memcpy(buf + 1, v->ext_name.container[e_idx], e_len);
+ snprintf(buf, e_len + 2, " %s",
+ v->ext_name.container[e_idx]);
if (!cpp_demangle_push_str(ddata, buf, e_len + 1)) {
free(buf);
@@ -755,7 +770,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
free(buf);
goto clean;
}
- if (!cpp_demangle_push_subst_v(ddata, &subst_v)) {
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v)) {
free(buf);
goto clean;
}
@@ -770,7 +786,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, " restrict", 9))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
@@ -781,7 +798,8 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, " volatile", 9))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
@@ -792,11 +810,42 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
if (type_str != NULL) {
if (!vector_str_push(&subst_v, " const", 6))
goto clean;
- if (!cpp_demangle_push_subst_v(ddata, &subst_v))
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v))
goto clean;
}
break;
+ case TYPE_VEC:
+ if (v->ext_name.size == 0 ||
+ e_idx > v->ext_name.size - 1)
+ goto clean;
+ if ((e_len = strlen(v->ext_name.container[e_idx])) ==
+ 0)
+ goto clean;
+ if ((buf = malloc(e_len + 12)) == NULL)
+ goto clean;
+ snprintf(buf, e_len + 12, " __vector(%s)",
+ v->ext_name.container[e_idx]);
+ if (!cpp_demangle_push_str(ddata, buf, e_len + 11)) {
+ free(buf);
+ goto clean;
+ }
+ if (type_str != NULL) {
+ if (!vector_str_push(&subst_v, buf,
+ e_len + 11)) {
+ free(buf);
+ goto clean;
+ }
+ if (!cpp_demangle_push_subst_v(ddata,
+ &subst_v)) {
+ free(buf);
+ goto clean;
+ }
+ }
+ free(buf);
+ ++e_idx;
+ break;
};
--idx;
}
@@ -947,10 +996,14 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata)
switch (*ddata->cur) {
case 'b':
+ if (*(ddata->cur + 2) != 'E')
+ return (0);
switch (*(++ddata->cur)) {
case '0':
+ ddata->cur += 2;
return (cpp_demangle_push_str(ddata, "false", 5));
case '1':
+ ddata->cur += 2;
return (cpp_demangle_push_str(ddata, "true", 4));
default:
return (0);
@@ -999,7 +1052,8 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata)
++ddata->cur;
}
++ddata->cur;
- return (cpp_demangle_push_str(ddata, num, ddata->cur - num));
+ return (cpp_demangle_push_str(ddata, num,
+ ddata->cur - num - 1));
default:
return (0);
@@ -1291,6 +1345,38 @@ cpp_demangle_read_expression(struct cpp_demangle_data *ddata)
}
static int
+cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str)
+{
+ struct vector_str *output;
+ size_t i, p_idx, idx, exp_len;
+ char *exp;
+
+ output = ddata->push_head > 0 ? &ddata->output_tmp :
+ &ddata->output;
+
+ p_idx = output->size;
+
+ if (!cpp_demangle_read_expression(ddata))
+ return (0);
+
+ if ((exp = vector_str_substr(output, p_idx, output->size - 1,
+ &exp_len)) == NULL)
+ return (0);
+
+ idx = output->size;
+ for (i = p_idx; i < idx; ++i) {
+ if (!vector_str_pop(output)) {
+ free(exp);
+ return (0);
+ }
+ }
+
+ *str = exp;
+
+ return (1);
+}
+
+static int
cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata,
const char *name, size_t len)
{
@@ -1419,12 +1505,65 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c,
static int
cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
{
+ char *name, *type, *num_str;
+ long offset;
+ int rtn;
if (ddata == NULL || *ddata->cur == '\0')
return (0);
/* special name */
switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) {
+ case SIMPLE_HASH('G', 'A'):
+ if (!cpp_demangle_push_str(ddata, "hidden alias for ", 17))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ return (cpp_demangle_read_encoding(ddata));
+
+ case SIMPLE_HASH('G', 'R'):
+ if (!cpp_demangle_push_str(ddata, "reference temporary #", 21))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ if (!cpp_demangle_read_name_flat(ddata, &name))
+ return (0);
+ rtn = 0;
+ if (!cpp_demangle_read_number_as_string(ddata, &num_str))
+ goto clean1;
+ if (!cpp_demangle_push_str(ddata, num_str, strlen(num_str)))
+ goto clean2;
+ if (!cpp_demangle_push_str(ddata, " for ", 5))
+ goto clean2;
+ if (!cpp_demangle_push_str(ddata, name, strlen(name)))
+ goto clean2;
+ rtn = 1;
+ clean2:
+ free(num_str);
+ clean1:
+ free(name);
+ return (rtn);
+
+ case SIMPLE_HASH('G', 'T'):
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ switch (*ddata->cur) {
+ case 'n':
+ if (!cpp_demangle_push_str(ddata,
+ "non-transaction clone for ", 26))
+ return (0);
+ case 't':
+ default:
+ if (!cpp_demangle_push_str(ddata,
+ "transaction clone for ", 22))
+ return (0);
+ }
+ ++ddata->cur;
+ return (cpp_demangle_read_encoding(ddata));
+
case SIMPLE_HASH('G', 'V'):
/* sentry object for 1 time init */
if (!cpp_demangle_push_str(ddata, "guard variable for ", 20))
@@ -1446,14 +1585,49 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
return (0);
return (cpp_demangle_read_encoding(ddata));
+ case SIMPLE_HASH('T', 'C'):
+ /* construction vtable */
+ if (!cpp_demangle_push_str(ddata, "construction vtable for ",
+ 24))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ if (!cpp_demangle_read_type_flat(ddata, &type))
+ return (0);
+ rtn = 0;
+ if (!cpp_demangle_read_number(ddata, &offset))
+ goto clean3;
+ if (*ddata->cur++ != '_')
+ goto clean3;
+ if (!cpp_demangle_read_type(ddata, 0))
+ goto clean3;
+ if (!cpp_demangle_push_str(ddata, "-in-", 4))
+ goto clean3;
+ if (!cpp_demangle_push_str(ddata, type, strlen(type)))
+ goto clean3;
+ rtn = 1;
+ clean3:
+ free(type);
+ return (rtn);
+
case SIMPLE_HASH('T', 'D'):
/* typeinfo common proxy */
break;
+ case SIMPLE_HASH('T', 'F'):
+ /* typeinfo fn */
+ if (!cpp_demangle_push_str(ddata, "typeinfo fn for ", 16))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ return (cpp_demangle_read_type(ddata, 0));
+
case SIMPLE_HASH('T', 'h'):
/* virtual function non-virtual override thunk */
- if (cpp_demangle_push_str(ddata,
- "virtual function non-virtual override ", 38) == 0)
+ if (!cpp_demangle_push_str(ddata,
+ "virtual function non-virtual override ", 38))
return (0);
ddata->cur += 2;
if (*ddata->cur == '\0')
@@ -1462,24 +1636,51 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
return (0);
return (cpp_demangle_read_encoding(ddata));
+ case SIMPLE_HASH('T', 'H'):
+ /* TLS init function */
+ if (!cpp_demangle_push_str(ddata, "TLS init function for ",
+ 22))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ break;
+
case SIMPLE_HASH('T', 'I'):
/* typeinfo structure */
- /* FALLTHROUGH */
+ if (!cpp_demangle_push_str(ddata, "typeinfo for ", 13))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ return (cpp_demangle_read_type(ddata, 0));
+
+ case SIMPLE_HASH('T', 'J'):
+ /* java class */
+ if (!cpp_demangle_push_str(ddata, "java Class for ", 15))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ return (cpp_demangle_read_type(ddata, 0));
+
case SIMPLE_HASH('T', 'S'):
/* RTTI name (NTBS) */
- if (!cpp_demangle_push_str(ddata, "typeinfo for ", 14))
+ if (!cpp_demangle_push_str(ddata, "typeinfo name for ", 18))
return (0);
ddata->cur += 2;
if (*ddata->cur == '\0')
return (0);
- return (cpp_demangle_read_type(ddata, 1));
+ return (cpp_demangle_read_type(ddata, 0));
case SIMPLE_HASH('T', 'T'):
/* VTT table */
if (!cpp_demangle_push_str(ddata, "VTT for ", 8))
return (0);
ddata->cur += 2;
- return (cpp_demangle_read_type(ddata, 1));
+ if (*ddata->cur == '\0')
+ return (0);
+ return (cpp_demangle_read_type(ddata, 0));
case SIMPLE_HASH('T', 'v'):
/* virtual function virtual override thunk */
@@ -1500,7 +1701,17 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
ddata->cur += 2;
if (*ddata->cur == '\0')
return (0);
- return (cpp_demangle_read_type(ddata, 1));
+ return (cpp_demangle_read_type(ddata, 0));
+
+ case SIMPLE_HASH('T', 'W'):
+ /* TLS wrapper function */
+ if (!cpp_demangle_push_str(ddata, "TLS wrapper function for ",
+ 25))
+ return (0);
+ ddata->cur += 2;
+ if (*ddata->cur == '\0')
+ return (0);
+ break;
};
return (cpp_demangle_read_name(ddata));
@@ -1618,6 +1829,38 @@ clean:
}
static int
+cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str)
+{
+ struct vector_str *output;
+ size_t i, p_idx, idx, name_len;
+ char *name;
+
+ output = ddata->push_head > 0 ? &ddata->output_tmp :
+ &ddata->output;
+
+ p_idx = output->size;
+
+ if (!cpp_demangle_read_name(ddata))
+ return (0);
+
+ if ((name = vector_str_substr(output, p_idx, output->size - 1,
+ &name_len)) == NULL)
+ return (0);
+
+ idx = output->size;
+ for (i = p_idx; i < idx; ++i) {
+ if (!vector_str_pop(output)) {
+ free(name);
+ return (0);
+ }
+ }
+
+ *str = name;
+
+ return (1);
+}
+
+static int
cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata)
{
struct vector_str *output, v;
@@ -1743,6 +1986,24 @@ cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn)
}
static int
+cpp_demangle_read_number_as_string(struct cpp_demangle_data *ddata, char **str)
+{
+ long n;
+
+ if (!cpp_demangle_read_number(ddata, &n)) {
+ *str = NULL;
+ return (0);
+ }
+
+ if (asprintf(str, "%ld", n) < 0) {
+ *str = NULL;
+ return (0);
+ }
+
+ return (1);
+}
+
+static int
cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata)
{
@@ -1877,11 +2138,11 @@ cpp_demangle_read_sname(struct cpp_demangle_data *ddata)
len <= 0)
return (0);
- if (len == 12 && (memcmp("_GLOBAL__N_1", ddata->cur, 12) == 0))
+ if (len == 12 && (memcmp("_GLOBAL__N_1", ddata->cur, 12) == 0))
err = cpp_demangle_push_str(ddata, "(anonymous namespace)", 21);
else
err = cpp_demangle_push_str(ddata, ddata->cur, len);
-
+
if (err == 0)
return (0);
@@ -2232,7 +2493,7 @@ cpp_demangle_read_type(struct cpp_demangle_data *ddata, int delimit)
size_t p_idx, type_str_len;
int extern_c, is_builtin;
long len;
- char *type_str;
+ char *type_str, *exp_str, *num_str;
if (ddata == NULL)
return (0);
@@ -2274,7 +2535,7 @@ cpp_demangle_read_type(struct cpp_demangle_data *ddata, int delimit)
extern_c = 0;
is_builtin = 1;
p_idx = output->size;
- type_str = NULL;
+ type_str = exp_str = num_str = NULL;
again:
/* builtin type */
switch (*ddata->cur) {
@@ -2320,6 +2581,82 @@ again:
++ddata->cur;
goto rtn;
+ case 'D':
+ ++ddata->cur;
+ switch (*ddata->cur) {
+ case 'd':
+ /* IEEE 754r decimal floating point (64 bits) */
+ if (!cpp_demangle_push_str(ddata, "decimal64", 9))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'e':
+ /* IEEE 754r decimal floating point (128 bits) */
+ if (!cpp_demangle_push_str(ddata, "decimal128", 10))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'f':
+ /* IEEE 754r decimal floating point (32 bits) */
+ if (!cpp_demangle_push_str(ddata, "decimal32", 9))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'h':
+ /* IEEE 754r half-precision floating point (16 bits) */
+ if (!cpp_demangle_push_str(ddata, "half", 4))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'i':
+ /* char32_t */
+ if (!cpp_demangle_push_str(ddata, "char32_t", 8))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'n':
+ /* std::nullptr_t (i.e., decltype(nullptr)) */
+ if (!cpp_demangle_push_str(ddata, "decltype(nullptr)",
+ 17))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 's':
+ /* char16_t */
+ if (!cpp_demangle_push_str(ddata, "char16_t", 8))
+ goto clean;
+ ++ddata->cur;
+ break;
+ case 'v':
+ /* gcc vector_size extension. */
+ ++ddata->cur;
+ if (*ddata->cur == '_') {
+ ++ddata->cur;
+ if (!cpp_demangle_read_expression_flat(ddata,
+ &exp_str))
+ goto clean;
+ if (!vector_str_push(&v.ext_name, exp_str,
+ strlen(exp_str)))
+ goto clean;
+ } else {
+ if (!cpp_demangle_read_number_as_string(ddata,
+ &num_str))
+ goto clean;
+ if (!vector_str_push(&v.ext_name, num_str,
+ strlen(num_str)))
+ goto clean;
+ }
+ if (*ddata->cur != '_')
+ goto clean;
+ ++ddata->cur;
+ if (!vector_type_qualifier_push(&v, TYPE_VEC))
+ goto clean;
+ goto again;
+ default:
+ goto clean;
+ }
+ goto rtn;
+
case 'e':
/* long double */
if (!cpp_demangle_push_str(ddata, "long double", 11))
@@ -2414,7 +2751,7 @@ again:
case 'o':
/* unsigned __int128 */
- if (!cpp_demangle_push_str(ddata, "unsigned _;int128", 17))
+ if (!cpp_demangle_push_str(ddata, "unsigned __int128", 17))
goto clean;
++ddata->cur;
goto rtn;
@@ -2485,6 +2822,8 @@ again:
if (!vector_str_push(&v.ext_name, ddata->cur, len))
return (0);
ddata->cur += len;
+ if (!vector_type_qualifier_push(&v, TYPE_EXT))
+ goto clean;
goto again;
case 'v':
@@ -2549,6 +2888,8 @@ rtn:
goto clean;
free(type_str);
+ free(exp_str);
+ free(num_str);
vector_type_qualifier_dest(&v);
if (ddata->push_head > 0) {
@@ -2580,11 +2921,45 @@ rtn:
return (1);
clean:
free(type_str);
+ free(exp_str);
+ free(num_str);
vector_type_qualifier_dest(&v);
return (0);
}
+static int
+cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str)
+{
+ struct vector_str *output;
+ size_t i, p_idx, idx, type_len;
+ char *type;
+
+ output = ddata->push_head > 0 ? &ddata->output_tmp :
+ &ddata->output;
+
+ p_idx = output->size;
+
+ if (!cpp_demangle_read_type(ddata, 0))
+ return (0);
+
+ if ((type = vector_str_substr(output, p_idx, output->size - 1,
+ &type_len)) == NULL)
+ return (0);
+
+ idx = output->size;
+ for (i = p_idx; i < idx; ++i) {
+ if (!vector_str_pop(output)) {
+ free(type);
+ return (0);
+ }
+ }
+
+ *str = type;
+
+ return (1);
+}
+
/*
* read unqualified-name, unqualified name are operator-name, ctor-dtor-name,
* source-name
@@ -3008,39 +3383,38 @@ cpp_demangle_read_uqname(struct cpp_demangle_data *ddata)
if (ELFTC_ISDIGIT(*ddata->cur) != 0)
return (cpp_demangle_read_sname(ddata));
-
- /* local source name */
- if (*ddata->cur == 'L')
- return (cpp_demangle_local_source_name(ddata));
-
- return (1);
-}
-
-/*
- * Read local source name.
- *
- * References:
- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31775
- * http://gcc.gnu.org/viewcvs?view=rev&revision=124467
- */
-static int
-cpp_demangle_local_source_name(struct cpp_demangle_data *ddata)
-{
- /* L */
- if (ddata == NULL || *ddata->cur != 'L')
- return (0);
- ++ddata->cur;
-
- /* source name */
- if (!cpp_demangle_read_sname(ddata))
- return (0);
-
- /* discriminator */
- if (*ddata->cur == '_') {
- ++ddata->cur;
- while (ELFTC_ISDIGIT(*ddata->cur) != 0)
- ++ddata->cur;
- }
+ /* local source name */
+ if (*ddata->cur == 'L')
+ return (cpp_demangle_local_source_name(ddata));
+
+ return (1);
+}
+
+/*
+ * Read local source name.
+ *
+ * References:
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31775
+ * http://gcc.gnu.org/viewcvs?view=rev&revision=124467
+ */
+static int
+cpp_demangle_local_source_name(struct cpp_demangle_data *ddata)
+{
+ /* L */
+ if (ddata == NULL || *ddata->cur != 'L')
+ return (0);
+ ++ddata->cur;
+
+ /* source name */
+ if (!cpp_demangle_read_sname(ddata))
+ return (0);
+
+ /* discriminator */
+ if (*ddata->cur == '_') {
+ ++ddata->cur;
+ while (ELFTC_ISDIGIT(*ddata->cur) != 0)
+ ++ddata->cur;
+ }
return (1);
}
diff --git a/contrib/libxo/libxo/libxo.c b/contrib/libxo/libxo/libxo.c
index 4fd18fd..bb4ce2e 100644
--- a/contrib/libxo/libxo/libxo.c
+++ b/contrib/libxo/libxo/libxo.c
@@ -2077,7 +2077,8 @@ xo_format_string_direct (xo_handle_t *xop, xo_buffer_t *xbp,
ilen = mbrtowc(&wc, cp, ilen, &xop->xo_mbstate);
if (ilen < 0) { /* Invalid data; skip */
xo_failure(xop, "invalid mbs char: %02hhx", *cp);
- continue;
+ wc = L'?';
+ ilen = 1;
}
if (ilen == 0) { /* Hit a wide NUL character */
len = 0;
diff --git a/contrib/sendmail/src/tls.c b/contrib/sendmail/src/tls.c
index 75207ee..ca93ee8 100644
--- a/contrib/sendmail/src/tls.c
+++ b/contrib/sendmail/src/tls.c
@@ -650,7 +650,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar
** 1024 generate 1024 bit parameters
** 2048 generate 2048 bit parameters
** /file/name read parameters from /file/name
- ** default is: 1024 for server, 512 for client (OK? XXX)
+ ** default is: 1024
*/
if (bitset(TLS_I_TRY_DH, req))
@@ -676,8 +676,8 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar
}
if (dhparam == NULL)
{
- dhparam = srv ? "1" : "5";
- req |= (srv ? TLS_I_DH1024 : TLS_I_DH512);
+ dhparam = "1";
+ req |= TLS_I_DH1024;
}
else if (*dhparam == '/')
{
diff --git a/contrib/tzdata/africa b/contrib/tzdata/africa
index ea0171a..5ad47e3 100644
--- a/contrib/tzdata/africa
+++ b/contrib/tzdata/africa
@@ -338,9 +338,10 @@ Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
# time this summer, and carry out studies on the possibility of canceling the
# practice altogether in future years."
#
-# From Paul Eggert (2015-04-20):
-# For now, assume DST will be canceled. Any resumption would likely
-# use different rules anyway.
+# From Paul Eggert (2015-04-24):
+# Yesterday the office of Egyptian President El-Sisi announced his
+# decision to abandon DST permanently. See Ahram Online 2015-04-24.
+# http://english.ahram.org.eg/NewsContent/1/64/128509/Egypt/Politics-/Sisi-cancels-daylight-saving-time-in-Egypt.aspx
Rule Egypt 2008 only - Aug lastThu 24:00 0 -
Rule Egypt 2009 only - Aug 20 24:00 0 -
@@ -787,20 +788,41 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
# will resume again at 02:00 on Saturday, August 2, 2014....
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
-# From Paul Eggert (2014-06-05):
-# For now, guess that later spring and fall transitions will use 2014's rules,
+# From Milamber (2015-06-08):
+# (Google Translation) The hour will thus be delayed 60 minutes
+# Sunday, June 14 at 3:00, the ministry said in a statement, adding
+# that the time will be advanced again 60 minutes Sunday, July 19,
+# 2015 at 2:00. The move comes under 2.12.126 Decree of 26 Jumada I
+# 1433 (18 April 2012) and the decision of the Head of Government of
+# 16 N. 3-29-15 Chaaban 1435 (4 June 2015).
+# Source (french):
+# http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/
+#
+# From Milamber (2015-06-09):
+# http://www.mmsp.gov.ma/fr/actualites.aspx?id=863
+#
+# From Michael Deckers (2015-06-09):
+# [The gov.ma announcement] would (probably) make the switch on 2015-07-19 go
+# from 03:00 to 04:00 rather than from 02:00 to 03:00, as in the patch....
+# I think the patch is correct and the quoted text is wrong; the text in
+# <http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
+# with the patch.
+
+# From Paul Eggert (2015-06-08):
+# For now, guess that later spring and fall transitions will use 2015's rules,
# and guess that Morocco will switch to standard time at 03:00 the last
-# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after
-# Ramadan. To implement this, transition dates for 2015 through 2037 were
+# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
+# Ramadan. To implement this, transition dates for 2016 through 2037 were
# determined by running the following program under GNU Emacs 24.3, with the
# results integrated by hand into the table below.
-# (let ((islamic-year 1436))
+# (let ((islamic-year 1437))
+# (require 'cal-islam)
# (while (< islamic-year 1460)
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
-# (saturday 6))
-# (while (/= saturday (mod (setq a (1- a)) 7)))
-# (while (/= saturday (mod b 7))
+# (sunday 0))
+# (while (/= sunday (mod (setq a (1- a)) 7)))
+# (while (/= sunday (mod b 7))
# (setq b (1+ b)))
# (setq a (calendar-gregorian-from-absolute a))
# (setq b (calendar-gregorian-from-absolute b))
@@ -844,32 +866,30 @@ Rule Morocco 2012 only - Aug 20 2:00 1:00 S
Rule Morocco 2013 only - Jul 7 3:00 0 -
Rule Morocco 2013 only - Aug 10 2:00 1:00 S
Rule Morocco 2013 max - Oct lastSun 3:00 0 -
-Rule Morocco 2014 2022 - Mar lastSun 2:00 1:00 S
+Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
Rule Morocco 2014 only - Jun 28 3:00 0 -
Rule Morocco 2014 only - Aug 2 2:00 1:00 S
-Rule Morocco 2015 only - Jun 13 3:00 0 -
-Rule Morocco 2015 only - Jul 18 2:00 1:00 S
-Rule Morocco 2016 only - Jun 4 3:00 0 -
-Rule Morocco 2016 only - Jul 9 2:00 1:00 S
-Rule Morocco 2017 only - May 20 3:00 0 -
-Rule Morocco 2017 only - Jul 1 2:00 1:00 S
-Rule Morocco 2018 only - May 12 3:00 0 -
-Rule Morocco 2018 only - Jun 16 2:00 1:00 S
-Rule Morocco 2019 only - May 4 3:00 0 -
-Rule Morocco 2019 only - Jun 8 2:00 1:00 S
-Rule Morocco 2020 only - Apr 18 3:00 0 -
-Rule Morocco 2020 only - May 30 2:00 1:00 S
-Rule Morocco 2021 only - Apr 10 3:00 0 -
-Rule Morocco 2021 only - May 15 2:00 1:00 S
-Rule Morocco 2022 only - Apr 2 3:00 0 -
-Rule Morocco 2022 only - May 7 2:00 1:00 S
-Rule Morocco 2023 only - Apr 22 2:00 1:00 S
-Rule Morocco 2024 only - Apr 13 2:00 1:00 S
-Rule Morocco 2025 only - Apr 5 2:00 1:00 S
+Rule Morocco 2015 only - Jun 14 3:00 0 -
+Rule Morocco 2015 only - Jul 19 2:00 1:00 S
+Rule Morocco 2016 only - Jun 5 3:00 0 -
+Rule Morocco 2016 only - Jul 10 2:00 1:00 S
+Rule Morocco 2017 only - May 21 3:00 0 -
+Rule Morocco 2017 only - Jul 2 2:00 1:00 S
+Rule Morocco 2018 only - May 13 3:00 0 -
+Rule Morocco 2018 only - Jun 17 2:00 1:00 S
+Rule Morocco 2019 only - May 5 3:00 0 -
+Rule Morocco 2019 only - Jun 9 2:00 1:00 S
+Rule Morocco 2020 only - Apr 19 3:00 0 -
+Rule Morocco 2020 only - May 24 2:00 1:00 S
+Rule Morocco 2021 only - Apr 11 3:00 0 -
+Rule Morocco 2021 only - May 16 2:00 1:00 S
+Rule Morocco 2022 only - May 8 2:00 1:00 S
+Rule Morocco 2023 only - Apr 23 2:00 1:00 S
+Rule Morocco 2024 only - Apr 14 2:00 1:00 S
+Rule Morocco 2025 only - Apr 6 2:00 1:00 S
Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
-Rule Morocco 2035 only - Oct 27 3:00 0 -
-Rule Morocco 2036 only - Oct 18 3:00 0 -
-Rule Morocco 2037 only - Oct 10 3:00 0 -
+Rule Morocco 2036 only - Oct 19 3:00 0 -
+Rule Morocco 2037 only - Oct 4 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
diff --git a/contrib/tzdata/northamerica b/contrib/tzdata/northamerica
index c3af9eb..88423e6 100644
--- a/contrib/tzdata/northamerica
+++ b/contrib/tzdata/northamerica
@@ -2661,7 +2661,17 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
-4:00 US A%sT
# Cayman Is
-# See America/Panama.
+
+# From Paul Eggert (2015-05-15):
+# The Cayman government has decided to introduce DST in 2016, the idea being
+# to keep in sync with New York. The legislation hasn't passed but the change
+# seems quite likely. See: Meade B. Cayman 27.
+# http://www.cayman27.com.ky/2015/05/15/clock-ticks-toward-daylight-saving-time-in-cayman
+
+Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
+ -5:07:11 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST 2016
+ -5:00 US E%sT
# Costa Rica
@@ -3184,7 +3194,6 @@ Zone America/Managua -5:45:08 - LMT 1890
Zone America/Panama -5:18:08 - LMT 1890
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
-5:00 - EST
-Link America/Panama America/Cayman
# Puerto Rico
# There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
diff --git a/contrib/tzdata/southamerica b/contrib/tzdata/southamerica
index be63a88..6bbc2c8 100644
--- a/contrib/tzdata/southamerica
+++ b/contrib/tzdata/southamerica
@@ -30,7 +30,7 @@
# I suggest the use of _Summer time_ instead of the more cumbersome
# _daylight-saving time_. _Summer time_ seems to be in general use
# in Europe and South America.
-# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
+# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
# H L Mencken, _The American Language: Supplement I_ (1960), p 466
#
# Earlier editions of these tables also used the North American style
diff --git a/contrib/tzdata/zone1970.tab b/contrib/tzdata/zone1970.tab
index 4fe6af0..52d6165 100644
--- a/contrib/tzdata/zone1970.tab
+++ b/contrib/tzdata/zone1970.tab
@@ -207,6 +207,7 @@ KI -0308-17105 Pacific/Enderbury Phoenix Islands
KI +0152-15720 Pacific/Kiritimati Line Islands
KP +3901+12545 Asia/Pyongyang
KR +3733+12658 Asia/Seoul
+KY +1918-08123 America/Cayman
KZ +4315+07657 Asia/Almaty most locations
KZ +4448+06528 Asia/Qyzylorda Qyzylorda (Kyzylorda, Kzyl-Orda)
KZ +5017+05710 Asia/Aqtobe Aqtobe (Aktobe)
@@ -260,7 +261,7 @@ NR -0031+16655 Pacific/Nauru
NU -1901-16955 Pacific/Niue
NZ,AQ -3652+17446 Pacific/Auckland New Zealand time
NZ -4357-17633 Pacific/Chatham Chatham Islands
-PA,KY +0858-07932 America/Panama
+PA +0858-07932 America/Panama
PE -1203-07703 America/Lima
PF -1732-14934 Pacific/Tahiti Society Islands
PF -0900-13930 Pacific/Marquesas Marquesas Islands
diff --git a/crypto/openssl/CHANGES b/crypto/openssl/CHANGES
index 74179ab..759b2a7 100644
--- a/crypto/openssl/CHANGES
+++ b/crypto/openssl/CHANGES
@@ -2,6 +2,83 @@
OpenSSL CHANGES
_______________
+ Changes between 1.0.1n and 1.0.1o [12 Jun 2015]
+
+ *) Fix HMAC ABI incompatibility. The previous version introduced an ABI
+ incompatibility in the handling of HMAC. The previous ABI has now been
+ restored.
+
+ Changes between 1.0.1m and 1.0.1n [11 Jun 2015]
+
+ *) Malformed ECParameters causes infinite loop
+
+ When processing an ECParameters structure OpenSSL enters an infinite loop
+ if the curve specified is over a specially malformed binary polynomial
+ field.
+
+ This can be used to perform denial of service against any
+ system which processes public keys, certificate requests or
+ certificates. This includes TLS clients and TLS servers with
+ client authentication enabled.
+
+ This issue was reported to OpenSSL by Joseph Barr-Pixton.
+ (CVE-2015-1788)
+ [Andy Polyakov]
+
+ *) Exploitable out-of-bounds read in X509_cmp_time
+
+ X509_cmp_time does not properly check the length of the ASN1_TIME
+ string and can read a few bytes out of bounds. In addition,
+ X509_cmp_time accepts an arbitrary number of fractional seconds in the
+ time string.
+
+ An attacker can use this to craft malformed certificates and CRLs of
+ various sizes and potentially cause a segmentation fault, resulting in
+ a DoS on applications that verify certificates or CRLs. TLS clients
+ that verify CRLs are affected. TLS clients and servers with client
+ authentication enabled may be affected if they use custom verification
+ callbacks.
+
+ This issue was reported to OpenSSL by Robert Swiecki (Google), and
+ independently by Hanno Böck.
+ (CVE-2015-1789)
+ [Emilia Käsper]
+
+ *) PKCS7 crash with missing EnvelopedContent
+
+ The PKCS#7 parsing code does not handle missing inner EncryptedContent
+ correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
+ with missing content and trigger a NULL pointer dereference on parsing.
+
+ Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
+ structures from untrusted sources are affected. OpenSSL clients and
+ servers are not affected.
+
+ This issue was reported to OpenSSL by Michal Zalewski (Google).
+ (CVE-2015-1790)
+ [Emilia Käsper]
+
+ *) CMS verify infinite loop with unknown hash function
+
+ When verifying a signedData message the CMS code can enter an infinite loop
+ if presented with an unknown hash function OID. This can be used to perform
+ denial of service against any system which verifies signedData messages using
+ the CMS code.
+ This issue was reported to OpenSSL by Johannes Bauer.
+ (CVE-2015-1792)
+ [Stephen Henson]
+
+ *) Race condition handling NewSessionTicket
+
+ If a NewSessionTicket is received by a multi-threaded client when attempting to
+ reuse a previous ticket then a race condition can occur potentially leading to
+ a double free of the ticket data.
+ (CVE-2015-1791)
+ [Matt Caswell]
+
+ *) Reject DH handshakes with parameters shorter than 768 bits.
+ [Kurt Roeckx and Emilia Kasper]
+
Changes between 1.0.1l and 1.0.1m [19 Mar 2015]
*) Segmentation fault in ASN1_TYPE_cmp fix
diff --git a/crypto/openssl/Configure b/crypto/openssl/Configure
index d7ecf97..60ec378 100755
--- a/crypto/openssl/Configure
+++ b/crypto/openssl/Configure
@@ -230,12 +230,12 @@ my %table=(
#### SPARC Solaris with GNU C setups
"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"solaris-sparcv8-gcc","gcc:-mcpu=v8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
####
-"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mcpu=v8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
#### SPARC Solaris with Sun C setups
@@ -252,7 +252,7 @@ my %table=(
#### SunOS configs, assuming sparc for the gcc one.
#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
-"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
+"sunos-gcc","gcc:-O3 -mcpu=v8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
#### IRIX 5.x configs
# -mips2 flag is added by ./config when appropriate.
@@ -379,7 +379,7 @@ my %table=(
#### SPARC Linux setups
# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
# assisted with debugging of following two configs.
-"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
# it's a real mess with -mcpu=ultrasparc option under Linux, but
# -Wa,-Av8plus should do the trick no matter what.
"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -413,7 +413,7 @@ my %table=(
"BSD-x86", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"BSD-x86-elf", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"BSD-sparcv8", "gcc:-DB_ENDIAN -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"BSD-sparcv8", "gcc:-DB_ENDIAN -O3 -mcpu=v8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"BSD-generic64","gcc:-O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
diff --git a/crypto/openssl/Makefile b/crypto/openssl/Makefile
index d3f31f0..0b3badb 100644
--- a/crypto/openssl/Makefile
+++ b/crypto/openssl/Makefile
@@ -4,7 +4,7 @@
## Makefile for OpenSSL
##
-VERSION=1.0.1m
+VERSION=1.0.1o
MAJOR=1
MINOR=0.1
SHLIB_VERSION_NUMBER=1.0.0
@@ -186,7 +186,7 @@ WTARFILE= $(NAME)-win.tar
EXHEADER= e_os2.h
HEADER= e_os.h
-all: Makefile build_all openssl.pc libssl.pc libcrypto.pc
+all: Makefile build_all
# as we stick to -e, CLEARENV ensures that local variables in lower
# Makefiles remain local and variable. $${VAR+VAR} is tribute to Korn
@@ -272,7 +272,10 @@ reflect:
sub_all: build_all
build_all: build_libs build_apps build_tests build_tools
-build_libs: build_crypto build_ssl build_engines
+build_libs: build_libcrypto build_libssl openssl.pc
+
+build_libcrypto: build_crypto build_engines libcrypto.pc
+build_libssl: build_ssl libssl.pc
build_crypto:
@dir=crypto; target=all; $(BUILD_ONE_CMD)
@@ -461,6 +464,9 @@ tests: rehash
report:
@$(PERL) util/selftest.pl
+update: errors stacks util/libeay.num util/ssleay.num TABLE
+ @set -e; target=update; $(RECURSIVE_BUILD_CMD)
+
depend:
@set -e; target=depend; $(RECURSIVE_BUILD_CMD)
@@ -485,26 +491,10 @@ util/libeay.num::
util/ssleay.num::
$(PERL) util/mkdef.pl ssl update
-crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
- $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
-crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
- $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
-crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
- $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
-
-apps/openssl-vms.cnf: apps/openssl.cnf
- $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
-
-crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
- $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h
-
-
TABLE: Configure
(echo 'Output of `Configure TABLE'"':"; \
$(PERL) Configure TABLE) > TABLE
-update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
-
# Build distribution tar-file. As the list of files returned by "find" is
# pretty long, on several platforms a "too many arguments" error or similar
# would occur. Therefore the list of files is temporarily stored into a file
diff --git a/crypto/openssl/Makefile.org b/crypto/openssl/Makefile.org
index c0e16bb..89e8062 100644
--- a/crypto/openssl/Makefile.org
+++ b/crypto/openssl/Makefile.org
@@ -184,7 +184,7 @@ WTARFILE= $(NAME)-win.tar
EXHEADER= e_os2.h
HEADER= e_os.h
-all: Makefile build_all openssl.pc libssl.pc libcrypto.pc
+all: Makefile build_all
# as we stick to -e, CLEARENV ensures that local variables in lower
# Makefiles remain local and variable. $${VAR+VAR} is tribute to Korn
@@ -270,7 +270,10 @@ reflect:
sub_all: build_all
build_all: build_libs build_apps build_tests build_tools
-build_libs: build_crypto build_ssl build_engines
+build_libs: build_libcrypto build_libssl openssl.pc
+
+build_libcrypto: build_crypto build_engines libcrypto.pc
+build_libssl: build_ssl libssl.pc
build_crypto:
@dir=crypto; target=all; $(BUILD_ONE_CMD)
@@ -459,6 +462,9 @@ tests: rehash
report:
@$(PERL) util/selftest.pl
+update: errors stacks util/libeay.num util/ssleay.num TABLE
+ @set -e; target=update; $(RECURSIVE_BUILD_CMD)
+
depend:
@set -e; target=depend; $(RECURSIVE_BUILD_CMD)
@@ -483,26 +489,10 @@ util/libeay.num::
util/ssleay.num::
$(PERL) util/mkdef.pl ssl update
-crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
- $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
-crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
- $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
-crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
- $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
-
-apps/openssl-vms.cnf: apps/openssl.cnf
- $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
-
-crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
- $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h
-
-
TABLE: Configure
(echo 'Output of `Configure TABLE'"':"; \
$(PERL) Configure TABLE) > TABLE
-update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
-
# Build distribution tar-file. As the list of files returned by "find" is
# pretty long, on several platforms a "too many arguments" error or similar
# would occur. Therefore the list of files is temporarily stored into a file
diff --git a/crypto/openssl/NEWS b/crypto/openssl/NEWS
index 12616d2..fb69ad3 100644
--- a/crypto/openssl/NEWS
+++ b/crypto/openssl/NEWS
@@ -5,6 +5,18 @@
This file gives a brief overview of the major changes between each OpenSSL
release. For more details please read the CHANGES file.
+ Major changes between OpenSSL 1.0.1n and OpenSSL 1.0.1o [12 Jun 2015]
+
+ o Fix HMAC ABI incompatibility
+
+ Major changes between OpenSSL 1.0.1m and OpenSSL 1.0.1n [11 Jun 2015]
+
+ o Malformed ECParameters causes infinite loop (CVE-2015-1788)
+ o Exploitable out-of-bounds read in X509_cmp_time (CVE-2015-1789)
+ o PKCS7 crash with missing EnvelopedContent (CVE-2015-1790)
+ o CMS verify infinite loop with unknown hash function (CVE-2015-1792)
+ o Race condition handling NewSessionTicket (CVE-2015-1791)
+
Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.1m [19 Mar 2015]
o Segmentation fault in ASN1_TYPE_cmp fix (CVE-2015-0286)
diff --git a/crypto/openssl/README b/crypto/openssl/README
index ecdcfb2..bf3b715 100644
--- a/crypto/openssl/README
+++ b/crypto/openssl/README
@@ -1,5 +1,5 @@
- OpenSSL 1.0.1m 19 Mar 2015
+ OpenSSL 1.0.1o 12 Jun 2015
Copyright (c) 1998-2011 The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
diff --git a/crypto/openssl/apps/Makefile b/crypto/openssl/apps/Makefile
index 72657ea..cafe554 100644
--- a/crypto/openssl/apps/Makefile
+++ b/crypto/openssl/apps/Makefile
@@ -94,6 +94,9 @@ req: sreq.o $(A_OBJ) $(DLIBCRYPTO)
sreq.o: req.c
$(CC) -c $(INCLUDES) $(CFLAG) -o sreq.o req.c
+openssl-vms.cnf: openssl.cnf
+ $(PERL) $(TOP)/VMS/VMSify-conf.pl < openssl.cnf > openssl-vms.cnf
+
files:
$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -127,12 +130,12 @@ links:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
-depend:
- @if [ -z "$(THIS)" ]; then \
- $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; \
- else \
- $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(SRC); \
- fi
+update: openssl-vms.cnf local_depend
+
+depend: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+local_depend:
+ @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(SRC); \
dclean:
$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
@@ -144,10 +147,10 @@ clean:
rm -f req
$(DLIBSSL):
- (cd ..; $(MAKE) DIRS=ssl all)
+ (cd ..; $(MAKE) build_libssl)
$(DLIBCRYPTO):
- (cd ..; $(MAKE) DIRS=crypto all)
+ (cd ..; $(MAKE) build_libcrypto)
$(EXE): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
$(RM) $(EXE)
diff --git a/crypto/openssl/apps/apps.c b/crypto/openssl/apps/apps.c
index 9862afd..6801238 100644
--- a/crypto/openssl/apps/apps.c
+++ b/crypto/openssl/apps/apps.c
@@ -572,7 +572,7 @@ int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_tmp)
char *prompt = NULL;
prompt = UI_construct_prompt(ui, "pass phrase", prompt_info);
- if(!prompt) {
+ if (!prompt) {
BIO_printf(bio_err, "Out of memory\n");
UI_free(ui);
return 0;
@@ -586,7 +586,7 @@ int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_tmp)
PW_MIN_LENGTH, bufsiz - 1);
if (ok >= 0 && verify) {
buff = (char *)OPENSSL_malloc(bufsiz);
- if(!buff) {
+ if (!buff) {
BIO_printf(bio_err, "Out of memory\n");
UI_free(ui);
OPENSSL_free(prompt);
@@ -2238,6 +2238,8 @@ int args_verify(char ***pargs, int *pargc,
flags |= X509_V_FLAG_NOTIFY_POLICY;
else if (!strcmp(arg, "-check_ss_sig"))
flags |= X509_V_FLAG_CHECK_SS_SIGNATURE;
+ else if (!strcmp(arg, "-no_alt_chains"))
+ flags |= X509_V_FLAG_NO_ALT_CHAINS;
else
return 0;
diff --git a/crypto/openssl/apps/asn1pars.c b/crypto/openssl/apps/asn1pars.c
index 7a0f169..11b0787 100644
--- a/crypto/openssl/apps/asn1pars.c
+++ b/crypto/openssl/apps/asn1pars.c
@@ -375,7 +375,7 @@ static int do_generate(BIO *bio, char *genstr, char *genconf, BUF_MEM *buf)
{
CONF *cnf = NULL;
int len;
- long errline;
+ long errline = 0;
unsigned char *p;
ASN1_TYPE *atyp = NULL;
diff --git a/crypto/openssl/apps/ca.c b/crypto/openssl/apps/ca.c
index 5d29a64..97ad0c1 100644
--- a/crypto/openssl/apps/ca.c
+++ b/crypto/openssl/apps/ca.c
@@ -558,7 +558,7 @@ int MAIN(int argc, char **argv)
#ifdef OPENSSL_SYS_VMS
len = strlen(s) + sizeof(CONFIG_FILE);
tofree = OPENSSL_malloc(len);
- if(!tofree) {
+ if (!tofree) {
BIO_printf(bio_err, "Out of memory\n");
goto err;
}
@@ -566,7 +566,7 @@ int MAIN(int argc, char **argv)
#else
len = strlen(s) + sizeof(CONFIG_FILE) + 1;
tofree = OPENSSL_malloc(len);
- if(!tofree) {
+ if (!tofree) {
BIO_printf(bio_err, "Out of memory\n");
goto err;
}
@@ -2803,7 +2803,7 @@ int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold,
ASN1_GENERALIZEDTIME *comp_time = NULL;
tmp = BUF_strdup(str);
- if(!tmp) {
+ if (!tmp) {
BIO_printf(bio_err, "memory allocation failure\n");
goto err;
}
@@ -2825,7 +2825,7 @@ int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold,
if (prevtm) {
*prevtm = ASN1_UTCTIME_new();
- if(!*prevtm) {
+ if (!*prevtm) {
BIO_printf(bio_err, "memory allocation failure\n");
goto err;
}
@@ -2869,7 +2869,7 @@ int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold,
goto err;
}
comp_time = ASN1_GENERALIZEDTIME_new();
- if(!comp_time) {
+ if (!comp_time) {
BIO_printf(bio_err, "memory allocation failure\n");
goto err;
}
diff --git a/crypto/openssl/apps/cms.c b/crypto/openssl/apps/cms.c
index 0cc4b46..d7645c0 100644
--- a/crypto/openssl/apps/cms.c
+++ b/crypto/openssl/apps/cms.c
@@ -581,6 +581,8 @@ int MAIN(int argc, char **argv)
"-CApath dir trusted certificates directory\n");
BIO_printf(bio_err, "-CAfile file trusted certificates file\n");
BIO_printf(bio_err,
+ "-no_alt_chains only ever use the first certificate chain found\n");
+ BIO_printf(bio_err,
"-crl_check check revocation status of signer's certificate using CRLs\n");
BIO_printf(bio_err,
"-crl_check_all check revocation status of signer's certificate chain using CRLs\n");
diff --git a/crypto/openssl/apps/dhparam.c b/crypto/openssl/apps/dhparam.c
index f86311c..d3b6d58 100644
--- a/crypto/openssl/apps/dhparam.c
+++ b/crypto/openssl/apps/dhparam.c
@@ -130,7 +130,7 @@
# undef PROG
# define PROG dhparam_main
-# define DEFBITS 512
+# define DEFBITS 2048
/*-
* -inform arg - input format - default PEM (DER or PEM)
@@ -254,7 +254,7 @@ int MAIN(int argc, char **argv)
BIO_printf(bio_err,
" -5 generate parameters using 5 as the generator value\n");
BIO_printf(bio_err,
- " numbits number of bits in to generate (default 512)\n");
+ " numbits number of bits in to generate (default 2048)\n");
# ifndef OPENSSL_NO_ENGINE
BIO_printf(bio_err,
" -engine e use engine e, possibly a hardware device.\n");
diff --git a/crypto/openssl/apps/enc.c b/crypto/openssl/apps/enc.c
index 5c2cf7a..7b7c70b 100644
--- a/crypto/openssl/apps/enc.c
+++ b/crypto/openssl/apps/enc.c
@@ -548,9 +548,14 @@ int MAIN(int argc, char **argv)
else
OPENSSL_cleanse(str, strlen(str));
}
- if ((hiv != NULL) && !set_hex(hiv, iv, sizeof iv)) {
- BIO_printf(bio_err, "invalid hex iv value\n");
- goto end;
+ if (hiv != NULL) {
+ int siz = EVP_CIPHER_iv_length(cipher);
+ if (siz == 0) {
+ BIO_printf(bio_err, "warning: iv not use by this cipher\n");
+ } else if (!set_hex(hiv, iv, sizeof iv)) {
+ BIO_printf(bio_err, "invalid hex iv value\n");
+ goto end;
+ }
}
if ((hiv == NULL) && (str == NULL)
&& EVP_CIPHER_iv_length(cipher) != 0) {
@@ -562,7 +567,7 @@ int MAIN(int argc, char **argv)
BIO_printf(bio_err, "iv undefined\n");
goto end;
}
- if ((hkey != NULL) && !set_hex(hkey, key, sizeof key)) {
+ if ((hkey != NULL) && !set_hex(hkey, key, EVP_CIPHER_key_length(cipher))) {
BIO_printf(bio_err, "invalid hex key value\n");
goto end;
}
diff --git a/crypto/openssl/apps/gendh.c b/crypto/openssl/apps/gendh.c
index adaa101..fef6f1b 100644
--- a/crypto/openssl/apps/gendh.c
+++ b/crypto/openssl/apps/gendh.c
@@ -80,7 +80,7 @@
# include <openssl/x509.h>
# include <openssl/pem.h>
-# define DEFBITS 512
+# define DEFBITS 2048
# undef PROG
# define PROG gendh_main
diff --git a/crypto/openssl/apps/ocsp.c b/crypto/openssl/apps/ocsp.c
index 71def26..572f064 100644
--- a/crypto/openssl/apps/ocsp.c
+++ b/crypto/openssl/apps/ocsp.c
@@ -519,6 +519,8 @@ int MAIN(int argc, char **argv)
BIO_printf(bio_err,
"-CAfile file trusted certificates file\n");
BIO_printf(bio_err,
+ "-no_alt_chains only ever use the first certificate chain found\n");
+ BIO_printf(bio_err,
"-VAfile file validator certificates file\n");
BIO_printf(bio_err,
"-validity_period n maximum validity discrepancy in seconds\n");
diff --git a/crypto/openssl/apps/s_cb.c b/crypto/openssl/apps/s_cb.c
index 7918500..fabf9cf 100644
--- a/crypto/openssl/apps/s_cb.c
+++ b/crypto/openssl/apps/s_cb.c
@@ -111,6 +111,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h> /* for memcpy() */
#define USE_SOCKETS
#define NON_MAIN
#include "apps.h"
@@ -747,7 +748,7 @@ int MS_CALLBACK generate_cookie_callback(SSL *ssl, unsigned char *cookie,
/* Initialize a random secret */
if (!cookie_initialized) {
- if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH)) {
+ if (RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH) <= 0) {
BIO_printf(bio_err, "error setting random cookie secret\n");
return 0;
}
diff --git a/crypto/openssl/apps/s_client.c b/crypto/openssl/apps/s_client.c
index ef41cec..28737b6 100644
--- a/crypto/openssl/apps/s_client.c
+++ b/crypto/openssl/apps/s_client.c
@@ -323,6 +323,8 @@ static void sc_usage(void)
BIO_printf(bio_err, " -CApath arg - PEM format directory of CA's\n");
BIO_printf(bio_err, " -CAfile arg - PEM format file of CA's\n");
BIO_printf(bio_err,
+ " -no_alt_chains - only ever use the first certificate chain found\n");
+ BIO_printf(bio_err,
" -reconnect - Drop and re-make the connection with the same Session-ID\n");
BIO_printf(bio_err,
" -pause - sleep(1) after each read(2) and write(2) system call\n");
@@ -547,7 +549,7 @@ static char *MS_CALLBACK ssl_give_srp_client_pwd_cb(SSL *s, void *arg)
PW_CB_DATA cb_tmp;
int l;
- if(!pass) {
+ if (!pass) {
BIO_printf(bio_err, "Malloc failure\n");
return NULL;
}
@@ -1177,13 +1179,12 @@ int MAIN(int argc, char **argv)
if (!set_cert_key_stuff(ctx, cert, key))
goto end;
- if ((!SSL_CTX_load_verify_locations(ctx, CAfile, CApath)) ||
- (!SSL_CTX_set_default_verify_paths(ctx))) {
- /*
- * BIO_printf(bio_err,"error setting default verify locations\n");
- */
+ if ((CAfile || CApath)
+ && !SSL_CTX_load_verify_locations(ctx, CAfile, CApath)) {
+ ERR_print_errors(bio_err);
+ }
+ if (!SSL_CTX_set_default_verify_paths(ctx)) {
ERR_print_errors(bio_err);
- /* goto end; */
}
#ifndef OPENSSL_NO_TLSEXT
if (servername != NULL) {
diff --git a/crypto/openssl/apps/s_server.c b/crypto/openssl/apps/s_server.c
index bcf5c33..b58e5e0 100644
--- a/crypto/openssl/apps/s_server.c
+++ b/crypto/openssl/apps/s_server.c
@@ -219,7 +219,7 @@ static int generate_session_id(const SSL *ssl, unsigned char *id,
unsigned int *id_len);
#ifndef OPENSSL_NO_DH
static DH *load_dh_param(const char *dhfile);
-static DH *get_dh512(void);
+static DH *get_dh2048(void);
#endif
#ifdef MONOLITH
@@ -227,30 +227,48 @@ static void s_server_init(void);
#endif
#ifndef OPENSSL_NO_DH
-static unsigned char dh512_p[] = {
- 0xDA, 0x58, 0x3C, 0x16, 0xD9, 0x85, 0x22, 0x89, 0xD0, 0xE4, 0xAF, 0x75,
- 0x6F, 0x4C, 0xCA, 0x92, 0xDD, 0x4B, 0xE5, 0x33, 0xB8, 0x04, 0xFB, 0x0F,
- 0xED, 0x94, 0xEF, 0x9C, 0x8A, 0x44, 0x03, 0xED, 0x57, 0x46, 0x50, 0xD3,
- 0x69, 0x99, 0xDB, 0x29, 0xD7, 0x76, 0x27, 0x6B, 0xA2, 0xD3, 0xD4, 0x12,
- 0xE2, 0x18, 0xF4, 0xDD, 0x1E, 0x08, 0x4C, 0xF6, 0xD8, 0x00, 0x3E, 0x7C,
- 0x47, 0x74, 0xE8, 0x33,
+static unsigned char dh2048_p[] = {
+ 0xF6,0x42,0x57,0xB7,0x08,0x7F,0x08,0x17,0x72,0xA2,0xBA,0xD6,
+ 0xA9,0x42,0xF3,0x05,0xE8,0xF9,0x53,0x11,0x39,0x4F,0xB6,0xF1,
+ 0x6E,0xB9,0x4B,0x38,0x20,0xDA,0x01,0xA7,0x56,0xA3,0x14,0xE9,
+ 0x8F,0x40,0x55,0xF3,0xD0,0x07,0xC6,0xCB,0x43,0xA9,0x94,0xAD,
+ 0xF7,0x4C,0x64,0x86,0x49,0xF8,0x0C,0x83,0xBD,0x65,0xE9,0x17,
+ 0xD4,0xA1,0xD3,0x50,0xF8,0xF5,0x59,0x5F,0xDC,0x76,0x52,0x4F,
+ 0x3D,0x3D,0x8D,0xDB,0xCE,0x99,0xE1,0x57,0x92,0x59,0xCD,0xFD,
+ 0xB8,0xAE,0x74,0x4F,0xC5,0xFC,0x76,0xBC,0x83,0xC5,0x47,0x30,
+ 0x61,0xCE,0x7C,0xC9,0x66,0xFF,0x15,0xF9,0xBB,0xFD,0x91,0x5E,
+ 0xC7,0x01,0xAA,0xD3,0x5B,0x9E,0x8D,0xA0,0xA5,0x72,0x3A,0xD4,
+ 0x1A,0xF0,0xBF,0x46,0x00,0x58,0x2B,0xE5,0xF4,0x88,0xFD,0x58,
+ 0x4E,0x49,0xDB,0xCD,0x20,0xB4,0x9D,0xE4,0x91,0x07,0x36,0x6B,
+ 0x33,0x6C,0x38,0x0D,0x45,0x1D,0x0F,0x7C,0x88,0xB3,0x1C,0x7C,
+ 0x5B,0x2D,0x8E,0xF6,0xF3,0xC9,0x23,0xC0,0x43,0xF0,0xA5,0x5B,
+ 0x18,0x8D,0x8E,0xBB,0x55,0x8C,0xB8,0x5D,0x38,0xD3,0x34,0xFD,
+ 0x7C,0x17,0x57,0x43,0xA3,0x1D,0x18,0x6C,0xDE,0x33,0x21,0x2C,
+ 0xB5,0x2A,0xFF,0x3C,0xE1,0xB1,0x29,0x40,0x18,0x11,0x8D,0x7C,
+ 0x84,0xA7,0x0A,0x72,0xD6,0x86,0xC4,0x03,0x19,0xC8,0x07,0x29,
+ 0x7A,0xCA,0x95,0x0C,0xD9,0x96,0x9F,0xAB,0xD0,0x0A,0x50,0x9B,
+ 0x02,0x46,0xD3,0x08,0x3D,0x66,0xA4,0x5D,0x41,0x9F,0x9C,0x7C,
+ 0xBD,0x89,0x4B,0x22,0x19,0x26,0xBA,0xAB,0xA2,0x5E,0xC3,0x55,
+ 0xE9,0x32,0x0B,0x3B,
};
-static unsigned char dh512_g[] = {
+static unsigned char dh2048_g[] = {
0x02,
};
-static DH *get_dh512(void)
+DH *get_dh2048()
{
- DH *dh = NULL;
+ DH *dh;
if ((dh = DH_new()) == NULL)
- return (NULL);
- dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL);
- dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL);
- if ((dh->p == NULL) || (dh->g == NULL))
- return (NULL);
- return (dh);
+ return NULL;
+ dh->p=BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL);
+ dh->g=BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL);
+ if (dh->p == NULL || dh->g == NULL) {
+ DH_free(dh);
+ return NULL;
+ }
+ return dh;
}
#endif
@@ -523,6 +541,8 @@ static void sv_usage(void)
BIO_printf(bio_err, " -CApath arg - PEM format directory of CA's\n");
BIO_printf(bio_err, " -CAfile arg - PEM format file of CA's\n");
BIO_printf(bio_err,
+ " -no_alt_chains - only ever use the first certificate chain found\n");
+ BIO_printf(bio_err,
" -nocert - Don't use any certificates (Anon-DH)\n");
BIO_printf(bio_err,
" -cipher arg - play with 'openssl ciphers' to see what goes here\n");
@@ -720,7 +740,7 @@ static int ebcdic_write(BIO *b, const char *in, int inl)
num = inl;
wbuf =
(EBCDIC_OUTBUFF *) OPENSSL_malloc(sizeof(EBCDIC_OUTBUFF) + num);
- if(!wbuf)
+ if (!wbuf)
return 0;
OPENSSL_free(b->ptr);
@@ -998,7 +1018,7 @@ int MAIN(int argc, char *argv[])
int off = 0;
int no_tmp_rsa = 0, no_dhe = 0, nocert = 0;
#ifndef OPENSSL_NO_ECDH
- int no_ecdhe;
+ int no_ecdhe = 0;
#endif
int state = 0;
const SSL_METHOD *meth = NULL;
@@ -1654,7 +1674,11 @@ int MAIN(int argc, char *argv[])
BIO_printf(bio_s_out, "Setting temp DH parameters\n");
} else {
BIO_printf(bio_s_out, "Using default temp DH parameters\n");
- dh = get_dh512();
+ dh = get_dh2048();
+ if (dh == NULL) {
+ ERR_print_errors(bio_err);
+ goto end;
+ }
}
(void)BIO_flush(bio_s_out);
@@ -2251,8 +2275,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
ret = 1;
goto err;
}
- l += k;
- i -= k;
+ if (k > 0) {
+ l += k;
+ i -= k;
+ }
if (i <= 0)
break;
}
@@ -2916,7 +2942,8 @@ static int generate_session_id(const SSL *ssl, unsigned char *id,
{
unsigned int count = 0;
do {
- RAND_pseudo_bytes(id, *id_len);
+ if (RAND_pseudo_bytes(id, *id_len) < 0)
+ return 0;
/*
* Prefix the session_id with the required prefix. NB: If our prefix
* is too long, clip it - but there will be worse effects anyway, eg.
diff --git a/crypto/openssl/apps/s_time.c b/crypto/openssl/apps/s_time.c
index a40997a..38788f7 100644
--- a/crypto/openssl/apps/s_time.c
+++ b/crypto/openssl/apps/s_time.c
@@ -302,7 +302,7 @@ static int parseArgs(int argc, char **argv)
if (--argc < 1)
goto bad;
maxTime = atoi(*(++argv));
- if(maxTime <= 0) {
+ if (maxTime <= 0) {
BIO_printf(bio_err, "time must be > 0\n");
badop = 1;
}
diff --git a/crypto/openssl/apps/smime.c b/crypto/openssl/apps/smime.c
index 7b351f6..53e43c5 100644
--- a/crypto/openssl/apps/smime.c
+++ b/crypto/openssl/apps/smime.c
@@ -442,6 +442,8 @@ int MAIN(int argc, char **argv)
"-CApath dir trusted certificates directory\n");
BIO_printf(bio_err, "-CAfile file trusted certificates file\n");
BIO_printf(bio_err,
+ "-no_alt_chains only ever use the first certificate chain found\n");
+ BIO_printf(bio_err,
"-crl_check check revocation status of signer's certificate using CRLs\n");
BIO_printf(bio_err,
"-crl_check_all check revocation status of signer's certificate chain using CRLs\n");
diff --git a/crypto/openssl/apps/srp.c b/crypto/openssl/apps/srp.c
index c679448..c0ff417 100644
--- a/crypto/openssl/apps/srp.c
+++ b/crypto/openssl/apps/srp.c
@@ -435,7 +435,7 @@ int MAIN(int argc, char **argv)
# ifdef OPENSSL_SYS_VMS
len = strlen(s) + sizeof(CONFIG_FILE);
tofree = OPENSSL_malloc(len);
- if(!tofree) {
+ if (!tofree) {
BIO_printf(bio_err, "Out of memory\n");
goto err;
}
@@ -443,7 +443,7 @@ int MAIN(int argc, char **argv)
# else
len = strlen(s) + sizeof(CONFIG_FILE) + 1;
tofree = OPENSSL_malloc(len);
- if(!tofree) {
+ if (!tofree) {
BIO_printf(bio_err, "Out of memory\n");
goto err;
}
diff --git a/crypto/openssl/apps/verify.c b/crypto/openssl/apps/verify.c
index 7295c76..e29f9bb 100644
--- a/crypto/openssl/apps/verify.c
+++ b/crypto/openssl/apps/verify.c
@@ -227,7 +227,7 @@ int MAIN(int argc, char **argv)
if (ret == 1) {
BIO_printf(bio_err,
"usage: verify [-verbose] [-CApath path] [-CAfile file] [-purpose purpose] [-crl_check]");
- BIO_printf(bio_err, " [-attime timestamp]");
+ BIO_printf(bio_err, " [-no_alt_chains] [-attime timestamp]");
#ifndef OPENSSL_NO_ENGINE
BIO_printf(bio_err, " [-engine e]");
#endif
diff --git a/crypto/openssl/crypto/Makefile b/crypto/openssl/crypto/Makefile
index b839b55..11f517a 100644
--- a/crypto/openssl/crypto/Makefile
+++ b/crypto/openssl/crypto/Makefile
@@ -126,12 +126,17 @@ install:
lint:
@target=lint; $(RECURSIVE_MAKE)
-depend:
+update: local_depend
+ @[ -z "$(THIS)" ] || (set -e; target=update; $(RECURSIVE_MAKE) )
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+
+depend: local_depend
+ @[ -z "$(THIS)" ] || (set -e; target=depend; $(RECURSIVE_MAKE) )
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+local_depend:
@[ -z "$(THIS)" -o -f buildinf.h ] || touch buildinf.h # fake buildinf.h if it does not exist
@[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDE) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
@[ -z "$(THIS)" -o -s buildinf.h ] || rm buildinf.h
- @[ -z "$(THIS)" ] || (set -e; target=depend; $(RECURSIVE_MAKE) )
- @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
clean:
rm -f buildinf.h *.s *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
diff --git a/crypto/openssl/crypto/aes/Makefile b/crypto/openssl/crypto/aes/Makefile
index 45ede0a..b3a9581 100644
--- a/crypto/openssl/crypto/aes/Makefile
+++ b/crypto/openssl/crypto/aes/Makefile
@@ -106,6 +106,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/asn1/Makefile b/crypto/openssl/crypto/asn1/Makefile
index f778700..d774f78 100644
--- a/crypto/openssl/crypto/asn1/Makefile
+++ b/crypto/openssl/crypto/asn1/Makefile
@@ -93,6 +93,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by top Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/asn1/a_int.c b/crypto/openssl/crypto/asn1/a_int.c
index 70c2b8e..7e26704 100644
--- a/crypto/openssl/crypto/asn1/a_int.c
+++ b/crypto/openssl/crypto/asn1/a_int.c
@@ -124,6 +124,8 @@ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp)
else {
ret = a->length;
i = a->data[0];
+ if (ret == 1 && i == 0)
+ neg = 0;
if (!neg && (i > 127)) {
pad = 1;
pb = 0;
@@ -162,7 +164,7 @@ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp)
p += a->length - 1;
i = a->length;
/* Copy zeros to destination as long as source is zero */
- while (!*n) {
+ while (!*n && i > 1) {
*(p--) = 0;
n--;
i--;
@@ -419,7 +421,7 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
ASN1err(ASN1_F_BN_TO_ASN1_INTEGER, ERR_R_NESTED_ASN1_ERROR);
goto err;
}
- if (BN_is_negative(bn))
+ if (BN_is_negative(bn) && !BN_is_zero(bn))
ret->type = V_ASN1_NEG_INTEGER;
else
ret->type = V_ASN1_INTEGER;
diff --git a/crypto/openssl/crypto/asn1/asn1_gen.c b/crypto/openssl/crypto/asn1/asn1_gen.c
index 11b582d..6574923 100644
--- a/crypto/openssl/crypto/asn1/asn1_gen.c
+++ b/crypto/openssl/crypto/asn1/asn1_gen.c
@@ -74,6 +74,8 @@
#define ASN1_GEN_STR(str,val) {str, sizeof(str) - 1, val}
#define ASN1_FLAG_EXP_MAX 20
+/* Maximum number of nested sequences */
+#define ASN1_GEN_SEQ_MAX_DEPTH 50
/* Input formats */
@@ -110,13 +112,16 @@ typedef struct {
int exp_count;
} tag_exp_arg;
+static ASN1_TYPE *generate_v3(char *str, X509V3_CTX *cnf, int depth,
+ int *perr);
static int bitstr_cb(const char *elem, int len, void *bitstr);
static int asn1_cb(const char *elem, int len, void *bitstr);
static int append_exp(tag_exp_arg *arg, int exp_tag, int exp_class,
int exp_constructed, int exp_pad, int imp_ok);
static int parse_tagging(const char *vstart, int vlen, int *ptag,
int *pclass);
-static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf);
+static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf,
+ int depth, int *perr);
static ASN1_TYPE *asn1_str2type(const char *str, int format, int utype);
static int asn1_str2tag(const char *tagstr, int len);
@@ -133,6 +138,16 @@ ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf)
ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf)
{
+ int err = 0;
+ ASN1_TYPE *ret = generate_v3(str, cnf, 0, &err);
+ if (err)
+ ASN1err(ASN1_F_ASN1_GENERATE_V3, err);
+ return ret;
+}
+
+static ASN1_TYPE *generate_v3(char *str, X509V3_CTX *cnf, int depth,
+ int *perr)
+{
ASN1_TYPE *ret;
tag_exp_arg asn1_tags;
tag_exp_type *etmp;
@@ -152,17 +167,22 @@ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf)
asn1_tags.imp_class = -1;
asn1_tags.format = ASN1_GEN_FORMAT_ASCII;
asn1_tags.exp_count = 0;
- if (CONF_parse_list(str, ',', 1, asn1_cb, &asn1_tags) != 0)
+ if (CONF_parse_list(str, ',', 1, asn1_cb, &asn1_tags) != 0) {
+ *perr = ASN1_R_UNKNOWN_TAG;
return NULL;
+ }
if ((asn1_tags.utype == V_ASN1_SEQUENCE)
|| (asn1_tags.utype == V_ASN1_SET)) {
if (!cnf) {
- ASN1err(ASN1_F_ASN1_GENERATE_V3,
- ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG);
+ *perr = ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG;
return NULL;
}
- ret = asn1_multi(asn1_tags.utype, asn1_tags.str, cnf);
+ if (depth >= ASN1_GEN_SEQ_MAX_DEPTH) {
+ *perr = ASN1_R_ILLEGAL_NESTED_TAGGING;
+ return NULL;
+ }
+ ret = asn1_multi(asn1_tags.utype, asn1_tags.str, cnf, depth, perr);
} else
ret = asn1_str2type(asn1_tags.str, asn1_tags.format, asn1_tags.utype);
@@ -280,7 +300,7 @@ static int asn1_cb(const char *elem, int len, void *bitstr)
int tmp_tag, tmp_class;
if (elem == NULL)
- return 0;
+ return -1;
for (i = 0, p = elem; i < len; p++, i++) {
/* Look for the ':' in name value pairs */
@@ -353,7 +373,7 @@ static int asn1_cb(const char *elem, int len, void *bitstr)
break;
case ASN1_GEN_FLAG_FORMAT:
- if(!vstart) {
+ if (!vstart) {
ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_FORMAT);
return -1;
}
@@ -435,7 +455,8 @@ static int parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
/* Handle multiple types: SET and SEQUENCE */
-static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
+static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf,
+ int depth, int *perr)
{
ASN1_TYPE *ret = NULL;
STACK_OF(ASN1_TYPE) *sk = NULL;
@@ -454,7 +475,8 @@ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
goto bad;
for (i = 0; i < sk_CONF_VALUE_num(sect); i++) {
ASN1_TYPE *typ =
- ASN1_generate_v3(sk_CONF_VALUE_value(sect, i)->value, cnf);
+ generate_v3(sk_CONF_VALUE_value(sect, i)->value, cnf,
+ depth + 1, perr);
if (!typ)
goto bad;
if (!sk_ASN1_TYPE_push(sk, typ))
diff --git a/crypto/openssl/crypto/asn1/asn_mime.c b/crypto/openssl/crypto/asn1/asn_mime.c
index 7e2f28e..96110c5 100644
--- a/crypto/openssl/crypto/asn1/asn_mime.c
+++ b/crypto/openssl/crypto/asn1/asn_mime.c
@@ -289,7 +289,8 @@ int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
if ((flags & SMIME_DETACHED) && data) {
/* We want multipart/signed */
/* Generate a random boundary */
- RAND_pseudo_bytes((unsigned char *)bound, 32);
+ if (RAND_pseudo_bytes((unsigned char *)bound, 32) < 0)
+ return 0;
for (i = 0; i < 32; i++) {
c = bound[i] & 0xf;
if (c < 10)
diff --git a/crypto/openssl/crypto/asn1/bio_ndef.c b/crypto/openssl/crypto/asn1/bio_ndef.c
index 4a73ca9..31949b8 100644
--- a/crypto/openssl/crypto/asn1/bio_ndef.c
+++ b/crypto/openssl/crypto/asn1/bio_ndef.c
@@ -162,7 +162,7 @@ static int ndef_prefix(BIO *b, unsigned char **pbuf, int *plen, void *parg)
derlen = ASN1_item_ndef_i2d(ndef_aux->val, NULL, ndef_aux->it);
p = OPENSSL_malloc(derlen);
- if(!p)
+ if (!p)
return 0;
ndef_aux->derbuf = p;
@@ -232,7 +232,7 @@ static int ndef_suffix(BIO *b, unsigned char **pbuf, int *plen, void *parg)
derlen = ASN1_item_ndef_i2d(ndef_aux->val, NULL, ndef_aux->it);
p = OPENSSL_malloc(derlen);
- if(!p)
+ if (!p)
return 0;
ndef_aux->derbuf = p;
diff --git a/crypto/openssl/crypto/asn1/tasn_new.c b/crypto/openssl/crypto/asn1/tasn_new.c
index 7d2964f..b0c73be 100644
--- a/crypto/openssl/crypto/asn1/tasn_new.c
+++ b/crypto/openssl/crypto/asn1/tasn_new.c
@@ -100,9 +100,6 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
else
asn1_cb = 0;
- if (!combine)
- *pval = NULL;
-
#ifdef CRYPTO_MDEBUG
if (it->sname)
CRYPTO_push_info(it->sname);
diff --git a/crypto/openssl/crypto/asn1/tasn_prn.c b/crypto/openssl/crypto/asn1/tasn_prn.c
index 7c54f9d..5e7d53e 100644
--- a/crypto/openssl/crypto/asn1/tasn_prn.c
+++ b/crypto/openssl/crypto/asn1/tasn_prn.c
@@ -290,7 +290,7 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
for (i = 0, tt = it->templates; i < it->tcount; i++, tt++) {
const ASN1_TEMPLATE *seqtt;
seqtt = asn1_do_adb(fld, tt, 1);
- if(!seqtt)
+ if (!seqtt)
return 0;
tmpfld = asn1_get_field_ptr(fld, seqtt);
if (!asn1_template_print_ctx(out, tmpfld,
diff --git a/crypto/openssl/crypto/asn1/x_x509.c b/crypto/openssl/crypto/asn1/x_x509.c
index d51b76e..f56e837 100644
--- a/crypto/openssl/crypto/asn1/x_x509.c
+++ b/crypto/openssl/crypto/asn1/x_x509.c
@@ -177,7 +177,7 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length)
/* Save start position */
q = *pp;
- if(!a || *a == NULL) {
+ if (!a || *a == NULL) {
freeret = 1;
}
ret = d2i_X509(a, pp, length);
@@ -192,7 +192,7 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length)
goto err;
return ret;
err:
- if(freeret) {
+ if (freeret) {
X509_free(ret);
if (a)
*a = NULL;
diff --git a/crypto/openssl/crypto/bf/Makefile b/crypto/openssl/crypto/bf/Makefile
index d01bfaa..6dd2015 100644
--- a/crypto/openssl/crypto/bf/Makefile
+++ b/crypto/openssl/crypto/bf/Makefile
@@ -72,6 +72,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/bio/Makefile b/crypto/openssl/crypto/bio/Makefile
index c395d80..ef526f6 100644
--- a/crypto/openssl/crypto/bio/Makefile
+++ b/crypto/openssl/crypto/bio/Makefile
@@ -73,6 +73,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/bio/b_print.c b/crypto/openssl/crypto/bio/b_print.c
index c2cf6e6..7c81e25 100644
--- a/crypto/openssl/crypto/bio/b_print.c
+++ b/crypto/openssl/crypto/bio/b_print.c
@@ -704,32 +704,29 @@ doapr_outch(char **sbuffer,
/* If we haven't at least one buffer, someone has doe a big booboo */
assert(*sbuffer != NULL || buffer != NULL);
- if (buffer) {
- while (*currlen >= *maxlen) {
- if (*buffer == NULL) {
- if (*maxlen == 0)
- *maxlen = 1024;
- *buffer = OPENSSL_malloc(*maxlen);
- if(!*buffer) {
- /* Panic! Can't really do anything sensible. Just return */
- return;
- }
- if (*currlen > 0) {
- assert(*sbuffer != NULL);
- memcpy(*buffer, *sbuffer, *currlen);
- }
- *sbuffer = NULL;
- } else {
- *maxlen += 1024;
- *buffer = OPENSSL_realloc(*buffer, *maxlen);
- if(!*buffer) {
- /* Panic! Can't really do anything sensible. Just return */
- return;
- }
+ /* |currlen| must always be <= |*maxlen| */
+ assert(*currlen <= *maxlen);
+
+ if (buffer && *currlen == *maxlen) {
+ *maxlen += 1024;
+ if (*buffer == NULL) {
+ *buffer = OPENSSL_malloc(*maxlen);
+ if (!*buffer) {
+ /* Panic! Can't really do anything sensible. Just return */
+ return;
+ }
+ if (*currlen > 0) {
+ assert(*sbuffer != NULL);
+ memcpy(*buffer, *sbuffer, *currlen);
+ }
+ *sbuffer = NULL;
+ } else {
+ *buffer = OPENSSL_realloc(*buffer, *maxlen);
+ if (!*buffer) {
+ /* Panic! Can't really do anything sensible. Just return */
+ return;
}
}
- /* What to do if *buffer is NULL? */
- assert(*sbuffer != NULL || *buffer != NULL);
}
if (*currlen < *maxlen) {
diff --git a/crypto/openssl/crypto/bio/bf_nbio.c b/crypto/openssl/crypto/bio/bf_nbio.c
index da88a8a..a04f32a 100644
--- a/crypto/openssl/crypto/bio/bf_nbio.c
+++ b/crypto/openssl/crypto/bio/bf_nbio.c
@@ -139,7 +139,8 @@ static int nbiof_read(BIO *b, char *out, int outl)
BIO_clear_retry_flags(b);
#if 1
- RAND_pseudo_bytes(&n, 1);
+ if (RAND_pseudo_bytes(&n, 1) < 0)
+ return -1;
num = (n & 0x07);
if (outl > num)
@@ -178,7 +179,8 @@ static int nbiof_write(BIO *b, const char *in, int inl)
num = nt->lwn;
nt->lwn = 0;
} else {
- RAND_pseudo_bytes(&n, 1);
+ if (RAND_pseudo_bytes(&n, 1) < 0)
+ return -1;
num = (n & 7);
}
diff --git a/crypto/openssl/crypto/bio/bio_lib.c b/crypto/openssl/crypto/bio/bio_lib.c
index 5267010..07934f8 100644
--- a/crypto/openssl/crypto/bio/bio_lib.c
+++ b/crypto/openssl/crypto/bio/bio_lib.c
@@ -536,8 +536,10 @@ BIO *BIO_dup_chain(BIO *in)
/* copy app data */
if (!CRYPTO_dup_ex_data(CRYPTO_EX_INDEX_BIO, &new_bio->ex_data,
- &bio->ex_data))
+ &bio->ex_data)) {
+ BIO_free(new_bio);
goto err;
+ }
if (ret == NULL) {
eoc = new_bio;
@@ -549,8 +551,8 @@ BIO *BIO_dup_chain(BIO *in)
}
return (ret);
err:
- if (ret != NULL)
- BIO_free(ret);
+ BIO_free_all(ret);
+
return (NULL);
}
diff --git a/crypto/openssl/crypto/bio/bss_dgram.c b/crypto/openssl/crypto/bio/bss_dgram.c
index b495db2..e3e3dd0 100644
--- a/crypto/openssl/crypto/bio/bss_dgram.c
+++ b/crypto/openssl/crypto/bio/bss_dgram.c
@@ -299,16 +299,17 @@ static void dgram_adjust_rcv_timeout(BIO *b)
/* Calculate time left until timer expires */
memcpy(&timeleft, &(data->next_timeout), sizeof(struct timeval));
- timeleft.tv_sec -= timenow.tv_sec;
- timeleft.tv_usec -= timenow.tv_usec;
- if (timeleft.tv_usec < 0) {
+ if (timeleft.tv_usec < timenow.tv_usec) {
+ timeleft.tv_usec = 1000000 - timenow.tv_usec + timeleft.tv_usec;
timeleft.tv_sec--;
- timeleft.tv_usec += 1000000;
+ } else {
+ timeleft.tv_usec -= timenow.tv_usec;
}
-
- if (timeleft.tv_sec < 0) {
+ if (timeleft.tv_sec < timenow.tv_sec) {
timeleft.tv_sec = 0;
timeleft.tv_usec = 1;
+ } else {
+ timeleft.tv_sec -= timenow.tv_sec;
}
/*
@@ -953,7 +954,7 @@ BIO *BIO_new_dgram_sctp(int fd, int close_flag)
*/
sockopt_len = (socklen_t) (sizeof(sctp_assoc_t) + 256 * sizeof(uint8_t));
authchunks = OPENSSL_malloc(sockopt_len);
- if(!authchunks) {
+ if (!authchunks) {
BIO_vfree(bio);
return (NULL);
}
@@ -1293,7 +1294,7 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
(socklen_t) (sizeof(sctp_assoc_t) + 256 * sizeof(uint8_t));
authchunks = OPENSSL_malloc(optlen);
if (!authchunks) {
- BIOerr(BIO_F_DGRAM_SCTP_READ, ERR_R_MALLOC_ERROR);
+ BIOerr(BIO_F_DGRAM_SCTP_READ, ERR_R_MALLOC_FAILURE);
return -1;
}
memset(authchunks, 0, sizeof(optlen));
@@ -1364,8 +1365,8 @@ static int dgram_sctp_write(BIO *b, const char *in, int inl)
if (data->save_shutdown && !BIO_dgram_sctp_wait_for_dry(b)) {
char *tmp;
data->saved_message.bio = b;
- if(!(tmp = OPENSSL_malloc(inl))) {
- BIOerr(BIO_F_DGRAM_SCTP_WRITE, ERR_R_MALLOC_ERROR);
+ if (!(tmp = OPENSSL_malloc(inl))) {
+ BIOerr(BIO_F_DGRAM_SCTP_WRITE, ERR_R_MALLOC_FAILURE);
return -1;
}
if (data->saved_message.data)
diff --git a/crypto/openssl/crypto/bn/Makefile b/crypto/openssl/crypto/bn/Makefile
index 6dd136b..3d0158c 100644
--- a/crypto/openssl/crypto/bn/Makefile
+++ b/crypto/openssl/crypto/bn/Makefile
@@ -167,6 +167,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: bn_prime.h depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/bn/bn.h b/crypto/openssl/crypto/bn/bn.h
index 7d57e98..47d8c71 100644
--- a/crypto/openssl/crypto/bn/bn.h
+++ b/crypto/openssl/crypto/bn/bn.h
@@ -797,6 +797,7 @@ int RAND_pseudo_bytes(unsigned char *buf, int num);
* wouldn't be constructed with top!=dmax. */ \
BN_ULONG *_not_const; \
memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \
+ /* Debug only - safe to ignore error return */ \
RAND_pseudo_bytes(&_tmp_char, 1); \
memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \
(_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \
@@ -910,6 +911,7 @@ void ERR_load_BN_strings(void);
# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135
# define BN_F_BN_GF2M_MOD_SQR 136
# define BN_F_BN_GF2M_MOD_SQRT 137
+# define BN_F_BN_LSHIFT 145
# define BN_F_BN_MOD_EXP2_MONT 118
# define BN_F_BN_MOD_EXP_MONT 109
# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124
@@ -925,12 +927,14 @@ void ERR_load_BN_strings(void);
# define BN_F_BN_NEW 113
# define BN_F_BN_RAND 114
# define BN_F_BN_RAND_RANGE 122
+# define BN_F_BN_RSHIFT 146
# define BN_F_BN_USUB 115
/* Reason codes. */
# define BN_R_ARG2_LT_ARG3 100
# define BN_R_BAD_RECIPROCAL 101
# define BN_R_BIGNUM_TOO_LONG 114
+# define BN_R_BITS_TOO_SMALL 118
# define BN_R_CALLED_WITH_EVEN_MODULUS 102
# define BN_R_DIV_BY_ZERO 103
# define BN_R_ENCODING_ERROR 104
@@ -938,6 +942,7 @@ void ERR_load_BN_strings(void);
# define BN_R_INPUT_NOT_REDUCED 110
# define BN_R_INVALID_LENGTH 106
# define BN_R_INVALID_RANGE 115
+# define BN_R_INVALID_SHIFT 119
# define BN_R_NOT_A_SQUARE 111
# define BN_R_NOT_INITIALIZED 107
# define BN_R_NO_INVERSE 108
diff --git a/crypto/openssl/crypto/bn/bn_err.c b/crypto/openssl/crypto/bn/bn_err.c
index faa7e22..e7a7038 100644
--- a/crypto/openssl/crypto/bn/bn_err.c
+++ b/crypto/openssl/crypto/bn/bn_err.c
@@ -1,6 +1,6 @@
/* crypto/bn/bn_err.c */
/* ====================================================================
- * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -94,6 +94,7 @@ static ERR_STRING_DATA BN_str_functs[] = {
{ERR_FUNC(BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR), "BN_GF2m_mod_solve_quad_arr"},
{ERR_FUNC(BN_F_BN_GF2M_MOD_SQR), "BN_GF2m_mod_sqr"},
{ERR_FUNC(BN_F_BN_GF2M_MOD_SQRT), "BN_GF2m_mod_sqrt"},
+ {ERR_FUNC(BN_F_BN_LSHIFT), "BN_lshift"},
{ERR_FUNC(BN_F_BN_MOD_EXP2_MONT), "BN_mod_exp2_mont"},
{ERR_FUNC(BN_F_BN_MOD_EXP_MONT), "BN_mod_exp_mont"},
{ERR_FUNC(BN_F_BN_MOD_EXP_MONT_CONSTTIME), "BN_mod_exp_mont_consttime"},
@@ -109,6 +110,7 @@ static ERR_STRING_DATA BN_str_functs[] = {
{ERR_FUNC(BN_F_BN_NEW), "BN_new"},
{ERR_FUNC(BN_F_BN_RAND), "BN_rand"},
{ERR_FUNC(BN_F_BN_RAND_RANGE), "BN_rand_range"},
+ {ERR_FUNC(BN_F_BN_RSHIFT), "BN_rshift"},
{ERR_FUNC(BN_F_BN_USUB), "BN_usub"},
{0, NULL}
};
@@ -117,6 +119,7 @@ static ERR_STRING_DATA BN_str_reasons[] = {
{ERR_REASON(BN_R_ARG2_LT_ARG3), "arg2 lt arg3"},
{ERR_REASON(BN_R_BAD_RECIPROCAL), "bad reciprocal"},
{ERR_REASON(BN_R_BIGNUM_TOO_LONG), "bignum too long"},
+ {ERR_REASON(BN_R_BITS_TOO_SMALL), "bits too small"},
{ERR_REASON(BN_R_CALLED_WITH_EVEN_MODULUS), "called with even modulus"},
{ERR_REASON(BN_R_DIV_BY_ZERO), "div by zero"},
{ERR_REASON(BN_R_ENCODING_ERROR), "encoding error"},
@@ -125,6 +128,7 @@ static ERR_STRING_DATA BN_str_reasons[] = {
{ERR_REASON(BN_R_INPUT_NOT_REDUCED), "input not reduced"},
{ERR_REASON(BN_R_INVALID_LENGTH), "invalid length"},
{ERR_REASON(BN_R_INVALID_RANGE), "invalid range"},
+ {ERR_REASON(BN_R_INVALID_SHIFT), "invalid shift"},
{ERR_REASON(BN_R_NOT_A_SQUARE), "not a square"},
{ERR_REASON(BN_R_NOT_INITIALIZED), "not initialized"},
{ERR_REASON(BN_R_NO_INVERSE), "no inverse"},
diff --git a/crypto/openssl/crypto/bn/bn_gf2m.c b/crypto/openssl/crypto/bn/bn_gf2m.c
index aeee49a..a0ba8de 100644
--- a/crypto/openssl/crypto/bn/bn_gf2m.c
+++ b/crypto/openssl/crypto/bn/bn_gf2m.c
@@ -694,9 +694,10 @@ int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
}
# else
{
- int i, ubits = BN_num_bits(u), vbits = BN_num_bits(v), /* v is copy
- * of p */
- top = p->top;
+ int i;
+ int ubits = BN_num_bits(u);
+ int vbits = BN_num_bits(v); /* v is copy of p */
+ int top = p->top;
BN_ULONG *udp, *bdp, *vdp, *cdp;
bn_wexpand(u, top);
@@ -740,8 +741,12 @@ int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
ubits--;
}
- if (ubits <= BN_BITS2 && udp[0] == 1)
- break;
+ if (ubits <= BN_BITS2) {
+ if (udp[0] == 0) /* poly was reducible */
+ goto err;
+ if (udp[0] == 1)
+ break;
+ }
if (ubits < vbits) {
i = ubits;
diff --git a/crypto/openssl/crypto/bn/bn_lcl.h b/crypto/openssl/crypto/bn/bn_lcl.h
index 1059d1d..904a723 100644
--- a/crypto/openssl/crypto/bn/bn_lcl.h
+++ b/crypto/openssl/crypto/bn/bn_lcl.h
@@ -276,7 +276,7 @@ unsigned __int64 _umul128(unsigned __int64 a, unsigned __int64 b,
# endif
# elif defined(__mips) && (defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG))
# if defined(__GNUC__) && __GNUC__>=2
-# if __GNUC__>=4 && __GNUC_MINOR__>=4
+# if __GNUC__>4 || (__GNUC__>=4 && __GNUC_MINOR__>=4)
/* "h" constraint is no more since 4.4 */
# define BN_UMULT_HIGH(a,b) (((__uint128_t)(a)*(b))>>64)
# define BN_UMULT_LOHI(low,high,a,b) ({ \
diff --git a/crypto/openssl/crypto/bn/bn_print.c b/crypto/openssl/crypto/bn/bn_print.c
index 4dcaae3..ab10b95 100644
--- a/crypto/openssl/crypto/bn/bn_print.c
+++ b/crypto/openssl/crypto/bn/bn_print.c
@@ -71,7 +71,12 @@ char *BN_bn2hex(const BIGNUM *a)
char *buf;
char *p;
- buf = (char *)OPENSSL_malloc(a->top * BN_BYTES * 2 + 2);
+ if (a->neg && BN_is_zero(a)) {
+ /* "-0" == 3 bytes including NULL terminator */
+ buf = OPENSSL_malloc(3);
+ } else {
+ buf = OPENSSL_malloc(a->top * BN_BYTES * 2 + 2);
+ }
if (buf == NULL) {
BNerr(BN_F_BN_BN2HEX, ERR_R_MALLOC_FAILURE);
goto err;
diff --git a/crypto/openssl/crypto/bn/bn_rand.c b/crypto/openssl/crypto/bn/bn_rand.c
index 7ac71ec..f9fb2e9 100644
--- a/crypto/openssl/crypto/bn/bn_rand.c
+++ b/crypto/openssl/crypto/bn/bn_rand.c
@@ -121,6 +121,11 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)
int ret = 0, bit, bytes, mask;
time_t tim;
+ if (bits < 0 || (bits == 1 && top > 0)) {
+ BNerr(BN_F_BNRAND, BN_R_BITS_TOO_SMALL);
+ return 0;
+ }
+
if (bits == 0) {
BN_zero(rnd);
return 1;
@@ -157,7 +162,8 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)
unsigned char c;
for (i = 0; i < bytes; i++) {
- RAND_pseudo_bytes(&c, 1);
+ if (RAND_pseudo_bytes(&c, 1) < 0)
+ goto err;
if (c >= 128 && i > 0)
buf[i] = buf[i - 1];
else if (c < 42)
@@ -168,7 +174,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)
}
#endif
- if (top != -1) {
+ if (top >= 0) {
if (top) {
if (bit == 0) {
buf[0] = 1;
diff --git a/crypto/openssl/crypto/bn/bn_shift.c b/crypto/openssl/crypto/bn/bn_shift.c
index 4f3e8ff..9673d9a 100644
--- a/crypto/openssl/crypto/bn/bn_shift.c
+++ b/crypto/openssl/crypto/bn/bn_shift.c
@@ -137,6 +137,11 @@ int BN_lshift(BIGNUM *r, const BIGNUM *a, int n)
bn_check_top(r);
bn_check_top(a);
+ if (n < 0) {
+ BNerr(BN_F_BN_LSHIFT, BN_R_INVALID_SHIFT);
+ return 0;
+ }
+
r->neg = a->neg;
nw = n / BN_BITS2;
if (bn_wexpand(r, a->top + nw + 1) == NULL)
@@ -174,6 +179,11 @@ int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
bn_check_top(r);
bn_check_top(a);
+ if (n < 0) {
+ BNerr(BN_F_BN_RSHIFT, BN_R_INVALID_SHIFT);
+ return 0;
+ }
+
nw = n / BN_BITS2;
rb = n % BN_BITS2;
lb = BN_BITS2 - rb;
diff --git a/crypto/openssl/crypto/buffer/Makefile b/crypto/openssl/crypto/buffer/Makefile
index 2efba47..352efb8 100644
--- a/crypto/openssl/crypto/buffer/Makefile
+++ b/crypto/openssl/crypto/buffer/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/buffer/buffer.c b/crypto/openssl/crypto/buffer/buffer.c
index d287e34..eff3e08 100644
--- a/crypto/openssl/crypto/buffer/buffer.c
+++ b/crypto/openssl/crypto/buffer/buffer.c
@@ -88,7 +88,7 @@ void BUF_MEM_free(BUF_MEM *a)
return;
if (a->data != NULL) {
- memset(a->data, 0, (unsigned int)a->max);
+ OPENSSL_cleanse(a->data, a->max);
OPENSSL_free(a->data);
}
OPENSSL_free(a);
diff --git a/crypto/openssl/crypto/camellia/Makefile b/crypto/openssl/crypto/camellia/Makefile
index 6ce6fc9..228f1dc 100644
--- a/crypto/openssl/crypto/camellia/Makefile
+++ b/crypto/openssl/crypto/camellia/Makefile
@@ -73,6 +73,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/cast/Makefile b/crypto/openssl/crypto/cast/Makefile
index f3f4859..4c4b5e9 100644
--- a/crypto/openssl/crypto/cast/Makefile
+++ b/crypto/openssl/crypto/cast/Makefile
@@ -69,6 +69,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/cmac/Makefile b/crypto/openssl/crypto/cmac/Makefile
index 54e7cc3..6a28408 100644
--- a/crypto/openssl/crypto/cmac/Makefile
+++ b/crypto/openssl/crypto/cmac/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/cmac/cmac.c b/crypto/openssl/crypto/cmac/cmac.c
index c5597a3..774e6dc 100644
--- a/crypto/openssl/crypto/cmac/cmac.c
+++ b/crypto/openssl/crypto/cmac/cmac.c
@@ -126,6 +126,8 @@ EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx)
void CMAC_CTX_free(CMAC_CTX *ctx)
{
+ if (!ctx)
+ return;
CMAC_CTX_cleanup(ctx);
OPENSSL_free(ctx);
}
diff --git a/crypto/openssl/crypto/cms/Makefile b/crypto/openssl/crypto/cms/Makefile
index 9820adb..b124b5d 100644
--- a/crypto/openssl/crypto/cms/Makefile
+++ b/crypto/openssl/crypto/cms/Makefile
@@ -67,6 +67,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/cms/cms_pwri.c b/crypto/openssl/crypto/cms/cms_pwri.c
index 076b545..a8322dc 100644
--- a/crypto/openssl/crypto/cms/cms_pwri.c
+++ b/crypto/openssl/crypto/cms/cms_pwri.c
@@ -231,7 +231,7 @@ static int kek_unwrap_key(unsigned char *out, size_t *outlen,
return 0;
}
tmp = OPENSSL_malloc(inlen);
- if(!tmp)
+ if (!tmp)
return 0;
/* setup IV by decrypting last two blocks */
EVP_DecryptUpdate(ctx, tmp + inlen - 2 * blocklen, &outl,
@@ -297,8 +297,9 @@ static int kek_wrap_key(unsigned char *out, size_t *outlen,
out[3] = in[2] ^ 0xFF;
memcpy(out + 4, in, inlen);
/* Add random padding to end */
- if (olen > inlen + 4)
- RAND_pseudo_bytes(out + 4 + inlen, olen - 4 - inlen);
+ if (olen > inlen + 4
+ && RAND_pseudo_bytes(out + 4 + inlen, olen - 4 - inlen) < 0)
+ return 0;
/* Encrypt twice */
EVP_EncryptUpdate(ctx, out, &dummy, out, olen);
EVP_EncryptUpdate(ctx, out, &dummy, out, olen);
diff --git a/crypto/openssl/crypto/cms/cms_smime.c b/crypto/openssl/crypto/cms/cms_smime.c
index 8851603..8b37560 100644
--- a/crypto/openssl/crypto/cms/cms_smime.c
+++ b/crypto/openssl/crypto/cms/cms_smime.c
@@ -131,7 +131,7 @@ static void do_free_upto(BIO *f, BIO *upto)
BIO_free(f);
f = tbio;
}
- while (f != upto);
+ while (f && f != upto);
} else
BIO_free_all(f);
}
diff --git a/crypto/openssl/crypto/comp/Makefile b/crypto/openssl/crypto/comp/Makefile
index efda832..a1e9464 100644
--- a/crypto/openssl/crypto/comp/Makefile
+++ b/crypto/openssl/crypto/comp/Makefile
@@ -64,6 +64,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/conf/Makefile b/crypto/openssl/crypto/conf/Makefile
index 78bb324..d5f5c58 100644
--- a/crypto/openssl/crypto/conf/Makefile
+++ b/crypto/openssl/crypto/conf/Makefile
@@ -64,6 +64,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/cryptlib.c b/crypto/openssl/crypto/cryptlib.c
index 6353bbe..c654a5c 100644
--- a/crypto/openssl/crypto/cryptlib.c
+++ b/crypto/openssl/crypto/cryptlib.c
@@ -806,8 +806,6 @@ int OPENSSL_isservice(void)
if (_OPENSSL_isservice.p != (void *)-1)
return (*_OPENSSL_isservice.f) ();
- (void)GetDesktopWindow(); /* return value is ignored */
-
h = GetProcessWindowStation();
if (h == NULL)
return -1;
diff --git a/crypto/openssl/crypto/des/Makefile b/crypto/openssl/crypto/des/Makefile
index a6e1001..fbc77c1 100644
--- a/crypto/openssl/crypto/des/Makefile
+++ b/crypto/openssl/crypto/des/Makefile
@@ -94,6 +94,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/des/des.c b/crypto/openssl/crypto/des/des.c
index 2bff281..586aed7 100644
--- a/crypto/openssl/crypto/des/des.c
+++ b/crypto/openssl/crypto/des/des.c
@@ -455,8 +455,10 @@ void doencryption(void)
rem = l % 8;
len = l - rem;
if (feof(DES_IN)) {
- for (i = 7 - rem; i > 0; i--)
- RAND_pseudo_bytes(buf + l++, 1);
+ for (i = 7 - rem; i > 0; i--) {
+ if (RAND_pseudo_bytes(buf + l++, 1) < 0)
+ goto problems;
+ }
buf[l++] = rem;
ex = 1;
len += rem;
diff --git a/crypto/openssl/crypto/des/enc_writ.c b/crypto/openssl/crypto/des/enc_writ.c
index b4eecc3..bfaabde 100644
--- a/crypto/openssl/crypto/des/enc_writ.c
+++ b/crypto/openssl/crypto/des/enc_writ.c
@@ -96,6 +96,9 @@ int DES_enc_write(int fd, const void *_buf, int len,
const unsigned char *cp;
static int start = 1;
+ if (len < 0)
+ return -1;
+
if (outbuf == NULL) {
outbuf = OPENSSL_malloc(BSIZE + HDRSIZE);
if (outbuf == NULL)
@@ -132,7 +135,9 @@ int DES_enc_write(int fd, const void *_buf, int len,
if (len < 8) {
cp = shortbuf;
memcpy(shortbuf, buf, len);
- RAND_pseudo_bytes(shortbuf + len, 8 - len);
+ if (RAND_pseudo_bytes(shortbuf + len, 8 - len) < 0) {
+ return -1;
+ }
rnum = 8;
} else {
cp = buf;
diff --git a/crypto/openssl/crypto/dh/Makefile b/crypto/openssl/crypto/dh/Makefile
index f23b4f7..6d574f4 100644
--- a/crypto/openssl/crypto/dh/Makefile
+++ b/crypto/openssl/crypto/dh/Makefile
@@ -63,6 +63,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/dh/dh_ameth.c b/crypto/openssl/crypto/dh/dh_ameth.c
index 1dec109..873eb2e 100644
--- a/crypto/openssl/crypto/dh/dh_ameth.c
+++ b/crypto/openssl/crypto/dh/dh_ameth.c
@@ -135,7 +135,7 @@ static int dh_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
dh = pkey->pkey.dh;
str = ASN1_STRING_new();
- if(!str) {
+ if (!str) {
DHerr(DH_F_DH_PUB_ENCODE, ERR_R_MALLOC_FAILURE);
goto err;
}
diff --git a/crypto/openssl/crypto/dsa/Makefile b/crypto/openssl/crypto/dsa/Makefile
index 5fef4ca..8109201 100644
--- a/crypto/openssl/crypto/dsa/Makefile
+++ b/crypto/openssl/crypto/dsa/Makefile
@@ -63,6 +63,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/dsa/dsa_gen.c b/crypto/openssl/crypto/dsa/dsa_gen.c
index c808ab6..d686ab0 100644
--- a/crypto/openssl/crypto/dsa/dsa_gen.c
+++ b/crypto/openssl/crypto/dsa/dsa_gen.c
@@ -202,7 +202,8 @@ int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
goto err;
if (!seed_len) {
- RAND_pseudo_bytes(seed, qsize);
+ if (RAND_pseudo_bytes(seed, qsize) < 0)
+ goto err;
seed_is_random = 1;
} else {
seed_is_random = 0;
diff --git a/crypto/openssl/crypto/dsa/dsa_ossl.c b/crypto/openssl/crypto/dsa/dsa_ossl.c
index b30eab0..6edb26d 100644
--- a/crypto/openssl/crypto/dsa/dsa_ossl.c
+++ b/crypto/openssl/crypto/dsa/dsa_ossl.c
@@ -106,23 +106,23 @@ static DSA_METHOD openssl_dsa_meth = {
#define DSA_MOD_EXP(err_instr,dsa,rr,a1,p1,a2,p2,m,ctx,in_mont) \
do { \
int _tmp_res53; \
- if((dsa)->meth->dsa_mod_exp) \
+ if ((dsa)->meth->dsa_mod_exp) \
_tmp_res53 = (dsa)->meth->dsa_mod_exp((dsa), (rr), (a1), (p1), \
(a2), (p2), (m), (ctx), (in_mont)); \
else \
_tmp_res53 = BN_mod_exp2_mont((rr), (a1), (p1), (a2), (p2), \
(m), (ctx), (in_mont)); \
- if(!_tmp_res53) err_instr; \
+ if (!_tmp_res53) err_instr; \
} while(0)
#define DSA_BN_MOD_EXP(err_instr,dsa,r,a,p,m,ctx,m_ctx) \
do { \
int _tmp_res53; \
- if((dsa)->meth->bn_mod_exp) \
+ if ((dsa)->meth->bn_mod_exp) \
_tmp_res53 = (dsa)->meth->bn_mod_exp((dsa), (r), (a), (p), \
(m), (ctx), (m_ctx)); \
else \
_tmp_res53 = BN_mod_exp_mont((r), (a), (p), (m), (ctx), (m_ctx)); \
- if(!_tmp_res53) err_instr; \
+ if (!_tmp_res53) err_instr; \
} while(0)
const DSA_METHOD *DSA_OpenSSL(void)
diff --git a/crypto/openssl/crypto/dso/Makefile b/crypto/openssl/crypto/dso/Makefile
index fb2709e..36b8ead 100644
--- a/crypto/openssl/crypto/dso/Makefile
+++ b/crypto/openssl/crypto/dso/Makefile
@@ -63,6 +63,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/dso/dso_lib.c b/crypto/openssl/crypto/dso/dso_lib.c
index d2a48bb..09b8eaf 100644
--- a/crypto/openssl/crypto/dso/dso_lib.c
+++ b/crypto/openssl/crypto/dso/dso_lib.c
@@ -285,7 +285,7 @@ DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname)
* honest. For one thing, I think I have to return a negative value for any
* error because possible DSO_ctrl() commands may return values such as
* "size"s that can legitimately be zero (making the standard
- * "if(DSO_cmd(...))" form that works almost everywhere else fail at odd
+ * "if (DSO_cmd(...))" form that works almost everywhere else fail at odd
* times. I'd prefer "output" values to be passed by reference and the return
* value as success/failure like usual ... but we conform when we must... :-)
*/
diff --git a/crypto/openssl/crypto/ec/Makefile b/crypto/openssl/crypto/ec/Makefile
index f85fc84..2753b28 100644
--- a/crypto/openssl/crypto/ec/Makefile
+++ b/crypto/openssl/crypto/ec/Makefile
@@ -70,6 +70,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/ec/ec2_oct.c b/crypto/openssl/crypto/ec/ec2_oct.c
index c245d88..0d04cc6 100644
--- a/crypto/openssl/crypto/ec/ec2_oct.c
+++ b/crypto/openssl/crypto/ec/ec2_oct.c
@@ -387,7 +387,7 @@ int ec_GF2m_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
}
/* test required by X9.62 */
- if (!EC_POINT_is_on_curve(group, point, ctx)) {
+ if (EC_POINT_is_on_curve(group, point, ctx) <= 0) {
ECerr(EC_F_EC_GF2M_SIMPLE_OCT2POINT, EC_R_POINT_IS_NOT_ON_CURVE);
goto err;
}
diff --git a/crypto/openssl/crypto/ec/ec_asn1.c b/crypto/openssl/crypto/ec/ec_asn1.c
index b4b0e9f..4ad8494 100644
--- a/crypto/openssl/crypto/ec/ec_asn1.c
+++ b/crypto/openssl/crypto/ec/ec_asn1.c
@@ -1114,7 +1114,7 @@ int i2d_ECPrivateKey(EC_KEY *a, unsigned char **out)
{
int ret = 0, ok = 0;
unsigned char *buffer = NULL;
- size_t buf_len = 0, tmp_len;
+ size_t buf_len = 0, tmp_len, bn_len;
EC_PRIVATEKEY *priv_key = NULL;
if (a == NULL || a->group == NULL || a->priv_key == NULL ||
@@ -1130,18 +1130,32 @@ int i2d_ECPrivateKey(EC_KEY *a, unsigned char **out)
priv_key->version = a->version;
- buf_len = (size_t)BN_num_bytes(a->priv_key);
+ bn_len = (size_t)BN_num_bytes(a->priv_key);
+
+ /* Octetstring may need leading zeros if BN is to short */
+
+ buf_len = (EC_GROUP_get_degree(a->group) + 7) / 8;
+
+ if (bn_len > buf_len) {
+ ECerr(EC_F_I2D_ECPRIVATEKEY, EC_R_BUFFER_TOO_SMALL);
+ goto err;
+ }
+
buffer = OPENSSL_malloc(buf_len);
if (buffer == NULL) {
ECerr(EC_F_I2D_ECPRIVATEKEY, ERR_R_MALLOC_FAILURE);
goto err;
}
- if (!BN_bn2bin(a->priv_key, buffer)) {
+ if (!BN_bn2bin(a->priv_key, buffer + buf_len - bn_len)) {
ECerr(EC_F_I2D_ECPRIVATEKEY, ERR_R_BN_LIB);
goto err;
}
+ if (buf_len - bn_len > 0) {
+ memset(buffer, 0, buf_len - bn_len);
+ }
+
if (!M_ASN1_OCTET_STRING_set(priv_key->privateKey, buffer, buf_len)) {
ECerr(EC_F_I2D_ECPRIVATEKEY, ERR_R_ASN1_LIB);
goto err;
diff --git a/crypto/openssl/crypto/ec/ec_check.c b/crypto/openssl/crypto/ec/ec_check.c
index d3f5349..dd6f0ac 100644
--- a/crypto/openssl/crypto/ec/ec_check.c
+++ b/crypto/openssl/crypto/ec/ec_check.c
@@ -85,7 +85,7 @@ int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx)
ECerr(EC_F_EC_GROUP_CHECK, EC_R_UNDEFINED_GENERATOR);
goto err;
}
- if (!EC_POINT_is_on_curve(group, group->generator, ctx)) {
+ if (EC_POINT_is_on_curve(group, group->generator, ctx) <= 0) {
ECerr(EC_F_EC_GROUP_CHECK, EC_R_POINT_IS_NOT_ON_CURVE);
goto err;
}
diff --git a/crypto/openssl/crypto/ec/ec_key.c b/crypto/openssl/crypto/ec/ec_key.c
index ebdffc8..55ce3fe 100644
--- a/crypto/openssl/crypto/ec/ec_key.c
+++ b/crypto/openssl/crypto/ec/ec_key.c
@@ -314,7 +314,7 @@ int EC_KEY_check_key(const EC_KEY *eckey)
goto err;
/* testing whether the pub_key is on the elliptic curve */
- if (!EC_POINT_is_on_curve(eckey->group, eckey->pub_key, ctx)) {
+ if (EC_POINT_is_on_curve(eckey->group, eckey->pub_key, ctx) <= 0) {
ECerr(EC_F_EC_KEY_CHECK_KEY, EC_R_POINT_IS_NOT_ON_CURVE);
goto err;
}
diff --git a/crypto/openssl/crypto/ec/ec_lcl.h b/crypto/openssl/crypto/ec/ec_lcl.h
index 319e651..d79ed1e 100644
--- a/crypto/openssl/crypto/ec/ec_lcl.h
+++ b/crypto/openssl/crypto/ec/ec_lcl.h
@@ -451,14 +451,6 @@ int ec_GF2m_simple_mul(const EC_GROUP *group, EC_POINT *r,
int ec_GF2m_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
int ec_GF2m_have_precompute_mult(const EC_GROUP *group);
-/* method functions in ec2_mult.c */
-int ec_GF2m_simple_mul(const EC_GROUP *group, EC_POINT *r,
- const BIGNUM *scalar, size_t num,
- const EC_POINT *points[], const BIGNUM *scalars[],
- BN_CTX *);
-int ec_GF2m_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
-int ec_GF2m_have_precompute_mult(const EC_GROUP *group);
-
#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
/* method functions in ecp_nistp224.c */
int ec_GFp_nistp224_group_init(EC_GROUP *group);
diff --git a/crypto/openssl/crypto/ec/ec_lib.c b/crypto/openssl/crypto/ec/ec_lib.c
index 9a54f41..e227520 100644
--- a/crypto/openssl/crypto/ec/ec_lib.c
+++ b/crypto/openssl/crypto/ec/ec_lib.c
@@ -934,6 +934,13 @@ int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *point)
return group->meth->is_at_infinity(group, point);
}
+/*
+ * Check whether an EC_POINT is on the curve or not. Note that the return
+ * value for this function should NOT be treated as a boolean. Return values:
+ * 1: The point is on the curve
+ * 0: The point is not on the curve
+ * -1: An error occurred
+ */
int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point,
BN_CTX *ctx)
{
diff --git a/crypto/openssl/crypto/ec/eck_prn.c b/crypto/openssl/crypto/ec/eck_prn.c
index a911a0a..5ef12ec 100644
--- a/crypto/openssl/crypto/ec/eck_prn.c
+++ b/crypto/openssl/crypto/ec/eck_prn.c
@@ -338,12 +338,14 @@ static int print_bin(BIO *fp, const char *name, const unsigned char *buf,
if (buf == NULL)
return 1;
- if (off) {
+ if (off > 0) {
if (off > 128)
off = 128;
memset(str, ' ', off);
if (BIO_write(fp, str, off) <= 0)
return 0;
+ } else {
+ off = 0;
}
if (BIO_printf(fp, "%s", name) <= 0)
diff --git a/crypto/openssl/crypto/ec/ecp_oct.c b/crypto/openssl/crypto/ec/ecp_oct.c
index e5cec8b..1bc3f39 100644
--- a/crypto/openssl/crypto/ec/ecp_oct.c
+++ b/crypto/openssl/crypto/ec/ecp_oct.c
@@ -413,7 +413,7 @@ int ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
}
/* test required by X9.62 */
- if (!EC_POINT_is_on_curve(group, point, ctx)) {
+ if (EC_POINT_is_on_curve(group, point, ctx) <= 0) {
ECerr(EC_F_EC_GFP_SIMPLE_OCT2POINT, EC_R_POINT_IS_NOT_ON_CURVE);
goto err;
}
diff --git a/crypto/openssl/crypto/ec/ectest.c b/crypto/openssl/crypto/ec/ectest.c
index a18b327..fede530 100644
--- a/crypto/openssl/crypto/ec/ectest.c
+++ b/crypto/openssl/crypto/ec/ectest.c
@@ -412,7 +412,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, Q, x, 1, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, Q, ctx)) {
+ if (EC_POINT_is_on_curve(group, Q, ctx) <= 0) {
if (!EC_POINT_get_affine_coordinates_GFp(group, Q, x, y, ctx))
ABORT;
fprintf(stderr, "Point is not on curve: x = 0x");
@@ -544,7 +544,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_affine_coordinates_GFp(group, P, x, y, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn(&z, "0100000000000000000001F4C8F927AED3CA752257"))
ABORT;
@@ -593,7 +593,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 1, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn(&z, "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"))
ABORT;
@@ -646,7 +646,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 0, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn
(&z, "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"))
@@ -705,7 +705,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 1, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn(&z, "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E"
"84F3B9CAC2FC632551"))
@@ -761,7 +761,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 1, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn(&z, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
"FFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973"))
@@ -820,7 +820,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 0, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!BN_hex2bn(&z, "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
"FFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5"
@@ -864,7 +864,7 @@ static void prime_field_tests(void)
ABORT;
if (!EC_POINT_dbl(group, P, P, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!EC_POINT_invert(group, Q, ctx))
ABORT; /* P = -2Q */
@@ -1008,7 +1008,7 @@ static void prime_field_tests(void)
# define CHAR2_CURVE_TEST_INTERNAL(_name, _p, _a, _b, _x, _y, _y_bit, _order, _cof, _degree, _variable) \
if (!BN_hex2bn(&x, _x)) ABORT; \
if (!EC_POINT_set_compressed_coordinates_GF2m(group, P, x, _y_bit, ctx)) ABORT; \
- if (!EC_POINT_is_on_curve(group, P, ctx)) ABORT; \
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0) ABORT; \
if (!BN_hex2bn(&z, _order)) ABORT; \
if (!BN_hex2bn(&cof, _cof)) ABORT; \
if (!EC_GROUP_set_generator(group, P, z, cof)) ABORT; \
@@ -1026,7 +1026,7 @@ static void prime_field_tests(void)
if (!BN_hex2bn(&x, _x)) ABORT; \
if (!BN_hex2bn(&y, _y)) ABORT; \
if (!EC_POINT_set_affine_coordinates_GF2m(group, P, x, y, ctx)) ABORT; \
- if (!EC_POINT_is_on_curve(group, P, ctx)) ABORT; \
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0) ABORT; \
if (!BN_hex2bn(&z, _order)) ABORT; \
if (!BN_hex2bn(&cof, _cof)) ABORT; \
if (!EC_GROUP_set_generator(group, P, z, cof)) ABORT; \
@@ -1157,7 +1157,7 @@ static void char2_field_tests(void)
if (!EC_POINT_set_affine_coordinates_GF2m(group, Q, x, y, ctx))
ABORT;
# endif
- if (!EC_POINT_is_on_curve(group, Q, ctx)) {
+ if (EC_POINT_is_on_curve(group, Q, ctx) <= 0) {
/* Change test based on whether binary point compression is enabled or not. */
# ifdef OPENSSL_EC_BIN_PT_COMP
if (!EC_POINT_get_affine_coordinates_GF2m(group, Q, x, y, ctx))
@@ -1378,7 +1378,7 @@ static void char2_field_tests(void)
ABORT;
if (!EC_POINT_dbl(group, P, P, ctx))
ABORT;
- if (!EC_POINT_is_on_curve(group, P, ctx))
+ if (EC_POINT_is_on_curve(group, P, ctx) <= 0)
ABORT;
if (!EC_POINT_invert(group, Q, ctx))
ABORT; /* P = -2Q */
diff --git a/crypto/openssl/crypto/ecdh/Makefile b/crypto/openssl/crypto/ecdh/Makefile
index ba05fea..f076635 100644
--- a/crypto/openssl/crypto/ecdh/Makefile
+++ b/crypto/openssl/crypto/ecdh/Makefile
@@ -62,6 +62,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/ecdsa/Makefile b/crypto/openssl/crypto/ecdsa/Makefile
index e89e0c0..4ce00e8 100644
--- a/crypto/openssl/crypto/ecdsa/Makefile
+++ b/crypto/openssl/crypto/ecdsa/Makefile
@@ -62,6 +62,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/ecdsa/ecdsatest.c b/crypto/openssl/crypto/ecdsa/ecdsatest.c
index b2d78f3..0f301f8 100644
--- a/crypto/openssl/crypto/ecdsa/ecdsatest.c
+++ b/crypto/openssl/crypto/ecdsa/ecdsatest.c
@@ -296,8 +296,8 @@ int test_builtin(BIO *out)
int nid, ret = 0;
/* fill digest values with some random data */
- if (!RAND_pseudo_bytes(digest, 20) ||
- !RAND_pseudo_bytes(wrong_digest, 20)) {
+ if (RAND_pseudo_bytes(digest, 20) <= 0 ||
+ RAND_pseudo_bytes(wrong_digest, 20) <= 0) {
BIO_printf(out, "ERROR: unable to get random data\n");
goto builtin_err;
}
diff --git a/crypto/openssl/crypto/engine/Makefile b/crypto/openssl/crypto/engine/Makefile
index d29bdd0..8ceb747 100644
--- a/crypto/openssl/crypto/engine/Makefile
+++ b/crypto/openssl/crypto/engine/Makefile
@@ -71,6 +71,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/engine/eng_table.c b/crypto/openssl/crypto/engine/eng_table.c
index 2e1a7e8..27d31f7 100644
--- a/crypto/openssl/crypto/engine/eng_table.c
+++ b/crypto/openssl/crypto/engine/eng_table.c
@@ -351,6 +351,8 @@ void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,
ENGINE_PILE_DOALL dall;
dall.cb = cb;
dall.arg = arg;
- lh_ENGINE_PILE_doall_arg(&table->piles, LHASH_DOALL_ARG_FN(int_cb),
- ENGINE_PILE_DOALL, &dall);
+ if (table)
+ lh_ENGINE_PILE_doall_arg(&table->piles,
+ LHASH_DOALL_ARG_FN(int_cb),
+ ENGINE_PILE_DOALL, &dall);
}
diff --git a/crypto/openssl/crypto/err/Makefile b/crypto/openssl/crypto/err/Makefile
index 862b23b..b6f3ef1 100644
--- a/crypto/openssl/crypto/err/Makefile
+++ b/crypto/openssl/crypto/err/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/evp/Makefile b/crypto/openssl/crypto/evp/Makefile
index ef75678..ed1502d 100644
--- a/crypto/openssl/crypto/evp/Makefile
+++ b/crypto/openssl/crypto/evp/Makefile
@@ -86,6 +86,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/evp/bio_ok.c b/crypto/openssl/crypto/evp/bio_ok.c
index a455034..5c32e35 100644
--- a/crypto/openssl/crypto/evp/bio_ok.c
+++ b/crypto/openssl/crypto/evp/bio_ok.c
@@ -491,7 +491,8 @@ static int sig_out(BIO *b)
* FIXME: there's absolutely no guarantee this makes any sense at all,
* particularly now EVP_MD_CTX has been restructured.
*/
- RAND_pseudo_bytes(md->md_data, md->digest->md_size);
+ if (RAND_pseudo_bytes(md->md_data, md->digest->md_size) < 0)
+ goto berr;
memcpy(&(ctx->buf[ctx->buf_len]), md->md_data, md->digest->md_size);
longswap(&(ctx->buf[ctx->buf_len]), md->digest->md_size);
ctx->buf_len += md->digest->md_size;
diff --git a/crypto/openssl/crypto/evp/e_aes.c b/crypto/openssl/crypto/evp/e_aes.c
index 245c18a..1ede7bd 100644
--- a/crypto/openssl/crypto/evp/e_aes.c
+++ b/crypto/openssl/crypto/evp/e_aes.c
@@ -50,6 +50,7 @@
#include <openssl/opensslconf.h>
#ifndef OPENSSL_NO_AES
+#include <openssl/crypto.h>
# include <openssl/evp.h>
# include <openssl/err.h>
# include <string.h>
@@ -753,7 +754,7 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
case EVP_CTRL_AEAD_TLS1_AAD:
/* Save the AAD for later use */
- if (arg != 13)
+ if (arg != EVP_AEAD_TLS1_AAD_LEN)
return 0;
memcpy(c->buf, ptr, arg);
gctx->tls_aad_len = arg;
@@ -914,7 +915,7 @@ static int aes_gcm_tls_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
/* Retrieve tag */
CRYPTO_gcm128_tag(&gctx->gcm, ctx->buf, EVP_GCM_TLS_TAG_LEN);
/* If tag mismatch wipe buffer */
- if (memcmp(ctx->buf, in + len, EVP_GCM_TLS_TAG_LEN)) {
+ if (CRYPTO_memcmp(ctx->buf, in + len, EVP_GCM_TLS_TAG_LEN)) {
OPENSSL_cleanse(out, len);
goto err;
}
@@ -1259,7 +1260,7 @@ static int aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
!CRYPTO_ccm128_decrypt(ccm, in, out, len)) {
unsigned char tag[16];
if (CRYPTO_ccm128_tag(ccm, tag, cctx->M)) {
- if (!memcmp(tag, ctx->buf, cctx->M))
+ if (!CRYPTO_memcmp(tag, ctx->buf, cctx->M))
rv = len;
}
}
diff --git a/crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
index 3f8a5ae..d1f5928 100644
--- a/crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
+++ b/crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
@@ -503,7 +503,12 @@ static int aesni_cbc_hmac_sha1_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
case EVP_CTRL_AEAD_TLS1_AAD:
{
unsigned char *p = ptr;
- unsigned int len = p[arg - 2] << 8 | p[arg - 1];
+ unsigned int len;
+
+ if (arg != EVP_AEAD_TLS1_AAD_LEN)
+ return -1;
+
+ len = p[arg - 2] << 8 | p[arg - 1];
if (ctx->encrypt) {
key->payload_length = len;
@@ -520,8 +525,6 @@ static int aesni_cbc_hmac_sha1_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
AES_BLOCK_SIZE) & -AES_BLOCK_SIZE)
- len);
} else {
- if (arg > 13)
- arg = 13;
memcpy(key->aux.tls_aad, ptr, arg);
key->payload_length = arg;
diff --git a/crypto/openssl/crypto/evp/e_rc4_hmac_md5.c b/crypto/openssl/crypto/evp/e_rc4_hmac_md5.c
index 80735d3..2da1117 100644
--- a/crypto/openssl/crypto/evp/e_rc4_hmac_md5.c
+++ b/crypto/openssl/crypto/evp/e_rc4_hmac_md5.c
@@ -54,6 +54,7 @@
#if !defined(OPENSSL_NO_RC4) && !defined(OPENSSL_NO_MD5)
+# include <openssl/crypto.h>
# include <openssl/evp.h>
# include <openssl/objects.h>
# include <openssl/rc4.h>
@@ -210,7 +211,7 @@ static int rc4_hmac_md5_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
MD5_Update(&key->md, mac, MD5_DIGEST_LENGTH);
MD5_Final(mac, &key->md);
- if (memcmp(out + plen, mac, MD5_DIGEST_LENGTH))
+ if (CRYPTO_memcmp(out + plen, mac, MD5_DIGEST_LENGTH))
return 0;
} else {
MD5_Update(&key->md, out + md5_off, len - md5_off);
@@ -258,7 +259,12 @@ static int rc4_hmac_md5_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
case EVP_CTRL_AEAD_TLS1_AAD:
{
unsigned char *p = ptr;
- unsigned int len = p[arg - 2] << 8 | p[arg - 1];
+ unsigned int len;
+
+ if (arg != EVP_AEAD_TLS1_AAD_LEN)
+ return -1;
+
+ len = p[arg - 2] << 8 | p[arg - 1];
if (!ctx->encrypt) {
len -= MD5_DIGEST_LENGTH;
diff --git a/crypto/openssl/crypto/evp/encode.c b/crypto/openssl/crypto/evp/encode.c
index d1d8a07..5c5988f 100644
--- a/crypto/openssl/crypto/evp/encode.c
+++ b/crypto/openssl/crypto/evp/encode.c
@@ -137,7 +137,7 @@ void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
unsigned int total = 0;
*outl = 0;
- if (inl == 0)
+ if (inl <= 0)
return;
OPENSSL_assert(ctx->length <= (int)sizeof(ctx->enc_data));
if ((ctx->num + inl) < ctx->length) {
diff --git a/crypto/openssl/crypto/evp/evp.h b/crypto/openssl/crypto/evp/evp.h
index b00997b..6cf98ac 100644
--- a/crypto/openssl/crypto/evp/evp.h
+++ b/crypto/openssl/crypto/evp/evp.h
@@ -103,7 +103,6 @@
# define EVP_PKS_RSA 0x0100
# define EVP_PKS_DSA 0x0200
# define EVP_PKS_EC 0x0400
-# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */
# define EVP_PKEY_NONE NID_undef
# define EVP_PKEY_RSA NID_rsaEncryption
@@ -409,6 +408,9 @@ struct evp_cipher_st {
/* Set the GCM invocation field, decrypt only */
# define EVP_CTRL_GCM_SET_IV_INV 0x18
+/* RFC 5246 defines additional data to be 13 bytes in length */
+# define EVP_AEAD_TLS1_AAD_LEN 13
+
/* GCM TLS constants */
/* Length of fixed part of IV derived from PRF */
# define EVP_GCM_TLS_FIXED_IV_LEN 4
diff --git a/crypto/openssl/crypto/evp/p_seal.c b/crypto/openssl/crypto/evp/p_seal.c
index caabbf4..ba9dfff 100644
--- a/crypto/openssl/crypto/evp/p_seal.c
+++ b/crypto/openssl/crypto/evp/p_seal.c
@@ -82,8 +82,9 @@ int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
return 1;
if (EVP_CIPHER_CTX_rand_key(ctx, key) <= 0)
return 0;
- if (EVP_CIPHER_CTX_iv_length(ctx))
- RAND_pseudo_bytes(iv, EVP_CIPHER_CTX_iv_length(ctx));
+ if (EVP_CIPHER_CTX_iv_length(ctx)
+ && RAND_bytes(iv, EVP_CIPHER_CTX_iv_length(ctx)) <= 0)
+ return 0;
if (!EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv))
return 0;
diff --git a/crypto/openssl/crypto/hmac/Makefile b/crypto/openssl/crypto/hmac/Makefile
index 0e91709..52e39e5 100644
--- a/crypto/openssl/crypto/hmac/Makefile
+++ b/crypto/openssl/crypto/hmac/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/hmac/hmac.c b/crypto/openssl/crypto/hmac/hmac.c
index 5477816..33d88be 100644
--- a/crypto/openssl/crypto/hmac/hmac.c
+++ b/crypto/openssl/crypto/hmac/hmac.c
@@ -87,12 +87,18 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
return FIPS_hmac_init_ex(ctx, key, len, md, NULL);
}
#endif
+ /* If we are changing MD then we must have a key */
+ if (md != NULL && md != ctx->md && (key == NULL || len < 0))
+ return 0;
if (md != NULL) {
reset = 1;
ctx->md = md;
- } else
+ } else if (ctx->md) {
md = ctx->md;
+ } else {
+ return 0;
+ }
if (key != NULL) {
reset = 1;
@@ -107,7 +113,8 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
&ctx->key_length))
goto err;
} else {
- OPENSSL_assert(len >= 0 && len <= (int)sizeof(ctx->key));
+ if (len < 0 || len > (int)sizeof(ctx->key))
+ return 0;
memcpy(ctx->key, key, len);
ctx->key_length = len;
}
@@ -151,6 +158,9 @@ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len)
if (FIPS_mode() && !ctx->i_ctx.engine)
return FIPS_hmac_update(ctx, data, len);
#endif
+ if (!ctx->md)
+ return 0;
+
return EVP_DigestUpdate(&ctx->md_ctx, data, len);
}
@@ -163,6 +173,9 @@ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
return FIPS_hmac_final(ctx, md, len);
#endif
+ if (!ctx->md)
+ goto err;
+
if (!EVP_DigestFinal_ex(&ctx->md_ctx, buf, &i))
goto err;
if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->o_ctx))
@@ -181,6 +194,7 @@ void HMAC_CTX_init(HMAC_CTX *ctx)
EVP_MD_CTX_init(&ctx->i_ctx);
EVP_MD_CTX_init(&ctx->o_ctx);
EVP_MD_CTX_init(&ctx->md_ctx);
+ ctx->md = NULL;
}
int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx)
@@ -232,6 +246,7 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
HMAC_CTX_cleanup(&c);
return md;
err:
+ HMAC_CTX_cleanup(&c);
return NULL;
}
diff --git a/crypto/openssl/crypto/hmac/hmactest.c b/crypto/openssl/crypto/hmac/hmactest.c
index 3d130a0..271d0eb 100644
--- a/crypto/openssl/crypto/hmac/hmactest.c
+++ b/crypto/openssl/crypto/hmac/hmactest.c
@@ -85,7 +85,7 @@ static struct test_st {
unsigned char data[64];
int data_len;
unsigned char *digest;
-} test[4] = {
+} test[8] = {
{
"", 0, "More text test vectors to stuff up EBCDIC machines :-)", 54,
(unsigned char *)"e9139d1e6ee064ef8cf514fc7dc83e86",
@@ -113,10 +113,27 @@ static struct test_st {
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd
}, 50, (unsigned char *)"56be34521d144c88dbb8c733f0e8b3f6",
},
+ {
+ "", 0, "My test data", 12,
+ (unsigned char *)"61afdecb95429ef494d61fdee15990cabf0826fc"
+ },
+ {
+ "", 0, "My test data", 12,
+ (unsigned char *)"2274b195d90ce8e03406f4b526a47e0787a88a65479938f1a5baa3ce0f079776"
+ },
+ {
+ "123456", 6, "My test data", 12,
+ (unsigned char *)"bab53058ae861a7f191abe2d0145cbb123776a6369ee3f9d79ce455667e411dd"
+ },
+ {
+ "12345", 5, "My test data again", 12,
+ (unsigned char *)"7dbe8c764c068e3bcd6e6b0fbcd5e6fc197b15bb"
+ }
};
# endif
-static char *pt(unsigned char *md);
+static char *pt(unsigned char *md, unsigned int len);
+
int main(int argc, char *argv[])
{
# ifndef OPENSSL_NO_MD5
@@ -124,6 +141,9 @@ int main(int argc, char *argv[])
char *p;
# endif
int err = 0;
+ HMAC_CTX ctx, ctx2;
+ unsigned char buf[EVP_MAX_MD_SIZE];
+ unsigned int len;
# ifdef OPENSSL_NO_MD5
printf("test skipped: MD5 disabled\n");
@@ -139,27 +159,172 @@ int main(int argc, char *argv[])
for (i = 0; i < 4; i++) {
p = pt(HMAC(EVP_md5(),
test[i].key, test[i].key_len,
- test[i].data, test[i].data_len, NULL, NULL));
+ test[i].data, test[i].data_len, NULL, NULL),
+ MD5_DIGEST_LENGTH);
if (strcmp(p, (char *)test[i].digest) != 0) {
- printf("error calculating HMAC on %d entry'\n", i);
+ printf("Error calculating HMAC on %d entry'\n", i);
printf("got %s instead of %s\n", p, test[i].digest);
err++;
} else
printf("test %d ok\n", i);
}
# endif /* OPENSSL_NO_MD5 */
+
+/* test4 */
+ HMAC_CTX_init(&ctx);
+ if (HMAC_Init_ex(&ctx, NULL, 0, NULL, NULL)) {
+ printf("Should fail to initialise HMAC with empty MD and key (test 4)\n");
+ err++;
+ goto test5;
+ }
+ if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+ printf("Should fail HMAC_Update with ctx not set up (test 4)\n");
+ err++;
+ goto test5;
+ }
+ if (HMAC_Init_ex(&ctx, NULL, 0, EVP_sha1(), NULL)) {
+ printf("Should fail to initialise HMAC with empty key (test 4)\n");
+ err++;
+ goto test5;
+ }
+ if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+ printf("Should fail HMAC_Update with ctx not set up (test 4)\n");
+ err++;
+ goto test5;
+ }
+ printf("test 4 ok\n");
+test5:
+ HMAC_CTX_init(&ctx);
+ if (HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, NULL, NULL)) {
+ printf("Should fail to initialise HMAC with empty MD (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+ printf("Should fail HMAC_Update with ctx not set up (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (HMAC_Init_ex(&ctx, test[4].key, -1, EVP_sha1(), NULL)) {
+ printf("Should fail to initialise HMAC with invalid key len(test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, EVP_sha1(), NULL)) {
+ printf("Failed to initialise HMAC (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+ printf("Error updating HMAC with data (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Final(&ctx, buf, &len)) {
+ printf("Error finalising data (test 5)\n");
+ err++;
+ goto test6;
+ }
+ p = pt(buf, len);
+ if (strcmp(p, (char *)test[4].digest) != 0) {
+ printf("Error calculating interim HMAC on test 5\n");
+ printf("got %s instead of %s\n", p, test[4].digest);
+ err++;
+ goto test6;
+ }
+ if (HMAC_Init_ex(&ctx, NULL, 0, EVP_sha256(), NULL)) {
+ printf("Should disallow changing MD without a new key (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, EVP_sha256(), NULL)) {
+ printf("Failed to reinitialise HMAC (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Update(&ctx, test[5].data, test[5].data_len)) {
+ printf("Error updating HMAC with data (sha256) (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Final(&ctx, buf, &len)) {
+ printf("Error finalising data (sha256) (test 5)\n");
+ err++;
+ goto test6;
+ }
+ p = pt(buf, len);
+ if (strcmp(p, (char *)test[5].digest) != 0) {
+ printf("Error calculating 2nd interim HMAC on test 5\n");
+ printf("got %s instead of %s\n", p, test[5].digest);
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Init_ex(&ctx, test[6].key, test[6].key_len, NULL, NULL)) {
+ printf("Failed to reinitialise HMAC with key (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Update(&ctx, test[6].data, test[6].data_len)) {
+ printf("Error updating HMAC with data (new key) (test 5)\n");
+ err++;
+ goto test6;
+ }
+ if (!HMAC_Final(&ctx, buf, &len)) {
+ printf("Error finalising data (new key) (test 5)\n");
+ err++;
+ goto test6;
+ }
+ p = pt(buf, len);
+ if (strcmp(p, (char *)test[6].digest) != 0) {
+ printf("error calculating HMAC on test 5\n");
+ printf("got %s instead of %s\n", p, test[6].digest);
+ err++;
+ } else {
+ printf("test 5 ok\n");
+ }
+test6:
+ HMAC_CTX_init(&ctx);
+ if (!HMAC_Init_ex(&ctx, test[7].key, test[7].key_len, EVP_sha1(), NULL)) {
+ printf("Failed to initialise HMAC (test 6)\n");
+ err++;
+ goto end;
+ }
+ if (!HMAC_Update(&ctx, test[7].data, test[7].data_len)) {
+ printf("Error updating HMAC with data (test 6)\n");
+ err++;
+ goto end;
+ }
+ if (!HMAC_CTX_copy(&ctx2, &ctx)) {
+ printf("Failed to copy HMAC_CTX (test 6)\n");
+ err++;
+ goto end;
+ }
+ if (!HMAC_Final(&ctx2, buf, &len)) {
+ printf("Error finalising data (test 6)\n");
+ err++;
+ goto end;
+ }
+ p = pt(buf, len);
+ if (strcmp(p, (char *)test[7].digest) != 0) {
+ printf("Error calculating HMAC on test 6\n");
+ printf("got %s instead of %s\n", p, test[7].digest);
+ err++;
+ } else {
+ printf("test 6 ok\n");
+ }
+end:
EXIT(err);
return (0);
}
# ifndef OPENSSL_NO_MD5
-static char *pt(unsigned char *md)
+static char *pt(unsigned char *md, unsigned int len)
{
- int i;
+ unsigned int i;
static char buf[80];
- for (i = 0; i < MD5_DIGEST_LENGTH; i++)
+ for (i = 0; i < len; i++)
sprintf(&(buf[i * 2]), "%02x", md[i]);
return (buf);
}
diff --git a/crypto/openssl/crypto/idea/Makefile b/crypto/openssl/crypto/idea/Makefile
index 8af0acd..3dc23e4 100644
--- a/crypto/openssl/crypto/idea/Makefile
+++ b/crypto/openssl/crypto/idea/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/jpake/Makefile b/crypto/openssl/crypto/jpake/Makefile
index 110c49c..5193fd9 100644
--- a/crypto/openssl/crypto/jpake/Makefile
+++ b/crypto/openssl/crypto/jpake/Makefile
@@ -32,6 +32,8 @@ install:
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
done;
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/krb5/Makefile b/crypto/openssl/crypto/krb5/Makefile
index 1407739..8b9a01a 100644
--- a/crypto/openssl/crypto/krb5/Makefile
+++ b/crypto/openssl/crypto/krb5/Makefile
@@ -62,6 +62,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/lhash/Makefile b/crypto/openssl/crypto/lhash/Makefile
index 82bddac..c7f4365 100644
--- a/crypto/openssl/crypto/lhash/Makefile
+++ b/crypto/openssl/crypto/lhash/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/md2/Makefile b/crypto/openssl/crypto/md2/Makefile
index 17f878a..b630110 100644
--- a/crypto/openssl/crypto/md2/Makefile
+++ b/crypto/openssl/crypto/md2/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/md32_common.h b/crypto/openssl/crypto/md32_common.h
index c1efb45..1823833 100644
--- a/crypto/openssl/crypto/md32_common.h
+++ b/crypto/openssl/crypto/md32_common.h
@@ -142,8 +142,10 @@
*/
#undef ROTATE
#ifndef PEDANTIC
-# if defined(_MSC_VER) || defined(__ICC)
+# if defined(_MSC_VER)
# define ROTATE(a,n) _lrotl(a,n)
+# elif defined(__ICC)
+# define ROTATE(a,n) _rotl(a,n)
# elif defined(__MWERKS__)
# if defined(__POWERPC__)
# define ROTATE(a,n) __rlwinm(a,n,0,31)
diff --git a/crypto/openssl/crypto/md4/Makefile b/crypto/openssl/crypto/md4/Makefile
index e6f1e44..3ee4361 100644
--- a/crypto/openssl/crypto/md4/Makefile
+++ b/crypto/openssl/crypto/md4/Makefile
@@ -62,6 +62,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/md5/Makefile b/crypto/openssl/crypto/md5/Makefile
index b9e2ce9..0f87dbd 100644
--- a/crypto/openssl/crypto/md5/Makefile
+++ b/crypto/openssl/crypto/md5/Makefile
@@ -76,6 +76,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/mdc2/Makefile b/crypto/openssl/crypto/mdc2/Makefile
index 1415531..c2d0c5b 100644
--- a/crypto/openssl/crypto/mdc2/Makefile
+++ b/crypto/openssl/crypto/mdc2/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/mem.c b/crypto/openssl/crypto/mem.c
index 2ce3e89..fdad49b 100644
--- a/crypto/openssl/crypto/mem.c
+++ b/crypto/openssl/crypto/mem.c
@@ -365,6 +365,9 @@ char *CRYPTO_strdup(const char *str, const char *file, int line)
{
char *ret = CRYPTO_malloc(strlen(str) + 1, file, line);
+ if (ret == NULL)
+ return NULL;
+
strcpy(ret, str);
return ret;
}
diff --git a/crypto/openssl/crypto/modes/Makefile b/crypto/openssl/crypto/modes/Makefile
index 3d8bafd..e278fa6 100644
--- a/crypto/openssl/crypto/modes/Makefile
+++ b/crypto/openssl/crypto/modes/Makefile
@@ -89,6 +89,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/modes/gcm128.c b/crypto/openssl/crypto/modes/gcm128.c
index f69f2c9..0ee569f 100644
--- a/crypto/openssl/crypto/modes/gcm128.c
+++ b/crypto/openssl/crypto/modes/gcm128.c
@@ -1622,7 +1622,7 @@ int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag,
ctx->Xi.u[1] ^= ctx->EK0.u[1];
if (tag && len <= sizeof(ctx->Xi))
- return memcmp(ctx->Xi.c, tag, len);
+ return CRYPTO_memcmp(ctx->Xi.c, tag, len);
else
return -1;
}
diff --git a/crypto/openssl/crypto/objects/Makefile b/crypto/openssl/crypto/objects/Makefile
index a8aedbd..f93d2f9 100644
--- a/crypto/openssl/crypto/objects/Makefile
+++ b/crypto/openssl/crypto/objects/Makefile
@@ -74,6 +74,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: obj_dat.h obj_mac.h obj_xref.h depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/objects/o_names.c b/crypto/openssl/crypto/objects/o_names.c
index c6774f4..2485992 100644
--- a/crypto/openssl/crypto/objects/o_names.c
+++ b/crypto/openssl/crypto/objects/o_names.c
@@ -313,7 +313,7 @@ void OBJ_NAME_do_all_sorted(int type,
d.names =
OPENSSL_malloc(lh_OBJ_NAME_num_items(names_lh) * sizeof *d.names);
/* Really should return an error if !d.names...but its a void function! */
- if(d.names) {
+ if (d.names) {
d.n = 0;
OBJ_NAME_do_all(type, do_all_sorted_fn, &d);
diff --git a/crypto/openssl/crypto/objects/obj_dat.c b/crypto/openssl/crypto/objects/obj_dat.c
index e42a1c1..aca382a 100644
--- a/crypto/openssl/crypto/objects/obj_dat.c
+++ b/crypto/openssl/crypto/objects/obj_dat.c
@@ -142,7 +142,7 @@ static unsigned long added_obj_hash(const ADDED_OBJ *ca)
return 0;
}
ret &= 0x3fffffffL;
- ret |= ca->type << 30L;
+ ret |= ((unsigned long)ca->type) << 30L;
return (ret);
}
@@ -400,6 +400,8 @@ static int obj_cmp(const ASN1_OBJECT *const *ap, const unsigned int *bp)
j = (a->length - b->length);
if (j)
return (j);
+ if (a->length == 0)
+ return 0;
return (memcmp(a->data, b->data, a->length));
}
@@ -415,6 +417,9 @@ int OBJ_obj2nid(const ASN1_OBJECT *a)
if (a->nid != 0)
return (a->nid);
+ if (a->length == 0)
+ return NID_undef;
+
if (added != NULL) {
ad.type = ADDED_DATA;
ad.obj = (ASN1_OBJECT *)a; /* XXX: ugly but harmless */
diff --git a/crypto/openssl/crypto/objects/objects.README b/crypto/openssl/crypto/objects/objects.README
index 4d74550..cb1d216 100644
--- a/crypto/openssl/crypto/objects/objects.README
+++ b/crypto/openssl/crypto/objects/objects.README
@@ -8,9 +8,9 @@ The basic syntax for adding an object is as follows:
1 2 3 4 : shortName : Long Name
- If the long name doesn't contain spaces, or no short name
- exists, the long name is used as basis for the base name
- in C. Otherwise, the short name is used.
+ If Long Name contains only word characters and hyphen-minus
+ (0x2D) or full stop (0x2E) then Long Name is used as basis
+ for the base name in C. Otherwise, the shortName is used.
The base name (let's call it 'base') will then be used to
create the C macros SN_base, LN_base, NID_base and OBJ_base.
@@ -22,7 +22,7 @@ Then there are some extra commands:
!Alias foo 1 2 3 4
- This juts makes a name foo for an OID. The C macro
+ This just makes a name foo for an OID. The C macro
OBJ_foo will be created as a result.
!Cname foo
diff --git a/crypto/openssl/crypto/objects/objects.pl b/crypto/openssl/crypto/objects/objects.pl
index d0ed459..389dc34 100644
--- a/crypto/openssl/crypto/objects/objects.pl
+++ b/crypto/openssl/crypto/objects/objects.pl
@@ -67,7 +67,7 @@ while (<IN>)
$myoid = &process_oid($myoid);
}
- if ($Cname eq "" && !($myln =~ / /))
+ if ($Cname eq "" && ($myln =~ /^[_A-Za-z][\w.-]*$/ ))
{
$Cname = $myln;
$Cname =~ s/\./_/g;
diff --git a/crypto/openssl/crypto/ocsp/Makefile b/crypto/openssl/crypto/ocsp/Makefile
index 60c414c..96a1b15 100644
--- a/crypto/openssl/crypto/ocsp/Makefile
+++ b/crypto/openssl/crypto/ocsp/Makefile
@@ -64,6 +64,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/ocsp/ocsp_ext.c b/crypto/openssl/crypto/ocsp/ocsp_ext.c
index 849cb2f..c19648c 100644
--- a/crypto/openssl/crypto/ocsp/ocsp_ext.c
+++ b/crypto/openssl/crypto/ocsp/ocsp_ext.c
@@ -361,8 +361,8 @@ static int ocsp_add1_nonce(STACK_OF(X509_EXTENSION) **exts,
ASN1_put_object(&tmpval, 0, len, V_ASN1_OCTET_STRING, V_ASN1_UNIVERSAL);
if (val)
memcpy(tmpval, val, len);
- else
- RAND_pseudo_bytes(tmpval, len);
+ else if (RAND_pseudo_bytes(tmpval, len) < 0)
+ goto err;
if (!X509V3_add1_i2d(exts, NID_id_pkix_OCSP_Nonce,
&os, 0, X509V3_ADD_REPLACE))
goto err;
diff --git a/crypto/openssl/crypto/ocsp/ocsp_vfy.c b/crypto/openssl/crypto/ocsp/ocsp_vfy.c
index 6c0ccb5..d4a257c 100644
--- a/crypto/openssl/crypto/ocsp/ocsp_vfy.c
+++ b/crypto/openssl/crypto/ocsp/ocsp_vfy.c
@@ -83,6 +83,7 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
{
X509 *signer, *x;
STACK_OF(X509) *chain = NULL;
+ STACK_OF(X509) *untrusted = NULL;
X509_STORE_CTX ctx;
int i, ret = 0;
ret = ocsp_find_signer(&signer, bs, certs, st, flags);
@@ -107,10 +108,20 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
}
if (!(flags & OCSP_NOVERIFY)) {
int init_res;
- if (flags & OCSP_NOCHAIN)
- init_res = X509_STORE_CTX_init(&ctx, st, signer, NULL);
- else
- init_res = X509_STORE_CTX_init(&ctx, st, signer, bs->certs);
+ if (flags & OCSP_NOCHAIN) {
+ untrusted = NULL;
+ } else if (bs->certs && certs) {
+ untrusted = sk_X509_dup(bs->certs);
+ for (i = 0; i < sk_X509_num(certs); i++) {
+ if (!sk_X509_push(untrusted, sk_X509_value(certs, i))) {
+ OCSPerr(OCSP_F_OCSP_BASIC_VERIFY, ERR_R_MALLOC_FAILURE);
+ goto end;
+ }
+ }
+ } else {
+ untrusted = bs->certs;
+ }
+ init_res = X509_STORE_CTX_init(&ctx, st, signer, untrusted);
if (!init_res) {
ret = -1;
OCSPerr(OCSP_F_OCSP_BASIC_VERIFY, ERR_R_X509_LIB);
@@ -161,6 +172,8 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
end:
if (chain)
sk_X509_pop_free(chain, X509_free);
+ if (bs->certs && certs)
+ sk_X509_free(untrusted);
return ret;
}
diff --git a/crypto/openssl/crypto/opensslv.h b/crypto/openssl/crypto/opensslv.h
index 5ecd215..bc91a6c 100644
--- a/crypto/openssl/crypto/opensslv.h
+++ b/crypto/openssl/crypto/opensslv.h
@@ -30,11 +30,11 @@ extern "C" {
* (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
* major minor fix final patch/beta)
*/
-# define OPENSSL_VERSION_NUMBER 0x100010dfL
+# define OPENSSL_VERSION_NUMBER 0x100010ffL
# ifdef OPENSSL_FIPS
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1m-fips 19 Mar 2015"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1o-fips 12 Jun 2015"
# else
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1m-freebsd 19 Mar 2015"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1o-freebsd 12 Jun 2015"
# endif
# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
diff --git a/crypto/openssl/crypto/pem/Makefile b/crypto/openssl/crypto/pem/Makefile
index 2cc7801..7a930ee 100644
--- a/crypto/openssl/crypto/pem/Makefile
+++ b/crypto/openssl/crypto/pem/Makefile
@@ -64,6 +64,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/pem/pem_lib.c b/crypto/openssl/crypto/pem/pem_lib.c
index febb53e..5507161 100644
--- a/crypto/openssl/crypto/pem/pem_lib.c
+++ b/crypto/openssl/crypto/pem/pem_lib.c
@@ -435,7 +435,7 @@ int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
pem_password_cb *callback, void *u)
{
- int i, j, o, klen;
+ int i = 0, j, o, klen;
long len;
EVP_CIPHER_CTX ctx;
unsigned char key[EVP_MAX_KEY_LENGTH];
diff --git a/crypto/openssl/crypto/pem/pem_pk8.c b/crypto/openssl/crypto/pem/pem_pk8.c
index b98c76c..5747c73 100644
--- a/crypto/openssl/crypto/pem/pem_pk8.c
+++ b/crypto/openssl/crypto/pem/pem_pk8.c
@@ -138,6 +138,8 @@ static int do_pk8pkey(BIO *bp, EVP_PKEY *x, int isder, int nid,
if (kstr == buf)
OPENSSL_cleanse(buf, klen);
PKCS8_PRIV_KEY_INFO_free(p8inf);
+ if (p8 == NULL)
+ return 0;
if (isder)
ret = i2d_PKCS8_bio(bp, p8);
else
diff --git a/crypto/openssl/crypto/pkcs12/Makefile b/crypto/openssl/crypto/pkcs12/Makefile
index 3a7498f..be5f8c5 100644
--- a/crypto/openssl/crypto/pkcs12/Makefile
+++ b/crypto/openssl/crypto/pkcs12/Makefile
@@ -67,6 +67,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/pkcs12/p12_mutl.c b/crypto/openssl/crypto/pkcs12/p12_mutl.c
index 256b210..5ab4bf2 100644
--- a/crypto/openssl/crypto/pkcs12/p12_mutl.c
+++ b/crypto/openssl/crypto/pkcs12/p12_mutl.c
@@ -60,6 +60,7 @@
#ifndef OPENSSL_NO_HMAC
# include <stdio.h>
# include "cryptlib.h"
+# include <openssl/crypto.h>
# include <openssl/hmac.h>
# include <openssl/rand.h>
# include <openssl/pkcs12.h>
@@ -123,7 +124,7 @@ int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen)
return 0;
}
if ((maclen != (unsigned int)p12->mac->dinfo->digest->length)
- || memcmp(mac, p12->mac->dinfo->digest->data, maclen))
+ || CRYPTO_memcmp(mac, p12->mac->dinfo->digest->data, maclen))
return 0;
return 1;
}
diff --git a/crypto/openssl/crypto/pkcs7/Makefile b/crypto/openssl/crypto/pkcs7/Makefile
index effe05f..decf5e0 100644
--- a/crypto/openssl/crypto/pkcs7/Makefile
+++ b/crypto/openssl/crypto/pkcs7/Makefile
@@ -68,6 +68,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/pkcs7/pk7_doit.c b/crypto/openssl/crypto/pkcs7/pk7_doit.c
index 31a1b98..c8d7db0 100644
--- a/crypto/openssl/crypto/pkcs7/pk7_doit.c
+++ b/crypto/openssl/crypto/pkcs7/pk7_doit.c
@@ -445,6 +445,12 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
switch (i) {
case NID_pkcs7_signed:
+ /*
+ * p7->d.sign->contents is a PKCS7 structure consisting of a contentType
+ * field and optional content.
+ * data_body is NULL if that structure has no (=detached) content
+ * or if the contentType is wrong (i.e., not "data").
+ */
data_body = PKCS7_get_octet_string(p7->d.sign->contents);
if (!PKCS7_is_detached(p7) && data_body == NULL) {
PKCS7err(PKCS7_F_PKCS7_DATADECODE,
@@ -456,6 +462,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
case NID_pkcs7_signedAndEnveloped:
rsk = p7->d.signed_and_enveloped->recipientinfo;
md_sk = p7->d.signed_and_enveloped->md_algs;
+ /* data_body is NULL if the optional EncryptedContent is missing. */
data_body = p7->d.signed_and_enveloped->enc_data->enc_data;
enc_alg = p7->d.signed_and_enveloped->enc_data->algorithm;
evp_cipher = EVP_get_cipherbyobj(enc_alg->algorithm);
@@ -468,6 +475,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
case NID_pkcs7_enveloped:
rsk = p7->d.enveloped->recipientinfo;
enc_alg = p7->d.enveloped->enc_data->algorithm;
+ /* data_body is NULL if the optional EncryptedContent is missing. */
data_body = p7->d.enveloped->enc_data->enc_data;
evp_cipher = EVP_get_cipherbyobj(enc_alg->algorithm);
if (evp_cipher == NULL) {
@@ -481,6 +489,12 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
goto err;
}
+ /* Detached content must be supplied via in_bio instead. */
+ if (data_body == NULL && in_bio == NULL) {
+ PKCS7err(PKCS7_F_PKCS7_DATADECODE, PKCS7_R_NO_CONTENT);
+ goto err;
+ }
+
/* We will be checking the signature */
if (md_sk != NULL) {
for (i = 0; i < sk_X509_ALGOR_num(md_sk); i++) {
@@ -623,7 +637,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
etmp = NULL;
}
#if 1
- if (PKCS7_is_detached(p7) || (in_bio != NULL)) {
+ if (in_bio != NULL) {
bio = in_bio;
} else {
# if 0
diff --git a/crypto/openssl/crypto/pqueue/Makefile b/crypto/openssl/crypto/pqueue/Makefile
index fb36a0c..a59b5a9 100644
--- a/crypto/openssl/crypto/pqueue/Makefile
+++ b/crypto/openssl/crypto/pqueue/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rand/Makefile b/crypto/openssl/crypto/rand/Makefile
index 27694aa..df44369 100644
--- a/crypto/openssl/crypto/rand/Makefile
+++ b/crypto/openssl/crypto/rand/Makefile
@@ -63,6 +63,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rc2/Makefile b/crypto/openssl/crypto/rc2/Makefile
index 8a9d49a..b3727a4 100644
--- a/crypto/openssl/crypto/rc2/Makefile
+++ b/crypto/openssl/crypto/rc2/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rc4/Makefile b/crypto/openssl/crypto/rc4/Makefile
index 1614d47..f3d6e0d 100644
--- a/crypto/openssl/crypto/rc4/Makefile
+++ b/crypto/openssl/crypto/rc4/Makefile
@@ -89,6 +89,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rc5/Makefile b/crypto/openssl/crypto/rc5/Makefile
index 8a8b00e..6ca0037 100644
--- a/crypto/openssl/crypto/rc5/Makefile
+++ b/crypto/openssl/crypto/rc5/Makefile
@@ -69,6 +69,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/ripemd/Makefile b/crypto/openssl/crypto/ripemd/Makefile
index 25140b2..1c3f094 100644
--- a/crypto/openssl/crypto/ripemd/Makefile
+++ b/crypto/openssl/crypto/ripemd/Makefile
@@ -69,6 +69,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rsa/Makefile b/crypto/openssl/crypto/rsa/Makefile
index e8121a4..79c7c42 100644
--- a/crypto/openssl/crypto/rsa/Makefile
+++ b/crypto/openssl/crypto/rsa/Makefile
@@ -67,6 +67,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/rsa/rsa_pmeth.c b/crypto/openssl/crypto/rsa/rsa_pmeth.c
index d61d6e8..6a7c67c 100644
--- a/crypto/openssl/crypto/rsa/rsa_pmeth.c
+++ b/crypto/openssl/crypto/rsa/rsa_pmeth.c
@@ -228,8 +228,14 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
return ret;
ret = sltmp;
} else if (rctx->pad_mode == RSA_X931_PADDING) {
- if (!setup_tbuf(rctx, ctx))
+ if ((size_t)EVP_PKEY_size(ctx->pkey) < tbslen + 1) {
+ RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_KEY_SIZE_TOO_SMALL);
+ return -1;
+ }
+ if (!setup_tbuf(rctx, ctx)) {
+ RSAerr(RSA_F_PKEY_RSA_SIGN, ERR_R_MALLOC_FAILURE);
return -1;
+ }
memcpy(rctx->tbuf, tbs, tbslen);
rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(rctx->md));
ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf,
diff --git a/crypto/openssl/crypto/seed/Makefile b/crypto/openssl/crypto/seed/Makefile
index 4bc55e4..70d3d45 100644
--- a/crypto/openssl/crypto/seed/Makefile
+++ b/crypto/openssl/crypto/seed/Makefile
@@ -62,6 +62,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/sha/Makefile b/crypto/openssl/crypto/sha/Makefile
index 2eb2b7a..ceb8094 100644
--- a/crypto/openssl/crypto/sha/Makefile
+++ b/crypto/openssl/crypto/sha/Makefile
@@ -117,6 +117,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/srp/Makefile b/crypto/openssl/crypto/srp/Makefile
index 41859d4..7639533 100644
--- a/crypto/openssl/crypto/srp/Makefile
+++ b/crypto/openssl/crypto/srp/Makefile
@@ -61,6 +61,8 @@ srptest: top srptest.c $(LIB)
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/srp/srp_vfy.c b/crypto/openssl/crypto/srp/srp_vfy.c
index 701b5cd..50f75d7 100644
--- a/crypto/openssl/crypto/srp/srp_vfy.c
+++ b/crypto/openssl/crypto/srp/srp_vfy.c
@@ -497,7 +497,8 @@ SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)
if (!SRP_user_pwd_set_ids(user, username, NULL))
goto err;
- RAND_pseudo_bytes(digv, SHA_DIGEST_LENGTH);
+ if (RAND_pseudo_bytes(digv, SHA_DIGEST_LENGTH) < 0)
+ goto err;
EVP_MD_CTX_init(&ctxt);
EVP_DigestInit_ex(&ctxt, EVP_sha1(), NULL);
EVP_DigestUpdate(&ctxt, vb->seed_key, strlen(vb->seed_key));
@@ -549,7 +550,8 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt,
}
if (*salt == NULL) {
- RAND_pseudo_bytes(tmp2, SRP_RANDOM_SALT_LEN);
+ if (RAND_pseudo_bytes(tmp2, SRP_RANDOM_SALT_LEN) < 0)
+ goto err;
s = BN_bin2bn(tmp2, SRP_RANDOM_SALT_LEN, NULL);
} else {
@@ -609,7 +611,8 @@ int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt,
srp_bn_print(g);
if (*salt == NULL) {
- RAND_pseudo_bytes(tmp2, SRP_RANDOM_SALT_LEN);
+ if (RAND_pseudo_bytes(tmp2, SRP_RANDOM_SALT_LEN) < 0)
+ goto err;
*salt = BN_bin2bn(tmp2, SRP_RANDOM_SALT_LEN, NULL);
}
diff --git a/crypto/openssl/crypto/stack/Makefile b/crypto/openssl/crypto/stack/Makefile
index 5327692..b069c93 100644
--- a/crypto/openssl/crypto/stack/Makefile
+++ b/crypto/openssl/crypto/stack/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/store/Makefile b/crypto/openssl/crypto/store/Makefile
index 0dcfd78..5bc7ca7 100644
--- a/crypto/openssl/crypto/store/Makefile
+++ b/crypto/openssl/crypto/store/Makefile
@@ -63,6 +63,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/threads/th-lock.c b/crypto/openssl/crypto/threads/th-lock.c
index 28884c2..cc8cf25 100644
--- a/crypto/openssl/crypto/threads/th-lock.c
+++ b/crypto/openssl/crypto/threads/th-lock.c
@@ -117,7 +117,7 @@ void CRYPTO_thread_setup(void)
int i;
lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(HANDLE));
- if(!lock_cs) {
+ if (!lock_cs) {
/* Nothing we can do about this...void function! */
return;
}
@@ -172,7 +172,7 @@ void CRYPTO_thread_setup(void)
# else
lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(rwlock_t));
# endif
- if(!lock_cs) {
+ if (!lock_cs) {
/* Nothing we can do about this...void function! */
return;
}
@@ -260,7 +260,7 @@ void CRYPTO_thread_setup(void)
char filename[20];
lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(usema_t *));
- if(!lock_cs) {
+ if (!lock_cs) {
/* Nothing we can do about this...void function! */
return;
}
@@ -328,11 +328,11 @@ void CRYPTO_thread_setup(void)
lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
lock_count = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
- if(!lock_cs || !lock_count) {
+ if (!lock_cs || !lock_count) {
/* Nothing we can do about this...void function! */
- if(lock_cs)
+ if (lock_cs)
OPENSSL_free(lock_cs);
- if(lock_count)
+ if (lock_count)
OPENSSL_free(lock_count);
return;
}
diff --git a/crypto/openssl/crypto/ts/Makefile b/crypto/openssl/crypto/ts/Makefile
index c182345..cf991ef 100644
--- a/crypto/openssl/crypto/ts/Makefile
+++ b/crypto/openssl/crypto/ts/Makefile
@@ -73,6 +73,8 @@ tags:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
diff --git a/crypto/openssl/crypto/txt_db/Makefile b/crypto/openssl/crypto/txt_db/Makefile
index e6f3033..4f70b19 100644
--- a/crypto/openssl/crypto/txt_db/Makefile
+++ b/crypto/openssl/crypto/txt_db/Makefile
@@ -61,6 +61,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by top Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/ui/Makefile b/crypto/openssl/crypto/ui/Makefile
index a685659..b28fcca 100644
--- a/crypto/openssl/crypto/ui/Makefile
+++ b/crypto/openssl/crypto/ui/Makefile
@@ -65,6 +65,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/whrlpool/Makefile b/crypto/openssl/crypto/whrlpool/Makefile
index f4d46e4..befd6d6 100644
--- a/crypto/openssl/crypto/whrlpool/Makefile
+++ b/crypto/openssl/crypto/whrlpool/Makefile
@@ -74,6 +74,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/x509/Makefile b/crypto/openssl/crypto/x509/Makefile
index 72c8227..af3c255 100644
--- a/crypto/openssl/crypto/x509/Makefile
+++ b/crypto/openssl/crypto/x509/Makefile
@@ -71,6 +71,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/x509/x509_lu.c b/crypto/openssl/crypto/x509/x509_lu.c
index a910636..8415d1d 100644
--- a/crypto/openssl/crypto/x509/x509_lu.c
+++ b/crypto/openssl/crypto/x509/x509_lu.c
@@ -216,6 +216,8 @@ X509_STORE *X509_STORE_new(void)
static void cleanup(X509_OBJECT *a)
{
+ if (!a)
+ return;
if (a->type == X509_LU_X509) {
X509_free(a->data.x509);
} else if (a->type == X509_LU_CRL) {
diff --git a/crypto/openssl/crypto/x509/x509_vfy.c b/crypto/openssl/crypto/x509/x509_vfy.c
index 136bfbd..16db4c0 100644
--- a/crypto/openssl/crypto/x509/x509_vfy.c
+++ b/crypto/openssl/crypto/x509/x509_vfy.c
@@ -151,11 +151,11 @@ static int x509_subject_cmp(X509 **a, X509 **b)
int X509_verify_cert(X509_STORE_CTX *ctx)
{
- X509 *x, *xtmp, *chain_ss = NULL;
+ X509 *x, *xtmp, *xtmp2, *chain_ss = NULL;
int bad_chain = 0;
X509_VERIFY_PARAM *param = ctx->param;
int depth, i, ok = 0;
- int num;
+ int num, j, retry;
int (*cb) (int xok, X509_STORE_CTX *xctx);
STACK_OF(X509) *sktmp = NULL;
if (ctx->cert == NULL) {
@@ -224,85 +224,118 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
break;
}
+ /* Remember how many untrusted certs we have */
+ j = num;
/*
* at this point, chain should contain a list of untrusted certificates.
* We now need to add at least one trusted one, if possible, otherwise we
* complain.
*/
- /*
- * Examine last certificate in chain and see if it is self signed.
- */
-
- i = sk_X509_num(ctx->chain);
- x = sk_X509_value(ctx->chain, i - 1);
- if (ctx->check_issued(ctx, x, x)) {
- /* we have a self signed certificate */
- if (sk_X509_num(ctx->chain) == 1) {
- /*
- * We have a single self signed certificate: see if we can find
- * it in the store. We must have an exact match to avoid possible
- * impersonation.
- */
- ok = ctx->get_issuer(&xtmp, ctx, x);
- if ((ok <= 0) || X509_cmp(x, xtmp)) {
- ctx->error = X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT;
- ctx->current_cert = x;
- ctx->error_depth = i - 1;
- if (ok == 1)
- X509_free(xtmp);
- bad_chain = 1;
- ok = cb(0, ctx);
- if (!ok)
- goto end;
+ do {
+ /*
+ * Examine last certificate in chain and see if it is self signed.
+ */
+ i = sk_X509_num(ctx->chain);
+ x = sk_X509_value(ctx->chain, i - 1);
+ if (ctx->check_issued(ctx, x, x)) {
+ /* we have a self signed certificate */
+ if (sk_X509_num(ctx->chain) == 1) {
+ /*
+ * We have a single self signed certificate: see if we can
+ * find it in the store. We must have an exact match to avoid
+ * possible impersonation.
+ */
+ ok = ctx->get_issuer(&xtmp, ctx, x);
+ if ((ok <= 0) || X509_cmp(x, xtmp)) {
+ ctx->error = X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT;
+ ctx->current_cert = x;
+ ctx->error_depth = i - 1;
+ if (ok == 1)
+ X509_free(xtmp);
+ bad_chain = 1;
+ ok = cb(0, ctx);
+ if (!ok)
+ goto end;
+ } else {
+ /*
+ * We have a match: replace certificate with store
+ * version so we get any trust settings.
+ */
+ X509_free(x);
+ x = xtmp;
+ (void)sk_X509_set(ctx->chain, i - 1, x);
+ ctx->last_untrusted = 0;
+ }
} else {
/*
- * We have a match: replace certificate with store version so
- * we get any trust settings.
+ * extract and save self signed certificate for later use
*/
- X509_free(x);
- x = xtmp;
- (void)sk_X509_set(ctx->chain, i - 1, x);
- ctx->last_untrusted = 0;
+ chain_ss = sk_X509_pop(ctx->chain);
+ ctx->last_untrusted--;
+ num--;
+ j--;
+ x = sk_X509_value(ctx->chain, num - 1);
}
- } else {
- /*
- * extract and save self signed certificate for later use
- */
- chain_ss = sk_X509_pop(ctx->chain);
- ctx->last_untrusted--;
- num--;
- x = sk_X509_value(ctx->chain, num - 1);
}
- }
-
- /* We now lookup certs from the certificate store */
- for (;;) {
- /* If we have enough, we break */
- if (depth < num)
- break;
-
- /* If we are self signed, we break */
- if (ctx->check_issued(ctx, x, x))
- break;
-
- ok = ctx->get_issuer(&xtmp, ctx, x);
+ /* We now lookup certs from the certificate store */
+ for (;;) {
+ /* If we have enough, we break */
+ if (depth < num)
+ break;
+ /* If we are self signed, we break */
+ if (ctx->check_issued(ctx, x, x))
+ break;
+ ok = ctx->get_issuer(&xtmp, ctx, x);
+ if (ok < 0)
+ return ok;
+ if (ok == 0)
+ break;
+ x = xtmp;
+ if (!sk_X509_push(ctx->chain, x)) {
+ X509_free(xtmp);
+ X509err(X509_F_X509_VERIFY_CERT, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+ num++;
+ }
- if (ok < 0)
- return ok;
- if (ok == 0)
- break;
+ /*
+ * If we haven't got a least one certificate from our store then check
+ * if there is an alternative chain that could be used. We only do this
+ * if the user hasn't switched off alternate chain checking
+ */
+ retry = 0;
+ if (j == ctx->last_untrusted &&
+ !(ctx->param->flags & X509_V_FLAG_NO_ALT_CHAINS)) {
+ while (j-- > 1) {
+ xtmp2 = sk_X509_value(ctx->chain, j - 1);
+ ok = ctx->get_issuer(&xtmp, ctx, xtmp2);
+ if (ok < 0)
+ goto end;
+ /* Check if we found an alternate chain */
+ if (ok > 0) {
+ /*
+ * Free up the found cert we'll add it again later
+ */
+ X509_free(xtmp);
- x = xtmp;
- if (!sk_X509_push(ctx->chain, x)) {
- X509_free(xtmp);
- X509err(X509_F_X509_VERIFY_CERT, ERR_R_MALLOC_FAILURE);
- return 0;
+ /*
+ * Dump all the certs above this point - we've found an
+ * alternate chain
+ */
+ while (num > j) {
+ xtmp = sk_X509_pop(ctx->chain);
+ X509_free(xtmp);
+ num--;
+ ctx->last_untrusted--;
+ }
+ retry = 1;
+ break;
+ }
+ }
}
- num++;
- }
-
- /* we now have our chain, lets check it... */
+ } while (retry);
/* Is last certificate looked up self signed? */
if (!ctx->check_issued(ctx, x, x)) {
@@ -1604,47 +1637,84 @@ int X509_cmp_time(const ASN1_TIME *ctm, time_t *cmp_time)
ASN1_TIME atm;
long offset;
char buff1[24], buff2[24], *p;
- int i, j;
+ int i, j, remaining;
p = buff1;
- i = ctm->length;
+ remaining = ctm->length;
str = (char *)ctm->data;
+ /*
+ * Note that the following (historical) code allows much more slack in the
+ * time format than RFC5280. In RFC5280, the representation is fixed:
+ * UTCTime: YYMMDDHHMMSSZ
+ * GeneralizedTime: YYYYMMDDHHMMSSZ
+ */
if (ctm->type == V_ASN1_UTCTIME) {
- if ((i < 11) || (i > 17))
+ /* YYMMDDHHMM[SS]Z or YYMMDDHHMM[SS](+-)hhmm */
+ int min_length = sizeof("YYMMDDHHMMZ") - 1;
+ int max_length = sizeof("YYMMDDHHMMSS+hhmm") - 1;
+ if (remaining < min_length || remaining > max_length)
return 0;
memcpy(p, str, 10);
p += 10;
str += 10;
+ remaining -= 10;
} else {
- if (i < 13)
+ /* YYYYMMDDHHMM[SS[.fff]]Z or YYYYMMDDHHMM[SS[.f[f[f]]]](+-)hhmm */
+ int min_length = sizeof("YYYYMMDDHHMMZ") - 1;
+ int max_length = sizeof("YYYYMMDDHHMMSS.fff+hhmm") - 1;
+ if (remaining < min_length || remaining > max_length)
return 0;
memcpy(p, str, 12);
p += 12;
str += 12;
+ remaining -= 12;
}
if ((*str == 'Z') || (*str == '-') || (*str == '+')) {
*(p++) = '0';
*(p++) = '0';
} else {
+ /* SS (seconds) */
+ if (remaining < 2)
+ return 0;
*(p++) = *(str++);
*(p++) = *(str++);
- /* Skip any fractional seconds... */
- if (*str == '.') {
+ remaining -= 2;
+ /*
+ * Skip any (up to three) fractional seconds...
+ * TODO(emilia): in RFC5280, fractional seconds are forbidden.
+ * Can we just kill them altogether?
+ */
+ if (remaining && *str == '.') {
str++;
- while ((*str >= '0') && (*str <= '9'))
- str++;
+ remaining--;
+ for (i = 0; i < 3 && remaining; i++, str++, remaining--) {
+ if (*str < '0' || *str > '9')
+ break;
+ }
}
}
*(p++) = 'Z';
*(p++) = '\0';
- if (*str == 'Z')
+ /* We now need either a terminating 'Z' or an offset. */
+ if (!remaining)
+ return 0;
+ if (*str == 'Z') {
+ if (remaining != 1)
+ return 0;
offset = 0;
- else {
+ } else {
+ /* (+-)HHMM */
if ((*str != '+') && (*str != '-'))
return 0;
+ /* Historical behaviour: the (+-)hhmm offset is forbidden in RFC5280. */
+ if (remaining != 5)
+ return 0;
+ if (str[1] < '0' || str[1] > '9' || str[2] < '0' || str[2] > '9' ||
+ str[3] < '0' || str[3] > '9' || str[4] < '0' || str[4] > '9')
+ return 0;
offset = ((str[1] - '0') * 10 + (str[2] - '0')) * 60;
offset += (str[3] - '0') * 10 + (str[4] - '0');
if (*str == '-')
@@ -1921,6 +1991,8 @@ X509_STORE_CTX *X509_STORE_CTX_new(void)
void X509_STORE_CTX_free(X509_STORE_CTX *ctx)
{
+ if (!ctx)
+ return;
X509_STORE_CTX_cleanup(ctx);
OPENSSL_free(ctx);
}
diff --git a/crypto/openssl/crypto/x509/x509_vfy.h b/crypto/openssl/crypto/x509/x509_vfy.h
index 1f8c0ec..aacdf55 100644
--- a/crypto/openssl/crypto/x509/x509_vfy.h
+++ b/crypto/openssl/crypto/x509/x509_vfy.h
@@ -405,6 +405,12 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
# define X509_V_FLAG_USE_DELTAS 0x2000
/* Check selfsigned CA signature */
# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000
+/*
+ * If the initial chain is not trusted, do not attempt to build an alternative
+ * chain. Alternate chain checking was introduced in 1.0.1n/1.0.2b. Setting
+ * this flag will force the behaviour to match that of previous versions.
+ */
+# define X509_V_FLAG_NO_ALT_CHAINS 0x100000
# define X509_VP_FLAG_DEFAULT 0x1
# define X509_VP_FLAG_OVERWRITE 0x2
diff --git a/crypto/openssl/crypto/x509/x509_vpm.c b/crypto/openssl/crypto/x509/x509_vpm.c
index d054366..6b0bf8a 100644
--- a/crypto/openssl/crypto/x509/x509_vpm.c
+++ b/crypto/openssl/crypto/x509/x509_vpm.c
@@ -100,6 +100,8 @@ X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void)
void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param)
{
+ if (param == NULL)
+ return;
x509_verify_param_zero(param);
OPENSSL_free(param);
}
diff --git a/crypto/openssl/crypto/x509/x509type.c b/crypto/openssl/crypto/x509/x509type.c
index 0331752..9219f75 100644
--- a/crypto/openssl/crypto/x509/x509type.c
+++ b/crypto/openssl/crypto/x509/x509type.c
@@ -121,9 +121,6 @@ int X509_certificate_type(X509 *x, EVP_PKEY *pkey)
}
}
- /* /8 because it's 1024 bits we look for, not bytes */
- if (EVP_PKEY_size(pk) <= 1024 / 8)
- ret |= EVP_PKT_EXP;
if (pkey == NULL)
EVP_PKEY_free(pk);
return (ret);
diff --git a/crypto/openssl/crypto/x509v3/Makefile b/crypto/openssl/crypto/x509v3/Makefile
index 556ef35..05125ab 100644
--- a/crypto/openssl/crypto/x509v3/Makefile
+++ b/crypto/openssl/crypto/x509v3/Makefile
@@ -71,6 +71,8 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
+update: depend
+
depend:
@[ -n "$(MAKEDEPEND)" ] # should be set by upper Makefile...
$(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
diff --git a/crypto/openssl/crypto/x509v3/v3_alt.c b/crypto/openssl/crypto/x509v3/v3_alt.c
index 807867b..22ec202 100644
--- a/crypto/openssl/crypto/x509v3/v3_alt.c
+++ b/crypto/openssl/crypto/x509v3/v3_alt.c
@@ -584,24 +584,26 @@ static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
static int do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
{
- int ret;
- STACK_OF(CONF_VALUE) *sk;
- X509_NAME *nm;
+ int ret = 0;
+ STACK_OF(CONF_VALUE) *sk = NULL;
+ X509_NAME *nm = NULL;
if (!(nm = X509_NAME_new()))
- return 0;
+ goto err;
sk = X509V3_get_section(ctx, value);
if (!sk) {
X509V3err(X509V3_F_DO_DIRNAME, X509V3_R_SECTION_NOT_FOUND);
ERR_add_error_data(2, "section=", value);
- X509_NAME_free(nm);
- return 0;
+ goto err;
}
/* FIXME: should allow other character types... */
ret = X509V3_NAME_from_section(nm, sk, MBSTRING_ASC);
if (!ret)
- X509_NAME_free(nm);
+ goto err;
gen->d.dirn = nm;
- X509V3_section_free(ctx, sk);
+err:
+ if (ret == 0)
+ X509_NAME_free(nm);
+ X509V3_section_free(ctx, sk);
return ret;
}
diff --git a/crypto/openssl/crypto/x509v3/v3_cpols.c b/crypto/openssl/crypto/x509v3/v3_cpols.c
index dca6ab2..0febc1b 100644
--- a/crypto/openssl/crypto/x509v3/v3_cpols.c
+++ b/crypto/openssl/crypto/x509v3/v3_cpols.c
@@ -230,11 +230,11 @@ static POLICYINFO *policy_section(X509V3_CTX *ctx,
goto merr;
if (!sk_POLICYQUALINFO_push(pol->qualifiers, qual))
goto merr;
- if(!(qual->pqualid = OBJ_nid2obj(NID_id_qt_cps))) {
+ if (!(qual->pqualid = OBJ_nid2obj(NID_id_qt_cps))) {
X509V3err(X509V3_F_POLICY_SECTION, ERR_R_INTERNAL_ERROR);
goto err;
}
- if(!(qual->d.cpsuri = M_ASN1_IA5STRING_new()))
+ if (!(qual->d.cpsuri = M_ASN1_IA5STRING_new()))
goto merr;
if (!ASN1_STRING_set(qual->d.cpsuri, cnf->value,
strlen(cnf->value)))
@@ -294,7 +294,7 @@ static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
POLICYQUALINFO *qual;
if (!(qual = POLICYQUALINFO_new()))
goto merr;
- if(!(qual->pqualid = OBJ_nid2obj(NID_id_qt_unotice))) {
+ if (!(qual->pqualid = OBJ_nid2obj(NID_id_qt_unotice))) {
X509V3err(X509V3_F_NOTICE_SECTION, ERR_R_INTERNAL_ERROR);
goto err;
}
@@ -304,7 +304,7 @@ static POLICYQUALINFO *notice_section(X509V3_CTX *ctx,
for (i = 0; i < sk_CONF_VALUE_num(unot); i++) {
cnf = sk_CONF_VALUE_value(unot, i);
if (!strcmp(cnf->name, "explicitText")) {
- if(!(not->exptext = M_ASN1_VISIBLESTRING_new()))
+ if (!(not->exptext = M_ASN1_VISIBLESTRING_new()))
goto merr;
if (!ASN1_STRING_set(not->exptext, cnf->value,
strlen(cnf->value)))
diff --git a/crypto/openssl/crypto/x509v3/v3_utl.c b/crypto/openssl/crypto/x509v3/v3_utl.c
index 65dd1e2..94aaebb 100644
--- a/crypto/openssl/crypto/x509v3/v3_utl.c
+++ b/crypto/openssl/crypto/x509v3/v3_utl.c
@@ -285,6 +285,10 @@ STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line)
int state;
/* We are going to modify the line so copy it first */
linebuf = BUF_strdup(line);
+ if (linebuf == NULL) {
+ X509V3err(X509V3_F_X509V3_PARSE_LIST, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
state = HDR_NAME;
ntmp = NULL;
/* Go through all characters */
diff --git a/crypto/openssl/doc/apps/cms.pod b/crypto/openssl/doc/apps/cms.pod
index 75b6988..9a24082 100644
--- a/crypto/openssl/doc/apps/cms.pod
+++ b/crypto/openssl/doc/apps/cms.pod
@@ -35,6 +35,7 @@ B<openssl> B<cms>
[B<-print>]
[B<-CAfile file>]
[B<-CApath dir>]
+[B<-no_alt_chains>]
[B<-md digest>]
[B<-[cipher]>]
[B<-nointern>]
@@ -406,7 +407,7 @@ portion of a message so they may be included manually. If signing
then many S/MIME mail clients check the signers certificate's email
address matches that specified in the From: address.
-=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
+=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains>
Set various certificate chain valiadition option. See the
L<B<verify>|verify(1)> manual page for details.
@@ -614,4 +615,6 @@ The use of multiple B<-signer> options and the B<-resign> command were first
added in OpenSSL 1.0.0
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
+
=cut
diff --git a/crypto/openssl/doc/apps/config.pod b/crypto/openssl/doc/apps/config.pod
index 51fff37..bdc9b46 100644
--- a/crypto/openssl/doc/apps/config.pod
+++ b/crypto/openssl/doc/apps/config.pod
@@ -277,6 +277,59 @@ priority and B</tmp> used if neither is defined:
# The above value is used if TEMP isn't in the environment
tmpfile=${ENV::TEMP}/tmp.filename
+Simple OpenSSL library configuration example to enter FIPS mode:
+
+ # Default appname: should match "appname" parameter (if any)
+ # supplied to CONF_modules_load_file et al.
+ openssl_conf = openssl_conf_section
+
+ [openssl_conf_section]
+ # Configuration module list
+ alg_section = evp_sect
+
+ [evp_sect]
+ # Set to "yes" to enter FIPS mode if supported
+ fips_mode = yes
+
+Note: in the above example you will get an error in non FIPS capable versions
+of OpenSSL.
+
+More complex OpenSSL library configuration. Add OID and don't enter FIPS mode:
+
+ # Default appname: should match "appname" parameter (if any)
+ # supplied to CONF_modules_load_file et al.
+ openssl_conf = openssl_conf_section
+
+ [openssl_conf_section]
+ # Configuration module list
+ alg_section = evp_sect
+ oid_section = new_oids
+
+ [evp_sect]
+ # This will have no effect as FIPS mode is off by default.
+ # Set to "yes" to enter FIPS mode, if supported
+ fips_mode = no
+
+ [new_oids]
+ # New OID, just short name
+ newoid1 = 1.2.3.4.1
+ # New OID shortname and long name
+ newoid2 = New OID 2 long name, 1.2.3.4.2
+
+The above examples can be used with with any application supporting library
+configuration if "openssl_conf" is modified to match the appropriate "appname".
+
+For example if the second sample file above is saved to "example.cnf" then
+the command line:
+
+ OPENSSL_CONF=example.cnf openssl asn1parse -genstr OID:1.2.3.4.1
+
+will output:
+
+ 0:d=0 hl=2 l= 4 prim: OBJECT :newoid1
+
+showing that the OID "newoid1" has been added as "1.2.3.4.1".
+
=head1 BUGS
Currently there is no way to include characters using the octal B<\nnn>
diff --git a/crypto/openssl/doc/apps/dhparam.pod b/crypto/openssl/doc/apps/dhparam.pod
index 6e27cf5..1cd4c76 100644
--- a/crypto/openssl/doc/apps/dhparam.pod
+++ b/crypto/openssl/doc/apps/dhparam.pod
@@ -71,8 +71,10 @@ check if the parameters are valid primes and generator.
=item B<-2>, B<-5>
-The generator to use, either 2 or 5. 2 is the default. If present then the
-input file is ignored and parameters are generated instead.
+The generator to use, either 2 or 5. If present then the
+input file is ignored and parameters are generated instead. If not
+present but B<numbits> is present, parameters are generated with the
+default generator 2.
=item B<-rand> I<file(s)>
@@ -85,9 +87,10 @@ all others.
=item I<numbits>
this option specifies that a parameter set should be generated of size
-I<numbits>. It must be the last option. If not present then a value of 512
-is used. If this option is present then the input file is ignored and
-parameters are generated instead.
+I<numbits>. It must be the last option. If this option is present then
+the input file is ignored and parameters are generated instead. If
+this option is not present but a generator (B<-2> or B<-5>) is
+present, parameters are generated with a default length of 2048 bits.
=item B<-noout>
diff --git a/crypto/openssl/doc/apps/ocsp.pod b/crypto/openssl/doc/apps/ocsp.pod
index 2372b37..fdb900c 100644
--- a/crypto/openssl/doc/apps/ocsp.pod
+++ b/crypto/openssl/doc/apps/ocsp.pod
@@ -29,6 +29,7 @@ B<openssl> B<ocsp>
[B<-path>]
[B<-CApath dir>]
[B<-CAfile file>]
+[B<-no_alt_chains>]]
[B<-VAfile file>]
[B<-validity_period n>]
[B<-status_age n>]
@@ -143,6 +144,10 @@ connection timeout to the OCSP responder in seconds
file or pathname containing trusted CA certificates. These are used to verify
the signature on the OCSP response.
+=item B<-no_alt_chains>
+
+See L<B<verify>|verify(1)> manual page for details.
+
=item B<-verify_other file>
file containing additional certificates to search when attempting to locate
@@ -379,3 +384,9 @@ second file.
openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem
-reqin req.der -respout resp.der
+
+=head1 HISTORY
+
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
+
+=cut
diff --git a/crypto/openssl/doc/apps/s_client.pod b/crypto/openssl/doc/apps/s_client.pod
index b021c73..d92ec93 100644
--- a/crypto/openssl/doc/apps/s_client.pod
+++ b/crypto/openssl/doc/apps/s_client.pod
@@ -19,6 +19,7 @@ B<openssl> B<s_client>
[B<-pass arg>]
[B<-CApath directory>]
[B<-CAfile filename>]
+[B<-no_alt_chains>]
[B<-reconnect>]
[B<-pause>]
[B<-showcerts>]
@@ -116,7 +117,7 @@ also used when building the client certificate chain.
A file containing trusted certificates to use during server authentication
and to use when attempting to build the client certificate chain.
-=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
+=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains>
Set various certificate chain valiadition option. See the
L<B<verify>|verify(1)> manual page for details.
@@ -347,4 +348,8 @@ information whenever a session is renegotiated.
L<sess_id(1)|sess_id(1)>, L<s_server(1)|s_server(1)>, L<ciphers(1)|ciphers(1)>
+=head1 HISTORY
+
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
+
=cut
diff --git a/crypto/openssl/doc/apps/s_server.pod b/crypto/openssl/doc/apps/s_server.pod
index 2105b60..491038e 100644
--- a/crypto/openssl/doc/apps/s_server.pod
+++ b/crypto/openssl/doc/apps/s_server.pod
@@ -33,6 +33,7 @@ B<openssl> B<s_server>
[B<-state>]
[B<-CApath directory>]
[B<-CAfile filename>]
+[B<-no_alt_chains>]
[B<-nocert>]
[B<-cipher cipherlist>]
[B<-serverpref>]
@@ -178,6 +179,10 @@ and to use when attempting to build the server certificate chain. The list
is also used in the list of acceptable client CAs passed to the client when
a certificate is requested.
+=item B<-no_alt_chains>
+
+See the L<B<verify>|verify(1)> manual page for details.
+
=item B<-state>
prints out the SSL session states.
@@ -398,4 +403,8 @@ unknown cipher suites a client says it supports.
L<sess_id(1)|sess_id(1)>, L<s_client(1)|s_client(1)>, L<ciphers(1)|ciphers(1)>
+=head1 HISTORY
+
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
+
=cut
diff --git a/crypto/openssl/doc/apps/smime.pod b/crypto/openssl/doc/apps/smime.pod
index d39a59a..94a8823 100644
--- a/crypto/openssl/doc/apps/smime.pod
+++ b/crypto/openssl/doc/apps/smime.pod
@@ -15,6 +15,7 @@ B<openssl> B<smime>
[B<-pk7out>]
[B<-[cipher]>]
[B<-in file>]
+[B<-no_alt_chains>]
[B<-certfile file>]
[B<-signer file>]
[B<-recip file>]
@@ -259,7 +260,7 @@ portion of a message so they may be included manually. If signing
then many S/MIME mail clients check the signers certificate's email
address matches that specified in the From: address.
-=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
+=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains>
Set various options of certificate chain verification. See
L<B<verify>|verify(1)> manual page for details.
@@ -441,5 +442,6 @@ structures may cause parsing errors.
The use of multiple B<-signer> options and the B<-resign> command were first
added in OpenSSL 1.0.0
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
=cut
diff --git a/crypto/openssl/doc/apps/verify.pod b/crypto/openssl/doc/apps/verify.pod
index 0c8e492..18eeee0 100644
--- a/crypto/openssl/doc/apps/verify.pod
+++ b/crypto/openssl/doc/apps/verify.pod
@@ -22,6 +22,7 @@ B<openssl> B<verify>
[B<-extended_crl>]
[B<-use_deltas>]
[B<-policy_print>]
+[B<-no_alt_chains>]
[B<-untrusted file>]
[B<-help>]
[B<-issuer_checks>]
@@ -108,6 +109,14 @@ Set policy variable inhibit-any-policy (see RFC5280).
Set policy variable inhibit-policy-mapping (see RFC5280).
+=item B<-no_alt_chains>
+
+When building a certificate chain, if the first certificate chain found is not
+trusted, then OpenSSL will continue to check to see if an alternative chain can
+be found that is trusted. With this option that behaviour is suppressed so that
+only the first chain found is ever used. Using this option will force the
+behaviour to match that of previous OpenSSL versions.
+
=item B<-policy_print>
Print out diagnostics related to policy processing.
@@ -409,4 +418,8 @@ B<20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY> error codes.
L<x509(1)|x509(1)>
+=head1 HISTORY
+
+The -no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
+
=cut
diff --git a/crypto/openssl/doc/crypto/BN_rand.pod b/crypto/openssl/doc/crypto/BN_rand.pod
index 81f93c2..3b2796c 100644
--- a/crypto/openssl/doc/crypto/BN_rand.pod
+++ b/crypto/openssl/doc/crypto/BN_rand.pod
@@ -24,7 +24,8 @@ most significant bit of the random number can be zero. If B<top> is 0,
it is set to 1, and if B<top> is 1, the two most significant bits of
the number will be set to 1, so that the product of two such random
numbers will always have 2*B<bits> length. If B<bottom> is true, the
-number will be odd.
+number will be odd. The value of B<bits> must be zero or greater. If B<bits> is
+1 then B<top> cannot also be 1.
BN_pseudo_rand() does the same, but pseudo-random numbers generated by
this function are not necessarily unpredictable. They can be used for
diff --git a/crypto/openssl/doc/crypto/BN_set_bit.pod b/crypto/openssl/doc/crypto/BN_set_bit.pod
index b7c47b9..a32cca2 100644
--- a/crypto/openssl/doc/crypto/BN_set_bit.pod
+++ b/crypto/openssl/doc/crypto/BN_set_bit.pod
@@ -37,12 +37,12 @@ BN_mask_bits() truncates B<a> to an B<n> bit number
shorter than B<n> bits.
BN_lshift() shifts B<a> left by B<n> bits and places the result in
-B<r> (C<r=a*2^n>). BN_lshift1() shifts B<a> left by one and places
-the result in B<r> (C<r=2*a>).
+B<r> (C<r=a*2^n>). Note that B<n> must be non-negative. BN_lshift1() shifts
+B<a> left by one and places the result in B<r> (C<r=2*a>).
BN_rshift() shifts B<a> right by B<n> bits and places the result in
-B<r> (C<r=a/2^n>). BN_rshift1() shifts B<a> right by one and places
-the result in B<r> (C<r=a/2>).
+B<r> (C<r=a/2^n>). Note that B<n> must be non-negative. BN_rshift1() shifts
+B<a> right by one and places the result in B<r> (C<r=a/2>).
For the shift functions, B<r> and B<a> may be the same variable.
diff --git a/crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod b/crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
index 46cac2b..9d86d46 100644
--- a/crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
+++ b/crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod
@@ -133,6 +133,12 @@ verification. If this flag is set then additional status codes will be sent
to the verification callback and it B<must> be prepared to handle such cases
without assuming they are hard errors.
+The B<X509_V_FLAG_NO_ALT_CHAINS> flag suppresses checking for alternative
+chains. By default, when building a certificate chain, if the first certificate
+chain found is not trusted, then OpenSSL will continue to check to see if an
+alternative chain can be found that is trusted. With this flag set the behaviour
+will match that of OpenSSL versions prior to 1.0.1n and 1.0.2b.
+
=head1 NOTES
The above functions should be used to manipulate verification parameters
@@ -166,6 +172,6 @@ L<X509_verify_cert(3)|X509_verify_cert(3)>
=head1 HISTORY
-TBA
+The B<X509_V_FLAG_NO_ALT_CHAINS> flag was added in OpenSSL 1.0.1n and 1.0.2b
=cut
diff --git a/crypto/openssl/doc/crypto/pem.pod b/crypto/openssl/doc/crypto/pem.pod
index 21e9fe3..763eb6f 100644
--- a/crypto/openssl/doc/crypto/pem.pod
+++ b/crypto/openssl/doc/crypto/pem.pod
@@ -2,7 +2,29 @@
=head1 NAME
-PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey, PEM_write_PrivateKey, PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey, PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid, PEM_read_bio_PUBKEY, PEM_read_PUBKEY, PEM_write_bio_PUBKEY, PEM_write_PUBKEY, PEM_read_bio_RSAPrivateKey, PEM_read_RSAPrivateKey, PEM_write_bio_RSAPrivateKey, PEM_write_RSAPrivateKey, PEM_read_bio_RSAPublicKey, PEM_read_RSAPublicKey, PEM_write_bio_RSAPublicKey, PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY, PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey, PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey, PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY, PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams, PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams, PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams, PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509, PEM_read_bio_X509_AUX, PEM_read_X509_AUX, PEM_write_bio_X509_AUX, PEM_write_X509_AUX, PEM_read_bio_X509_REQ, PEM_read_X509_REQ, PEM_write_bio_X509_REQ, PEM_write_X509_REQ, PEM_write_bio_X509_REQ_NEW, PEM_write_X509_REQ_NEW, PEM_read_bio_X509_CRL, PEM_read_X509_CRL, PEM_write_bio_X509_CRL, PEM_write_X509_CRL, PEM_read_bio_PKCS7, PEM_read_PKCS7, PEM_write_bio_PKCS7, PEM_write_PKCS7, PEM_read_bio_NETSCAPE_CERT_SEQUENCE, PEM_read_NETSCAPE_CERT_SEQUENCE, PEM_write_bio_NETSCAPE_CERT_SEQUENCE, PEM_write_NETSCAPE_CERT_SEQUENCE - PEM routines
+PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey,
+PEM_write_PrivateKey, PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey,
+PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid,
+PEM_read_bio_PUBKEY, PEM_read_PUBKEY, PEM_write_bio_PUBKEY, PEM_write_PUBKEY,
+PEM_read_bio_RSAPrivateKey, PEM_read_RSAPrivateKey,
+PEM_write_bio_RSAPrivateKey, PEM_write_RSAPrivateKey,
+PEM_read_bio_RSAPublicKey, PEM_read_RSAPublicKey, PEM_write_bio_RSAPublicKey,
+PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY,
+PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey,
+PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey,
+PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY,
+PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams,
+PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams,
+PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams,
+PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509,
+PEM_read_bio_X509_AUX, PEM_read_X509_AUX, PEM_write_bio_X509_AUX,
+PEM_write_X509_AUX, PEM_read_bio_X509_REQ, PEM_read_X509_REQ,
+PEM_write_bio_X509_REQ, PEM_write_X509_REQ, PEM_write_bio_X509_REQ_NEW,
+PEM_write_X509_REQ_NEW, PEM_read_bio_X509_CRL, PEM_read_X509_CRL,
+PEM_write_bio_X509_CRL, PEM_write_X509_CRL, PEM_read_bio_PKCS7, PEM_read_PKCS7,
+PEM_write_bio_PKCS7, PEM_write_PKCS7, PEM_read_bio_NETSCAPE_CERT_SEQUENCE,
+PEM_read_NETSCAPE_CERT_SEQUENCE, PEM_write_bio_NETSCAPE_CERT_SEQUENCE,
+PEM_write_NETSCAPE_CERT_SEQUENCE - PEM routines
=head1 SYNOPSIS
@@ -239,7 +261,8 @@ SubjectPublicKeyInfo structure and an error occurs if the public
key is not DSA.
The B<DSAparams> functions process DSA parameters using a DSA
-structure. The parameters are encoded using a foobar structure.
+structure. The parameters are encoded using a Dss-Parms structure
+as defined in RFC2459.
The B<DHparams> functions process DH parameters using a DH
structure. The parameters are encoded using a PKCS#3 DHparameter
diff --git a/crypto/openssl/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod b/crypto/openssl/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
index 7a27eef..b754c16 100644
--- a/crypto/openssl/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
+++ b/crypto/openssl/doc/ssl/SSL_CTX_set_tmp_dh_callback.pod
@@ -61,12 +61,12 @@ negotiation is being saved.
If "strong" primes were used to generate the DH parameters, it is not strictly
necessary to generate a new key for each handshake but it does improve forward
-secrecy. If it is not assured, that "strong" primes were used (see especially
-the section about DSA parameters below), SSL_OP_SINGLE_DH_USE must be used
-in order to prevent small subgroup attacks. Always using SSL_OP_SINGLE_DH_USE
-has an impact on the computer time needed during negotiation, but it is not
-very large, so application authors/users should consider to always enable
-this option.
+secrecy. If it is not assured that "strong" primes were used,
+SSL_OP_SINGLE_DH_USE must be used in order to prevent small subgroup
+attacks. Always using SSL_OP_SINGLE_DH_USE has an impact on the
+computer time needed during negotiation, but it is not very large, so
+application authors/users should consider always enabling this option.
+The option is required to implement perfect forward secrecy (PFS).
As generating DH parameters is extremely time consuming, an application
should not generate the parameters on the fly but supply the parameters.
@@ -74,82 +74,62 @@ DH parameters can be reused, as the actual key is newly generated during
the negotiation. The risk in reusing DH parameters is that an attacker
may specialize on a very often used DH group. Applications should therefore
generate their own DH parameters during the installation process using the
-openssl L<dhparam(1)|dhparam(1)> application. In order to reduce the computer
-time needed for this generation, it is possible to use DSA parameters
-instead (see L<dhparam(1)|dhparam(1)>), but in this case SSL_OP_SINGLE_DH_USE
-is mandatory.
+openssl L<dhparam(1)|dhparam(1)> application. This application
+guarantees that "strong" primes are used.
-Application authors may compile in DH parameters. Files dh512.pem,
-dh1024.pem, dh2048.pem, and dh4096.pem in the 'apps' directory of current
+Files dh2048.pem, and dh4096.pem in the 'apps' directory of the current
version of the OpenSSL distribution contain the 'SKIP' DH parameters,
which use safe primes and were generated verifiably pseudo-randomly.
These files can be converted into C code using the B<-C> option of the
-L<dhparam(1)|dhparam(1)> application.
-Authors may also generate their own set of parameters using
-L<dhparam(1)|dhparam(1)>, but a user may not be sure how the parameters were
-generated. The generation of DH parameters during installation is therefore
-recommended.
+L<dhparam(1)|dhparam(1)> application. Generation of custom DH
+parameters during installation should still be preferred to stop an
+attacker from specializing on a commonly used group. Files dh1024.pem
+and dh512.pem contain old parameters that must not be used by
+applications.
An application may either directly specify the DH parameters or
-can supply the DH parameters via a callback function. The callback approach
-has the advantage, that the callback may supply DH parameters for different
-key lengths.
+can supply the DH parameters via a callback function.
-The B<tmp_dh_callback> is called with the B<keylength> needed and
-the B<is_export> information. The B<is_export> flag is set, when the
-ephemeral DH key exchange is performed with an export cipher.
+Previous versions of the callback used B<is_export> and B<keylength>
+parameters to control parameter generation for export and non-export
+cipher suites. Modern servers that do not support export ciphersuites
+are advised to either use SSL_CTX_set_tmp_dh() in combination with
+SSL_OP_SINGLE_DH_USE, or alternatively, use the callback but ignore
+B<keylength> and B<is_export> and simply supply at least 2048-bit
+parameters in the callback.
=head1 EXAMPLES
-Handle DH parameters for key lengths of 512 and 1024 bits. (Error handling
+Setup DH parameters with a key length of 2048 bits. (Error handling
partly left out.)
- ...
- /* Set up ephemeral DH stuff */
- DH *dh_512 = NULL;
- DH *dh_1024 = NULL;
- FILE *paramfile;
+ Command-line parameter generation:
+ $ openssl dhparam -out dh_param_2048.pem 2048
+
+ Code for setting up parameters during server initialization:
...
- /* "openssl dhparam -out dh_param_512.pem -2 512" */
- paramfile = fopen("dh_param_512.pem", "r");
+ SSL_CTX ctx = SSL_CTX_new();
+ ...
+
+ /* Set up ephemeral DH parameters. */
+ DH *dh_2048 = NULL;
+ FILE *paramfile;
+ paramfile = fopen("dh_param_2048.pem", "r");
if (paramfile) {
- dh_512 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
+ dh_2048 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
fclose(paramfile);
+ } else {
+ /* Error. */
}
- /* "openssl dhparam -out dh_param_1024.pem -2 1024" */
- paramfile = fopen("dh_param_1024.pem", "r");
- if (paramfile) {
- dh_1024 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
- fclose(paramfile);
+ if (dh_2048 == NULL) {
+ /* Error. */
}
- ...
-
- /* "openssl dhparam -C -2 512" etc... */
- DH *get_dh512() { ... }
- DH *get_dh1024() { ... }
-
- DH *tmp_dh_callback(SSL *s, int is_export, int keylength)
- {
- DH *dh_tmp=NULL;
-
- switch (keylength) {
- case 512:
- if (!dh_512)
- dh_512 = get_dh512();
- dh_tmp = dh_512;
- break;
- case 1024:
- if (!dh_1024)
- dh_1024 = get_dh1024();
- dh_tmp = dh_1024;
- break;
- default:
- /* Generating a key on the fly is very costly, so use what is there */
- setup_dh_parameters_like_above();
- }
- return(dh_tmp);
+ if (SSL_CTX_set_tmp_dh(ctx, dh_2048) != 1) {
+ /* Error. */
}
+ SSL_CTX_set_options(ctx, SSL_OP_SINGLE_DH_USE);
+ ...
=head1 RETURN VALUES
diff --git a/crypto/openssl/e_os2.h b/crypto/openssl/e_os2.h
index d400ac7..2b1b78f 100644
--- a/crypto/openssl/e_os2.h
+++ b/crypto/openssl/e_os2.h
@@ -109,6 +109,12 @@ extern "C" {
# undef OPENSSL_SYS_UNIX
# define OPENSSL_SYS_WIN32
# endif
+# if defined(_WIN64) || defined(OPENSSL_SYSNAME_WIN64)
+# undef OPENSSL_SYS_UNIX
+# if !defined(OPENSSL_SYS_WIN64)
+# define OPENSSL_SYS_WIN64
+# endif
+# endif
# if defined(OPENSSL_SYSNAME_WINNT)
# undef OPENSSL_SYS_UNIX
# define OPENSSL_SYS_WINNT
@@ -121,7 +127,7 @@ extern "C" {
# endif
/* Anything that tries to look like Microsoft is "Windows" */
-# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)
+# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)
# undef OPENSSL_SYS_UNIX
# define OPENSSL_SYS_WINDOWS
# ifndef OPENSSL_SYS_MSDOS
diff --git a/crypto/openssl/engines/Makefile b/crypto/openssl/engines/Makefile
index 2fa9534..23bd2f3 100644
--- a/crypto/openssl/engines/Makefile
+++ b/crypto/openssl/engines/Makefile
@@ -146,12 +146,15 @@ lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
@target=lint; $(RECURSIVE_MAKE)
-depend:
- @if [ -z "$(THIS)" ]; then \
- $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; \
- fi
- @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
+update: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+ @[ -z "$(THIS)" ] || (set -e; target=update; $(RECURSIVE_MAKE) )
+
+depend: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
@[ -z "$(THIS)" ] || (set -e; target=depend; $(RECURSIVE_MAKE) )
+local_depend:
+ @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
dclean:
$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
diff --git a/crypto/openssl/engines/ccgost/Makefile b/crypto/openssl/engines/ccgost/Makefile
index d661c10..4e183a4 100644
--- a/crypto/openssl/engines/ccgost/Makefile
+++ b/crypto/openssl/engines/ccgost/Makefile
@@ -66,12 +66,13 @@ links:
tests:
-depend:
- @if [ -z "$(THIS)" ]; then \
- $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; \
- else \
- $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC); \
- fi
+update: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+
+depend: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+local_depend:
+ @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
files:
@@ -262,8 +263,9 @@ gost_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
gost_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
gost_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
gost_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
-gost_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
-gost_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+gost_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+gost_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+gost_sign.o: ../../include/openssl/objects.h
gost_sign.o: ../../include/openssl/opensslconf.h
gost_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
gost_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
diff --git a/crypto/openssl/engines/ccgost/e_gost_err.c b/crypto/openssl/engines/ccgost/e_gost_err.c
index 3201b64..80ef58f 100644
--- a/crypto/openssl/engines/ccgost/e_gost_err.c
+++ b/crypto/openssl/engines/ccgost/e_gost_err.c
@@ -1,6 +1,6 @@
/* e_gost_err.c */
/* ====================================================================
- * Copyright (c) 1999-2009 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -90,6 +90,7 @@ static ERR_STRING_DATA GOST_str_functs[] = {
{ERR_FUNC(GOST_F_GOST_IMIT_CTRL), "GOST_IMIT_CTRL"},
{ERR_FUNC(GOST_F_GOST_IMIT_FINAL), "GOST_IMIT_FINAL"},
{ERR_FUNC(GOST_F_GOST_IMIT_UPDATE), "GOST_IMIT_UPDATE"},
+ {ERR_FUNC(GOST_F_GOST_SIGN_KEYGEN), "GOST_SIGN_KEYGEN"},
{ERR_FUNC(GOST_F_PARAM_COPY_GOST01), "PARAM_COPY_GOST01"},
{ERR_FUNC(GOST_F_PARAM_COPY_GOST94), "PARAM_COPY_GOST94"},
{ERR_FUNC(GOST_F_PKEY_GOST01CP_DECRYPT), "PKEY_GOST01CP_DECRYPT"},
diff --git a/crypto/openssl/engines/ccgost/e_gost_err.h b/crypto/openssl/engines/ccgost/e_gost_err.h
index 92be558..a2018ec 100644
--- a/crypto/openssl/engines/ccgost/e_gost_err.h
+++ b/crypto/openssl/engines/ccgost/e_gost_err.h
@@ -90,6 +90,7 @@ void ERR_GOST_error(int function, int reason, char *file, int line);
# define GOST_F_GOST_IMIT_CTRL 114
# define GOST_F_GOST_IMIT_FINAL 140
# define GOST_F_GOST_IMIT_UPDATE 115
+# define GOST_F_GOST_SIGN_KEYGEN 142
# define GOST_F_PARAM_COPY_GOST01 116
# define GOST_F_PARAM_COPY_GOST94 117
# define GOST_F_PKEY_GOST01CP_DECRYPT 118
diff --git a/crypto/openssl/engines/ccgost/gost2001.c b/crypto/openssl/engines/ccgost/gost2001.c
index 2b96694..9536295 100644
--- a/crypto/openssl/engines/ccgost/gost2001.c
+++ b/crypto/openssl/engines/ccgost/gost2001.c
@@ -41,6 +41,11 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid)
BN_CTX *ctx = BN_CTX_new();
int ok = 0;
+ if(!ctx) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+
BN_CTX_start(ctx);
p = BN_CTX_get(ctx);
a = BN_CTX_get(ctx);
@@ -48,6 +53,10 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid)
x = BN_CTX_get(ctx);
y = BN_CTX_get(ctx);
q = BN_CTX_get(ctx);
+ if(!p || !a || !b || !x || !y || !q) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
while (params->nid != NID_undef && params->nid != nid)
params++;
if (params->nid == NID_undef) {
@@ -55,18 +64,33 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid)
GOST_R_UNSUPPORTED_PARAMETER_SET);
goto err;
}
- BN_hex2bn(&p, params->p);
- BN_hex2bn(&a, params->a);
- BN_hex2bn(&b, params->b);
+ if(!BN_hex2bn(&p, params->p)
+ || !BN_hex2bn(&a, params->a)
+ || !BN_hex2bn(&b, params->b)) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS,
+ ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
grp = EC_GROUP_new_curve_GFp(p, a, b, ctx);
+ if(!grp) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
P = EC_POINT_new(grp);
+ if(!P) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
- BN_hex2bn(&x, params->x);
- BN_hex2bn(&y, params->y);
- EC_POINT_set_affine_coordinates_GFp(grp, P, x, y, ctx);
- BN_hex2bn(&q, params->q);
+ if(!BN_hex2bn(&x, params->x)
+ || !BN_hex2bn(&y, params->y)
+ || !EC_POINT_set_affine_coordinates_GFp(grp, P, x, y, ctx)
+ || !BN_hex2bn(&q, params->q)) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
#ifdef DEBUG_KEYS
fprintf(stderr, "Set params index %d oid %s\nq=",
(params - R3410_2001_paramset), OBJ_nid2sn(params->nid));
@@ -74,16 +98,23 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid)
fprintf(stderr, "\n");
#endif
- EC_GROUP_set_generator(grp, P, q, NULL);
+ if(!EC_GROUP_set_generator(grp, P, q, NULL)) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
EC_GROUP_set_curve_name(grp, params->nid);
-
- EC_KEY_set_group(eckey, grp);
+ if(!EC_KEY_set_group(eckey, grp)) {
+ GOSTerr(GOST_F_FILL_GOST2001_PARAMS, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
ok = 1;
err:
- EC_POINT_free(P);
- EC_GROUP_free(grp);
- BN_CTX_end(ctx);
- BN_CTX_free(ctx);
+ if (P) EC_POINT_free(P);
+ if (grp) EC_GROUP_free(grp);
+ if (ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
return ok;
}
@@ -94,7 +125,7 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid)
*/
DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
{
- DSA_SIG *newsig = NULL;
+ DSA_SIG *newsig = NULL, *ret = NULL;
BIGNUM *md = hashsum2bn(dgst);
BIGNUM *order = NULL;
const EC_GROUP *group;
@@ -103,6 +134,10 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
NULL, *e = NULL;
EC_POINT *C = NULL;
BN_CTX *ctx = BN_CTX_new();
+ if(!ctx || !md) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_CTX_start(ctx);
OPENSSL_assert(dlen == 32);
newsig = DSA_SIG_new();
@@ -111,11 +146,25 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
goto err;
}
group = EC_KEY_get0_group(eckey);
+ if(!group) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
order = BN_CTX_get(ctx);
- EC_GROUP_get_order(group, order, ctx);
+ if(!order || !EC_GROUP_get_order(group, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
priv_key = EC_KEY_get0_private_key(eckey);
+ if(!priv_key) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
e = BN_CTX_get(ctx);
- BN_mod(e, md, order, ctx);
+ if(!e || !BN_mod(e, md, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
#ifdef DEBUG_SIGN
fprintf(stderr, "digest as bignum=");
BN_print_fp(stderr, md);
@@ -128,55 +177,80 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
}
k = BN_CTX_get(ctx);
C = EC_POINT_new(group);
+ if(!k || !C) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
do {
do {
if (!BN_rand_range(k, order)) {
GOSTerr(GOST_F_GOST2001_DO_SIGN,
GOST_R_RANDOM_NUMBER_GENERATOR_FAILED);
- DSA_SIG_free(newsig);
- newsig = NULL;
goto err;
}
if (!EC_POINT_mul(group, C, k, NULL, NULL, ctx)) {
GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_EC_LIB);
- DSA_SIG_free(newsig);
- newsig = NULL;
goto err;
}
if (!X)
X = BN_CTX_get(ctx);
+ if (!r)
+ r = BN_CTX_get(ctx);
+ if (!X || !r) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
if (!EC_POINT_get_affine_coordinates_GFp(group, C, X, NULL, ctx)) {
GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_EC_LIB);
- DSA_SIG_free(newsig);
- newsig = NULL;
goto err;
}
- if (!r)
- r = BN_CTX_get(ctx);
- BN_nnmod(r, X, order, ctx);
+
+ if(!BN_nnmod(r, X, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
}
while (BN_is_zero(r));
/* s = (r*priv_key+k*e) mod order */
if (!tmp)
tmp = BN_CTX_get(ctx);
- BN_mod_mul(tmp, priv_key, r, order, ctx);
if (!tmp2)
tmp2 = BN_CTX_get(ctx);
- BN_mod_mul(tmp2, k, e, order, ctx);
if (!s)
s = BN_CTX_get(ctx);
- BN_mod_add(s, tmp, tmp2, order, ctx);
+ if (!tmp || !tmp2 || !s) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+
+ if(!BN_mod_mul(tmp, priv_key, r, order, ctx)
+ || !BN_mod_mul(tmp2, k, e, order, ctx)
+ || !BN_mod_add(s, tmp, tmp2, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
}
while (BN_is_zero(s));
newsig->s = BN_dup(s);
newsig->r = BN_dup(r);
+ if(!newsig->s || !newsig->r) {
+ GOSTerr(GOST_F_GOST2001_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+
+ ret = newsig;
err:
- BN_CTX_end(ctx);
- BN_CTX_free(ctx);
- EC_POINT_free(C);
- BN_free(md);
- return newsig;
+ if(ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
+ if (C) EC_POINT_free(C);
+ if (md) BN_free(md);
+ if (!ret && newsig) {
+ DSA_SIG_free(newsig);
+ }
+ return ret;
}
/*
@@ -196,6 +270,11 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
const EC_POINT *pub_key = NULL;
int ok = 0;
+ if(!ctx || !group) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
+
BN_CTX_start(ctx);
order = BN_CTX_get(ctx);
e = BN_CTX_get(ctx);
@@ -205,9 +284,17 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
X = BN_CTX_get(ctx);
R = BN_CTX_get(ctx);
v = BN_CTX_get(ctx);
+ if(!order || !e || !z1 || !z2 || !tmp || !X || !R || !v) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
- EC_GROUP_get_order(group, order, ctx);
pub_key = EC_KEY_get0_public_key(ec);
+ if(!pub_key || !EC_GROUP_get_order(group, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
+
if (BN_is_zero(sig->s) || BN_is_zero(sig->r) ||
(BN_cmp(sig->s, order) >= 1) || (BN_cmp(sig->r, order) >= 1)) {
GOSTerr(GOST_F_GOST2001_DO_VERIFY,
@@ -217,19 +304,28 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
}
md = hashsum2bn(dgst);
- BN_mod(e, md, order, ctx);
+ if(!md || !BN_mod(e, md, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
#ifdef DEBUG_SIGN
fprintf(stderr, "digest as bignum: ");
BN_print_fp(stderr, md);
fprintf(stderr, "\ndigest mod q: ");
BN_print_fp(stderr, e);
#endif
- if (BN_is_zero(e))
- BN_one(e);
+ if (BN_is_zero(e) && !BN_one(e)) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
v = BN_mod_inverse(v, e, order, ctx);
- BN_mod_mul(z1, sig->s, v, order, ctx);
- BN_sub(tmp, order, sig->r);
- BN_mod_mul(z2, tmp, v, order, ctx);
+ if(!v
+ || !BN_mod_mul(z1, sig->s, v, order, ctx)
+ || !BN_sub(tmp, order, sig->r)
+ || !BN_mod_mul(z2, tmp, v, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
#ifdef DEBUG_SIGN
fprintf(stderr, "\nInverted digest value: ");
BN_print_fp(stderr, v);
@@ -239,6 +335,10 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
BN_print_fp(stderr, z2);
#endif
C = EC_POINT_new(group);
+ if (!C) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
if (!EC_POINT_mul(group, C, z1, pub_key, z2, ctx)) {
GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB);
goto err;
@@ -247,7 +347,10 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB);
goto err;
}
- BN_mod(R, X, order, ctx);
+ if(!BN_mod(R, X, order, ctx)) {
+ GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
#ifdef DEBUG_SIGN
fprintf(stderr, "\nX=");
BN_print_fp(stderr, X);
@@ -261,10 +364,12 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len,
ok = 1;
}
err:
- EC_POINT_free(C);
- BN_CTX_end(ctx);
- BN_CTX_free(ctx);
- BN_free(md);
+ if (C) EC_POINT_free(C);
+ if (ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
+ if (md) BN_free(md);
return ok;
}
@@ -287,6 +392,10 @@ int gost2001_compute_public(EC_KEY *ec)
return 0;
}
ctx = BN_CTX_new();
+ if(!ctx) {
+ GOSTerr(GOST_F_GOST2001_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_CTX_start(ctx);
if (!(priv_key = EC_KEY_get0_private_key(ec))) {
GOSTerr(GOST_F_GOST2001_COMPUTE_PUBLIC, ERR_R_EC_LIB);
@@ -294,6 +403,10 @@ int gost2001_compute_public(EC_KEY *ec)
}
pub_key = EC_POINT_new(group);
+ if(!pub_key) {
+ GOSTerr(GOST_F_GOST2001_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, ctx)) {
GOSTerr(GOST_F_GOST2001_COMPUTE_PUBLIC, ERR_R_EC_LIB);
goto err;
@@ -304,9 +417,11 @@ int gost2001_compute_public(EC_KEY *ec)
}
ok = 256;
err:
- BN_CTX_end(ctx);
- EC_POINT_free(pub_key);
- BN_CTX_free(ctx);
+ if (pub_key) EC_POINT_free(pub_key);
+ if (ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
return ok;
}
@@ -320,7 +435,13 @@ int gost2001_keygen(EC_KEY *ec)
{
BIGNUM *order = BN_new(), *d = BN_new();
const EC_GROUP *group = EC_KEY_get0_group(ec);
- EC_GROUP_get_order(group, order, NULL);
+
+ if(!group || !EC_GROUP_get_order(group, order, NULL)) {
+ GOSTerr(GOST_F_GOST2001_KEYGEN, ERR_R_INTERNAL_ERROR);
+ BN_free(d);
+ BN_free(order);
+ return 0;
+ }
do {
if (!BN_rand_range(d, order)) {
@@ -332,7 +453,13 @@ int gost2001_keygen(EC_KEY *ec)
}
}
while (BN_is_zero(d));
- EC_KEY_set_private_key(ec, d);
+
+ if(!EC_KEY_set_private_key(ec, d)) {
+ GOSTerr(GOST_F_GOST2001_KEYGEN, ERR_R_INTERNAL_ERROR);
+ BN_free(d);
+ BN_free(order);
+ return 0;
+ }
BN_free(d);
BN_free(order);
return gost2001_compute_public(ec);
diff --git a/crypto/openssl/engines/ccgost/gost94_keyx.c b/crypto/openssl/engines/ccgost/gost94_keyx.c
index 85f4bc8..ce57f17 100644
--- a/crypto/openssl/engines/ccgost/gost94_keyx.c
+++ b/crypto/openssl/engines/ccgost/gost94_keyx.c
@@ -104,6 +104,7 @@ int pkey_GOST94cp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out,
struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx);
gost_ctx cctx;
int key_is_ephemeral = 1;
+ int tmp_outlen;
EVP_PKEY *mykey = EVP_PKEY_CTX_get0_peerkey(ctx);
/* Do not use vizir cipher parameters with cryptopro */
@@ -174,12 +175,13 @@ int pkey_GOST94cp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out,
}
ASN1_OBJECT_free(gkt->key_agreement_info->cipher);
gkt->key_agreement_info->cipher = OBJ_nid2obj(param->nid);
- *outlen = i2d_GOST_KEY_TRANSPORT(gkt, out ? &out : NULL);
- if (*outlen <= 0) {
+ tmp_outlen = i2d_GOST_KEY_TRANSPORT(gkt, out ? &out : NULL);
+ if (tmp_outlen <= 0) {
GOSTerr(GOST_F_PKEY_GOST94CP_ENCRYPT,
GOST_R_ERROR_PACKING_KEY_TRANSPORT_INFO);
goto err;
}
+ *outlen = tmp_outlen;
if (!key_is_ephemeral) {
/* Set control "public key from client certificate used" */
if (EVP_PKEY_CTX_ctrl(ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 3, NULL) <=
diff --git a/crypto/openssl/engines/ccgost/gost_ameth.c b/crypto/openssl/engines/ccgost/gost_ameth.c
index 713a0fa..b7c5354 100644
--- a/crypto/openssl/engines/ccgost/gost_ameth.c
+++ b/crypto/openssl/engines/ccgost/gost_ameth.c
@@ -115,7 +115,10 @@ static int decode_gost_algor_params(EVP_PKEY *pkey, X509_ALGOR *palg)
}
param_nid = OBJ_obj2nid(gkp->key_params);
GOST_KEY_PARAMS_free(gkp);
- EVP_PKEY_set_type(pkey, pkey_nid);
+ if(!EVP_PKEY_set_type(pkey, pkey_nid)) {
+ GOSTerr(GOST_F_DECODE_GOST_ALGOR_PARAMS, ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
switch (pkey_nid) {
case NID_id_GostR3410_94:
{
@@ -552,9 +555,19 @@ static int param_copy_gost01(EVP_PKEY *to, const EVP_PKEY *from)
}
if (!eto) {
eto = EC_KEY_new();
- EVP_PKEY_assign(to, EVP_PKEY_base_id(from), eto);
+ if(!eto) {
+ GOSTerr(GOST_F_PARAM_COPY_GOST01, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+ if(!EVP_PKEY_assign(to, EVP_PKEY_base_id(from), eto)) {
+ GOSTerr(GOST_F_PARAM_COPY_GOST01, ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
+ }
+ if(!EC_KEY_set_group(eto, EC_KEY_get0_group(efrom))) {
+ GOSTerr(GOST_F_PARAM_COPY_GOST01, ERR_R_INTERNAL_ERROR);
+ return 0;
}
- EC_KEY_set_group(eto, EC_KEY_get0_group(efrom));
if (EC_KEY_get0_private_key(eto)) {
gost2001_compute_public(eto);
}
@@ -729,8 +742,21 @@ static int pub_encode_gost01(X509_PUBKEY *pub, const EVP_PKEY *pk)
}
X = BN_new();
Y = BN_new();
- EC_POINT_get_affine_coordinates_GFp(EC_KEY_get0_group(ec),
- pub_key, X, Y, NULL);
+ if(!X || !Y) {
+ GOSTerr(GOST_F_PUB_ENCODE_GOST01, ERR_R_MALLOC_FAILURE);
+ if(X) BN_free(X);
+ if(Y) BN_free(Y);
+ BN_free(order);
+ return 0;
+ }
+ if(!EC_POINT_get_affine_coordinates_GFp(EC_KEY_get0_group(ec),
+ pub_key, X, Y, NULL)) {
+ GOSTerr(GOST_F_PUB_ENCODE_GOST01, ERR_R_INTERNAL_ERROR);
+ BN_free(X);
+ BN_free(Y);
+ BN_free(order);
+ return 0;
+ }
data_len = 2 * BN_num_bytes(order);
BN_free(order);
databuf = OPENSSL_malloc(data_len);
diff --git a/crypto/openssl/engines/ccgost/gost_pmeth.c b/crypto/openssl/engines/ccgost/gost_pmeth.c
index 9af7b06..b6275b2 100644
--- a/crypto/openssl/engines/ccgost/gost_pmeth.c
+++ b/crypto/openssl/engines/ccgost/gost_pmeth.c
@@ -502,7 +502,7 @@ static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx,
long keylen;
int ret;
unsigned char *keybuf = string_to_hex(value, &keylen);
- if (keylen != 32) {
+ if (!keybuf || keylen != 32) {
GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR,
GOST_R_INVALID_MAC_KEY_LENGTH);
OPENSSL_free(keybuf);
diff --git a/crypto/openssl/engines/ccgost/gost_sign.c b/crypto/openssl/engines/ccgost/gost_sign.c
index 0116e47..07ad921 100644
--- a/crypto/openssl/engines/ccgost/gost_sign.c
+++ b/crypto/openssl/engines/ccgost/gost_sign.c
@@ -12,6 +12,7 @@
#include <openssl/bn.h>
#include <openssl/dsa.h>
#include <openssl/evp.h>
+#include <openssl/err.h>
#include "gost_params.h"
#include "gost_lcl.h"
@@ -52,11 +53,16 @@ void dump_dsa_sig(const char *message, DSA_SIG *sig)
DSA_SIG *gost_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
{
BIGNUM *k = NULL, *tmp = NULL, *tmp2 = NULL;
- DSA_SIG *newsig = DSA_SIG_new();
+ DSA_SIG *newsig = NULL, *ret = NULL;
BIGNUM *md = hashsum2bn(dgst);
/* check if H(M) mod q is zero */
BN_CTX *ctx = BN_CTX_new();
+ if(!ctx) {
+ GOSTerr(GOST_F_GOST_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_CTX_start(ctx);
+ newsig = DSA_SIG_new();
if (!newsig) {
GOSTerr(GOST_F_GOST_DO_SIGN, GOST_R_NO_MEMORY);
goto err;
@@ -64,6 +70,10 @@ DSA_SIG *gost_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
tmp = BN_CTX_get(ctx);
k = BN_CTX_get(ctx);
tmp2 = BN_CTX_get(ctx);
+ if(!tmp || !k || !tmp2) {
+ GOSTerr(GOST_F_GOST_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_mod(tmp, md, dsa->q, ctx);
if (BN_is_zero(tmp)) {
BN_one(md);
@@ -76,24 +86,41 @@ DSA_SIG *gost_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
BN_rand_range(k, dsa->q);
/* generate r = (a^x mod p) mod q */
BN_mod_exp(tmp, dsa->g, k, dsa->p, ctx);
- if (!(newsig->r))
+ if (!(newsig->r)) {
newsig->r = BN_new();
+ if(!newsig->r) {
+ GOSTerr(GOST_F_GOST_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+ }
BN_mod(newsig->r, tmp, dsa->q, ctx);
}
while (BN_is_zero(newsig->r));
/* generate s = (xr + k(Hm)) mod q */
BN_mod_mul(tmp, dsa->priv_key, newsig->r, dsa->q, ctx);
BN_mod_mul(tmp2, k, md, dsa->q, ctx);
- if (!newsig->s)
+ if (!newsig->s) {
newsig->s = BN_new();
+ if(!newsig->s) {
+ GOSTerr(GOST_F_GOST_DO_SIGN, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+ }
BN_mod_add(newsig->s, tmp, tmp2, dsa->q, ctx);
}
while (BN_is_zero(newsig->s));
+
+ ret = newsig;
err:
BN_free(md);
- BN_CTX_end(ctx);
- BN_CTX_free(ctx);
- return newsig;
+ if(ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
+ if(!ret && newsig) {
+ DSA_SIG_free(newsig);
+ }
+ return ret;
}
/*
@@ -135,17 +162,21 @@ int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen)
int gost_do_verify(const unsigned char *dgst, int dgst_len,
DSA_SIG *sig, DSA *dsa)
{
- BIGNUM *md, *tmp = NULL;
+ BIGNUM *md = NULL, *tmp = NULL;
BIGNUM *q2 = NULL;
BIGNUM *u = NULL, *v = NULL, *z1 = NULL, *z2 = NULL;
BIGNUM *tmp2 = NULL, *tmp3 = NULL;
- int ok;
+ int ok = 0;
BN_CTX *ctx = BN_CTX_new();
+ if(!ctx) {
+ GOSTerr(GOST_F_GOST_DO_VERIFY, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_CTX_start(ctx);
if (BN_cmp(sig->s, dsa->q) >= 1 || BN_cmp(sig->r, dsa->q) >= 1) {
GOSTerr(GOST_F_GOST_DO_VERIFY, GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q);
- return 0;
+ goto err;
}
md = hashsum2bn(dgst);
@@ -157,6 +188,10 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len,
tmp2 = BN_CTX_get(ctx);
tmp3 = BN_CTX_get(ctx);
u = BN_CTX_get(ctx);
+ if(!tmp || !v || !q2 || !z1 || !z2 || !tmp2 || !tmp3 || !u) {
+ GOSTerr(GOST_F_GOST_DO_VERIFY, ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
BN_mod(tmp, md, dsa->q, ctx);
if (BN_is_zero(tmp)) {
@@ -172,15 +207,18 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len,
BN_mod_exp(tmp2, dsa->pub_key, z2, dsa->p, ctx);
BN_mod_mul(tmp3, tmp, tmp2, dsa->p, ctx);
BN_mod(u, tmp3, dsa->q, ctx);
- ok = BN_cmp(u, sig->r);
+ ok = (BN_cmp(u, sig->r) == 0);
- BN_free(md);
- BN_CTX_end(ctx);
- BN_CTX_free(ctx);
- if (ok != 0) {
+ if (!ok) {
GOSTerr(GOST_F_GOST_DO_VERIFY, GOST_R_SIGNATURE_MISMATCH);
}
- return (ok == 0);
+err:
+ if(md) BN_free(md);
+ if(ctx) {
+ BN_CTX_end(ctx);
+ BN_CTX_free(ctx);
+ }
+ return ok;
}
/*
@@ -190,13 +228,24 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len,
int gost94_compute_public(DSA *dsa)
{
/* Now fill algorithm parameters with correct values */
- BN_CTX *ctx = BN_CTX_new();
+ BN_CTX *ctx;
if (!dsa->g) {
GOSTerr(GOST_F_GOST94_COMPUTE_PUBLIC, GOST_R_KEY_IS_NOT_INITALIZED);
return 0;
}
- /* Compute public key y = a^x mod p */
+ ctx = BN_CTX_new();
+ if(!ctx) {
+ GOSTerr(GOST_F_GOST94_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+
dsa->pub_key = BN_new();
+ if(!dsa->pub_key) {
+ GOSTerr(GOST_F_GOST94_COMPUTE_PUBLIC, ERR_R_MALLOC_FAILURE);
+ BN_CTX_free(ctx);
+ return 0;
+ }
+ /* Compute public key y = a^x mod p */
BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx);
BN_CTX_free(ctx);
return 1;
@@ -243,6 +292,10 @@ int fill_GOST94_params(DSA *dsa, int nid)
int gost_sign_keygen(DSA *dsa)
{
dsa->priv_key = BN_new();
+ if(!dsa->priv_key) {
+ GOSTerr(GOST_F_GOST_SIGN_KEYGEN, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
BN_rand_range(dsa->priv_key, dsa->q);
return gost94_compute_public(dsa);
}
diff --git a/crypto/openssl/engines/e_sureware.c b/crypto/openssl/engines/e_sureware.c
index 1005dfc..8a23763 100644
--- a/crypto/openssl/engines/e_sureware.c
+++ b/crypto/openssl/engines/e_sureware.c
@@ -712,10 +712,12 @@ static EVP_PKEY *sureware_load_public(ENGINE *e, const char *key_id,
/* set public big nums */
rsatmp->e = BN_new();
rsatmp->n = BN_new();
+ if(!rsatmp->e || !rsatmp->n)
+ goto err;
bn_expand2(rsatmp->e, el / sizeof(BN_ULONG));
bn_expand2(rsatmp->n, el / sizeof(BN_ULONG));
- if (!rsatmp->e || rsatmp->e->dmax != (int)(el / sizeof(BN_ULONG)) ||
- !rsatmp->n || rsatmp->n->dmax != (int)(el / sizeof(BN_ULONG)))
+ if (rsatmp->e->dmax != (int)(el / sizeof(BN_ULONG)) ||
+ rsatmp->n->dmax != (int)(el / sizeof(BN_ULONG)))
goto err;
ret = p_surewarehk_Load_Rsa_Pubkey(msg, key_id, el,
(unsigned long *)rsatmp->n->d,
@@ -752,15 +754,16 @@ static EVP_PKEY *sureware_load_public(ENGINE *e, const char *key_id,
dsatmp->p = BN_new();
dsatmp->q = BN_new();
dsatmp->g = BN_new();
+ if(!dsatmp->pub_key || !dsatmp->p || !dsatmp->q || !dsatmp->g)
+ goto err;
bn_expand2(dsatmp->pub_key, el / sizeof(BN_ULONG));
bn_expand2(dsatmp->p, el / sizeof(BN_ULONG));
bn_expand2(dsatmp->q, 20 / sizeof(BN_ULONG));
bn_expand2(dsatmp->g, el / sizeof(BN_ULONG));
- if (!dsatmp->pub_key
- || dsatmp->pub_key->dmax != (int)(el / sizeof(BN_ULONG))
- || !dsatmp->p || dsatmp->p->dmax != (int)(el / sizeof(BN_ULONG))
- || !dsatmp->q || dsatmp->q->dmax != 20 / sizeof(BN_ULONG)
- || !dsatmp->g || dsatmp->g->dmax != (int)(el / sizeof(BN_ULONG)))
+ if (dsatmp->pub_key->dmax != (int)(el / sizeof(BN_ULONG))
+ || dsatmp->p->dmax != (int)(el / sizeof(BN_ULONG))
+ || dsatmp->q->dmax != 20 / sizeof(BN_ULONG)
+ || dsatmp->g->dmax != (int)(el / sizeof(BN_ULONG)))
goto err;
ret = p_surewarehk_Load_Dsa_Pubkey(msg, key_id, el,
@@ -1038,10 +1041,12 @@ static DSA_SIG *surewarehk_dsa_do_sign(const unsigned char *from, int flen,
}
psign->r = BN_new();
psign->s = BN_new();
+ if(!psign->r || !psign->s)
+ goto err;
bn_expand2(psign->r, 20 / sizeof(BN_ULONG));
bn_expand2(psign->s, 20 / sizeof(BN_ULONG));
- if (!psign->r || psign->r->dmax != 20 / sizeof(BN_ULONG) ||
- !psign->s || psign->s->dmax != 20 / sizeof(BN_ULONG))
+ if (psign->r->dmax != 20 / sizeof(BN_ULONG) ||
+ psign->s->dmax != 20 / sizeof(BN_ULONG))
goto err;
ret = p_surewarehk_Dsa_Sign(msg, flen, from,
(unsigned long *)psign->r->d,
@@ -1070,9 +1075,9 @@ static int surewarehk_modexp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
char msg[64] = "ENGINE_modexp";
if (!p_surewarehk_Mod_Exp) {
SUREWAREerr(SUREWARE_F_SUREWAREHK_MODEXP, ENGINE_R_NOT_INITIALISED);
- } else {
+ } else if (r) {
bn_expand2(r, m->top);
- if (r && r->dmax == m->top) {
+ if (r->dmax == m->top) {
/* do it */
ret = p_surewarehk_Mod_Exp(msg,
m->top * sizeof(BN_ULONG),
diff --git a/crypto/openssl/ssl/Makefile b/crypto/openssl/ssl/Makefile
index 8dd390e..29d9e45 100644
--- a/crypto/openssl/ssl/Makefile
+++ b/crypto/openssl/ssl/Makefile
@@ -89,12 +89,13 @@ tests:
lint:
lint -DLINT $(INCLUDES) $(SRC)>fluff
-depend:
- @if [ -z "$(THIS)" ]; then \
- $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; \
- else \
- $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC); \
- fi
+update: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+
+depend: local_depend
+ @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+local_depend:
+ @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
dclean:
$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
@@ -507,26 +508,27 @@ s2_pkt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
s2_pkt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
s2_pkt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_pkt.c
s2_pkt.o: ssl_locl.h
-s2_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
-s2_srvr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
-s2_srvr.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
-s2_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
-s2_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
-s2_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
-s2_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
-s2_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
-s2_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
-s2_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
-s2_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
-s2_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
-s2_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
-s2_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
-s2_srvr.o: ../include/openssl/sha.h ../include/openssl/srtp.h
-s2_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
-s2_srvr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
-s2_srvr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
-s2_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h
-s2_srvr.o: ../include/openssl/x509_vfy.h s2_srvr.c ssl_locl.h
+s2_srvr.o: ../crypto/constant_time_locl.h ../e_os.h ../include/openssl/asn1.h
+s2_srvr.o: ../include/openssl/bio.h ../include/openssl/buffer.h
+s2_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h
+s2_srvr.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
+s2_srvr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
+s2_srvr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
+s2_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h
+s2_srvr.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
+s2_srvr.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+s2_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
+s2_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
+s2_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
+s2_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
+s2_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h
+s2_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h
+s2_srvr.o: ../include/openssl/srtp.h ../include/openssl/ssl.h
+s2_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
+s2_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
+s2_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
+s2_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_srvr.c
+s2_srvr.o: ssl_locl.h
s3_both.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
s3_both.o: ../include/openssl/buffer.h ../include/openssl/comp.h
s3_both.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
diff --git a/crypto/openssl/ssl/d1_both.c b/crypto/openssl/ssl/d1_both.c
index c18ec03..8dd8ea3 100644
--- a/crypto/openssl/ssl/d1_both.c
+++ b/crypto/openssl/ssl/d1_both.c
@@ -485,6 +485,12 @@ long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
return i;
}
+ if (mt >= 0 && s->s3->tmp.message_type != mt) {
+ al = SSL_AD_UNEXPECTED_MESSAGE;
+ SSLerr(SSL_F_DTLS1_GET_MESSAGE, SSL_R_UNEXPECTED_MESSAGE);
+ goto f_err;
+ }
+
p = (unsigned char *)s->init_buf->data;
msg_len = msg_hdr->msg_len;
@@ -869,6 +875,20 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
/* parse the message fragment header */
dtls1_get_message_header(wire, &msg_hdr);
+ len = msg_hdr.msg_len;
+ frag_off = msg_hdr.frag_off;
+ frag_len = msg_hdr.frag_len;
+
+ /*
+ * We must have at least frag_len bytes left in the record to be read.
+ * Fragments must not span records.
+ */
+ if (frag_len > s->s3->rrec.length) {
+ al = SSL3_AD_ILLEGAL_PARAMETER;
+ SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT, SSL_R_BAD_LENGTH);
+ goto f_err;
+ }
+
/*
* if this is a future (or stale) message it gets buffered
* (or dropped)--no further processing at this time
@@ -879,10 +899,6 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
&& !(s->d1->listen && msg_hdr.seq == 1))
return dtls1_process_out_of_seq_message(s, &msg_hdr, ok);
- len = msg_hdr.msg_len;
- frag_off = msg_hdr.frag_off;
- frag_len = msg_hdr.frag_len;
-
if (frag_len && frag_len < len)
return dtls1_reassemble_fragment(s, &msg_hdr, ok);
@@ -913,17 +929,16 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
if ((al = dtls1_preprocess_fragment(s, &msg_hdr, max)))
goto f_err;
- /* XDTLS: ressurect this when restart is in place */
- s->state = stn;
-
if (frag_len > 0) {
unsigned char *p =
(unsigned char *)s->init_buf->data + DTLS1_HM_HEADER_LENGTH;
i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE,
&p[frag_off], frag_len, 0);
+
/*
- * XDTLS: fix this--message fragments cannot span multiple packets
+ * This shouldn't ever fail due to NBIO because we already checked
+ * that we have enough data in the record
*/
if (i <= 0) {
s->rwstate = SSL_READING;
@@ -944,6 +959,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok)
}
*ok = 1;
+ s->state = stn;
/*
* Note that s->init_num is *not* used as current offset in
@@ -1540,7 +1556,10 @@ int dtls1_process_heartbeat(SSL *s)
memcpy(bp, pl, payload);
bp += payload;
/* Random padding */
- RAND_pseudo_bytes(bp, padding);
+ if (RAND_pseudo_bytes(bp, padding) < 0) {
+ OPENSSL_free(buffer);
+ return -1;
+ }
r = dtls1_write_bytes(s, TLS1_RT_HEARTBEAT, buffer, write_length);
@@ -1574,7 +1593,7 @@ int dtls1_process_heartbeat(SSL *s)
int dtls1_heartbeat(SSL *s)
{
unsigned char *buf, *p;
- int ret;
+ int ret = -1;
unsigned int payload = 18; /* Sequence number + random bytes */
unsigned int padding = 16; /* Use minimum padding */
@@ -1622,10 +1641,12 @@ int dtls1_heartbeat(SSL *s)
/* Sequence number */
s2n(s->tlsext_hb_seq, p);
/* 16 random bytes */
- RAND_pseudo_bytes(p, 16);
+ if (RAND_pseudo_bytes(p, 16) < 0)
+ goto err;
p += 16;
/* Random padding */
- RAND_pseudo_bytes(p, padding);
+ if (RAND_pseudo_bytes(p, padding) < 0)
+ goto err;
ret = dtls1_write_bytes(s, TLS1_RT_HEARTBEAT, buf, 3 + payload + padding);
if (ret >= 0) {
@@ -1638,6 +1659,7 @@ int dtls1_heartbeat(SSL *s)
s->tlsext_hb_pending = 1;
}
+err:
OPENSSL_free(buf);
return ret;
diff --git a/crypto/openssl/ssl/d1_clnt.c b/crypto/openssl/ssl/d1_clnt.c
index 1394781..377c1e6 100644
--- a/crypto/openssl/ssl/d1_clnt.c
+++ b/crypto/openssl/ssl/d1_clnt.c
@@ -212,6 +212,7 @@ int dtls1_connect(SSL *s)
(s->version & 0xff00) != (DTLS1_BAD_VER & 0xff00)) {
SSLerr(SSL_F_DTLS1_CONNECT, ERR_R_INTERNAL_ERROR);
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -221,10 +222,12 @@ int dtls1_connect(SSL *s)
if (s->init_buf == NULL) {
if ((buf = BUF_MEM_new()) == NULL) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
s->init_buf = buf;
@@ -233,12 +236,14 @@ int dtls1_connect(SSL *s)
if (!ssl3_setup_buffers(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
/* setup buffing BIO */
if (!ssl_init_wbio_buffer(s, 0)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -417,6 +422,7 @@ int dtls1_connect(SSL *s)
*/
if (!ssl3_check_cert_and_algorithm(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
break;
@@ -548,6 +554,7 @@ int dtls1_connect(SSL *s)
#endif
if (!s->method->ssl3_enc->setup_key_block(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -555,6 +562,7 @@ int dtls1_connect(SSL *s)
SSL3_CHANGE_CIPHER_CLIENT_WRITE))
{
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
#ifndef OPENSSL_NO_SCTP
@@ -735,6 +743,7 @@ int dtls1_connect(SSL *s)
goto end;
/* break; */
+ case SSL_ST_ERR:
default:
SSLerr(SSL_F_DTLS1_CONNECT, SSL_R_UNKNOWN_STATE);
ret = -1;
@@ -945,6 +954,7 @@ static int dtls1_get_hello_verify(SSL *s)
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
+ s->state = SSL_ST_ERR;
return -1;
}
diff --git a/crypto/openssl/ssl/d1_lib.c b/crypto/openssl/ssl/d1_lib.c
index 94acb15..011d7b7 100644
--- a/crypto/openssl/ssl/d1_lib.c
+++ b/crypto/openssl/ssl/d1_lib.c
@@ -496,6 +496,9 @@ int dtls1_listen(SSL *s, struct sockaddr *client)
{
int ret;
+ /* Ensure there is no state left over from a previous invocation */
+ SSL_clear(s);
+
SSL_set_options(s, SSL_OP_COOKIE_EXCHANGE);
s->d1->listen = 1;
diff --git a/crypto/openssl/ssl/d1_pkt.c b/crypto/openssl/ssl/d1_pkt.c
index 7b49a7d..d659ed4 100644
--- a/crypto/openssl/ssl/d1_pkt.c
+++ b/crypto/openssl/ssl/d1_pkt.c
@@ -1065,7 +1065,7 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
(s->d1->handshake_fragment[3] != 0)) {
al = SSL_AD_DECODE_ERROR;
SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_R_BAD_HELLO_REQUEST);
- goto err;
+ goto f_err;
}
/*
diff --git a/crypto/openssl/ssl/d1_srvr.c b/crypto/openssl/ssl/d1_srvr.c
index c4ec9fe..41c7dc5 100644
--- a/crypto/openssl/ssl/d1_srvr.c
+++ b/crypto/openssl/ssl/d1_srvr.c
@@ -224,11 +224,13 @@ int dtls1_accept(SSL *s)
if (s->init_buf == NULL) {
if ((buf = BUF_MEM_new()) == NULL) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {
BUF_MEM_free(buf);
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
s->init_buf = buf;
@@ -236,6 +238,7 @@ int dtls1_accept(SSL *s)
if (!ssl3_setup_buffers(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -257,6 +260,7 @@ int dtls1_accept(SSL *s)
#endif
if (!ssl_init_wbio_buffer(s, 1)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -470,7 +474,7 @@ int dtls1_accept(SSL *s)
#ifndef OPENSSL_NO_PSK
|| ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint)
#endif
- || (alg_k & (SSL_kEDH | SSL_kDHr | SSL_kDHd))
+ || (alg_k & SSL_kEDH)
|| (alg_k & SSL_kEECDH)
|| ((alg_k & SSL_kRSA)
&& (s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL
@@ -665,15 +669,6 @@ int dtls1_accept(SSL *s)
case SSL3_ST_SR_CERT_VRFY_A:
case SSL3_ST_SR_CERT_VRFY_B:
- /*
- * This *should* be the first time we enable CCS, but be
- * extra careful about surrounding code changes. We need
- * to set this here because we don't know if we're
- * expecting a CertificateVerify or not.
- */
- if (!s->s3->change_cipher_spec)
- s->d1->change_cipher_spec_ok = 1;
- /* we should decide if we expected this one */
ret = ssl3_get_cert_verify(s);
if (ret <= 0)
goto end;
@@ -690,11 +685,10 @@ int dtls1_accept(SSL *s)
case SSL3_ST_SR_FINISHED_A:
case SSL3_ST_SR_FINISHED_B:
/*
- * Enable CCS for resumed handshakes.
- * In a full handshake, we end up here through
- * SSL3_ST_SR_CERT_VRFY_B, so change_cipher_spec_ok was
- * already set. Receiving a CCS clears the flag, so make
- * sure not to re-enable it to ban duplicates.
+ * Enable CCS. Receiving a CCS clears the flag, so make
+ * sure not to re-enable it to ban duplicates. This *should* be the
+ * first time we have received one - but we check anyway to be
+ * cautious.
* s->s3->change_cipher_spec is set when a CCS is
* processed in d1_pkt.c, and remains set until
* the client's Finished message is read.
@@ -744,6 +738,7 @@ int dtls1_accept(SSL *s)
s->session->cipher = s->s3->tmp.new_cipher;
if (!s->method->ssl3_enc->setup_key_block(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -772,6 +767,7 @@ int dtls1_accept(SSL *s)
SSL3_CHANGE_CIPHER_SERVER_WRITE))
{
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -852,6 +848,7 @@ int dtls1_accept(SSL *s)
goto end;
/* break; */
+ case SSL_ST_ERR:
default:
SSLerr(SSL_F_DTLS1_ACCEPT, SSL_R_UNKNOWN_STATE);
ret = -1;
@@ -932,6 +929,7 @@ int dtls1_send_hello_verify_request(SSL *s)
&(s->d1->cookie_len)) == 0) {
SSLerr(SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST,
ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return 0;
}
diff --git a/crypto/openssl/ssl/s2_pkt.c b/crypto/openssl/ssl/s2_pkt.c
index 614b9a3..7a61888 100644
--- a/crypto/openssl/ssl/s2_pkt.c
+++ b/crypto/openssl/ssl/s2_pkt.c
@@ -576,6 +576,20 @@ static int n_do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len)
s->s2->padding = p;
s->s2->mac_data = &(s->s2->wbuf[3]);
s->s2->wact_data = &(s->s2->wbuf[3 + mac_size]);
+
+ /*
+ * It would be clearer to write this as follows:
+ * if (mac_size + len + p > SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER)
+ * However |len| is user input that could in theory be very large. We
+ * know |mac_size| and |p| are small, so to avoid any possibility of
+ * overflow we write it like this.
+ *
+ * In theory this should never fail because the logic above should have
+ * modified |len| if it is too big. But we are being cautious.
+ */
+ if (len > (SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER - (mac_size + p))) {
+ return -1;
+ }
/* we copy the data into s->s2->wbuf */
memcpy(s->s2->wact_data, buf, len);
if (p)
diff --git a/crypto/openssl/ssl/s2_srvr.c b/crypto/openssl/ssl/s2_srvr.c
index 19bb48c..4289272 100644
--- a/crypto/openssl/ssl/s2_srvr.c
+++ b/crypto/openssl/ssl/s2_srvr.c
@@ -111,6 +111,7 @@
#include "ssl_locl.h"
#ifndef OPENSSL_NO_SSL2
+#include "../crypto/constant_time_locl.h"
# include <stdio.h>
# include <openssl/bio.h>
# include <openssl/rand.h>
@@ -372,12 +373,15 @@ int ssl2_accept(SSL *s)
static int get_client_master_key(SSL *s)
{
int is_export, i, n, keya;
- unsigned int ek;
+ unsigned int num_encrypted_key_bytes, key_length;
unsigned long len;
unsigned char *p;
const SSL_CIPHER *cp;
const EVP_CIPHER *c;
const EVP_MD *md;
+ unsigned char rand_premaster_secret[SSL_MAX_MASTER_KEY_LENGTH];
+ unsigned char decrypt_good;
+ size_t j;
p = (unsigned char *)s->init_buf->data;
if (s->state == SSL2_ST_GET_CLIENT_MASTER_KEY_A) {
@@ -465,12 +469,6 @@ static int get_client_master_key(SSL *s)
return (0);
}
- if (s->session->cipher->algorithm2 & SSL2_CF_8_BYTE_ENC) {
- is_export = 1;
- ek = 8;
- } else
- ek = 5;
-
/*
* The format of the CLIENT-MASTER-KEY message is
* 1 byte message type
@@ -484,12 +482,27 @@ static int get_client_master_key(SSL *s)
*
* If the cipher is an export cipher, then the encrypted key bytes
* are a fixed portion of the total key (5 or 8 bytes). The size of
- * this portion is in |ek|. If the cipher is not an export cipher,
- * then the entire key material is encrypted (i.e., clear key length
- * must be zero).
+ * this portion is in |num_encrypted_key_bytes|. If the cipher is not an
+ * export cipher, then the entire key material is encrypted (i.e., clear
+ * key length must be zero).
*/
- if ((!is_export && s->s2->tmp.clear != 0) ||
- (is_export && s->s2->tmp.clear + ek != (unsigned int)EVP_CIPHER_key_length(c))) {
+ key_length = (unsigned int)EVP_CIPHER_key_length(c);
+ if (key_length > SSL_MAX_MASTER_KEY_LENGTH) {
+ ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
+ SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
+ return -1;
+ }
+
+ if (s->session->cipher->algorithm2 & SSL2_CF_8_BYTE_ENC) {
+ is_export = 1;
+ num_encrypted_key_bytes = 8;
+ } else if (is_export) {
+ num_encrypted_key_bytes = 5;
+ } else {
+ num_encrypted_key_bytes = key_length;
+ }
+
+ if (s->s2->tmp.clear + num_encrypted_key_bytes != key_length) {
ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
SSLerr(SSL_F_GET_CLIENT_MASTER_KEY,SSL_R_BAD_LENGTH);
return -1;
@@ -499,64 +512,49 @@ static int get_client_master_key(SSL *s)
* Decryption can't be expanding, so if we don't have enough encrypted
* bytes to fit the key in the buffer, stop now.
*/
- if ((is_export && s->s2->tmp.enc < ek) ||
- (!is_export && s->s2->tmp.enc < (unsigned int)EVP_CIPHER_key_length(c))) {
+ if (s->s2->tmp.enc < num_encrypted_key_bytes) {
ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
SSLerr(SSL_F_GET_CLIENT_MASTER_KEY,SSL_R_LENGTH_TOO_SHORT);
return -1;
}
+ /*
+ * We must not leak whether a decryption failure occurs because of
+ * Bleichenbacher's attack on PKCS #1 v1.5 RSA padding (see RFC 2246,
+ * section 7.4.7.1). The code follows that advice of the TLS RFC and
+ * generates a random premaster secret for the case that the decrypt
+ * fails. See https://tools.ietf.org/html/rfc5246#section-7.4.7.1
+ */
+
+ /*
+ * should be RAND_bytes, but we cannot work around a failure.
+ */
+ if (RAND_pseudo_bytes(rand_premaster_secret,
+ (int)num_encrypted_key_bytes) <= 0)
+ return 0;
+
i = ssl_rsa_private_decrypt(s->cert, s->s2->tmp.enc,
&(p[s->s2->tmp.clear]),
&(p[s->s2->tmp.clear]),
(s->s2->ssl2_rollback) ? RSA_SSLV23_PADDING :
RSA_PKCS1_PADDING);
-
- /* bad decrypt */
-# if 1
+ ERR_clear_error();
/*
* If a bad decrypt, continue with protocol but with a random master
* secret (Bleichenbacher attack)
*/
- if ((i < 0) || ((!is_export && i != EVP_CIPHER_key_length(c))
- || (is_export && i != (int)ek))) {
- ERR_clear_error();
- if (is_export)
- i = ek;
- else
- i = EVP_CIPHER_key_length(c);
- if (RAND_pseudo_bytes(&p[s->s2->tmp.clear], i) <= 0)
- return 0;
- }
-# else
- if (i < 0) {
- error = 1;
- SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, SSL_R_BAD_RSA_DECRYPT);
- }
- /* incorrect number of key bytes for non export cipher */
- else if ((!is_export && (i != EVP_CIPHER_key_length(c)))
- || (is_export && ((i != ek) || (s->s2->tmp.clear + i !=
- EVP_CIPHER_key_length(c))))) {
- error = 1;
- SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, SSL_R_WRONG_NUMBER_OF_KEY_BITS);
- }
- if (error) {
- ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
- return (-1);
+ decrypt_good = constant_time_eq_int_8(i, (int)num_encrypted_key_bytes);
+ for (j = 0; j < num_encrypted_key_bytes; j++) {
+ p[s->s2->tmp.clear + j] =
+ constant_time_select_8(decrypt_good, p[s->s2->tmp.clear + j],
+ rand_premaster_secret[j]);
}
-# endif
- if (is_export)
- i = EVP_CIPHER_key_length(c);
+ s->session->master_key_length = (int)key_length;
+ memcpy(s->session->master_key, p, key_length);
+ OPENSSL_cleanse(p, key_length);
- if (i > SSL_MAX_MASTER_KEY_LENGTH) {
- ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
- SSLerr(SSL_F_GET_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
- return -1;
- }
- s->session->master_key_length = i;
- memcpy(s->session->master_key, p, (unsigned int)i);
- return (1);
+ return 1;
}
static int get_client_hello(SSL *s)
diff --git a/crypto/openssl/ssl/s3_both.c b/crypto/openssl/ssl/s3_both.c
index 77374f4..107b460 100644
--- a/crypto/openssl/ssl/s3_both.c
+++ b/crypto/openssl/ssl/s3_both.c
@@ -169,7 +169,7 @@ int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen)
i = s->method->ssl3_enc->final_finish_mac(s,
sender, slen,
s->s3->tmp.finish_md);
- if (i == 0)
+ if (i <= 0)
return 0;
s->s3->tmp.finish_md_len = i;
memcpy(p, s->s3->tmp.finish_md, i);
diff --git a/crypto/openssl/ssl/s3_cbc.c b/crypto/openssl/ssl/s3_cbc.c
index 598d27e..2fb71f2 100644
--- a/crypto/openssl/ssl/s3_cbc.c
+++ b/crypto/openssl/ssl/s3_cbc.c
@@ -149,7 +149,7 @@ int tls1_cbc_remove_padding(const SSL *s,
*/
if ((s->options & SSL_OP_TLS_BLOCK_PADDING_BUG) && !s->expand) {
/* First packet is even in size, so check */
- if ((memcmp(s->s3->read_sequence, "\0\0\0\0\0\0\0\0", 8) == 0) &&
+ if ((CRYPTO_memcmp(s->s3->read_sequence, "\0\0\0\0\0\0\0\0", 8) == 0) &&
!(padding_length & 1)) {
s->s3->flags |= TLS1_FLAGS_TLS_PADDING_BUG;
}
@@ -639,12 +639,22 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx,
if (k > 0) {
if (is_sslv3) {
+ unsigned overhang;
+
/*
* The SSLv3 header is larger than a single block. overhang is
* the number of bytes beyond a single block that the header
- * consumes: either 7 bytes (SHA1) or 11 bytes (MD5).
+ * consumes: either 7 bytes (SHA1) or 11 bytes (MD5). There are no
+ * ciphersuites in SSLv3 that are not SHA1 or MD5 based and
+ * therefore we can be confident that the header_length will be
+ * greater than |md_block_size|. However we add a sanity check just
+ * in case
*/
- unsigned overhang = header_length - md_block_size;
+ if (header_length <= md_block_size) {
+ /* Should never happen */
+ return;
+ }
+ overhang = header_length - md_block_size;
md_transform(md_state.c, header);
memcpy(first_block, header + md_block_size, overhang);
memcpy(first_block + overhang, data, md_block_size - overhang);
diff --git a/crypto/openssl/ssl/s3_clnt.c b/crypto/openssl/ssl/s3_clnt.c
index 0e5acec..0879a0f 100644
--- a/crypto/openssl/ssl/s3_clnt.c
+++ b/crypto/openssl/ssl/s3_clnt.c
@@ -168,6 +168,9 @@
#endif
static int ca_dn_cmp(const X509_NAME *const *a, const X509_NAME *const *b);
+#ifndef OPENSSL_NO_TLSEXT
+static int ssl3_check_finished(SSL *s);
+#endif
#ifndef OPENSSL_NO_SSL3_METHOD
static const SSL_METHOD *ssl3_get_client_method(int ver)
@@ -235,6 +238,7 @@ int ssl3_connect(SSL *s)
if ((s->version & 0xff00) != 0x0300) {
SSLerr(SSL_F_SSL3_CONNECT, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
ret = -1;
goto end;
}
@@ -245,10 +249,12 @@ int ssl3_connect(SSL *s)
if (s->init_buf == NULL) {
if ((buf = BUF_MEM_new()) == NULL) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
s->init_buf = buf;
@@ -263,6 +269,7 @@ int ssl3_connect(SSL *s)
/* setup buffing BIO */
if (!ssl_init_wbio_buffer(s, 0)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -317,12 +324,24 @@ int ssl3_connect(SSL *s)
case SSL3_ST_CR_CERT_A:
case SSL3_ST_CR_CERT_B:
+#ifndef OPENSSL_NO_TLSEXT
+ /* Noop (ret = 0) for everything but EAP-FAST. */
+ ret = ssl3_check_finished(s);
+ if (ret < 0)
+ goto end;
+ if (ret == 1) {
+ s->hit = 1;
+ s->state = SSL3_ST_CR_FINISHED_A;
+ s->init_num = 0;
+ break;
+ }
+#endif
/* Check if it is anon DH/ECDH, SRP auth */
/* or PSK */
if (!
(s->s3->tmp.
new_cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP))
-&& !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)) {
+ && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)) {
ret = ssl3_get_server_certificate(s);
if (ret <= 0)
goto end;
@@ -358,6 +377,7 @@ int ssl3_connect(SSL *s)
*/
if (!ssl3_check_cert_and_algorithm(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
break;
@@ -381,6 +401,7 @@ int ssl3_connect(SSL *s)
if ((ret = SRP_Calc_A_param(s)) <= 0) {
SSLerr(SSL_F_SSL3_CONNECT, SSL_R_SRP_A_CALC);
ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
goto end;
}
}
@@ -472,6 +493,7 @@ int ssl3_connect(SSL *s)
#endif
if (!s->method->ssl3_enc->setup_key_block(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -479,6 +501,7 @@ int ssl3_connect(SSL *s)
SSL3_CHANGE_CIPHER_CLIENT_WRITE))
{
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -553,7 +576,8 @@ int ssl3_connect(SSL *s)
case SSL3_ST_CR_FINISHED_A:
case SSL3_ST_CR_FINISHED_B:
- s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ if (!s->s3->change_cipher_spec)
+ s->s3->flags |= SSL3_FLAGS_CCS_OK;
ret = ssl3_get_finished(s, SSL3_ST_CR_FINISHED_A,
SSL3_ST_CR_FINISHED_B);
if (ret <= 0)
@@ -612,6 +636,7 @@ int ssl3_connect(SSL *s)
goto end;
/* break; */
+ case SSL_ST_ERR:
default:
SSLerr(SSL_F_SSL3_CONNECT, SSL_R_UNKNOWN_STATE);
ret = -1;
@@ -658,9 +683,17 @@ int ssl3_client_hello(SSL *s)
buf = (unsigned char *)s->init_buf->data;
if (s->state == SSL3_ST_CW_CLNT_HELLO_A) {
SSL_SESSION *sess = s->session;
- if ((sess == NULL) ||
- (sess->ssl_version != s->version) ||
- !sess->session_id_length || (sess->not_resumable)) {
+ if ((sess == NULL) || (sess->ssl_version != s->version) ||
+#ifdef OPENSSL_NO_TLSEXT
+ !sess->session_id_length ||
+#else
+ /*
+ * In the case of EAP-FAST, we can have a pre-shared
+ * "ticket" without a session ID.
+ */
+ (!sess->session_id_length && !sess->tlsext_tick) ||
+#endif
+ (sess->not_resumable)) {
if (!ssl_get_new_session(s, 0))
goto err;
}
@@ -798,6 +831,7 @@ int ssl3_client_hello(SSL *s)
/* SSL3_ST_CW_CLNT_HELLO_B */
return (ssl3_do_write(s, SSL3_RT_HANDSHAKE));
err:
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -867,10 +901,19 @@ int ssl3_get_server_hello(SSL *s)
}
#ifndef OPENSSL_NO_TLSEXT
/*
- * check if we want to resume the session based on external pre-shared
- * secret
+ * Check if we can resume the session based on external pre-shared secret.
+ * EAP-FAST (RFC 4851) supports two types of session resumption.
+ * Resumption based on server-side state works with session IDs.
+ * Resumption based on pre-shared Protected Access Credentials (PACs)
+ * works by overriding the SessionTicket extension at the application
+ * layer, and does not send a session ID. (We do not know whether EAP-FAST
+ * servers would honour the session ID.) Therefore, the session ID alone
+ * is not a reliable indicator of session resumption, so we first check if
+ * we can resume, and later peek at the next handshake message to see if the
+ * server wants to resume.
*/
- if (s->version >= TLS1_VERSION && s->tls_session_secret_cb) {
+ if (s->version >= TLS1_VERSION && s->tls_session_secret_cb &&
+ s->session->tlsext_tick) {
SSL_CIPHER *pref_cipher = NULL;
s->session->master_key_length = sizeof(s->session->master_key);
if (s->tls_session_secret_cb(s, s->session->master_key,
@@ -879,12 +922,15 @@ int ssl3_get_server_hello(SSL *s)
s->tls_session_secret_cb_arg)) {
s->session->cipher = pref_cipher ?
pref_cipher : ssl_get_cipher_by_char(s, p + j);
- s->hit = 1;
+ } else {
+ SSLerr(SSL_F_SSL3_GET_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
+ al = SSL_AD_INTERNAL_ERROR;
+ goto f_err;
}
}
#endif /* OPENSSL_NO_TLSEXT */
- if (!s->hit && j != 0 && j == s->session->session_id_length
+ if (j != 0 && j == s->session->session_id_length
&& memcmp(p, s->session->session_id, j) == 0) {
if (s->sid_ctx_length != s->session->sid_ctx_length
|| memcmp(s->session->sid_ctx, s->sid_ctx, s->sid_ctx_length)) {
@@ -895,12 +941,13 @@ int ssl3_get_server_hello(SSL *s)
goto f_err;
}
s->hit = 1;
- }
- /* a miss or crap from the other end */
- if (!s->hit) {
+ } else {
/*
- * If we were trying for session-id reuse, make a new SSL_SESSION so
- * we don't stuff up other people
+ * If we were trying for session-id reuse but the server
+ * didn't echo the ID, make a new SSL_SESSION.
+ * In the case of EAP-FAST and PAC, we do not send a session ID,
+ * so the PAC-based session secret is always preserved. It'll be
+ * overwritten if the server refuses resumption.
*/
if (s->session->session_id_length > 0) {
if (!ssl_get_new_session(s, 0)) {
@@ -1045,6 +1092,7 @@ int ssl3_get_server_hello(SSL *s)
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -1223,8 +1271,10 @@ int ssl3_get_server_certificate(SSL *s)
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- }
err:
+ s->state = SSL_ST_ERR;
+ }
+
EVP_PKEY_free(pkey);
X509_free(x);
sk_X509_pop_free(sk, X509_free);
@@ -1546,6 +1596,13 @@ int ssl3_get_key_exchange(SSL *s)
SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
goto err;
}
+
+ if (EVP_PKEY_bits(pkey) <= SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
+ al = SSL_AD_UNEXPECTED_MESSAGE;
+ SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, SSL_R_UNEXPECTED_MESSAGE);
+ goto f_err;
+ }
+
s->session->sess_cert->peer_rsa_tmp = rsa;
rsa = NULL;
}
@@ -1894,6 +1951,7 @@ int ssl3_get_key_exchange(SSL *s)
EC_KEY_free(ecdh);
#endif
EVP_MD_CTX_cleanup(&md_ctx);
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -2050,7 +2108,10 @@ int ssl3_get_certificate_request(SSL *s)
ca_sk = NULL;
ret = 1;
+ goto done;
err:
+ s->state = SSL_ST_ERR;
+ done:
if (ca_sk != NULL)
sk_X509_NAME_pop_free(ca_sk, X509_NAME_free);
return (ret);
@@ -2085,6 +2146,38 @@ int ssl3_get_new_session_ticket(SSL *s)
}
p = d = (unsigned char *)s->init_msg;
+
+ if (s->session->session_id_length > 0) {
+ int i = s->session_ctx->session_cache_mode;
+ SSL_SESSION *new_sess;
+ /*
+ * We reused an existing session, so we need to replace it with a new
+ * one
+ */
+ if (i & SSL_SESS_CACHE_CLIENT) {
+ /*
+ * Remove the old session from the cache
+ */
+ if (i & SSL_SESS_CACHE_NO_INTERNAL_STORE) {
+ if (s->session_ctx->remove_session_cb != NULL)
+ s->session_ctx->remove_session_cb(s->session_ctx,
+ s->session);
+ } else {
+ /* We carry on if this fails */
+ SSL_CTX_remove_session(s->session_ctx, s->session);
+ }
+ }
+
+ if ((new_sess = ssl_session_dup(s->session, 0)) == 0) {
+ al = SSL_AD_INTERNAL_ERROR;
+ SSLerr(SSL_F_SSL3_GET_NEW_SESSION_TICKET, ERR_R_MALLOC_FAILURE);
+ goto f_err;
+ }
+
+ SSL_SESSION_free(s->session);
+ s->session = new_sess;
+ }
+
n2l(p, s->session->tlsext_tick_lifetime_hint);
n2s(p, ticklen);
/* ticket_lifetime_hint + ticket_length + ticket */
@@ -2127,6 +2220,7 @@ int ssl3_get_new_session_ticket(SSL *s)
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -2187,6 +2281,7 @@ int ssl3_get_cert_status(SSL *s)
return 1;
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
+ s->state = SSL_ST_ERR;
return (-1);
}
#endif
@@ -2208,6 +2303,7 @@ int ssl3_get_server_done(SSL *s)
/* should contain no data */
ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
SSLerr(SSL_F_SSL3_GET_SERVER_DONE, SSL_R_LENGTH_MISMATCH);
+ s->state = SSL_ST_ERR;
return -1;
}
ret = 1;
@@ -2506,8 +2602,6 @@ int ssl3_send_client_key_exchange(SSL *s)
n += 2;
DH_free(dh_clnt);
-
- /* perhaps clean things up a bit EAY EAY EAY EAY */
}
#endif
@@ -2729,7 +2823,10 @@ int ssl3_send_client_key_exchange(SSL *s)
EVP_PKEY_encrypt_init(pkey_ctx);
/* Generate session key */
- RAND_bytes(premaster_secret, 32);
+ if (RAND_bytes(premaster_secret, 32) <= 0) {
+ EVP_PKEY_CTX_free(pkey_ctx);
+ goto err;
+ }
/*
* If we have client certificate, use its secret as peer key
*/
@@ -2948,6 +3045,7 @@ int ssl3_send_client_key_exchange(SSL *s)
EC_KEY_free(clnt_ecdh);
EVP_PKEY_free(srvr_pub_pkey);
#endif
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -3081,6 +3179,7 @@ int ssl3_send_client_verify(SSL *s)
err:
EVP_MD_CTX_cleanup(&mctx);
EVP_PKEY_CTX_free(pctx);
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -3149,6 +3248,7 @@ int ssl3_send_client_certificate(SSL *s)
if (!l) {
SSLerr(SSL_F_SSL3_SEND_CLIENT_CERTIFICATE, ERR_R_INTERNAL_ERROR);
ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return 0;
}
s->init_num = (int)l;
@@ -3165,6 +3265,7 @@ int ssl3_check_cert_and_algorithm(SSL *s)
int i, idx;
long alg_k, alg_a;
EVP_PKEY *pkey = NULL;
+ int pkey_bits;
SESS_CERT *sc;
#ifndef OPENSSL_NO_RSA
RSA *rsa;
@@ -3172,6 +3273,7 @@ int ssl3_check_cert_and_algorithm(SSL *s)
#ifndef OPENSSL_NO_DH
DH *dh;
#endif
+ int al = SSL_AD_HANDSHAKE_FAILURE;
alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
alg_a = s->s3->tmp.new_cipher->algorithm_auth;
@@ -3207,6 +3309,7 @@ int ssl3_check_cert_and_algorithm(SSL *s)
}
#endif
pkey = X509_get_pubkey(sc->peer_pkeys[idx].x509);
+ pkey_bits = EVP_PKEY_bits(pkey);
i = X509_certificate_type(sc->peer_pkeys[idx].x509, pkey);
EVP_PKEY_free(pkey);
@@ -3224,38 +3327,71 @@ int ssl3_check_cert_and_algorithm(SSL *s)
}
#endif
#ifndef OPENSSL_NO_RSA
- if ((alg_k & SSL_kRSA) &&
- !(has_bits(i, EVP_PK_RSA | EVP_PKT_ENC) || (rsa != NULL))) {
- SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
- SSL_R_MISSING_RSA_ENCRYPTING_CERT);
- goto f_err;
+ if (alg_k & SSL_kRSA) {
+ if (!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) &&
+ !has_bits(i, EVP_PK_RSA | EVP_PKT_ENC)) {
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
+ SSL_R_MISSING_RSA_ENCRYPTING_CERT);
+ goto f_err;
+ } else if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher)) {
+ if (pkey_bits <= SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
+ if (!has_bits(i, EVP_PK_RSA | EVP_PKT_ENC)) {
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
+ SSL_R_MISSING_RSA_ENCRYPTING_CERT);
+ goto f_err;
+ }
+ if (rsa != NULL) {
+ /* server key exchange is not allowed. */
+ al = SSL_AD_INTERNAL_ERROR;
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, ERR_R_INTERNAL_ERROR);
+ goto f_err;
+ }
+ }
+ }
}
#endif
#ifndef OPENSSL_NO_DH
- if ((alg_k & SSL_kEDH) &&
- !(has_bits(i, EVP_PK_DH | EVP_PKT_EXCH) || (dh != NULL))) {
- SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, SSL_R_MISSING_DH_KEY);
+ if ((alg_k & SSL_kEDH) && dh == NULL) {
+ al = SSL_AD_INTERNAL_ERROR;
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, ERR_R_INTERNAL_ERROR);
goto f_err;
- } else if ((alg_k & SSL_kDHr) && !has_bits(i, EVP_PK_DH | EVP_PKS_RSA)) {
+ }
+ if ((alg_k & SSL_kDHr) && !has_bits(i, EVP_PK_DH | EVP_PKS_RSA)) {
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
SSL_R_MISSING_DH_RSA_CERT);
goto f_err;
}
# ifndef OPENSSL_NO_DSA
- else if ((alg_k & SSL_kDHd) && !has_bits(i, EVP_PK_DH | EVP_PKS_DSA)) {
+ if ((alg_k & SSL_kDHd) && !has_bits(i, EVP_PK_DH | EVP_PKS_DSA)) {
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
SSL_R_MISSING_DH_DSA_CERT);
goto f_err;
}
# endif
-#endif
- if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i, EVP_PKT_EXP)) {
+ /* Check DHE only: static DH not implemented. */
+ if (alg_k & SSL_kEDH) {
+ int dh_size = BN_num_bits(dh->p);
+ if ((!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && dh_size < 768)
+ || (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && dh_size < 512)) {
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM, SSL_R_DH_KEY_TOO_SMALL);
+ goto f_err;
+ }
+ }
+#endif /* !OPENSSL_NO_DH */
+
+ if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) &&
+ pkey_bits > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
#ifndef OPENSSL_NO_RSA
if (alg_k & SSL_kRSA) {
- if (rsa == NULL
- || RSA_size(rsa) * 8 >
+ if (rsa == NULL) {
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
+ SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
+ goto f_err;
+ } else if (BN_num_bits(rsa->n) >
SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
+ /* We have a temporary RSA key but it's too large. */
+ al = SSL_AD_EXPORT_RESTRICTION;
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
goto f_err;
@@ -3263,14 +3399,21 @@ int ssl3_check_cert_and_algorithm(SSL *s)
} else
#endif
#ifndef OPENSSL_NO_DH
- if (alg_k & (SSL_kEDH | SSL_kDHr | SSL_kDHd)) {
- if (dh == NULL
- || DH_size(dh) * 8 >
+ if (alg_k & SSL_kEDH) {
+ if (BN_num_bits(dh->p) >
SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
+ /* We have a temporary DH key but it's too large. */
+ al = SSL_AD_EXPORT_RESTRICTION;
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
SSL_R_MISSING_EXPORT_TMP_DH_KEY);
goto f_err;
}
+ } else if (alg_k & (SSL_kDHr | SSL_kDHd)) {
+ /* The cert should have had an export DH key. */
+ al = SSL_AD_EXPORT_RESTRICTION;
+ SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
+ SSL_R_MISSING_EXPORT_TMP_DH_KEY);
+ goto f_err;
} else
#endif
{
@@ -3281,12 +3424,62 @@ int ssl3_check_cert_and_algorithm(SSL *s)
}
return (1);
f_err:
- ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE);
+ ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
return (0);
}
-#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_TLSEXT
+/*
+ * Normally, we can tell if the server is resuming the session from
+ * the session ID. EAP-FAST (RFC 4851), however, relies on the next server
+ * message after the ServerHello to determine if the server is resuming.
+ * Therefore, we allow EAP-FAST to peek ahead.
+ * ssl3_check_finished returns 1 if we are resuming from an external
+ * pre-shared secret, we have a "ticket" and the next server handshake message
+ * is Finished; and 0 otherwise. It returns -1 upon an error.
+ */
+static int ssl3_check_finished(SSL *s)
+{
+ int ok = 0;
+
+ if (s->version < TLS1_VERSION || !s->tls_session_secret_cb ||
+ !s->session->tlsext_tick)
+ return 0;
+
+ /* Need to permit this temporarily, in case the next message is Finished. */
+ s->s3->flags |= SSL3_FLAGS_CCS_OK;
+ /*
+ * This function is called when we might get a Certificate message instead,
+ * so permit appropriate message length.
+ * We ignore the return value as we're only interested in the message type
+ * and not its length.
+ */
+ s->method->ssl_get_message(s,
+ SSL3_ST_CR_CERT_A,
+ SSL3_ST_CR_CERT_B,
+ -1, s->max_cert_list, &ok);
+ s->s3->flags &= ~SSL3_FLAGS_CCS_OK;
+
+ if (!ok)
+ return -1;
+
+ s->s3->tmp.reuse_message = 1;
+
+ if (s->s3->tmp.message_type == SSL3_MT_FINISHED)
+ return 1;
+
+ /* If we're not done, then the CCS arrived early and we should bail. */
+ if (s->s3->change_cipher_spec) {
+ SSLerr(SSL_F_SSL3_CHECK_FINISHED, SSL_R_CCS_RECEIVED_EARLY);
+ ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
+ return -1;
+ }
+
+ return 0;
+}
+
+# ifndef OPENSSL_NO_NEXTPROTONEG
int ssl3_send_next_proto(SSL *s)
{
unsigned int len, padding_len;
@@ -3309,8 +3502,8 @@ int ssl3_send_next_proto(SSL *s)
return ssl3_do_write(s, SSL3_RT_HANDSHAKE);
}
-#endif /* !OPENSSL_NO_TLSEXT &&
- * !OPENSSL_NO_NEXTPROTONEG */
+#endif /* !OPENSSL_NO_NEXTPROTONEG */
+#endif /* !OPENSSL_NO_TLSEXT */
int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey)
{
diff --git a/crypto/openssl/ssl/s3_pkt.c b/crypto/openssl/ssl/s3_pkt.c
index 7c9f20c..25cf929 100644
--- a/crypto/openssl/ssl/s3_pkt.c
+++ b/crypto/openssl/ssl/s3_pkt.c
@@ -347,11 +347,22 @@ static int ssl3_get_record(SSL *s)
if (version != s->version) {
SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
if ((s->version & 0xFF00) == (version & 0xFF00)
- && !s->enc_write_ctx && !s->write_hash)
+ && !s->enc_write_ctx && !s->write_hash) {
+ if (rr->type == SSL3_RT_ALERT) {
+ /*
+ * The record is using an incorrect version number, but
+ * what we've got appears to be an alert. We haven't
+ * read the body yet to check whether its a fatal or
+ * not - but chances are it is. We probably shouldn't
+ * send a fatal alert back. We'll just end.
+ */
+ goto err;
+ }
/*
* Send back error using their minor version number :-)
*/
s->version = (unsigned short)version;
+ }
al = SSL_AD_PROTOCOL_VERSION;
goto f_err;
}
diff --git a/crypto/openssl/ssl/s3_srvr.c b/crypto/openssl/ssl/s3_srvr.c
index b8f91bc..9aa3292 100644
--- a/crypto/openssl/ssl/s3_srvr.c
+++ b/crypto/openssl/ssl/s3_srvr.c
@@ -266,6 +266,7 @@ int ssl3_accept(SSL *s)
if ((s->version >> 8) != 3) {
SSLerr(SSL_F_SSL3_ACCEPT, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return -1;
}
s->type = SSL_ST_ACCEPT;
@@ -273,11 +274,13 @@ int ssl3_accept(SSL *s)
if (s->init_buf == NULL) {
if ((buf = BUF_MEM_new()) == NULL) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {
BUF_MEM_free(buf);
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
s->init_buf = buf;
@@ -285,6 +288,7 @@ int ssl3_accept(SSL *s)
if (!ssl3_setup_buffers(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -303,6 +307,7 @@ int ssl3_accept(SSL *s)
*/
if (!ssl_init_wbio_buffer(s, 1)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -320,6 +325,7 @@ int ssl3_accept(SSL *s)
SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);
ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE);
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
} else {
/*
@@ -379,6 +385,7 @@ int ssl3_accept(SSL *s)
SSLerr(SSL_F_SSL3_ACCEPT, SSL_R_CLIENTHELLO_TLSEXT);
ret = SSL_TLSEXT_ERR_ALERT_FATAL;
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
}
@@ -529,9 +536,12 @@ int ssl3_accept(SSL *s)
skip = 1;
s->s3->tmp.cert_request = 0;
s->state = SSL3_ST_SW_SRVR_DONE_A;
- if (s->s3->handshake_buffer)
- if (!ssl3_digest_cached_records(s))
+ if (s->s3->handshake_buffer) {
+ if (!ssl3_digest_cached_records(s)) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
+ }
} else {
s->s3->tmp.cert_request = 1;
ret = ssl3_send_certificate_request(s);
@@ -629,11 +639,14 @@ int ssl3_accept(SSL *s)
*/
if (!s->s3->handshake_buffer) {
SSLerr(SSL_F_SSL3_ACCEPT, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return -1;
}
s->s3->flags |= TLS1_FLAGS_KEEP_HANDSHAKE;
- if (!ssl3_digest_cached_records(s))
+ if (!ssl3_digest_cached_records(s)) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
} else {
int offset = 0;
int dgst_num;
@@ -647,9 +660,12 @@ int ssl3_accept(SSL *s)
* CertificateVerify should be generalized. But it is next
* step
*/
- if (s->s3->handshake_buffer)
- if (!ssl3_digest_cached_records(s))
+ if (s->s3->handshake_buffer) {
+ if (!ssl3_digest_cached_records(s)) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
+ }
for (dgst_num = 0; dgst_num < SSL_MAX_DIGEST; dgst_num++)
if (s->s3->handshake_dgst[dgst_num]) {
int dgst_size;
@@ -665,6 +681,7 @@ int ssl3_accept(SSL *s)
dgst_size =
EVP_MD_CTX_size(s->s3->handshake_dgst[dgst_num]);
if (dgst_size < 0) {
+ s->state = SSL_ST_ERR;
ret = -1;
goto end;
}
@@ -675,15 +692,6 @@ int ssl3_accept(SSL *s)
case SSL3_ST_SR_CERT_VRFY_A:
case SSL3_ST_SR_CERT_VRFY_B:
- /*
- * This *should* be the first time we enable CCS, but be
- * extra careful about surrounding code changes. We need
- * to set this here because we don't know if we're
- * expecting a CertificateVerify or not.
- */
- if (!s->s3->change_cipher_spec)
- s->s3->flags |= SSL3_FLAGS_CCS_OK;
- /* we should decide if we expected this one */
ret = ssl3_get_cert_verify(s);
if (ret <= 0)
goto end;
@@ -703,11 +711,10 @@ int ssl3_accept(SSL *s)
case SSL3_ST_SR_NEXT_PROTO_A:
case SSL3_ST_SR_NEXT_PROTO_B:
/*
- * Enable CCS for resumed handshakes with NPN.
- * In a full handshake with NPN, we end up here through
- * SSL3_ST_SR_CERT_VRFY_B, where SSL3_FLAGS_CCS_OK was
- * already set. Receiving a CCS clears the flag, so make
- * sure not to re-enable it to ban duplicates.
+ * Enable CCS for NPN. Receiving a CCS clears the flag, so make
+ * sure not to re-enable it to ban duplicates. This *should* be the
+ * first time we have received one - but we check anyway to be
+ * cautious.
* s->s3->change_cipher_spec is set when a CCS is
* processed in s3_pkt.c, and remains set until
* the client's Finished message is read.
@@ -726,10 +733,8 @@ int ssl3_accept(SSL *s)
case SSL3_ST_SR_FINISHED_A:
case SSL3_ST_SR_FINISHED_B:
/*
- * Enable CCS for resumed handshakes without NPN.
- * In a full handshake, we end up here through
- * SSL3_ST_SR_CERT_VRFY_B, where SSL3_FLAGS_CCS_OK was
- * already set. Receiving a CCS clears the flag, so make
+ * Enable CCS for handshakes without NPN. In NPN the CCS flag has
+ * already been set. Receiving a CCS clears the flag, so make
* sure not to re-enable it to ban duplicates.
* s->s3->change_cipher_spec is set when a CCS is
* processed in s3_pkt.c, and remains set until
@@ -779,6 +784,7 @@ int ssl3_accept(SSL *s)
s->session->cipher = s->s3->tmp.new_cipher;
if (!s->method->ssl3_enc->setup_key_block(s)) {
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -795,6 +801,7 @@ int ssl3_accept(SSL *s)
SSL3_CHANGE_CIPHER_SERVER_WRITE))
{
ret = -1;
+ s->state = SSL_ST_ERR;
goto end;
}
@@ -857,6 +864,7 @@ int ssl3_accept(SSL *s)
goto end;
/* break; */
+ case SSL_ST_ERR:
default:
SSLerr(SSL_F_SSL3_ACCEPT, SSL_R_UNKNOWN_STATE);
ret = -1;
@@ -992,6 +1000,16 @@ int ssl3_get_client_hello(SSL *s)
d = p = (unsigned char *)s->init_msg;
/*
+ * 2 bytes for client version, SSL3_RANDOM_SIZE bytes for random, 1 byte
+ * for session id length
+ */
+ if (n < 2 + SSL3_RANDOM_SIZE + 1) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
+
+ /*
* use version from inside client hello, not from record header (may
* differ: see RFC 2246, Appendix E, second paragraph)
*/
@@ -1022,6 +1040,12 @@ int ssl3_get_client_hello(SSL *s)
unsigned int session_length, cookie_length;
session_length = *(p + SSL3_RANDOM_SIZE);
+
+ if (p + SSL3_RANDOM_SIZE + session_length + 1 >= d + n) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
cookie_length = *(p + SSL3_RANDOM_SIZE + session_length + 1);
if (cookie_length == 0)
@@ -1035,6 +1059,12 @@ int ssl3_get_client_hello(SSL *s)
/* get the session-id */
j = *(p++);
+ if (p + j > d + n) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
+
s->hit = 0;
/*
* Versions before 0.9.7 always allow clients to resume sessions in
@@ -1079,8 +1109,19 @@ int ssl3_get_client_hello(SSL *s)
if (s->version == DTLS1_VERSION || s->version == DTLS1_BAD_VER) {
/* cookie stuff */
+ if (p + 1 > d + n) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
cookie_len = *(p++);
+ if (p + cookie_len > d + n) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
+
/*
* The ClientHello may contain a cookie even if the
* HelloVerify message has not been sent--make sure that it
@@ -1121,27 +1162,33 @@ int ssl3_get_client_hello(SSL *s)
p += cookie_len;
}
+ if (p + 2 > d + n) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
n2s(p, i);
- if ((i == 0) && (j != 0)) {
- /* we need a cipher if we are not resuming a session */
+
+ if (i == 0) {
al = SSL_AD_ILLEGAL_PARAMETER;
SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_NO_CIPHERS_SPECIFIED);
goto f_err;
}
- if ((p + i) >= (d + n)) {
+
+ /* i bytes of cipher data + 1 byte for compression length later */
+ if ((p + i + 1) > (d + n)) {
/* not enough data */
al = SSL_AD_DECODE_ERROR;
SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_LENGTH_MISMATCH);
goto f_err;
}
- if ((i > 0) && (ssl_bytes_to_cipher_list(s, p, i, &(ciphers))
- == NULL)) {
+ if (ssl_bytes_to_cipher_list(s, p, i, &(ciphers)) == NULL) {
goto err;
}
p += i;
/* If it is a hit, check that the cipher is in the list */
- if ((s->hit) && (i > 0)) {
+ if (s->hit) {
j = 0;
id = s->session->cipher->id;
@@ -1377,8 +1424,8 @@ int ssl3_get_client_hello(SSL *s)
sk_SSL_CIPHER_free(s->session->ciphers);
s->session->ciphers = ciphers;
if (ciphers == NULL) {
- al = SSL_AD_ILLEGAL_PARAMETER;
- SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_NO_CIPHERS_PASSED);
+ al = SSL_AD_INTERNAL_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
goto f_err;
}
ciphers = NULL;
@@ -1450,8 +1497,10 @@ int ssl3_get_client_hello(SSL *s)
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- }
err:
+ s->state = SSL_ST_ERR;
+ }
+
if (ciphers != NULL)
sk_SSL_CIPHER_free(ciphers);
return (ret);
@@ -1468,8 +1517,10 @@ int ssl3_send_server_hello(SSL *s)
buf = (unsigned char *)s->init_buf->data;
#ifdef OPENSSL_NO_TLSEXT
p = s->s3->server_random;
- if (ssl_fill_hello_random(s, 1, p, SSL3_RANDOM_SIZE) <= 0)
+ if (ssl_fill_hello_random(s, 1, p, SSL3_RANDOM_SIZE) <= 0) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
#endif
/* Do the message type and length last */
d = p = &(buf[4]);
@@ -1504,6 +1555,7 @@ int ssl3_send_server_hello(SSL *s)
sl = s->session->session_id_length;
if (sl > (int)sizeof(s->session->session_id)) {
SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return -1;
}
*(p++) = sl;
@@ -1526,6 +1578,7 @@ int ssl3_send_server_hello(SSL *s)
#ifndef OPENSSL_NO_TLSEXT
if (ssl_prepare_serverhello_tlsext(s) <= 0) {
SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO, SSL_R_SERVERHELLO_TLSEXT);
+ s->state = SSL_ST_ERR;
return -1;
}
if ((p =
@@ -1533,6 +1586,7 @@ int ssl3_send_server_hello(SSL *s)
buf + SSL3_RT_MAX_PLAIN_LENGTH)) ==
NULL) {
SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return -1;
}
#endif
@@ -2016,6 +2070,7 @@ int ssl3_send_server_key_exchange(SSL *s)
BN_CTX_free(bn_ctx);
#endif
EVP_MD_CTX_cleanup(&md_ctx);
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -2113,6 +2168,7 @@ int ssl3_send_certificate_request(SSL *s)
/* SSL3_ST_SW_CERT_REQ_B */
return (ssl3_do_write(s, SSL3_RT_HANDSHAKE));
err:
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -2367,6 +2423,7 @@ int ssl3_get_client_key_exchange(SSL *s)
int padl, outl;
krb5_timestamp authtime = 0;
krb5_ticket_times ttimes;
+ int kerr = 0;
EVP_CIPHER_CTX_init(&ciph_ctx);
@@ -2470,23 +2527,27 @@ int ssl3_get_client_key_exchange(SSL *s)
{
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
SSL_R_DECRYPTION_FAILED);
- goto err;
+ kerr = 1;
+ goto kclean;
}
if (outl > SSL_MAX_MASTER_KEY_LENGTH) {
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
SSL_R_DATA_LENGTH_TOO_LONG);
- goto err;
+ kerr = 1;
+ goto kclean;
}
if (!EVP_DecryptFinal_ex(&ciph_ctx, &(pms[outl]), &padl)) {
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
SSL_R_DECRYPTION_FAILED);
- goto err;
+ kerr = 1;
+ goto kclean;
}
outl += padl;
if (outl > SSL_MAX_MASTER_KEY_LENGTH) {
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
SSL_R_DATA_LENGTH_TOO_LONG);
- goto err;
+ kerr = 1;
+ goto kclean;
}
if (!((pms[0] == (s->client_version >> 8))
&& (pms[1] == (s->client_version & 0xff)))) {
@@ -2503,7 +2564,8 @@ int ssl3_get_client_key_exchange(SSL *s)
if (!(s->options & SSL_OP_TLS_ROLLBACK_BUG)) {
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
SSL_AD_DECODE_ERROR);
- goto err;
+ kerr = 1;
+ goto kclean;
}
}
@@ -2529,6 +2591,11 @@ int ssl3_get_client_key_exchange(SSL *s)
* kssl_ctx = kssl_ctx_free(kssl_ctx);
* if (s->kssl_ctx) s->kssl_ctx = NULL;
*/
+
+ kclean:
+ OPENSSL_cleanse(pms, sizeof(pms));
+ if (kerr)
+ goto err;
} else
#endif /* OPENSSL_NO_KRB5 */
@@ -2847,6 +2914,7 @@ int ssl3_get_client_key_exchange(SSL *s)
s->
session->master_key,
premaster_secret, 32);
+ OPENSSL_cleanse(premaster_secret, sizeof(premaster_secret));
/* Check if pubkey from client certificate was used */
if (EVP_PKEY_CTX_ctrl
(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0)
@@ -2879,6 +2947,7 @@ int ssl3_get_client_key_exchange(SSL *s)
EC_KEY_free(srvr_ecdh);
BN_CTX_free(bn_ctx);
#endif
+ s->state = SSL_ST_ERR;
return (-1);
}
@@ -2894,39 +2963,31 @@ int ssl3_get_cert_verify(SSL *s)
EVP_MD_CTX mctx;
EVP_MD_CTX_init(&mctx);
+ /*
+ * We should only process a CertificateVerify message if we have received
+ * a Certificate from the client. If so then |s->session->peer| will be non
+ * NULL. In some instances a CertificateVerify message is not required even
+ * if the peer has sent a Certificate (e.g. such as in the case of static
+ * DH). In that case the ClientKeyExchange processing will skip the
+ * CertificateVerify state so we should not arrive here.
+ */
+ if (s->session->peer == NULL) {
+ ret = 1;
+ goto end;
+ }
+
n = s->method->ssl_get_message(s,
SSL3_ST_SR_CERT_VRFY_A,
SSL3_ST_SR_CERT_VRFY_B,
- -1, SSL3_RT_MAX_PLAIN_LENGTH, &ok);
+ SSL3_MT_CERTIFICATE_VERIFY,
+ SSL3_RT_MAX_PLAIN_LENGTH, &ok);
if (!ok)
return ((int)n);
- if (s->session->peer != NULL) {
- peer = s->session->peer;
- pkey = X509_get_pubkey(peer);
- type = X509_certificate_type(peer, pkey);
- } else {
- peer = NULL;
- pkey = NULL;
- }
-
- if (s->s3->tmp.message_type != SSL3_MT_CERTIFICATE_VERIFY) {
- s->s3->tmp.reuse_message = 1;
- if (peer != NULL) {
- al = SSL_AD_UNEXPECTED_MESSAGE;
- SSLerr(SSL_F_SSL3_GET_CERT_VERIFY, SSL_R_MISSING_VERIFY_MESSAGE);
- goto f_err;
- }
- ret = 1;
- goto end;
- }
-
- if (peer == NULL) {
- SSLerr(SSL_F_SSL3_GET_CERT_VERIFY, SSL_R_NO_CLIENT_CERT_RECEIVED);
- al = SSL_AD_UNEXPECTED_MESSAGE;
- goto f_err;
- }
+ peer = s->session->peer;
+ pkey = X509_get_pubkey(peer);
+ type = X509_certificate_type(peer, pkey);
if (!(type & EVP_PKT_SIGN)) {
SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,
@@ -2935,12 +2996,6 @@ int ssl3_get_cert_verify(SSL *s)
goto f_err;
}
- if (s->s3->change_cipher_spec) {
- SSLerr(SSL_F_SSL3_GET_CERT_VERIFY, SSL_R_CCS_RECEIVED_EARLY);
- al = SSL_AD_UNEXPECTED_MESSAGE;
- goto f_err;
- }
-
/* we now have a signature that we need to verify */
p = (unsigned char *)s->init_msg;
/* Check for broken implementations of GOST ciphersuites */
@@ -3093,6 +3148,7 @@ int ssl3_get_cert_verify(SSL *s)
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
+ s->state = SSL_ST_ERR;
}
end:
if (s->s3->handshake_buffer) {
@@ -3251,8 +3307,10 @@ int ssl3_get_client_certificate(SSL *s)
if (0) {
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
- }
err:
+ s->state = SSL_ST_ERR;
+ }
+
if (x != NULL)
X509_free(x);
if (sk != NULL)
@@ -3273,6 +3331,7 @@ int ssl3_send_server_certificate(SSL *s)
(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kKRB5)) {
SSLerr(SSL_F_SSL3_SEND_SERVER_CERTIFICATE,
ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return (0);
}
}
@@ -3280,6 +3339,7 @@ int ssl3_send_server_certificate(SSL *s)
l = ssl3_output_cert_chain(s, x);
if (!l) {
SSLerr(SSL_F_SSL3_SEND_SERVER_CERTIFICATE, ERR_R_INTERNAL_ERROR);
+ s->state = SSL_ST_ERR;
return (0);
}
s->state = SSL3_ST_SW_CERT_B;
@@ -3315,11 +3375,15 @@ int ssl3_send_newsession_ticket(SSL *s)
* Some length values are 16 bits, so forget it if session is too
* long
*/
- if (slen_full == 0 || slen_full > 0xFF00)
+ if (slen_full == 0 || slen_full > 0xFF00) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
senc = OPENSSL_malloc(slen_full);
- if (!senc)
+ if (!senc) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
EVP_CIPHER_CTX_init(&ctx);
HMAC_CTX_init(&hctx);
@@ -3442,6 +3506,7 @@ int ssl3_send_newsession_ticket(SSL *s)
OPENSSL_free(senc);
EVP_CIPHER_CTX_cleanup(&ctx);
HMAC_CTX_cleanup(&hctx);
+ s->state = SSL_ST_ERR;
return -1;
}
@@ -3455,8 +3520,10 @@ int ssl3_send_cert_status(SSL *s)
* 1 (ocsp response type) + 3 (ocsp response length)
* + (ocsp response)
*/
- if (!BUF_MEM_grow(s->init_buf, 8 + s->tlsext_ocsp_resplen))
+ if (!BUF_MEM_grow(s->init_buf, 8 + s->tlsext_ocsp_resplen)) {
+ s->state = SSL_ST_ERR;
return -1;
+ }
p = (unsigned char *)s->init_buf->data;
@@ -3499,6 +3566,7 @@ int ssl3_get_next_proto(SSL *s)
if (!s->s3->next_proto_neg_seen) {
SSLerr(SSL_F_SSL3_GET_NEXT_PROTO,
SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION);
+ s->state = SSL_ST_ERR;
return -1;
}
@@ -3518,11 +3586,14 @@ int ssl3_get_next_proto(SSL *s)
*/
if (!s->s3->change_cipher_spec) {
SSLerr(SSL_F_SSL3_GET_NEXT_PROTO, SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS);
+ s->state = SSL_ST_ERR;
return -1;
}
- if (n < 2)
+ if (n < 2) {
+ s->state = SSL_ST_ERR;
return 0; /* The body must be > 1 bytes long */
+ }
p = (unsigned char *)s->init_msg;
@@ -3534,15 +3605,20 @@ int ssl3_get_next_proto(SSL *s)
* uint8 padding[padding_len];
*/
proto_len = p[0];
- if (proto_len + 2 > s->init_num)
+ if (proto_len + 2 > s->init_num) {
+ s->state = SSL_ST_ERR;
return 0;
+ }
padding_len = p[proto_len + 1];
- if (proto_len + padding_len + 2 != s->init_num)
+ if (proto_len + padding_len + 2 != s->init_num) {
+ s->state = SSL_ST_ERR;
return 0;
+ }
s->next_proto_negotiated = OPENSSL_malloc(proto_len);
if (!s->next_proto_negotiated) {
SSLerr(SSL_F_SSL3_GET_NEXT_PROTO, ERR_R_MALLOC_FAILURE);
+ s->state = SSL_ST_ERR;
return 0;
}
memcpy(s->next_proto_negotiated, p + 1, proto_len);
diff --git a/crypto/openssl/ssl/ssl.h b/crypto/openssl/ssl/ssl.h
index b93b67b..d2ab0c0 100644
--- a/crypto/openssl/ssl/ssl.h
+++ b/crypto/openssl/ssl/ssl.h
@@ -1544,6 +1544,7 @@ extern "C" {
# define SSL_ST_BEFORE 0x4000
# define SSL_ST_OK 0x03
# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)
+# define SSL_ST_ERR 0x05
# define SSL_CB_LOOP 0x01
# define SSL_CB_EXIT 0x02
@@ -2303,6 +2304,7 @@ void ERR_load_SSL_strings(void);
# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129
# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130
# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304
+# define SSL_F_SSL3_CHECK_FINISHED 339
# define SSL_F_SSL3_CLIENT_HELLO 131
# define SSL_F_SSL3_CONNECT 132
# define SSL_F_SSL3_CTRL 213
@@ -2408,6 +2410,7 @@ void ERR_load_SSL_strings(void);
# define SSL_F_SSL_READ 223
# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
+# define SSL_F_SSL_SESSION_DUP 348
# define SSL_F_SSL_SESSION_NEW 189
# define SSL_F_SSL_SESSION_PRINT_FP 190
# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312
@@ -2522,6 +2525,7 @@ void ERR_load_SSL_strings(void);
# define SSL_R_DATA_LENGTH_TOO_LONG 146
# define SSL_R_DECRYPTION_FAILED 147
# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281
+# define SSL_R_DH_KEY_TOO_SMALL 372
# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
# define SSL_R_DIGEST_CHECK_FAILED 149
# define SSL_R_DTLS_MESSAGE_TOO_BIG 334
diff --git a/crypto/openssl/ssl/ssl_err.c b/crypto/openssl/ssl/ssl_err.c
index ac7312e..88621b7 100644
--- a/crypto/openssl/ssl/ssl_err.c
+++ b/crypto/openssl/ssl/ssl_err.c
@@ -160,6 +160,7 @@ static ERR_STRING_DATA SSL_str_functs[] = {
{ERR_FUNC(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC),
"SSL3_DO_CHANGE_CIPHER_SPEC"},
{ERR_FUNC(SSL_F_SSL3_ENC), "SSL3_ENC"},
+ {ERR_FUNC(SSL_F_SSL3_CHECK_FINISHED), "SSL3_CHECK_FINISHED"},
{ERR_FUNC(SSL_F_SSL3_GENERATE_KEY_BLOCK), "SSL3_GENERATE_KEY_BLOCK"},
{ERR_FUNC(SSL_F_SSL3_GET_CERTIFICATE_REQUEST),
"SSL3_GET_CERTIFICATE_REQUEST"},
@@ -298,6 +299,7 @@ static ERR_STRING_DATA SSL_str_functs[] = {
{ERR_FUNC(SSL_F_SSL_READ), "SSL_read"},
{ERR_FUNC(SSL_F_SSL_RSA_PRIVATE_DECRYPT), "SSL_RSA_PRIVATE_DECRYPT"},
{ERR_FUNC(SSL_F_SSL_RSA_PUBLIC_ENCRYPT), "SSL_RSA_PUBLIC_ENCRYPT"},
+ {ERR_FUNC(SSL_F_SSL_SESSION_DUP), "ssl_session_dup"},
{ERR_FUNC(SSL_F_SSL_SESSION_NEW), "SSL_SESSION_new"},
{ERR_FUNC(SSL_F_SSL_SESSION_PRINT_FP), "SSL_SESSION_print_fp"},
{ERR_FUNC(SSL_F_SSL_SESSION_SET1_ID_CONTEXT),
@@ -440,6 +442,7 @@ static ERR_STRING_DATA SSL_str_reasons[] = {
{ERR_REASON(SSL_R_DECRYPTION_FAILED), "decryption failed"},
{ERR_REASON(SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC),
"decryption failed or bad record mac"},
+ {ERR_REASON(SSL_R_DH_KEY_TOO_SMALL), "dh key too small"},
{ERR_REASON(SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG),
"dh public value length is wrong"},
{ERR_REASON(SSL_R_DIGEST_CHECK_FAILED), "digest check failed"},
diff --git a/crypto/openssl/ssl/ssl_lib.c b/crypto/openssl/ssl/ssl_lib.c
index dead126..e11746a 100644
--- a/crypto/openssl/ssl/ssl_lib.c
+++ b/crypto/openssl/ssl/ssl_lib.c
@@ -1440,9 +1440,13 @@ STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s, unsigned char *p,
SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST);
return (NULL);
}
- if ((skp == NULL) || (*skp == NULL))
+ if ((skp == NULL) || (*skp == NULL)) {
sk = sk_SSL_CIPHER_new_null(); /* change perhaps later */
- else {
+ if(sk == NULL) {
+ SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
+ return NULL;
+ }
+ } else {
sk = *skp;
sk_SSL_CIPHER_zero(sk);
}
diff --git a/crypto/openssl/ssl/ssl_locl.h b/crypto/openssl/ssl/ssl_locl.h
index aff3b65..a7f3f8d 100644
--- a/crypto/openssl/ssl/ssl_locl.h
+++ b/crypto/openssl/ssl/ssl_locl.h
@@ -865,6 +865,7 @@ int ssl_set_peer_cert_type(SESS_CERT *c, int type);
int ssl_get_new_session(SSL *s, int session);
int ssl_get_prev_session(SSL *s, unsigned char *session, int len,
const unsigned char *limit);
+SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket);
int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b);
DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id);
int ssl_cipher_ptr_id_cmp(const SSL_CIPHER *const *ap,
diff --git a/crypto/openssl/ssl/ssl_sess.c b/crypto/openssl/ssl/ssl_sess.c
index fb4e8c5..1ad9dc7 100644
--- a/crypto/openssl/ssl/ssl_sess.c
+++ b/crypto/openssl/ssl/ssl_sess.c
@@ -227,6 +227,130 @@ SSL_SESSION *SSL_SESSION_new(void)
return (ss);
}
+/*
+ * Create a new SSL_SESSION and duplicate the contents of |src| into it. If
+ * ticket == 0 then no ticket information is duplicated, otherwise it is.
+ */
+SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
+{
+ SSL_SESSION *dest;
+
+ dest = OPENSSL_malloc(sizeof(*src));
+ if (dest == NULL) {
+ goto err;
+ }
+ memcpy(dest, src, sizeof(*dest));
+
+ /*
+ * Set the various pointers to NULL so that we can call SSL_SESSION_free in
+ * the case of an error whilst halfway through constructing dest
+ */
+#ifndef OPENSSL_NO_PSK
+ dest->psk_identity_hint = NULL;
+ dest->psk_identity = NULL;
+#endif
+ dest->ciphers = NULL;
+#ifndef OPENSSL_NO_TLSEXT
+ dest->tlsext_hostname = NULL;
+# ifndef OPENSSL_NO_EC
+ dest->tlsext_ecpointformatlist = NULL;
+ dest->tlsext_ellipticcurvelist = NULL;
+# endif
+#endif
+ dest->tlsext_tick = NULL;
+#ifndef OPENSSL_NO_SRP
+ dest->srp_username = NULL;
+#endif
+ memset(&dest->ex_data, 0, sizeof(dest->ex_data));
+
+ /* We deliberately don't copy the prev and next pointers */
+ dest->prev = NULL;
+ dest->next = NULL;
+
+ dest->references = 1;
+
+ if (src->sess_cert != NULL)
+ CRYPTO_add(&src->sess_cert->references, 1, CRYPTO_LOCK_SSL_SESS_CERT);
+
+ if (src->peer != NULL)
+ CRYPTO_add(&src->peer->references, 1, CRYPTO_LOCK_X509);
+
+#ifndef OPENSSL_NO_PSK
+ if (src->psk_identity_hint) {
+ dest->psk_identity_hint = BUF_strdup(src->psk_identity_hint);
+ if (dest->psk_identity_hint == NULL) {
+ goto err;
+ }
+ }
+ if (src->psk_identity) {
+ dest->psk_identity = BUF_strdup(src->psk_identity);
+ if (dest->psk_identity == NULL) {
+ goto err;
+ }
+ }
+#endif
+
+ if(src->ciphers != NULL) {
+ dest->ciphers = sk_SSL_CIPHER_dup(src->ciphers);
+ if (dest->ciphers == NULL)
+ goto err;
+ }
+
+ if (!CRYPTO_dup_ex_data(CRYPTO_EX_INDEX_SSL_SESSION,
+ &dest->ex_data, &src->ex_data)) {
+ goto err;
+ }
+
+#ifndef OPENSSL_NO_TLSEXT
+ if (src->tlsext_hostname) {
+ dest->tlsext_hostname = BUF_strdup(src->tlsext_hostname);
+ if (dest->tlsext_hostname == NULL) {
+ goto err;
+ }
+ }
+# ifndef OPENSSL_NO_EC
+ if (src->tlsext_ecpointformatlist) {
+ dest->tlsext_ecpointformatlist =
+ BUF_memdup(src->tlsext_ecpointformatlist,
+ src->tlsext_ecpointformatlist_length);
+ if (dest->tlsext_ecpointformatlist == NULL)
+ goto err;
+ }
+ if (src->tlsext_ellipticcurvelist) {
+ dest->tlsext_ellipticcurvelist =
+ BUF_memdup(src->tlsext_ellipticcurvelist,
+ src->tlsext_ellipticcurvelist_length);
+ if (dest->tlsext_ellipticcurvelist == NULL)
+ goto err;
+ }
+# endif
+#endif
+
+ if (ticket != 0) {
+ dest->tlsext_tick = BUF_memdup(src->tlsext_tick, src->tlsext_ticklen);
+ if(dest->tlsext_tick == NULL)
+ goto err;
+ } else {
+ dest->tlsext_tick_lifetime_hint = 0;
+ dest->tlsext_ticklen = 0;
+ }
+
+#ifndef OPENSSL_NO_SRP
+ if (src->srp_username) {
+ dest->srp_username = BUF_strdup(src->srp_username);
+ if (dest->srp_username == NULL) {
+ goto err;
+ }
+ }
+#endif
+
+ return dest;
+err:
+ SSLerr(SSL_F_SSL_SESSION_DUP, ERR_R_MALLOC_FAILURE);
+ SSL_SESSION_free(dest);
+ return NULL;
+}
+
const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
unsigned int *len)
{
@@ -478,9 +602,14 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
int r;
#endif
- if (len > SSL_MAX_SSL_SESSION_ID_LENGTH)
+ if (len < 0 || len > SSL_MAX_SSL_SESSION_ID_LENGTH)
goto err;
+ if (session_id + len > limit) {
+ fatal = 1;
+ goto err;
+ }
+
if (len == 0)
try_session_cache = 0;
diff --git a/crypto/openssl/ssl/ssl_stat.c b/crypto/openssl/ssl/ssl_stat.c
index d725d78..1b9069f 100644
--- a/crypto/openssl/ssl/ssl_stat.c
+++ b/crypto/openssl/ssl/ssl_stat.c
@@ -117,6 +117,9 @@ const char *SSL_state_string_long(const SSL *s)
case SSL_ST_OK | SSL_ST_ACCEPT:
str = "ok/accept SSL initialization";
break;
+ case SSL_ST_ERR:
+ str = "error";
+ break;
#ifndef OPENSSL_NO_SSL2
case SSL2_ST_CLIENT_START_ENCRYPTION:
str = "SSLv2 client start encryption";
@@ -496,6 +499,9 @@ const char *SSL_state_string(const SSL *s)
case SSL_ST_OK:
str = "SSLOK ";
break;
+ case SSL_ST_ERR:
+ str = "SSLERR";
+ break;
#ifndef OPENSSL_NO_SSL2
case SSL2_ST_CLIENT_START_ENCRYPTION:
str = "2CSENC";
diff --git a/crypto/openssl/ssl/ssltest.c b/crypto/openssl/ssl/ssltest.c
index 8efbff7..6a0c293 100644
--- a/crypto/openssl/ssl/ssltest.c
+++ b/crypto/openssl/ssl/ssltest.c
@@ -336,7 +336,9 @@ static void sv_usage(void)
" -bytes <val> - number of bytes to swap between client/server\n");
#ifndef OPENSSL_NO_DH
fprintf(stderr,
- " -dhe1024 - use 1024 bit key (safe prime) for DHE\n");
+ " -dhe512 - use 512 bit key for DHE (to test failure)\n");
+ fprintf(stderr,
+ " -dhe1024 - use 1024 bit key (safe prime) for DHE (default, no-op)\n");
fprintf(stderr,
" -dhe1024dsa - use 1024 bit key (with 160-bit subprime) for DHE\n");
fprintf(stderr, " -no_dhe - disable DHE\n");
@@ -531,7 +533,7 @@ int main(int argc, char *argv[])
long bytes = 256L;
#ifndef OPENSSL_NO_DH
DH *dh;
- int dhe1024 = 0, dhe1024dsa = 0;
+ int dhe512 = 0, dhe1024dsa = 0;
#endif
#ifndef OPENSSL_NO_ECDH
EC_KEY *ecdh = NULL;
@@ -611,19 +613,19 @@ int main(int argc, char *argv[])
debug = 1;
else if (strcmp(*argv, "-reuse") == 0)
reuse = 1;
- else if (strcmp(*argv, "-dhe1024") == 0) {
+ else if (strcmp(*argv, "-dhe512") == 0) {
#ifndef OPENSSL_NO_DH
- dhe1024 = 1;
+ dhe512 = 1;
#else
fprintf(stderr,
- "ignoring -dhe1024, since I'm compiled without DH\n");
+ "ignoring -dhe512, since I'm compiled without DH\n");
#endif
} else if (strcmp(*argv, "-dhe1024dsa") == 0) {
#ifndef OPENSSL_NO_DH
dhe1024dsa = 1;
#else
fprintf(stderr,
- "ignoring -dhe1024, since I'm compiled without DH\n");
+ "ignoring -dhe1024dsa, since I'm compiled without DH\n");
#endif
} else if (strcmp(*argv, "-no_dhe") == 0)
no_dhe = 1;
@@ -905,10 +907,10 @@ int main(int argc, char *argv[])
*/
SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
dh = get_dh1024dsa();
- } else if (dhe1024)
- dh = get_dh1024();
- else
+ } else if (dhe512)
dh = get_dh512();
+ else
+ dh = get_dh1024();
SSL_CTX_set_tmp_dh(s_ctx, dh);
DH_free(dh);
}
diff --git a/crypto/openssl/ssl/t1_enc.c b/crypto/openssl/ssl/t1_enc.c
index 4e2845f..8f45294 100644
--- a/crypto/openssl/ssl/t1_enc.c
+++ b/crypto/openssl/ssl/t1_enc.c
@@ -261,7 +261,7 @@ static int tls1_PRF(long digest_mask,
if ((m << TLS1_PRF_DGST_SHIFT) & digest_mask)
count++;
}
- if(!count) {
+ if (!count) {
/* Should never happen */
SSLerr(SSL_F_TLS1_PRF, ERR_R_INTERNAL_ERROR);
goto err;
@@ -785,7 +785,7 @@ int tls1_enc(SSL *s, int send)
bs = EVP_CIPHER_block_size(ds->cipher);
if (EVP_CIPHER_flags(ds->cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) {
- unsigned char buf[13], *seq;
+ unsigned char buf[EVP_AEAD_TLS1_AAD_LEN], *seq;
seq = send ? s->s3->write_sequence : s->s3->read_sequence;
@@ -809,7 +809,10 @@ int tls1_enc(SSL *s, int send)
buf[10] = (unsigned char)(s->version);
buf[11] = rec->length >> 8;
buf[12] = rec->length & 0xff;
- pad = EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_AEAD_TLS1_AAD, 13, buf);
+ pad = EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_AEAD_TLS1_AAD,
+ EVP_AEAD_TLS1_AAD_LEN, buf);
+ if (pad <= 0)
+ return -1;
if (send) {
l += pad;
rec->length += pad;
diff --git a/crypto/openssl/ssl/t1_lib.c b/crypto/openssl/ssl/t1_lib.c
index 243a70f..d70b93f 100644
--- a/crypto/openssl/ssl/t1_lib.c
+++ b/crypto/openssl/ssl/t1_lib.c
@@ -1016,19 +1016,23 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
s->srtp_profile = NULL;
- if (data >= (d + n - 2))
+ if (data == d + n)
goto ri_check;
+
+ if (data > (d + n - 2))
+ goto err;
+
n2s(data, len);
if (data > (d + n - len))
- goto ri_check;
+ goto err;
while (data <= (d + n - 4)) {
n2s(data, type);
n2s(data, size);
if (data + size > (d + n))
- goto ri_check;
+ goto err;
# if 0
fprintf(stderr, "Received extension type %d size %d\n", type, size);
# endif
@@ -1064,16 +1068,12 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
int servname_type;
int dsize;
- if (size < 2) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (size < 2)
+ goto err;
n2s(data, dsize);
size -= 2;
- if (dsize > size) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize > size)
+ goto err;
sdata = data;
while (dsize > 3) {
@@ -1081,18 +1081,16 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
n2s(sdata, len);
dsize -= 3;
- if (len > dsize) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (len > dsize)
+ goto err;
+
if (s->servername_done == 0)
switch (servname_type) {
case TLSEXT_NAMETYPE_host_name:
if (!s->hit) {
- if (s->session->tlsext_hostname) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (s->session->tlsext_hostname)
+ goto err;
+
if (len > TLSEXT_MAXLEN_host_name) {
*al = TLS1_AD_UNRECOGNIZED_NAME;
return 0;
@@ -1126,31 +1124,23 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
dsize -= len;
}
- if (dsize != 0) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize != 0)
+ goto err;
}
# ifndef OPENSSL_NO_SRP
else if (type == TLSEXT_TYPE_srp) {
- if (size <= 0 || ((len = data[0])) != (size - 1)) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
- if (s->srp_ctx.login != NULL) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (size == 0 || ((len = data[0])) != (size - 1))
+ goto err;
+ if (s->srp_ctx.login != NULL)
+ goto err;
if ((s->srp_ctx.login = OPENSSL_malloc(len + 1)) == NULL)
return -1;
memcpy(s->srp_ctx.login, &data[1], len);
s->srp_ctx.login[len] = '\0';
- if (strlen(s->srp_ctx.login) != len) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (strlen(s->srp_ctx.login) != len)
+ goto err;
}
# endif
@@ -1159,10 +1149,8 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
unsigned char *sdata = data;
int ecpointformatlist_length = *(sdata++);
- if (ecpointformatlist_length != size - 1) {
- *al = TLS1_AD_DECODE_ERROR;
- return 0;
- }
+ if (ecpointformatlist_length != size - 1)
+ goto err;
if (!s->hit) {
if (s->session->tlsext_ecpointformatlist) {
OPENSSL_free(s->session->tlsext_ecpointformatlist);
@@ -1196,15 +1184,13 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
if (ellipticcurvelist_length != size - 2 ||
ellipticcurvelist_length < 1 ||
/* Each NamedCurve is 2 bytes. */
- ellipticcurvelist_length & 1) {
- *al = TLS1_AD_DECODE_ERROR;
- return 0;
- }
+ ellipticcurvelist_length & 1)
+ goto err;
+
if (!s->hit) {
- if (s->session->tlsext_ellipticcurvelist) {
- *al = TLS1_AD_DECODE_ERROR;
- return 0;
- }
+ if (s->session->tlsext_ellipticcurvelist)
+ goto err;
+
s->session->tlsext_ellipticcurvelist_length = 0;
if ((s->session->tlsext_ellipticcurvelist =
OPENSSL_malloc(ellipticcurvelist_length)) == NULL) {
@@ -1273,28 +1259,20 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
renegotiate_seen = 1;
} else if (type == TLSEXT_TYPE_signature_algorithms) {
int dsize;
- if (sigalg_seen || size < 2) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (sigalg_seen || size < 2)
+ goto err;
sigalg_seen = 1;
n2s(data, dsize);
size -= 2;
- if (dsize != size || dsize & 1) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
- if (!tls1_process_sigalgs(s, data, dsize)) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize != size || dsize & 1)
+ goto err;
+ if (!tls1_process_sigalgs(s, data, dsize))
+ goto err;
} else if (type == TLSEXT_TYPE_status_request &&
s->version != DTLS1_VERSION) {
- if (size < 5) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (size < 5)
+ goto err;
s->tlsext_status_type = *data++;
size--;
@@ -1304,35 +1282,26 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
/* Read in responder_id_list */
n2s(data, dsize);
size -= 2;
- if (dsize > size) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize > size)
+ goto err;
while (dsize > 0) {
OCSP_RESPID *id;
int idsize;
- if (dsize < 4) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize < 4)
+ goto err;
n2s(data, idsize);
dsize -= 2 + idsize;
size -= 2 + idsize;
- if (dsize < 0) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize < 0)
+ goto err;
sdata = data;
data += idsize;
id = d2i_OCSP_RESPID(NULL, &sdata, idsize);
- if (!id) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (!id)
+ goto err;
if (data != sdata) {
OCSP_RESPID_free(id);
- *al = SSL_AD_DECODE_ERROR;
- return 0;
+ goto err;
}
if (!s->tlsext_ocsp_ids
&& !(s->tlsext_ocsp_ids =
@@ -1349,16 +1318,12 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
}
/* Read in request_extensions */
- if (size < 2) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (size < 2)
+ goto err;
n2s(data, dsize);
size -= 2;
- if (dsize != size) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (dsize != size)
+ goto err;
sdata = data;
if (dsize > 0) {
if (s->tlsext_ocsp_exts) {
@@ -1368,10 +1333,8 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
s->tlsext_ocsp_exts =
d2i_X509_EXTENSIONS(NULL, &sdata, dsize);
- if (!s->tlsext_ocsp_exts || (data + dsize != sdata)) {
- *al = SSL_AD_DECODE_ERROR;
- return 0;
- }
+ if (!s->tlsext_ocsp_exts || (data + dsize != sdata))
+ goto err;
}
}
/*
@@ -1432,6 +1395,10 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
data += size;
}
+ /* Spurious data on the end */
+ if (data != d + n)
+ goto err;
+
*p = data;
ri_check:
@@ -1447,6 +1414,9 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
}
return 1;
+err:
+ *al = SSL_AD_DECODE_ERROR;
+ return 0;
}
# ifndef OPENSSL_NO_NEXTPROTONEG
@@ -2612,7 +2582,10 @@ int tls1_process_heartbeat(SSL *s)
memcpy(bp, pl, payload);
bp += payload;
/* Random padding */
- RAND_pseudo_bytes(bp, padding);
+ if (RAND_pseudo_bytes(bp, padding) < 0) {
+ OPENSSL_free(buffer);
+ return -1;
+ }
r = ssl3_write_bytes(s, TLS1_RT_HEARTBEAT, buffer,
3 + payload + padding);
@@ -2647,7 +2620,7 @@ int tls1_process_heartbeat(SSL *s)
int tls1_heartbeat(SSL *s)
{
unsigned char *buf, *p;
- int ret;
+ int ret = -1;
unsigned int payload = 18; /* Sequence number + random bytes */
unsigned int padding = 16; /* Use minimum padding */
@@ -2695,10 +2668,16 @@ int tls1_heartbeat(SSL *s)
/* Sequence number */
s2n(s->tlsext_hb_seq, p);
/* 16 random bytes */
- RAND_pseudo_bytes(p, 16);
+ if (RAND_pseudo_bytes(p, 16) < 0) {
+ SSLerr(SSL_F_TLS1_HEARTBEAT, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
p += 16;
/* Random padding */
- RAND_pseudo_bytes(p, padding);
+ if (RAND_pseudo_bytes(p, padding) < 0) {
+ SSLerr(SSL_F_TLS1_HEARTBEAT, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
ret = ssl3_write_bytes(s, TLS1_RT_HEARTBEAT, buf, 3 + payload + padding);
if (ret >= 0) {
@@ -2710,6 +2689,7 @@ int tls1_heartbeat(SSL *s)
s->tlsext_hb_pending = 1;
}
+err:
OPENSSL_free(buf);
return ret;
diff --git a/crypto/openssl/ssl/tls_srp.c b/crypto/openssl/ssl/tls_srp.c
index d36cfa0..bb719ba 100644
--- a/crypto/openssl/ssl/tls_srp.c
+++ b/crypto/openssl/ssl/tls_srp.c
@@ -454,7 +454,8 @@ int SRP_Calc_A_param(SSL *s)
{
unsigned char rnd[SSL_MAX_MASTER_KEY_LENGTH];
- RAND_bytes(rnd, sizeof(rnd));
+ if (RAND_bytes(rnd, sizeof(rnd)) <= 0)
+ return -1;
s->srp_ctx.a = BN_bin2bn(rnd, sizeof(rnd), s->srp_ctx.a);
OPENSSL_cleanse(rnd, sizeof(rnd));
diff --git a/crypto/openssl/util/mk1mf.pl b/crypto/openssl/util/mk1mf.pl
index 550ef9f..1eee7aa 100755
--- a/crypto/openssl/util/mk1mf.pl
+++ b/crypto/openssl/util/mk1mf.pl
@@ -326,7 +326,7 @@ open(IN,"<$infile") || die "unable to open $infile:$!\n";
$_=<IN>;
for (;;)
{
- chop;
+ s/\s*$//; # was chop, didn't work in mixture of perls for Windows...
($key,$val)=/^([^=]+)=(.*)/;
if ($key eq "RELATIVE_DIRECTORY")
diff --git a/crypto/openssl/util/mkerr.pl b/crypto/openssl/util/mkerr.pl
index 8d2fdbc..d87c4fd 100644
--- a/crypto/openssl/util/mkerr.pl
+++ b/crypto/openssl/util/mkerr.pl
@@ -534,14 +534,21 @@ EOF
# First, read any existing reason string definitions:
my %err_reason_strings;
if (open(IN,"<$cfile")) {
+ my $line = "";
while (<IN>) {
- if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) {
- $err_reason_strings{$1} = $2;
- }
- if (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) {
- if (!exists $ftrans{$1} && ($1 ne $2)) {
- print STDERR "WARNING: Mismatched function string $2\n";
- $ftrans{$1} = $2;
+ chomp;
+ $_ = $line . $_;
+ $line = "";
+ if (/{ERR_(FUNC|REASON)\(/) {
+ if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) {
+ $err_reason_strings{$1} = $2;
+ } elsif (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) {
+ if (!exists $ftrans{$1} && ($1 ne $2)) {
+ print STDERR "WARNING: Mismatched function string $2\n";
+ $ftrans{$1} = $2;
+ }
+ } else {
+ $line = $_;
}
}
}
diff --git a/crypto/openssl/util/pl/BC-32.pl b/crypto/openssl/util/pl/BC-32.pl
index b41bb45..6d03664 100644
--- a/crypto/openssl/util/pl/BC-32.pl
+++ b/crypto/openssl/util/pl/BC-32.pl
@@ -130,7 +130,7 @@ sub do_link_rule
local($ret,$_);
$file =~ s/\//$o/g if $o ne '/';
- $n=&bname($targer);
+ $n=&bname($target);
$ret.="$target: $files $dep_libs\n";
$ret.="\t\$(LINK) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n";
return($ret);
diff --git a/crypto/openssl/util/pl/VC-32.pl b/crypto/openssl/util/pl/VC-32.pl
index 3705fc7..b597998 100644
--- a/crypto/openssl/util/pl/VC-32.pl
+++ b/crypto/openssl/util/pl/VC-32.pl
@@ -341,7 +341,7 @@ sub do_link_rule
my($target,$files,$dep_libs,$libs,$standalone)=@_;
local($ret,$_);
$file =~ s/\//$o/g if $o ne '/';
- $n=&bname($targer);
+ $n=&bname($target);
$ret.="$target: $files $dep_libs\n";
if ($standalone == 1)
{
diff --git a/etc/Makefile b/etc/Makefile
index 7f0ca56..053a407 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -330,6 +330,16 @@ distribution:
MTREE_CMD?= mtree
+.if ${MK_INSTALL_AS_USER} == "yes" && ${_uid} != 0
+MTREE_FILTER= sed -e 's,\([gu]\)name=,\1id=,g' \
+ -e 's,\(uid=\)[^ ]* ,\1${_uid} ,' \
+ -e 's,\(gid=\)[^ ]* ,\1${_gid} ,' \
+ -e 's,\(uid=\)[^ ]*$$,\1${_uid},' \
+ -e 's,\(gid=\)[^ ]*$$,\1${_gid},'
+.else
+MTREE_FILTER= cat
+.endif
+
MTREES= mtree/BSD.root.dist / \
mtree/BSD.var.dist /var \
mtree/BSD.usr.dist /usr \
@@ -358,7 +368,8 @@ distrib-dirs: ${MTREES:N/*}
test -d $$d || mkdir -p $$d; \
${ECHO} ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} \
-f $$m -p $$d; \
- ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} -f $$m -p $$d; \
+ ${MTREE_FILTER} $$m | \
+ ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} -p $$d; \
done; true
.if defined(NO_ROOT)
@set ${MTREES}; \
@@ -372,7 +383,8 @@ distrib-dirs: ${MTREES:N/*}
test -d ${DESTDIR}/$$d || mkdir -p ${DESTDIR}/$$d; \
${ECHO} "${MTREE_CMD:N-W} -C -f $$m -K uname,gname | " \
"sed s#^\.#.$$d# | ${METALOG.add}" ; \
- ${MTREE_CMD:N-W} -C -f $$m -K uname,gname | sed s#^\.#.$$d# | \
+ ${MTREE_FILTER} $$m | \
+ ${MTREE_CMD:N-W} -C -K uname,gname | sed s#^\.#.$$d# | \
${METALOG.add} ; \
done; true
.endif
diff --git a/etc/devd/usb.conf b/etc/devd/usb.conf
index 9baa070..3c3cd34 100644
--- a/etc/devd/usb.conf
+++ b/etc/devd/usb.conf
@@ -145,7 +145,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0403";
- match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x6015|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xa6d1|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
+ match "product" "(0x5259|0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x6015|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xa6d1|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
action "kldload -n uftdi";
};
@@ -281,7 +281,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0411";
- match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2|0x01ee)";
+ match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2|0x01a8|0x01ee)";
action "kldload -n if_run";
};
@@ -1193,7 +1193,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x05c6";
- match "product" "(0x1000|0x6000|0x6500|0x6613|0x9000|0x9204|0x9205)";
+ match "product" "(0x1000|0x6000|0x6500|0x6613|0x9000|0x9002|0x9204|0x9205)";
action "kldload -n u3g";
};
@@ -2561,7 +2561,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0bda";
- match "product" "(0x8176|0x8176|0x8177|0x8178|0x8179|0x817a|0x817b|0x817c|0x817d|0x817e|0x817f)";
+ match "product" "(0x8176|0x8177|0x8178|0x8179|0x817a|0x817b|0x817c|0x817d|0x817e|0x817f)";
action "kldload -n if_urtwn";
};
@@ -2577,7 +2577,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0bda";
- match "product" "0x818a";
+ match "product" "(0x818a|0x8191)";
action "kldload -n if_urtwn";
};
@@ -2680,6 +2680,14 @@ nomatch 32 {
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
+ match "vendor" "0x0c45";
+ match "product" "0x7401";
+ action "kldload -n ugold";
+};
+
+nomatch 32 {
+ match "bus" "uhub[0-9]+";
+ match "mode" "host";
match "vendor" "0x0c52";
match "product" "(0x2101|0x2102|0x2103|0x2104|0x2211|0x2212|0x2213|0x2221|0x2222|0x2223|0x2411|0x2412|0x2413|0x2421|0x2422|0x2423|0x2431|0x2432|0x2433|0x2441|0x2442|0x2443|0x2811|0x2812|0x2813|0x2821|0x2822|0x2823|0x2831|0x2832|0x2833|0x2841|0x2842|0x2843|0x2851|0x2852|0x2853|0x2861|0x2862|0x2863|0x2871|0x2872|0x2873|0x2881|0x2882|0x2883|0x9020)";
action "kldload -n uftdi";
@@ -3521,7 +3529,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x1199";
- match "product" "(0x6802|0x6803|0x6804|0x6805|0x6808|0x6809|0x6812|0x6813|0x6815|0x6816|0x6820|0x6821|0x6822|0x6832|0x6833|0x6834|0x6835|0x6838|0x6839|0x683a|0x683b|0x683c|0x683d|0x683e|0x6850|0x6851|0x6852|0x6853|0x6855|0x6856|0x6859|0x685a|0x6880|0x6890|0x6891|0x6892|0x6893|0x68a3)";
+ match "product" "(0x6802|0x6803|0x6804|0x6805|0x6808|0x6809|0x6812|0x6813|0x6815|0x6816|0x6820|0x6820|0x6821|0x6822|0x6832|0x6833|0x6834|0x6835|0x6838|0x6839|0x683a|0x683b|0x683c|0x683d|0x683e|0x6850|0x6851|0x6852|0x6853|0x6855|0x6856|0x6859|0x685a|0x6880|0x6890|0x6891|0x6892|0x6893|0x68a3)";
action "kldload -n u3g";
};
@@ -4424,6 +4432,22 @@ nomatch 32 {
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
+ match "vendor" "0x17e9";
+ match "product" "(0x0059|0x0100|0x0117|0x0136|0x0138|0x0141|0x015a|0x0198|0x019b|0x01ba|0x01bb|0x01d4|0x01d7|0x01e2|0x0215|0x024c|0x02a9|0x0377|0x03e0|0x401a)";
+ action "kldload -n udl";
+};
+
+nomatch 32 {
+ match "bus" "uhub[0-9]+";
+ match "mode" "host";
+ match "vendor" "0x17ef";
+ match "product" "0x304b";
+ action "kldload -n if_axge";
+};
+
+nomatch 32 {
+ match "bus" "uhub[0-9]+";
+ match "mode" "host";
match "vendor" "0x17ef";
match "product" "0x7203";
action "kldload -n if_axe";
@@ -4505,7 +4529,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x19d2";
- match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x1179|0x1181|0x1514|0x1516|0x2000|0x2002|0x2003|0xffdd|0xffde|0xfff1|0xfff5|0xfffe)";
+ match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x1179|0x1181|0x1420|0x1514|0x1516|0x2000|0x2002|0x2003|0xffdd|0xffde|0xfff1|0xfff5|0xfffe)";
action "kldload -n u3g";
};
@@ -4785,7 +4809,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x2001";
- match "product" "(0x7e12|0xa805)";
+ match "product" "(0x7d02|0x7e12|0xa707|0xa805)";
action "kldload -n u3g";
};
@@ -5393,7 +5417,7 @@ nomatch 32 {
nomatch 32 {
match "bus" "uhub[0-9]+";
- match "mode" "host";
+ match "mode" "(host|device)";
match "intclass" "0x02";
match "intsubclass" "0x02";
match "intprotocol" "0x00";
@@ -5402,7 +5426,7 @@ nomatch 32 {
nomatch 32 {
match "bus" "uhub[0-9]+";
- match "mode" "host";
+ match "mode" "(host|device)";
match "intclass" "0x02";
match "intsubclass" "0x02";
match "intprotocol" "0x01";
@@ -5552,5 +5576,5 @@ nomatch 32 {
action "kldload -n umass";
};
-# 2658 USB entries processed
+# 2687 USB entries processed
diff --git a/etc/sendmail/Makefile.depend b/etc/sendmail/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/etc/sendmail/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/caesar/Makefile.depend b/games/caesar/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/games/caesar/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/factor/Makefile.depend b/games/factor/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/games/factor/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/datfiles/Makefile.depend b/games/fortune/datfiles/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/games/fortune/datfiles/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/fortune/Makefile.depend b/games/fortune/fortune/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/fortune/fortune/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/strfile/Makefile.depend b/games/fortune/strfile/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/fortune/strfile/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/unstr/Makefile.depend b/games/fortune/unstr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/fortune/unstr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/grdc/Makefile.depend b/games/grdc/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/games/grdc/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/morse/Makefile.depend b/games/morse/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/morse/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/number/Makefile.depend b/games/number/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/number/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/pom/Makefile.depend b/games/pom/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/games/pom/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/primes/Makefile.depend b/games/primes/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/games/primes/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/random/Makefile.depend b/games/random/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/games/random/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/csu/Makefile b/gnu/lib/csu/Makefile
index e1224ca..1231443 100644
--- a/gnu/lib/csu/Makefile
+++ b/gnu/lib/csu/Makefile
@@ -1,5 +1,7 @@
# $FreeBSD$
+.MAIN: all
+
.include <src.opts.mk>
MK_SSP= no
@@ -74,4 +76,11 @@ realinstall:
${file} ${DESTDIR}${LIBDIR}/${file}
.endfor
+.if ${MK_STAGING} == "yes"
+STAGE_DIR= ${STAGE_LIBDIR}
+STAGE_FILES= ${OBJS} ${SOBJS} ${TGTOBJS}
+staging: stage_files
+.endif
+.NOPATH: ${CLEANFILES}
+
.include <bsd.lib.mk>
diff --git a/gnu/lib/csu/Makefile.depend b/gnu/lib/csu/Makefile.depend
new file mode 100644
index 0000000..e5634d5
--- /dev/null
+++ b/gnu/lib/csu/Makefile.depend
@@ -0,0 +1,43 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crtbegin.o: options.h
+crtbegin.o: tconfig.h
+crtbegin.o: tm.h
+crtbegin.po: options.h
+crtbegin.po: tconfig.h
+crtbegin.po: tm.h
+crtbeginS.o: options.h
+crtbeginS.o: tconfig.h
+crtbeginS.o: tm.h
+crtbeginS.po: options.h
+crtbeginS.po: tconfig.h
+crtbeginS.po: tm.h
+crtbeginT.o: options.h
+crtbeginT.o: tconfig.h
+crtbeginT.o: tm.h
+crtbeginT.po: options.h
+crtbeginT.po: tconfig.h
+crtbeginT.po: tm.h
+crtend.o: options.h
+crtend.o: tconfig.h
+crtend.o: tm.h
+crtend.po: options.h
+crtend.po: tconfig.h
+crtend.po: tm.h
+crtendS.o: options.h
+crtendS.o: tconfig.h
+crtendS.o: tm.h
+crtendS.po: options.h
+crtendS.po: tconfig.h
+crtendS.po: tm.h
+.endif
diff --git a/gnu/lib/libdialog/Makefile.depend b/gnu/lib/libdialog/Makefile.depend
new file mode 100644
index 0000000..1c00d92
--- /dev/null
+++ b/gnu/lib/libdialog/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libgcc/Makefile b/gnu/lib/libgcc/Makefile
index f0efff4..6972146 100644
--- a/gnu/lib/libgcc/Makefile
+++ b/gnu/lib/libgcc/Makefile
@@ -338,7 +338,7 @@ libgcc_eh.a: ${EH_OBJS_T}
@${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_T} | tsort -q`
${RANLIB} ${RANLIBFLAGS} ${.TARGET}
-all: libgcc_eh.a
+_LIBS+= libgcc_eh.a
.if ${MK_PROFILE} != "no"
libgcc_eh_p.a: ${EH_OBJS_P}
@@ -346,7 +346,8 @@ libgcc_eh_p.a: ${EH_OBJS_P}
@rm -f ${.TARGET}
@${AR} ${ARFLAGS} ${.TARGET} `lorder ${EH_OBJS_P} | tsort -q`
${RANLIB} ${RANLIBFLAGS} ${.TARGET}
-all: libgcc_eh_p.a
+
+_LIBS+= libgcc_eh_p.a
.endif
_libinstall: _lib-eh-install
diff --git a/gnu/lib/libgcc/Makefile.depend b/gnu/lib/libgcc/Makefile.depend
new file mode 100644
index 0000000..6dd413b
--- /dev/null
+++ b/gnu/lib/libgcc/Makefile.depend
@@ -0,0 +1,287 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+__main.So: options.h
+__main.So: tconfig.h
+__main.So: tm.h
+_absvdi2.So: options.h
+_absvdi2.So: tconfig.h
+_absvdi2.So: tm.h
+_absvsi2.So: options.h
+_absvsi2.So: tconfig.h
+_absvsi2.So: tm.h
+_addvdi3.So: options.h
+_addvdi3.So: tconfig.h
+_addvdi3.So: tm.h
+_addvsi3.So: options.h
+_addvsi3.So: tconfig.h
+_addvsi3.So: tm.h
+_ashldi3.So: options.h
+_ashldi3.So: tconfig.h
+_ashldi3.So: tm.h
+_ashrdi3.So: options.h
+_ashrdi3.So: tconfig.h
+_ashrdi3.So: tm.h
+_bswapdi2.So: options.h
+_bswapdi2.So: tconfig.h
+_bswapdi2.So: tm.h
+_bswapsi2.So: options.h
+_bswapsi2.So: tconfig.h
+_bswapsi2.So: tm.h
+_clear_cache.So: options.h
+_clear_cache.So: tconfig.h
+_clear_cache.So: tm.h
+_clz.So: options.h
+_clz.So: tconfig.h
+_clz.So: tm.h
+_clzdi2.So: options.h
+_clzdi2.So: tconfig.h
+_clzdi2.So: tm.h
+_clzsi2.So: options.h
+_clzsi2.So: tconfig.h
+_clzsi2.So: tm.h
+_cmpdi2.So: options.h
+_cmpdi2.So: tconfig.h
+_cmpdi2.So: tm.h
+_ctors.So: options.h
+_ctors.So: tconfig.h
+_ctors.So: tm.h
+_ctzdi2.So: options.h
+_ctzdi2.So: tconfig.h
+_ctzdi2.So: tm.h
+_ctzsi2.So: options.h
+_ctzsi2.So: tconfig.h
+_ctzsi2.So: tm.h
+_divdc3.So: options.h
+_divdc3.So: tconfig.h
+_divdc3.So: tm.h
+_divdi3.So: options.h
+_divdi3.So: tconfig.h
+_divdi3.So: tm.h
+_divsc3.So: options.h
+_divsc3.So: tconfig.h
+_divsc3.So: tm.h
+_divtc3.So: options.h
+_divtc3.So: tconfig.h
+_divtc3.So: tm.h
+_divxc3.So: options.h
+_divxc3.So: tconfig.h
+_divxc3.So: tm.h
+_enable_execute_stack.So: options.h
+_enable_execute_stack.So: tconfig.h
+_enable_execute_stack.So: tm.h
+_ffsdi2.So: options.h
+_ffsdi2.So: tconfig.h
+_ffsdi2.So: tm.h
+_ffssi2.So: options.h
+_ffssi2.So: tconfig.h
+_ffssi2.So: tm.h
+_fixdfdi.So: options.h
+_fixdfdi.So: tconfig.h
+_fixdfdi.So: tm.h
+_fixsfdi.So: options.h
+_fixsfdi.So: tconfig.h
+_fixsfdi.So: tm.h
+_fixtfdi.So: options.h
+_fixtfdi.So: tconfig.h
+_fixtfdi.So: tm.h
+_fixunsdfdi.So: options.h
+_fixunsdfdi.So: tconfig.h
+_fixunsdfdi.So: tm.h
+_fixunsdfsi.So: options.h
+_fixunsdfsi.So: tconfig.h
+_fixunsdfsi.So: tm.h
+_fixunssfdi.So: options.h
+_fixunssfdi.So: tconfig.h
+_fixunssfdi.So: tm.h
+_fixunssfsi.So: options.h
+_fixunssfsi.So: tconfig.h
+_fixunssfsi.So: tm.h
+_fixunstfdi.So: options.h
+_fixunstfdi.So: tconfig.h
+_fixunstfdi.So: tm.h
+_fixunsxfdi.So: options.h
+_fixunsxfdi.So: tconfig.h
+_fixunsxfdi.So: tm.h
+_fixunsxfsi.So: options.h
+_fixunsxfsi.So: tconfig.h
+_fixunsxfsi.So: tm.h
+_fixxfdi.So: options.h
+_fixxfdi.So: tconfig.h
+_fixxfdi.So: tm.h
+_floatdidf.So: options.h
+_floatdidf.So: tconfig.h
+_floatdidf.So: tm.h
+_floatdisf.So: options.h
+_floatdisf.So: tconfig.h
+_floatdisf.So: tm.h
+_floatditf.So: options.h
+_floatditf.So: tconfig.h
+_floatditf.So: tm.h
+_floatdixf.So: options.h
+_floatdixf.So: tconfig.h
+_floatdixf.So: tm.h
+_floatundidf.So: options.h
+_floatundidf.So: tconfig.h
+_floatundidf.So: tm.h
+_floatundisf.So: options.h
+_floatundisf.So: tconfig.h
+_floatundisf.So: tm.h
+_floatunditf.So: options.h
+_floatunditf.So: tconfig.h
+_floatunditf.So: tm.h
+_floatundixf.So: options.h
+_floatundixf.So: tconfig.h
+_floatundixf.So: tm.h
+_lshrdi3.So: options.h
+_lshrdi3.So: tconfig.h
+_lshrdi3.So: tm.h
+_moddi3.So: options.h
+_moddi3.So: tconfig.h
+_moddi3.So: tm.h
+_muldc3.So: options.h
+_muldc3.So: tconfig.h
+_muldc3.So: tm.h
+_muldi3.So: options.h
+_muldi3.So: tconfig.h
+_muldi3.So: tm.h
+_mulsc3.So: options.h
+_mulsc3.So: tconfig.h
+_mulsc3.So: tm.h
+_multc3.So: options.h
+_multc3.So: tconfig.h
+_multc3.So: tm.h
+_mulvdi3.So: options.h
+_mulvdi3.So: tconfig.h
+_mulvdi3.So: tm.h
+_mulvsi3.So: options.h
+_mulvsi3.So: tconfig.h
+_mulvsi3.So: tm.h
+_mulxc3.So: options.h
+_mulxc3.So: tconfig.h
+_mulxc3.So: tm.h
+_negdi2.So: options.h
+_negdi2.So: tconfig.h
+_negdi2.So: tm.h
+_negvdi2.So: options.h
+_negvdi2.So: tconfig.h
+_negvdi2.So: tm.h
+_negvsi2.So: options.h
+_negvsi2.So: tconfig.h
+_negvsi2.So: tm.h
+_paritydi2.So: options.h
+_paritydi2.So: tconfig.h
+_paritydi2.So: tm.h
+_paritysi2.So: options.h
+_paritysi2.So: tconfig.h
+_paritysi2.So: tm.h
+_popcount_tab.So: options.h
+_popcount_tab.So: tconfig.h
+_popcount_tab.So: tm.h
+_popcountdi2.So: options.h
+_popcountdi2.So: tconfig.h
+_popcountdi2.So: tm.h
+_popcountsi2.So: options.h
+_popcountsi2.So: tconfig.h
+_popcountsi2.So: tm.h
+_powidf2.So: options.h
+_powidf2.So: tconfig.h
+_powidf2.So: tm.h
+_powisf2.So: options.h
+_powisf2.So: tconfig.h
+_powisf2.So: tm.h
+_powitf2.So: options.h
+_powitf2.So: tconfig.h
+_powitf2.So: tm.h
+_powixf2.So: options.h
+_powixf2.So: tconfig.h
+_powixf2.So: tm.h
+_subvdi3.So: options.h
+_subvdi3.So: tconfig.h
+_subvdi3.So: tm.h
+_subvsi3.So: options.h
+_subvsi3.So: tconfig.h
+_subvsi3.So: tm.h
+_trampoline.So: options.h
+_trampoline.So: tconfig.h
+_trampoline.So: tm.h
+_ucmpdi2.So: options.h
+_ucmpdi2.So: tconfig.h
+_ucmpdi2.So: tm.h
+_udiv_w_sdiv.So: options.h
+_udiv_w_sdiv.So: tconfig.h
+_udiv_w_sdiv.So: tm.h
+_udivdi3.So: options.h
+_udivdi3.So: tconfig.h
+_udivdi3.So: tm.h
+_udivmoddi4.So: options.h
+_udivmoddi4.So: tconfig.h
+_udivmoddi4.So: tm.h
+_umoddi3.So: options.h
+_umoddi3.So: tconfig.h
+_umoddi3.So: tm.h
+unwind-c.So: tconfig.h
+unwind-c.So: unwind.h
+unwind-c.o: tconfig.h
+unwind-c.o: unwind.h
+unwind-c.po: tconfig.h
+unwind-c.po: unwind.h
+unwind-dw2-fde-glibc.So: gthr-default.h
+unwind-dw2-fde-glibc.So: options.h
+unwind-dw2-fde-glibc.So: tconfig.h
+unwind-dw2-fde-glibc.So: tm.h
+unwind-dw2-fde-glibc.So: unwind.h
+unwind-dw2-fde-glibc.o: gthr-default.h
+unwind-dw2-fde-glibc.o: options.h
+unwind-dw2-fde-glibc.o: tconfig.h
+unwind-dw2-fde-glibc.o: tm.h
+unwind-dw2-fde-glibc.o: unwind.h
+unwind-dw2-fde-glibc.po: gthr-default.h
+unwind-dw2-fde-glibc.po: options.h
+unwind-dw2-fde-glibc.po: tconfig.h
+unwind-dw2-fde-glibc.po: tm.h
+unwind-dw2-fde-glibc.po: unwind.h
+unwind-dw2.So: gthr-default.h
+unwind-dw2.So: options.h
+unwind-dw2.So: tconfig.h
+unwind-dw2.So: tm.h
+unwind-dw2.So: unwind.h
+unwind-dw2.o: gthr-default.h
+unwind-dw2.o: options.h
+unwind-dw2.o: tconfig.h
+unwind-dw2.o: tm.h
+unwind-dw2.o: unwind.h
+unwind-dw2.po: gthr-default.h
+unwind-dw2.po: options.h
+unwind-dw2.po: tconfig.h
+unwind-dw2.po: tm.h
+unwind-dw2.po: unwind.h
+unwind-sjlj.So: gthr-default.h
+unwind-sjlj.So: options.h
+unwind-sjlj.So: tconfig.h
+unwind-sjlj.So: tm.h
+unwind-sjlj.So: unwind.h
+unwind-sjlj.o: gthr-default.h
+unwind-sjlj.o: options.h
+unwind-sjlj.o: tconfig.h
+unwind-sjlj.o: tm.h
+unwind-sjlj.o: unwind.h
+unwind-sjlj.po: gthr-default.h
+unwind-sjlj.po: options.h
+unwind-sjlj.po: tconfig.h
+unwind-sjlj.po: tm.h
+unwind-sjlj.po: unwind.h
+.endif
diff --git a/gnu/lib/libgcov/Makefile.depend b/gnu/lib/libgcov/Makefile.depend
new file mode 100644
index 0000000..e6424fd
--- /dev/null
+++ b/gnu/lib/libgcov/Makefile.depend
@@ -0,0 +1,125 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+_gcov.o: gcov-iov.h
+_gcov.o: options.h
+_gcov.o: tconfig.h
+_gcov.o: tm.h
+_gcov.po: gcov-iov.h
+_gcov.po: options.h
+_gcov.po: tconfig.h
+_gcov.po: tm.h
+_gcov_execl.o: gcov-iov.h
+_gcov_execl.o: options.h
+_gcov_execl.o: tconfig.h
+_gcov_execl.o: tm.h
+_gcov_execl.po: gcov-iov.h
+_gcov_execl.po: options.h
+_gcov_execl.po: tconfig.h
+_gcov_execl.po: tm.h
+_gcov_execle.o: gcov-iov.h
+_gcov_execle.o: options.h
+_gcov_execle.o: tconfig.h
+_gcov_execle.o: tm.h
+_gcov_execle.po: gcov-iov.h
+_gcov_execle.po: options.h
+_gcov_execle.po: tconfig.h
+_gcov_execle.po: tm.h
+_gcov_execlp.o: gcov-iov.h
+_gcov_execlp.o: options.h
+_gcov_execlp.o: tconfig.h
+_gcov_execlp.o: tm.h
+_gcov_execlp.po: gcov-iov.h
+_gcov_execlp.po: options.h
+_gcov_execlp.po: tconfig.h
+_gcov_execlp.po: tm.h
+_gcov_execv.o: gcov-iov.h
+_gcov_execv.o: options.h
+_gcov_execv.o: tconfig.h
+_gcov_execv.o: tm.h
+_gcov_execv.po: gcov-iov.h
+_gcov_execv.po: options.h
+_gcov_execv.po: tconfig.h
+_gcov_execv.po: tm.h
+_gcov_execve.o: gcov-iov.h
+_gcov_execve.o: options.h
+_gcov_execve.o: tconfig.h
+_gcov_execve.o: tm.h
+_gcov_execve.po: gcov-iov.h
+_gcov_execve.po: options.h
+_gcov_execve.po: tconfig.h
+_gcov_execve.po: tm.h
+_gcov_execvp.o: gcov-iov.h
+_gcov_execvp.o: options.h
+_gcov_execvp.o: tconfig.h
+_gcov_execvp.o: tm.h
+_gcov_execvp.po: gcov-iov.h
+_gcov_execvp.po: options.h
+_gcov_execvp.po: tconfig.h
+_gcov_execvp.po: tm.h
+_gcov_fork.o: gcov-iov.h
+_gcov_fork.o: options.h
+_gcov_fork.o: tconfig.h
+_gcov_fork.o: tm.h
+_gcov_fork.po: gcov-iov.h
+_gcov_fork.po: options.h
+_gcov_fork.po: tconfig.h
+_gcov_fork.po: tm.h
+_gcov_interval_profiler.o: gcov-iov.h
+_gcov_interval_profiler.o: options.h
+_gcov_interval_profiler.o: tconfig.h
+_gcov_interval_profiler.o: tm.h
+_gcov_interval_profiler.po: gcov-iov.h
+_gcov_interval_profiler.po: options.h
+_gcov_interval_profiler.po: tconfig.h
+_gcov_interval_profiler.po: tm.h
+_gcov_merge_add.o: gcov-iov.h
+_gcov_merge_add.o: options.h
+_gcov_merge_add.o: tconfig.h
+_gcov_merge_add.o: tm.h
+_gcov_merge_add.po: gcov-iov.h
+_gcov_merge_add.po: options.h
+_gcov_merge_add.po: tconfig.h
+_gcov_merge_add.po: tm.h
+_gcov_merge_delta.o: gcov-iov.h
+_gcov_merge_delta.o: options.h
+_gcov_merge_delta.o: tconfig.h
+_gcov_merge_delta.o: tm.h
+_gcov_merge_delta.po: gcov-iov.h
+_gcov_merge_delta.po: options.h
+_gcov_merge_delta.po: tconfig.h
+_gcov_merge_delta.po: tm.h
+_gcov_merge_single.o: gcov-iov.h
+_gcov_merge_single.o: options.h
+_gcov_merge_single.o: tconfig.h
+_gcov_merge_single.o: tm.h
+_gcov_merge_single.po: gcov-iov.h
+_gcov_merge_single.po: options.h
+_gcov_merge_single.po: tconfig.h
+_gcov_merge_single.po: tm.h
+_gcov_one_value_profiler.o: gcov-iov.h
+_gcov_one_value_profiler.o: options.h
+_gcov_one_value_profiler.o: tconfig.h
+_gcov_one_value_profiler.o: tm.h
+_gcov_one_value_profiler.po: gcov-iov.h
+_gcov_one_value_profiler.po: options.h
+_gcov_one_value_profiler.po: tconfig.h
+_gcov_one_value_profiler.po: tm.h
+_gcov_pow2_profiler.o: gcov-iov.h
+_gcov_pow2_profiler.o: options.h
+_gcov_pow2_profiler.o: tconfig.h
+_gcov_pow2_profiler.o: tm.h
+_gcov_pow2_profiler.po: gcov-iov.h
+_gcov_pow2_profiler.po: options.h
+_gcov_pow2_profiler.po: tconfig.h
+_gcov_pow2_profiler.po: tm.h
+.endif
diff --git a/gnu/lib/libgomp/Makefile.depend b/gnu/lib/libgomp/Makefile.depend
new file mode 100644
index 0000000..d8c89db
--- /dev/null
+++ b/gnu/lib/libgomp/Makefile.depend
@@ -0,0 +1,85 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+affinity.So: gstdint.h
+affinity.o: gstdint.h
+affinity.po: gstdint.h
+alloc.So: gstdint.h
+alloc.o: gstdint.h
+alloc.po: gstdint.h
+bar.So: gstdint.h
+bar.o: gstdint.h
+bar.po: gstdint.h
+barrier.So: gstdint.h
+barrier.o: gstdint.h
+barrier.po: gstdint.h
+critical.So: gstdint.h
+critical.o: gstdint.h
+critical.po: gstdint.h
+env.So: gstdint.h
+env.So: libgomp_f.h
+env.o: gstdint.h
+env.o: libgomp_f.h
+env.po: gstdint.h
+env.po: libgomp_f.h
+error.So: gstdint.h
+error.o: gstdint.h
+error.po: gstdint.h
+fortran.So: gstdint.h
+fortran.So: libgomp_f.h
+fortran.o: gstdint.h
+fortran.o: libgomp_f.h
+fortran.po: gstdint.h
+fortran.po: libgomp_f.h
+iter.So: gstdint.h
+iter.o: gstdint.h
+iter.po: gstdint.h
+lock.So: gstdint.h
+lock.o: gstdint.h
+lock.po: gstdint.h
+loop.So: gstdint.h
+loop.o: gstdint.h
+loop.po: gstdint.h
+ordered.So: gstdint.h
+ordered.o: gstdint.h
+ordered.po: gstdint.h
+parallel.So: gstdint.h
+parallel.o: gstdint.h
+parallel.po: gstdint.h
+proc.So: gstdint.h
+proc.o: gstdint.h
+proc.po: gstdint.h
+sections.So: gstdint.h
+sections.o: gstdint.h
+sections.po: gstdint.h
+sem.So: gstdint.h
+sem.o: gstdint.h
+sem.po: gstdint.h
+single.So: gstdint.h
+single.o: gstdint.h
+single.po: gstdint.h
+team.So: gstdint.h
+team.o: gstdint.h
+team.po: gstdint.h
+time.So: gstdint.h
+time.o: gstdint.h
+time.po: gstdint.h
+work.So: gstdint.h
+work.o: gstdint.h
+work.po: gstdint.h
+.endif
diff --git a/gnu/lib/libreadline/readline/Makefile b/gnu/lib/libreadline/readline/Makefile
index 2afeafc..f0bfe5b 100644
--- a/gnu/lib/libreadline/readline/Makefile
+++ b/gnu/lib/libreadline/readline/Makefile
@@ -16,11 +16,15 @@ INSTALLED_HEADERS= readline.h chardefs.h keymaps.h history.h tilde.h \
CFLAGS+= -I${.OBJDIR}/..
SRCDIR= ${.CURDIR}/../../../../contrib/libreadline
+.NOPATH: ${INSTALLED_HEADERS}
+
+beforebuild: ${INSTALLED_HEADERS}
+CLEANFILES+= ${INSTALLED_HEADERS}
+DPSRCS+= ${INSTALLED_HEADERS}
+
.for _h in ${INSTALLED_HEADERS}
-CLEANFILES+= ${_h}
-DPSRCS+= ${.OBJDIR}/${_h}
-${.OBJDIR}/${_h}: ${SRCDIR}/${_h}
- ${INSTALL} ${.ALLSRC} ${.TARGET}
+${_h}: ${SRCDIR}/${_h}
+ ln -sf ${.ALLSRC} ${.TARGET}
.endfor
LIBADD= ncursesw
diff --git a/gnu/lib/libreadline/readline/Makefile.depend b/gnu/lib/libreadline/readline/Makefile.depend
new file mode 100644
index 0000000..c9f2b8c
--- /dev/null
+++ b/gnu/lib/libreadline/readline/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libregex/Makefile.depend b/gnu/lib/libregex/Makefile.depend
new file mode 100644
index 0000000..1eb05a0
--- /dev/null
+++ b/gnu/lib/libregex/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gnuregex.So: gnuregex.c
+gnuregex.o: gnuregex.c
+gnuregex.po: gnuregex.c
+.endif
diff --git a/gnu/lib/libssp/Makefile.depend b/gnu/lib/libssp/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/gnu/lib/libssp/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libssp/libssp_nonshared/Makefile.depend b/gnu/lib/libssp/libssp_nonshared/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/lib/libssp/libssp_nonshared/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libstdc++/Makefile.depend b/gnu/lib/libstdc++/Makefile.depend
new file mode 100644
index 0000000..760b9b8
--- /dev/null
+++ b/gnu/lib/libstdc++/Makefile.depend
@@ -0,0 +1,68 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atomicity.So: atomicity.cc
+atomicity.o: atomicity.cc
+atomicity.po: atomicity.cc
+eh_alloc.So: unwind.h
+eh_alloc.o: unwind.h
+eh_alloc.po: unwind.h
+eh_arm.So: unwind.h
+eh_arm.o: unwind.h
+eh_arm.po: unwind.h
+eh_aux_runtime.So: unwind.h
+eh_aux_runtime.o: unwind.h
+eh_aux_runtime.po: unwind.h
+eh_call.So: unwind.h
+eh_call.o: unwind.h
+eh_call.po: unwind.h
+eh_catch.So: unwind.h
+eh_catch.o: unwind.h
+eh_catch.po: unwind.h
+eh_exception.So: unwind.h
+eh_exception.o: unwind.h
+eh_exception.po: unwind.h
+eh_globals.So: unwind.h
+eh_globals.o: unwind.h
+eh_globals.po: unwind.h
+eh_personality.So: unwind.h
+eh_personality.o: unwind.h
+eh_personality.po: unwind.h
+eh_term_handler.So: unwind.h
+eh_term_handler.o: unwind.h
+eh_term_handler.po: unwind.h
+eh_terminate.So: unwind.h
+eh_terminate.o: unwind.h
+eh_terminate.po: unwind.h
+eh_throw.So: unwind.h
+eh_throw.o: unwind.h
+eh_throw.po: unwind.h
+eh_type.So: unwind.h
+eh_type.o: unwind.h
+eh_type.po: unwind.h
+eh_unex_handler.So: unwind.h
+eh_unex_handler.o: unwind.h
+eh_unex_handler.po: unwind.h
+pure.So: unwind.h
+pure.o: unwind.h
+pure.po: unwind.h
+vec.So: unwind.h
+vec.o: unwind.h
+vec.po: unwind.h
+.endif
diff --git a/gnu/lib/libsupc++/Makefile.depend b/gnu/lib/libsupc++/Makefile.depend
new file mode 100644
index 0000000..2ffe3c4
--- /dev/null
+++ b/gnu/lib/libsupc++/Makefile.depend
@@ -0,0 +1,65 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libstdc++ \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eh_alloc.So: unwind.h
+eh_alloc.o: unwind.h
+eh_alloc.po: unwind.h
+eh_arm.So: unwind.h
+eh_arm.o: unwind.h
+eh_arm.po: unwind.h
+eh_aux_runtime.So: unwind.h
+eh_aux_runtime.o: unwind.h
+eh_aux_runtime.po: unwind.h
+eh_call.So: unwind.h
+eh_call.o: unwind.h
+eh_call.po: unwind.h
+eh_catch.So: unwind.h
+eh_catch.o: unwind.h
+eh_catch.po: unwind.h
+eh_exception.So: unwind.h
+eh_exception.o: unwind.h
+eh_exception.po: unwind.h
+eh_globals.So: unwind.h
+eh_globals.o: unwind.h
+eh_globals.po: unwind.h
+eh_personality.So: unwind.h
+eh_personality.o: unwind.h
+eh_personality.po: unwind.h
+eh_term_handler.So: unwind.h
+eh_term_handler.o: unwind.h
+eh_term_handler.po: unwind.h
+eh_terminate.So: unwind.h
+eh_terminate.o: unwind.h
+eh_terminate.po: unwind.h
+eh_throw.So: unwind.h
+eh_throw.o: unwind.h
+eh_throw.po: unwind.h
+eh_type.So: unwind.h
+eh_type.o: unwind.h
+eh_type.po: unwind.h
+eh_unex_handler.So: unwind.h
+eh_unex_handler.o: unwind.h
+eh_unex_handler.po: unwind.h
+pure.So: unwind.h
+pure.o: unwind.h
+pure.po: unwind.h
+vec.So: unwind.h
+vec.o: unwind.h
+vec.po: unwind.h
+.endif
diff --git a/gnu/usr.bin/binutils/addr2line/Makefile.depend b/gnu/usr.bin/binutils/addr2line/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/addr2line/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ar/Makefile.depend b/gnu/usr.bin/binutils/ar/Makefile.depend
new file mode 100644
index 0000000..9a5a4f9
--- /dev/null
+++ b/gnu/usr.bin/binutils/ar/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/as/Makefile.depend b/gnu/usr.bin/binutils/as/Makefile.depend
new file mode 100644
index 0000000..e48f450
--- /dev/null
+++ b/gnu/usr.bin/binutils/as/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/doc/Makefile.depend b/gnu/usr.bin/binutils/doc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/binutils/doc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ld/Makefile b/gnu/usr.bin/binutils/ld/Makefile
index 6c59945..d0946f3 100644
--- a/gnu/usr.bin/binutils/ld/Makefile
+++ b/gnu/usr.bin/binutils/ld/Makefile
@@ -70,4 +70,6 @@ afterinstall:
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${LDSCRIPTS:S|^|ldscripts/|} ${DESTDIR}${SCRIPTDIR}
+GENDIRDEPS_FILTER.host+= Nusr.bin/yacc
+
.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/binutils/ld/Makefile.depend.amd64 b/gnu/usr.bin/binutils/ld/Makefile.depend.amd64
new file mode 100644
index 0000000..72682c3
--- /dev/null
+++ b/gnu/usr.bin/binutils/ld/Makefile.depend.amd64
@@ -0,0 +1,55 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eelf_i386_fbsd.o: eelf_i386_fbsd.c
+eelf_i386_fbsd.o: ldgram.h
+eelf_i386_fbsd.po: eelf_i386_fbsd.c
+eelf_i386_fbsd.po: ldgram.h
+eelf_x86_64_fbsd.o: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.o: ldgram.h
+eelf_x86_64_fbsd.po: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.po: ldgram.h
+ldctor.o: ldgram.h
+ldctor.po: ldgram.h
+ldemul.o: ldemul-list.h
+ldemul.po: ldemul-list.h
+ldexp.o: ldgram.h
+ldexp.po: ldgram.h
+ldfile.o: ldgram.h
+ldfile.po: ldgram.h
+ldgram.o: ldgram.c
+ldgram.po: ldgram.c
+ldlang.o: ldgram.h
+ldlang.po: ldgram.h
+ldlex.o: ldgram.h
+ldlex.o: ldlex.c
+ldlex.po: ldgram.h
+ldlex.po: ldlex.c
+ldmain.o: ldgram.h
+ldmain.po: ldgram.h
+ldmisc.o: ldgram.h
+ldmisc.po: ldgram.h
+ldwrite.o: ldgram.h
+ldwrite.po: ldgram.h
+lexsup.o: ldgram.h
+lexsup.po: ldgram.h
+mri.o: ldgram.h
+mri.po: ldgram.h
+.endif
diff --git a/gnu/usr.bin/binutils/ld/Makefile.depend.host b/gnu/usr.bin/binutils/ld/Makefile.depend.host
new file mode 100644
index 0000000..9ceb3f9
--- /dev/null
+++ b/gnu/usr.bin/binutils/ld/Makefile.depend.host
@@ -0,0 +1,47 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eelf_i386_fbsd.o: eelf_i386_fbsd.c
+eelf_i386_fbsd.o: ldgram.h
+eelf_i386_fbsd.po: eelf_i386_fbsd.c
+eelf_i386_fbsd.po: ldgram.h
+eelf_x86_64_fbsd.o: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.o: ldgram.h
+eelf_x86_64_fbsd.po: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.po: ldgram.h
+ldctor.o: ldgram.h
+ldctor.po: ldgram.h
+ldemul.o: ldemul-list.h
+ldemul.po: ldemul-list.h
+ldexp.o: ldgram.h
+ldexp.po: ldgram.h
+ldfile.o: ldgram.h
+ldfile.po: ldgram.h
+ldgram.o: ldgram.c
+ldgram.po: ldgram.c
+ldlang.o: ldgram.h
+ldlang.po: ldgram.h
+ldlex.o: ldgram.h
+ldlex.o: ldlex.c
+ldlex.po: ldgram.h
+ldlex.po: ldlex.c
+ldmain.o: ldgram.h
+ldmain.po: ldgram.h
+ldmisc.o: ldgram.h
+ldmisc.po: ldgram.h
+ldwrite.o: ldgram.h
+ldwrite.po: ldgram.h
+lexsup.o: ldgram.h
+lexsup.po: ldgram.h
+mri.o: ldgram.h
+mri.po: ldgram.h
+.endif
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile b/gnu/usr.bin/binutils/libbfd/Makefile
index a24dd04..3132cd8 100644
--- a/gnu/usr.bin/binutils/libbfd/Makefile
+++ b/gnu/usr.bin/binutils/libbfd/Makefile
@@ -103,4 +103,7 @@ elf32-target.h: elfxx-target.h
elf64-target.h: elfxx-target.h
sed -e s/NN/64/g ${.ALLSRC} > ${.TARGET}
+# avoid cicular dependency
+GENDIRDEPS_FILTER+= N*/nm
+
.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64 b/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64
new file mode 100644
index 0000000..7a87c5d
--- /dev/null
+++ b/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64
@@ -0,0 +1,121 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+archive.o: config.h
+archive.po: config.h
+archive64.o: config.h
+archive64.po: config.h
+archures.o: config.h
+archures.po: config.h
+bfd.o: bfdver.h
+bfd.o: config.h
+bfd.po: bfdver.h
+bfd.po: config.h
+bfdio.o: config.h
+bfdio.po: config.h
+bfdwin.o: config.h
+bfdwin.po: config.h
+binary.o: config.h
+binary.po: config.h
+cache.o: config.h
+cache.po: config.h
+coffgen.o: config.h
+coffgen.po: config.h
+cofflink.o: config.h
+cofflink.po: config.h
+corefile.o: config.h
+corefile.po: config.h
+cpu-i386.o: config.h
+cpu-i386.po: config.h
+dwarf1.o: config.h
+dwarf1.po: config.h
+dwarf2.o: config.h
+dwarf2.po: config.h
+efi-app-ia32.o: config.h
+efi-app-ia32.po: config.h
+efi-app-x86_64.o: config.h
+efi-app-x86_64.po: config.h
+elf-attrs.o: config.h
+elf-attrs.po: config.h
+elf-eh-frame.o: config.h
+elf-eh-frame.po: config.h
+elf-strtab.o: config.h
+elf-strtab.po: config.h
+elf-vxworks.o: config.h
+elf-vxworks.po: config.h
+elf.o: config.h
+elf.po: config.h
+elf32-i386.o: config.h
+elf32-i386.o: elf32-target.h
+elf32-i386.po: config.h
+elf32-i386.po: elf32-target.h
+elf32.o: config.h
+elf32.po: config.h
+elf64-gen.o: config.h
+elf64-gen.o: elf64-target.h
+elf64-gen.po: config.h
+elf64-gen.po: elf64-target.h
+elf64-x86-64.o: config.h
+elf64-x86-64.o: elf64-target.h
+elf64-x86-64.po: config.h
+elf64-x86-64.po: elf64-target.h
+elf64.o: config.h
+elf64.po: config.h
+elflink.o: config.h
+elflink.po: config.h
+format.o: config.h
+format.po: config.h
+hash.o: config.h
+hash.po: config.h
+ihex.o: config.h
+ihex.po: config.h
+init.o: config.h
+init.po: config.h
+libbfd.o: config.h
+libbfd.po: config.h
+linker.o: config.h
+linker.po: config.h
+merge.o: config.h
+merge.po: config.h
+opncls.o: config.h
+opncls.po: config.h
+peigen.o: config.h
+peigen.o: peigen.c
+peigen.po: config.h
+peigen.po: peigen.c
+pepigen.o: config.h
+pepigen.o: pepigen.c
+pepigen.po: config.h
+pepigen.po: pepigen.c
+pex64igen.o: config.h
+pex64igen.o: pex64igen.c
+pex64igen.po: config.h
+pex64igen.po: pex64igen.c
+reloc.o: config.h
+reloc.po: config.h
+section.o: config.h
+section.po: config.h
+simple.o: config.h
+simple.po: config.h
+srec.o: config.h
+srec.po: config.h
+stabs.o: config.h
+stabs.po: config.h
+syms.o: config.h
+syms.po: config.h
+targets.o: config.h
+targets.o: targmatch.h
+targets.po: config.h
+targets.po: targmatch.h
+tekhex.o: config.h
+tekhex.po: config.h
+.endif
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.depend.host b/gnu/usr.bin/binutils/libbfd/Makefile.depend.host
new file mode 100644
index 0000000..1be848f
--- /dev/null
+++ b/gnu/usr.bin/binutils/libbfd/Makefile.depend.host
@@ -0,0 +1,119 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+archive.o: config.h
+archive.po: config.h
+archive64.o: config.h
+archive64.po: config.h
+archures.o: config.h
+archures.po: config.h
+bfd.o: bfdver.h
+bfd.o: config.h
+bfd.po: bfdver.h
+bfd.po: config.h
+bfdio.o: config.h
+bfdio.po: config.h
+bfdwin.o: config.h
+bfdwin.po: config.h
+binary.o: config.h
+binary.po: config.h
+cache.o: config.h
+cache.po: config.h
+coffgen.o: config.h
+coffgen.po: config.h
+cofflink.o: config.h
+cofflink.po: config.h
+corefile.o: config.h
+corefile.po: config.h
+cpu-i386.o: config.h
+cpu-i386.po: config.h
+dwarf1.o: config.h
+dwarf1.po: config.h
+dwarf2.o: config.h
+dwarf2.po: config.h
+efi-app-ia32.o: config.h
+efi-app-ia32.po: config.h
+efi-app-x86_64.o: config.h
+efi-app-x86_64.po: config.h
+elf-attrs.o: config.h
+elf-attrs.po: config.h
+elf-eh-frame.o: config.h
+elf-eh-frame.po: config.h
+elf-strtab.o: config.h
+elf-strtab.po: config.h
+elf-vxworks.o: config.h
+elf-vxworks.po: config.h
+elf.o: config.h
+elf.po: config.h
+elf32-i386.o: config.h
+elf32-i386.o: elf32-target.h
+elf32-i386.po: config.h
+elf32-i386.po: elf32-target.h
+elf32.o: config.h
+elf32.po: config.h
+elf64-gen.o: config.h
+elf64-gen.o: elf64-target.h
+elf64-gen.po: config.h
+elf64-gen.po: elf64-target.h
+elf64-x86-64.o: config.h
+elf64-x86-64.o: elf64-target.h
+elf64-x86-64.po: config.h
+elf64-x86-64.po: elf64-target.h
+elf64.o: config.h
+elf64.po: config.h
+elflink.o: config.h
+elflink.po: config.h
+format.o: config.h
+format.po: config.h
+hash.o: config.h
+hash.po: config.h
+ihex.o: config.h
+ihex.po: config.h
+init.o: config.h
+init.po: config.h
+libbfd.o: config.h
+libbfd.po: config.h
+linker.o: config.h
+linker.po: config.h
+merge.o: config.h
+merge.po: config.h
+opncls.o: config.h
+opncls.po: config.h
+peigen.o: config.h
+peigen.o: peigen.c
+peigen.po: config.h
+peigen.po: peigen.c
+pepigen.o: config.h
+pepigen.o: pepigen.c
+pepigen.po: config.h
+pepigen.po: pepigen.c
+pex64igen.o: config.h
+pex64igen.o: pex64igen.c
+pex64igen.po: config.h
+pex64igen.po: pex64igen.c
+reloc.o: config.h
+reloc.po: config.h
+section.o: config.h
+section.po: config.h
+simple.o: config.h
+simple.po: config.h
+srec.o: config.h
+srec.po: config.h
+stabs.o: config.h
+stabs.po: config.h
+syms.o: config.h
+syms.po: config.h
+targets.o: config.h
+targets.o: targmatch.h
+targets.po: config.h
+targets.po: targmatch.h
+tekhex.o: config.h
+tekhex.po: config.h
+.endif
diff --git a/gnu/usr.bin/binutils/libbinutils/Makefile.depend b/gnu/usr.bin/binutils/libbinutils/Makefile.depend
new file mode 100644
index 0000000..f3e9e22
--- /dev/null
+++ b/gnu/usr.bin/binutils/libbinutils/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ include \
+ include/xlocale \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+arlex.o: arlex.c
+arlex.o: arparse.h
+arlex.po: arlex.c
+arlex.po: arparse.h
+arparse.o: arparse.c
+arparse.po: arparse.c
+.endif
diff --git a/gnu/usr.bin/binutils/libiberty/Makefile.depend b/gnu/usr.bin/binutils/libiberty/Makefile.depend
new file mode 100644
index 0000000..c210061
--- /dev/null
+++ b/gnu/usr.bin/binutils/libiberty/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/libopcodes/Makefile.depend b/gnu/usr.bin/binutils/libopcodes/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/gnu/usr.bin/binutils/libopcodes/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/nm/Makefile.depend b/gnu/usr.bin/binutils/nm/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/nm/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/objcopy/Makefile.depend b/gnu/usr.bin/binutils/objcopy/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/objcopy/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/objdump/Makefile.depend b/gnu/usr.bin/binutils/objdump/Makefile.depend
new file mode 100644
index 0000000..f4eee5f
--- /dev/null
+++ b/gnu/usr.bin/binutils/objdump/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ranlib/Makefile.depend b/gnu/usr.bin/binutils/ranlib/Makefile.depend
new file mode 100644
index 0000000..9a5a4f9
--- /dev/null
+++ b/gnu/usr.bin/binutils/ranlib/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/readelf/Makefile.depend b/gnu/usr.bin/binutils/readelf/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/readelf/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/size/Makefile.depend b/gnu/usr.bin/binutils/size/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/size/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/strings/Makefile.depend b/gnu/usr.bin/binutils/strings/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/strings/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/strip/Makefile.depend b/gnu/usr.bin/binutils/strip/Makefile.depend
new file mode 100644
index 0000000..b58c9bd
--- /dev/null
+++ b/gnu/usr.bin/binutils/strip/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/c++/Makefile.depend b/gnu/usr.bin/cc/c++/Makefile.depend
new file mode 100644
index 0000000..07a2968
--- /dev/null
+++ b/gnu/usr.bin/cc/c++/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/c++filt/Makefile.depend b/gnu/usr.bin/cc/c++filt/Makefile.depend
new file mode 100644
index 0000000..0f7485d
--- /dev/null
+++ b/gnu/usr.bin/cc/c++filt/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc/Makefile.depend b/gnu/usr.bin/cc/cc/Makefile.depend
new file mode 100644
index 0000000..49202cf
--- /dev/null
+++ b/gnu/usr.bin/cc/cc/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc1/Makefile.depend b/gnu/usr.bin/cc/cc1/Makefile.depend
new file mode 100644
index 0000000..7638ce5
--- /dev/null
+++ b/gnu/usr.bin/cc/cc1/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1-checksum.o: cc1-checksum.c
+cc1-checksum.po: cc1-checksum.c
+.endif
diff --git a/gnu/usr.bin/cc/cc1plus/Makefile.depend b/gnu/usr.bin/cc/cc1plus/Makefile.depend
new file mode 100644
index 0000000..7d1e3c7
--- /dev/null
+++ b/gnu/usr.bin/cc/cc1plus/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1plus-checksum.o: cc1plus-checksum.c
+cc1plus-checksum.po: cc1plus-checksum.c
+except.o: cfns.h
+except.po: cfns.h
+.endif
diff --git a/gnu/usr.bin/cc/cc_int/Makefile.depend b/gnu/usr.bin/cc/cc_int/Makefile.depend
new file mode 100644
index 0000000..3a8633f
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_int/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile b/gnu/usr.bin/cc/cc_tools/Makefile
index af731c1..4121f5c 100644
--- a/gnu/usr.bin/cc/cc_tools/Makefile
+++ b/gnu/usr.bin/cc/cc_tools/Makefile
@@ -215,6 +215,9 @@ tconfig.h:
GENSRCS+= tconfig.h
CLEANFILES+= cs-tconfig.h
+
+.NOPATH: ${GENSRCS} ${CLEANFILES}
+
# Options
optionlist: ${OPT_FILES}
LC_ALL=C awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET}
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile.depend b/gnu/usr.bin/cc/cc_tools/Makefile.depend
new file mode 100644
index 0000000..5558f36
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_tools/Makefile.depend
@@ -0,0 +1,252 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+errors.o: bconfig.h
+errors.po: bconfig.h
+genattr.o: bconfig.h
+genattr.o: insn-modes.h
+genattr.o: options.h
+genattr.o: tm.h
+genattr.po: bconfig.h
+genattr.po: insn-modes.h
+genattr.po: options.h
+genattr.po: tm.h
+genattrtab.o: bconfig.h
+genattrtab.o: insn-modes.h
+genattrtab.o: options.h
+genattrtab.o: tm.h
+genattrtab.po: bconfig.h
+genattrtab.po: insn-modes.h
+genattrtab.po: options.h
+genattrtab.po: tm.h
+genautomata.o: bconfig.h
+genautomata.o: insn-modes.h
+genautomata.o: options.h
+genautomata.o: tm.h
+genautomata.po: bconfig.h
+genautomata.po: insn-modes.h
+genautomata.po: options.h
+genautomata.po: tm.h
+gencheck.o: bconfig.h
+gencheck.o: gencheck.h
+gencheck.o: options.h
+gencheck.o: tm.h
+gencheck.po: bconfig.h
+gencheck.po: gencheck.h
+gencheck.po: options.h
+gencheck.po: tm.h
+genchecksum.o: bconfig.h
+genchecksum.po: bconfig.h
+gencodes.o: bconfig.h
+gencodes.o: insn-modes.h
+gencodes.o: options.h
+gencodes.o: tm.h
+gencodes.po: bconfig.h
+gencodes.po: insn-modes.h
+gencodes.po: options.h
+gencodes.po: tm.h
+genconditions.o: bconfig.h
+genconditions.o: insn-modes.h
+genconditions.o: options.h
+genconditions.o: tm.h
+genconditions.po: bconfig.h
+genconditions.po: insn-modes.h
+genconditions.po: options.h
+genconditions.po: tm.h
+gencondmd.o: bconfig.h
+gencondmd.o: gencondmd.c
+gencondmd.o: insn-constants.h
+gencondmd.o: insn-modes.h
+gencondmd.o: options.h
+gencondmd.o: tm-constrs.h
+gencondmd.o: tm-preds.h
+gencondmd.o: tm.h
+gencondmd.o: tm_p.h
+gencondmd.o: tree-check.h
+gencondmd.po: bconfig.h
+gencondmd.po: gencondmd.c
+gencondmd.po: insn-constants.h
+gencondmd.po: insn-modes.h
+gencondmd.po: options.h
+gencondmd.po: tm-constrs.h
+gencondmd.po: tm-preds.h
+gencondmd.po: tm.h
+gencondmd.po: tm_p.h
+gencondmd.po: tree-check.h
+genconfig.o: bconfig.h
+genconfig.o: insn-modes.h
+genconfig.o: options.h
+genconfig.o: tm.h
+genconfig.po: bconfig.h
+genconfig.po: insn-modes.h
+genconfig.po: options.h
+genconfig.po: tm.h
+genconstants.o: bconfig.h
+genconstants.o: insn-modes.h
+genconstants.o: options.h
+genconstants.o: tm.h
+genconstants.po: bconfig.h
+genconstants.po: insn-modes.h
+genconstants.po: options.h
+genconstants.po: tm.h
+genemit.o: bconfig.h
+genemit.o: insn-modes.h
+genemit.o: options.h
+genemit.o: tm.h
+genemit.po: bconfig.h
+genemit.po: insn-modes.h
+genemit.po: options.h
+genemit.po: tm.h
+genextract.o: bconfig.h
+genextract.o: insn-modes.h
+genextract.o: options.h
+genextract.o: tm.h
+genextract.po: bconfig.h
+genextract.po: insn-modes.h
+genextract.po: options.h
+genextract.po: tm.h
+genflags.o: bconfig.h
+genflags.o: insn-modes.h
+genflags.o: options.h
+genflags.o: tm.h
+genflags.po: bconfig.h
+genflags.po: insn-modes.h
+genflags.po: options.h
+genflags.po: tm.h
+gengenrtl.o: bconfig.h
+gengenrtl.po: bconfig.h
+gengtype-lex.o: bconfig.h
+gengtype-lex.o: gengtype-lex.c
+gengtype-lex.o: gengtype-yacc.h
+gengtype-lex.po: bconfig.h
+gengtype-lex.po: gengtype-lex.c
+gengtype-lex.po: gengtype-yacc.h
+gengtype-yacc+%DIKED.o: bconfig.h
+gengtype-yacc+%DIKED.o: gengtype-yacc+%DIKED.c
+gengtype-yacc+%DIKED.o: options.h
+gengtype-yacc+%DIKED.o: tm.h
+gengtype-yacc+%DIKED.po: bconfig.h
+gengtype-yacc+%DIKED.po: gengtype-yacc+%DIKED.c
+gengtype-yacc+%DIKED.po: options.h
+gengtype-yacc+%DIKED.po: tm.h
+gengtype.o: bconfig.h
+gengtype.o: gtyp-gen.h
+gengtype.o: options.h
+gengtype.o: tm.h
+gengtype.po: bconfig.h
+gengtype.po: gtyp-gen.h
+gengtype.po: options.h
+gengtype.po: tm.h
+genmodes.o: bconfig.h
+genmodes.po: bconfig.h
+genopinit.o: bconfig.h
+genopinit.o: insn-modes.h
+genopinit.o: options.h
+genopinit.o: tm.h
+genopinit.po: bconfig.h
+genopinit.po: insn-modes.h
+genopinit.po: options.h
+genopinit.po: tm.h
+genoutput.o: bconfig.h
+genoutput.o: insn-modes.h
+genoutput.o: options.h
+genoutput.o: tm.h
+genoutput.po: bconfig.h
+genoutput.po: insn-modes.h
+genoutput.po: options.h
+genoutput.po: tm.h
+genpeep.o: bconfig.h
+genpeep.o: insn-modes.h
+genpeep.o: options.h
+genpeep.o: tm.h
+genpeep.po: bconfig.h
+genpeep.po: insn-modes.h
+genpeep.po: options.h
+genpeep.po: tm.h
+genpreds.o: bconfig.h
+genpreds.o: insn-modes.h
+genpreds.o: options.h
+genpreds.o: tm.h
+genpreds.po: bconfig.h
+genpreds.po: insn-modes.h
+genpreds.po: options.h
+genpreds.po: tm.h
+genrecog.o: bconfig.h
+genrecog.o: insn-modes.h
+genrecog.o: options.h
+genrecog.o: tm.h
+genrecog.po: bconfig.h
+genrecog.po: insn-modes.h
+genrecog.po: options.h
+genrecog.po: tm.h
+gensupport.o: bconfig.h
+gensupport.o: insn-modes.h
+gensupport.o: options.h
+gensupport.o: tm.h
+gensupport.po: bconfig.h
+gensupport.po: insn-modes.h
+gensupport.po: options.h
+gensupport.po: tm.h
+ggc-none.o: bconfig.h
+ggc-none.o: gtype-desc.h
+ggc-none.po: bconfig.h
+ggc-none.po: gtype-desc.h
+min-insn-modes.o: bconfig.h
+min-insn-modes.o: insn-modes.h
+min-insn-modes.o: min-insn-modes.c
+min-insn-modes.po: bconfig.h
+min-insn-modes.po: insn-modes.h
+min-insn-modes.po: min-insn-modes.c
+print-rtl.o: bconfig.h
+print-rtl.o: insn-modes.h
+print-rtl.o: options.h
+print-rtl.o: tm.h
+print-rtl.po: bconfig.h
+print-rtl.po: insn-modes.h
+print-rtl.po: options.h
+print-rtl.po: tm.h
+read-rtl.o: bconfig.h
+read-rtl.o: insn-modes.h
+read-rtl.o: options.h
+read-rtl.o: tm.h
+read-rtl.po: bconfig.h
+read-rtl.po: insn-modes.h
+read-rtl.po: options.h
+read-rtl.po: tm.h
+rtl.o: bconfig.h
+rtl.o: gtype-desc.h
+rtl.o: insn-modes.h
+rtl.o: options.h
+rtl.o: tm.h
+rtl.po: bconfig.h
+rtl.po: gtype-desc.h
+rtl.po: insn-modes.h
+rtl.po: options.h
+rtl.po: tm.h
+vec.o: bconfig.h
+vec.o: gtype-desc.h
+vec.o: insn-modes.h
+vec.o: tree-check.h
+vec.po: bconfig.h
+vec.po: gtype-desc.h
+vec.po: insn-modes.h
+vec.po: tree-check.h
+.endif
diff --git a/gnu/usr.bin/cc/cpp/Makefile.depend b/gnu/usr.bin/cc/cpp/Makefile.depend
new file mode 100644
index 0000000..07a2968
--- /dev/null
+++ b/gnu/usr.bin/cc/cpp/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/gcov/Makefile.depend b/gnu/usr.bin/cc/gcov/Makefile.depend
new file mode 100644
index 0000000..0f7485d
--- /dev/null
+++ b/gnu/usr.bin/cc/gcov/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/include/Makefile.depend b/gnu/usr.bin/cc/include/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/gnu/usr.bin/cc/include/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/libcpp/Makefile.depend b/gnu/usr.bin/cc/libcpp/Makefile.depend
new file mode 100644
index 0000000..5427265
--- /dev/null
+++ b/gnu/usr.bin/cc/libcpp/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+init.o: localedir.h
+init.po: localedir.h
+.endif
diff --git a/gnu/usr.bin/cc/libdecnumber/Makefile.depend b/gnu/usr.bin/cc/libdecnumber/Makefile.depend
new file mode 100644
index 0000000..3a8633f
--- /dev/null
+++ b/gnu/usr.bin/cc/libdecnumber/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/libiberty/Makefile.depend b/gnu/usr.bin/cc/libiberty/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/gnu/usr.bin/cc/libiberty/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/dialog/Makefile.depend b/gnu/usr.bin/dialog/Makefile.depend
new file mode 100644
index 0000000..5e97e25
--- /dev/null
+++ b/gnu/usr.bin/dialog/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/diff/Makefile.depend b/gnu/usr.bin/diff/Makefile.depend
new file mode 100644
index 0000000..4eb4a14
--- /dev/null
+++ b/gnu/usr.bin/diff/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+context.o: context.c
+context.po: context.c
+diff.o: diff.c
+diff.po: diff.c
+.endif
diff --git a/gnu/usr.bin/diff3/Makefile.depend b/gnu/usr.bin/diff3/Makefile.depend
new file mode 100644
index 0000000..1931f06
--- /dev/null
+++ b/gnu/usr.bin/diff3/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+diff3.o: diff3.c
+diff3.po: diff3.c
+.endif
diff --git a/gnu/usr.bin/dtc/Makefile.depend b/gnu/usr.bin/dtc/Makefile.depend
new file mode 100644
index 0000000..50fce9a
--- /dev/null
+++ b/gnu/usr.bin/dtc/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dtc-lexer.lex.o: dtc-lexer.lex.c
+dtc-lexer.lex.o: dtc-parser.tab.h
+dtc-lexer.lex.po: dtc-lexer.lex.c
+dtc-lexer.lex.po: dtc-parser.tab.h
+dtc-parser.tab.o: dtc-parser.tab.c
+dtc-parser.tab.po: dtc-parser.tab.c
+dtc.o: version_gen.h
+dtc.po: version_gen.h
+.endif
diff --git a/gnu/usr.bin/gdb/gdb/Makefile.depend b/gnu/usr.bin/gdb/gdb/Makefile.depend
new file mode 100644
index 0000000..f2e2bfa
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdb/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gdb.o: nm.h
+gdb.o: tm.h
+gdb.o: xm.h
+gdb.po: nm.h
+gdb.po: tm.h
+gdb.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/gdbserver/Makefile.depend b/gnu/usr.bin/gdb/gdbserver/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdbserver/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/gdb/gdbtui/Makefile.depend b/gnu/usr.bin/gdb/gdbtui/Makefile.depend
new file mode 100644
index 0000000..ad14e4c
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdbtui/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+tui-main.o: nm.h
+tui-main.o: tm.h
+tui-main.o: xm.h
+tui-main.po: nm.h
+tui-main.po: tm.h
+tui-main.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64 b/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64
new file mode 100644
index 0000000..f675e83
--- /dev/null
+++ b/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64
@@ -0,0 +1,57 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+kld.o: nm.h
+kld.o: tm.h
+kld.o: xm.h
+kld.po: nm.h
+kld.po: tm.h
+kld.po: xm.h
+kthr.o: nm.h
+kthr.o: tm.h
+kthr.o: xm.h
+kthr.po: nm.h
+kthr.po: tm.h
+kthr.po: xm.h
+main.o: nm.h
+main.o: tm.h
+main.o: xm.h
+main.po: nm.h
+main.po: tm.h
+main.po: xm.h
+trgt.o: nm.h
+trgt.o: tm.h
+trgt.o: xm.h
+trgt.po: nm.h
+trgt.po: tm.h
+trgt.po: xm.h
+trgt_amd64.o: nm.h
+trgt_amd64.o: tm.h
+trgt_amd64.o: xm.h
+trgt_amd64.po: nm.h
+trgt_amd64.po: tm.h
+trgt_amd64.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64 b/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64
new file mode 100644
index 0000000..4c60635
--- /dev/null
+++ b/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64
@@ -0,0 +1,1211 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/libreadline/readline \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libthread_db \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+amd64-nat.o: nm.h
+amd64-nat.o: tm.h
+amd64-nat.o: xm.h
+amd64-nat.po: nm.h
+amd64-nat.po: tm.h
+amd64-nat.po: xm.h
+amd64-tdep.o: nm.h
+amd64-tdep.o: tm.h
+amd64-tdep.o: xm.h
+amd64-tdep.po: nm.h
+amd64-tdep.po: tm.h
+amd64-tdep.po: xm.h
+amd64bsd-nat.o: nm.h
+amd64bsd-nat.o: tm.h
+amd64bsd-nat.o: xm.h
+amd64bsd-nat.po: nm.h
+amd64bsd-nat.po: tm.h
+amd64bsd-nat.po: xm.h
+amd64fbsd-nat.o: nm.h
+amd64fbsd-nat.o: tm.h
+amd64fbsd-nat.o: xm.h
+amd64fbsd-nat.po: nm.h
+amd64fbsd-nat.po: tm.h
+amd64fbsd-nat.po: xm.h
+amd64fbsd-tdep.o: nm.h
+amd64fbsd-tdep.o: tm.h
+amd64fbsd-tdep.o: xm.h
+amd64fbsd-tdep.po: nm.h
+amd64fbsd-tdep.po: tm.h
+amd64fbsd-tdep.po: xm.h
+annotate.o: nm.h
+annotate.o: tm.h
+annotate.o: xm.h
+annotate.po: nm.h
+annotate.po: tm.h
+annotate.po: xm.h
+arch-utils.o: nm.h
+arch-utils.o: tm.h
+arch-utils.o: xm.h
+arch-utils.po: nm.h
+arch-utils.po: tm.h
+arch-utils.po: xm.h
+auxv.o: nm.h
+auxv.o: tm.h
+auxv.o: xm.h
+auxv.po: nm.h
+auxv.po: tm.h
+auxv.po: xm.h
+ax-gdb.o: nm.h
+ax-gdb.o: tm.h
+ax-gdb.o: xm.h
+ax-gdb.po: nm.h
+ax-gdb.po: tm.h
+ax-gdb.po: xm.h
+ax-general.o: nm.h
+ax-general.o: tm.h
+ax-general.o: xm.h
+ax-general.po: nm.h
+ax-general.po: tm.h
+ax-general.po: xm.h
+bcache.o: nm.h
+bcache.o: tm.h
+bcache.o: xm.h
+bcache.po: nm.h
+bcache.po: tm.h
+bcache.po: xm.h
+bfd-target.o: nm.h
+bfd-target.o: tm.h
+bfd-target.o: xm.h
+bfd-target.po: nm.h
+bfd-target.po: tm.h
+bfd-target.po: xm.h
+block.o: nm.h
+block.o: tm.h
+block.o: xm.h
+block.po: nm.h
+block.po: tm.h
+block.po: xm.h
+blockframe.o: nm.h
+blockframe.o: tm.h
+blockframe.o: xm.h
+blockframe.po: nm.h
+blockframe.po: tm.h
+blockframe.po: xm.h
+breakpoint.o: nm.h
+breakpoint.o: tm.h
+breakpoint.o: xm.h
+breakpoint.po: nm.h
+breakpoint.po: tm.h
+breakpoint.po: xm.h
+buildsym.o: nm.h
+buildsym.o: tm.h
+buildsym.o: xm.h
+buildsym.po: nm.h
+buildsym.po: tm.h
+buildsym.po: xm.h
+c-exp.o: c-exp.c
+c-exp.o: nm.h
+c-exp.o: tm.h
+c-exp.o: xm.h
+c-exp.po: c-exp.c
+c-exp.po: nm.h
+c-exp.po: tm.h
+c-exp.po: xm.h
+c-lang.o: nm.h
+c-lang.o: tm.h
+c-lang.o: xm.h
+c-lang.po: nm.h
+c-lang.po: tm.h
+c-lang.po: xm.h
+c-typeprint.o: nm.h
+c-typeprint.o: tm.h
+c-typeprint.o: xm.h
+c-typeprint.po: nm.h
+c-typeprint.po: tm.h
+c-typeprint.po: xm.h
+c-valprint.o: nm.h
+c-valprint.o: tm.h
+c-valprint.o: xm.h
+c-valprint.po: nm.h
+c-valprint.po: tm.h
+c-valprint.po: xm.h
+charset.o: nm.h
+charset.o: tm.h
+charset.o: xm.h
+charset.po: nm.h
+charset.po: tm.h
+charset.po: xm.h
+cli-cmds.o: nm.h
+cli-cmds.o: tm.h
+cli-cmds.o: xm.h
+cli-cmds.po: nm.h
+cli-cmds.po: tm.h
+cli-cmds.po: xm.h
+cli-decode.o: nm.h
+cli-decode.o: tm.h
+cli-decode.o: xm.h
+cli-decode.po: nm.h
+cli-decode.po: tm.h
+cli-decode.po: xm.h
+cli-dump.o: nm.h
+cli-dump.o: tm.h
+cli-dump.o: xm.h
+cli-dump.po: nm.h
+cli-dump.po: tm.h
+cli-dump.po: xm.h
+cli-interp.o: nm.h
+cli-interp.o: tm.h
+cli-interp.o: xm.h
+cli-interp.po: nm.h
+cli-interp.po: tm.h
+cli-interp.po: xm.h
+cli-logging.o: nm.h
+cli-logging.o: tm.h
+cli-logging.o: xm.h
+cli-logging.po: nm.h
+cli-logging.po: tm.h
+cli-logging.po: xm.h
+cli-out.o: nm.h
+cli-out.o: tm.h
+cli-out.o: xm.h
+cli-out.po: nm.h
+cli-out.po: tm.h
+cli-out.po: xm.h
+cli-script.o: nm.h
+cli-script.o: tm.h
+cli-script.o: xm.h
+cli-script.po: nm.h
+cli-script.po: tm.h
+cli-script.po: xm.h
+cli-setshow.o: nm.h
+cli-setshow.o: tm.h
+cli-setshow.o: xm.h
+cli-setshow.po: nm.h
+cli-setshow.po: tm.h
+cli-setshow.po: xm.h
+cli-utils.o: nm.h
+cli-utils.o: tm.h
+cli-utils.o: xm.h
+cli-utils.po: nm.h
+cli-utils.po: tm.h
+cli-utils.po: xm.h
+coff-pe-read.o: nm.h
+coff-pe-read.o: tm.h
+coff-pe-read.o: xm.h
+coff-pe-read.po: nm.h
+coff-pe-read.po: tm.h
+coff-pe-read.po: xm.h
+coffread.o: nm.h
+coffread.o: tm.h
+coffread.o: xm.h
+coffread.po: nm.h
+coffread.po: tm.h
+coffread.po: xm.h
+complaints.o: nm.h
+complaints.o: tm.h
+complaints.o: xm.h
+complaints.po: nm.h
+complaints.po: tm.h
+complaints.po: xm.h
+completer.o: nm.h
+completer.o: tm.h
+completer.o: xm.h
+completer.po: nm.h
+completer.po: tm.h
+completer.po: xm.h
+copying.o: nm.h
+copying.o: tm.h
+copying.o: xm.h
+copying.po: nm.h
+copying.po: tm.h
+copying.po: xm.h
+corefile.o: nm.h
+corefile.o: tm.h
+corefile.o: xm.h
+corefile.po: nm.h
+corefile.po: tm.h
+corefile.po: xm.h
+corelow.o: nm.h
+corelow.o: tm.h
+corelow.o: xm.h
+corelow.po: nm.h
+corelow.po: tm.h
+corelow.po: xm.h
+cp-abi.o: nm.h
+cp-abi.o: tm.h
+cp-abi.o: xm.h
+cp-abi.po: nm.h
+cp-abi.po: tm.h
+cp-abi.po: xm.h
+cp-namespace.o: nm.h
+cp-namespace.o: tm.h
+cp-namespace.o: xm.h
+cp-namespace.po: nm.h
+cp-namespace.po: tm.h
+cp-namespace.po: xm.h
+cp-support.o: nm.h
+cp-support.o: tm.h
+cp-support.o: xm.h
+cp-support.po: nm.h
+cp-support.po: tm.h
+cp-support.po: xm.h
+cp-valprint.o: nm.h
+cp-valprint.o: tm.h
+cp-valprint.o: xm.h
+cp-valprint.po: nm.h
+cp-valprint.po: tm.h
+cp-valprint.po: xm.h
+dbxread.o: nm.h
+dbxread.o: tm.h
+dbxread.o: xm.h
+dbxread.po: nm.h
+dbxread.po: tm.h
+dbxread.po: xm.h
+dcache.o: nm.h
+dcache.o: tm.h
+dcache.o: xm.h
+dcache.po: nm.h
+dcache.po: tm.h
+dcache.po: xm.h
+demangle.o: nm.h
+demangle.o: tm.h
+demangle.o: xm.h
+demangle.po: nm.h
+demangle.po: tm.h
+demangle.po: xm.h
+dictionary.o: nm.h
+dictionary.o: tm.h
+dictionary.o: xm.h
+dictionary.po: nm.h
+dictionary.po: tm.h
+dictionary.po: xm.h
+disasm.o: nm.h
+disasm.o: tm.h
+disasm.o: xm.h
+disasm.po: nm.h
+disasm.po: tm.h
+disasm.po: xm.h
+doublest.o: nm.h
+doublest.o: tm.h
+doublest.o: xm.h
+doublest.po: nm.h
+doublest.po: tm.h
+doublest.po: xm.h
+dummy-frame.o: nm.h
+dummy-frame.o: tm.h
+dummy-frame.o: xm.h
+dummy-frame.po: nm.h
+dummy-frame.po: tm.h
+dummy-frame.po: xm.h
+dwarf2-frame.o: nm.h
+dwarf2-frame.o: tm.h
+dwarf2-frame.o: xm.h
+dwarf2-frame.po: nm.h
+dwarf2-frame.po: tm.h
+dwarf2-frame.po: xm.h
+dwarf2expr.o: nm.h
+dwarf2expr.o: tm.h
+dwarf2expr.o: xm.h
+dwarf2expr.po: nm.h
+dwarf2expr.po: tm.h
+dwarf2expr.po: xm.h
+dwarf2loc.o: nm.h
+dwarf2loc.o: tm.h
+dwarf2loc.o: xm.h
+dwarf2loc.po: nm.h
+dwarf2loc.po: tm.h
+dwarf2loc.po: xm.h
+dwarf2read.o: nm.h
+dwarf2read.o: tm.h
+dwarf2read.o: xm.h
+dwarf2read.po: nm.h
+dwarf2read.po: tm.h
+dwarf2read.po: xm.h
+dwarfread.o: nm.h
+dwarfread.o: tm.h
+dwarfread.o: xm.h
+dwarfread.po: nm.h
+dwarfread.po: tm.h
+dwarfread.po: xm.h
+elfread.o: nm.h
+elfread.o: tm.h
+elfread.o: xm.h
+elfread.po: nm.h
+elfread.po: tm.h
+elfread.po: xm.h
+environ.o: nm.h
+environ.o: tm.h
+environ.o: xm.h
+environ.po: nm.h
+environ.po: tm.h
+environ.po: xm.h
+eval.o: nm.h
+eval.o: tm.h
+eval.o: xm.h
+eval.po: nm.h
+eval.po: tm.h
+eval.po: xm.h
+event-loop.o: nm.h
+event-loop.o: tm.h
+event-loop.o: xm.h
+event-loop.po: nm.h
+event-loop.po: tm.h
+event-loop.po: xm.h
+event-top.o: nm.h
+event-top.o: tm.h
+event-top.o: xm.h
+event-top.po: nm.h
+event-top.po: tm.h
+event-top.po: xm.h
+exec.o: nm.h
+exec.o: tm.h
+exec.o: xm.h
+exec.po: nm.h
+exec.po: tm.h
+exec.po: xm.h
+expprint.o: nm.h
+expprint.o: tm.h
+expprint.o: xm.h
+expprint.po: nm.h
+expprint.po: tm.h
+expprint.po: xm.h
+f-exp.o: f-exp.c
+f-exp.o: nm.h
+f-exp.o: tm.h
+f-exp.o: xm.h
+f-exp.po: f-exp.c
+f-exp.po: nm.h
+f-exp.po: tm.h
+f-exp.po: xm.h
+f-lang.o: nm.h
+f-lang.o: tm.h
+f-lang.o: xm.h
+f-lang.po: nm.h
+f-lang.po: tm.h
+f-lang.po: xm.h
+f-typeprint.o: nm.h
+f-typeprint.o: tm.h
+f-typeprint.o: xm.h
+f-typeprint.po: nm.h
+f-typeprint.po: tm.h
+f-typeprint.po: xm.h
+f-valprint.o: nm.h
+f-valprint.o: tm.h
+f-valprint.o: xm.h
+f-valprint.po: nm.h
+f-valprint.po: tm.h
+f-valprint.po: xm.h
+fbsd-proc.o: nm.h
+fbsd-proc.o: tm.h
+fbsd-proc.o: xm.h
+fbsd-proc.po: nm.h
+fbsd-proc.po: tm.h
+fbsd-proc.po: xm.h
+fbsd-threads.o: nm.h
+fbsd-threads.o: tm.h
+fbsd-threads.o: xm.h
+fbsd-threads.po: nm.h
+fbsd-threads.po: tm.h
+fbsd-threads.po: xm.h
+findvar.o: nm.h
+findvar.o: tm.h
+findvar.o: xm.h
+findvar.po: nm.h
+findvar.po: tm.h
+findvar.po: xm.h
+fork-child.o: nm.h
+fork-child.o: tm.h
+fork-child.o: xm.h
+fork-child.po: nm.h
+fork-child.po: tm.h
+fork-child.po: xm.h
+frame-base.o: nm.h
+frame-base.o: tm.h
+frame-base.o: xm.h
+frame-base.po: nm.h
+frame-base.po: tm.h
+frame-base.po: xm.h
+frame-unwind.o: nm.h
+frame-unwind.o: tm.h
+frame-unwind.o: xm.h
+frame-unwind.po: nm.h
+frame-unwind.po: tm.h
+frame-unwind.po: xm.h
+frame.o: nm.h
+frame.o: tm.h
+frame.o: xm.h
+frame.po: nm.h
+frame.po: tm.h
+frame.po: xm.h
+gcore.o: nm.h
+gcore.o: tm.h
+gcore.o: xm.h
+gcore.po: nm.h
+gcore.po: tm.h
+gcore.po: xm.h
+gdb-events.o: nm.h
+gdb-events.o: tm.h
+gdb-events.o: xm.h
+gdb-events.po: nm.h
+gdb-events.po: tm.h
+gdb-events.po: xm.h
+gdbarch.o: nm.h
+gdbarch.o: tm.h
+gdbarch.o: xm.h
+gdbarch.po: nm.h
+gdbarch.po: tm.h
+gdbarch.po: xm.h
+gdbtypes.o: nm.h
+gdbtypes.o: tm.h
+gdbtypes.o: xm.h
+gdbtypes.po: nm.h
+gdbtypes.po: tm.h
+gdbtypes.po: xm.h
+gnu-v2-abi.o: nm.h
+gnu-v2-abi.o: tm.h
+gnu-v2-abi.o: xm.h
+gnu-v2-abi.po: nm.h
+gnu-v2-abi.po: tm.h
+gnu-v2-abi.po: xm.h
+gnu-v3-abi.o: nm.h
+gnu-v3-abi.o: tm.h
+gnu-v3-abi.o: xm.h
+gnu-v3-abi.po: nm.h
+gnu-v3-abi.po: tm.h
+gnu-v3-abi.po: xm.h
+hpacc-abi.o: nm.h
+hpacc-abi.o: tm.h
+hpacc-abi.o: xm.h
+hpacc-abi.po: nm.h
+hpacc-abi.po: tm.h
+hpacc-abi.po: xm.h
+i386-tdep.o: nm.h
+i386-tdep.o: tm.h
+i386-tdep.o: xm.h
+i386-tdep.po: nm.h
+i386-tdep.po: tm.h
+i386-tdep.po: xm.h
+i386bsd-tdep.o: nm.h
+i386bsd-tdep.o: tm.h
+i386bsd-tdep.o: xm.h
+i386bsd-tdep.po: nm.h
+i386bsd-tdep.po: tm.h
+i386bsd-tdep.po: xm.h
+i386fbsd-tdep-fixed.o: i386fbsd-tdep-fixed.c
+i386fbsd-tdep-fixed.o: nm.h
+i386fbsd-tdep-fixed.o: tm.h
+i386fbsd-tdep-fixed.o: xm.h
+i386fbsd-tdep-fixed.po: i386fbsd-tdep-fixed.c
+i386fbsd-tdep-fixed.po: nm.h
+i386fbsd-tdep-fixed.po: tm.h
+i386fbsd-tdep-fixed.po: xm.h
+i387-tdep.o: nm.h
+i387-tdep.o: tm.h
+i387-tdep.o: xm.h
+i387-tdep.po: nm.h
+i387-tdep.po: tm.h
+i387-tdep.po: xm.h
+inf-loop.o: nm.h
+inf-loop.o: tm.h
+inf-loop.o: xm.h
+inf-loop.po: nm.h
+inf-loop.po: tm.h
+inf-loop.po: xm.h
+infcall.o: nm.h
+infcall.o: tm.h
+infcall.o: xm.h
+infcall.po: nm.h
+infcall.po: tm.h
+infcall.po: xm.h
+infcmd.o: nm.h
+infcmd.o: tm.h
+infcmd.o: xm.h
+infcmd.po: nm.h
+infcmd.po: tm.h
+infcmd.po: xm.h
+inflow.o: nm.h
+inflow.o: tm.h
+inflow.o: xm.h
+inflow.po: nm.h
+inflow.po: tm.h
+inflow.po: xm.h
+infptrace.o: nm.h
+infptrace.o: tm.h
+infptrace.o: xm.h
+infptrace.po: nm.h
+infptrace.po: tm.h
+infptrace.po: xm.h
+infrun.o: nm.h
+infrun.o: tm.h
+infrun.o: xm.h
+infrun.po: nm.h
+infrun.po: tm.h
+infrun.po: xm.h
+inftarg.o: nm.h
+inftarg.o: tm.h
+inftarg.o: xm.h
+inftarg.po: nm.h
+inftarg.po: tm.h
+inftarg.po: xm.h
+init.o: nm.h
+init.o: tm.h
+init.o: xm.h
+init.po: nm.h
+init.po: tm.h
+init.po: xm.h
+interps.o: nm.h
+interps.o: tm.h
+interps.o: xm.h
+interps.po: nm.h
+interps.po: tm.h
+interps.po: xm.h
+jv-exp.o: jv-exp.c
+jv-exp.o: nm.h
+jv-exp.o: tm.h
+jv-exp.o: xm.h
+jv-exp.po: jv-exp.c
+jv-exp.po: nm.h
+jv-exp.po: tm.h
+jv-exp.po: xm.h
+jv-lang.o: nm.h
+jv-lang.o: tm.h
+jv-lang.o: xm.h
+jv-lang.po: nm.h
+jv-lang.po: tm.h
+jv-lang.po: xm.h
+jv-typeprint.o: nm.h
+jv-typeprint.o: tm.h
+jv-typeprint.o: xm.h
+jv-typeprint.po: nm.h
+jv-typeprint.po: tm.h
+jv-typeprint.po: xm.h
+jv-valprint.o: nm.h
+jv-valprint.o: tm.h
+jv-valprint.o: xm.h
+jv-valprint.po: nm.h
+jv-valprint.po: tm.h
+jv-valprint.po: xm.h
+kod-cisco.o: nm.h
+kod-cisco.o: tm.h
+kod-cisco.o: xm.h
+kod-cisco.po: nm.h
+kod-cisco.po: tm.h
+kod-cisco.po: xm.h
+kod.o: nm.h
+kod.o: tm.h
+kod.o: xm.h
+kod.po: nm.h
+kod.po: tm.h
+kod.po: xm.h
+language.o: nm.h
+language.o: tm.h
+language.o: xm.h
+language.po: nm.h
+language.po: tm.h
+language.po: xm.h
+linespec.o: nm.h
+linespec.o: tm.h
+linespec.o: xm.h
+linespec.po: nm.h
+linespec.po: tm.h
+linespec.po: xm.h
+m2-exp.o: m2-exp.c
+m2-exp.o: nm.h
+m2-exp.o: tm.h
+m2-exp.o: xm.h
+m2-exp.po: m2-exp.c
+m2-exp.po: nm.h
+m2-exp.po: tm.h
+m2-exp.po: xm.h
+m2-lang.o: nm.h
+m2-lang.o: tm.h
+m2-lang.o: xm.h
+m2-lang.po: nm.h
+m2-lang.po: tm.h
+m2-lang.po: xm.h
+m2-typeprint.o: nm.h
+m2-typeprint.o: tm.h
+m2-typeprint.o: xm.h
+m2-typeprint.po: nm.h
+m2-typeprint.po: tm.h
+m2-typeprint.po: xm.h
+m2-valprint.o: nm.h
+m2-valprint.o: tm.h
+m2-valprint.o: xm.h
+m2-valprint.po: nm.h
+m2-valprint.po: tm.h
+m2-valprint.po: xm.h
+macrocmd.o: nm.h
+macrocmd.o: tm.h
+macrocmd.o: xm.h
+macrocmd.po: nm.h
+macrocmd.po: tm.h
+macrocmd.po: xm.h
+macroexp.o: nm.h
+macroexp.o: tm.h
+macroexp.o: xm.h
+macroexp.po: nm.h
+macroexp.po: tm.h
+macroexp.po: xm.h
+macroscope.o: nm.h
+macroscope.o: tm.h
+macroscope.o: xm.h
+macroscope.po: nm.h
+macroscope.po: tm.h
+macroscope.po: xm.h
+macrotab.o: nm.h
+macrotab.o: tm.h
+macrotab.o: xm.h
+macrotab.po: nm.h
+macrotab.po: tm.h
+macrotab.po: xm.h
+main.o: nm.h
+main.o: tm.h
+main.o: xm.h
+main.po: nm.h
+main.po: tm.h
+main.po: xm.h
+maint.o: nm.h
+maint.o: tm.h
+maint.o: xm.h
+maint.po: nm.h
+maint.po: tm.h
+maint.po: xm.h
+mdebugread.o: nm.h
+mdebugread.o: tm.h
+mdebugread.o: xm.h
+mdebugread.po: nm.h
+mdebugread.po: tm.h
+mdebugread.po: xm.h
+mem-break.o: nm.h
+mem-break.o: tm.h
+mem-break.o: xm.h
+mem-break.po: nm.h
+mem-break.po: tm.h
+mem-break.po: xm.h
+memattr.o: nm.h
+memattr.o: tm.h
+memattr.o: xm.h
+memattr.po: nm.h
+memattr.po: tm.h
+memattr.po: xm.h
+mi-cmd-break.o: nm.h
+mi-cmd-break.o: tm.h
+mi-cmd-break.o: xm.h
+mi-cmd-break.po: nm.h
+mi-cmd-break.po: tm.h
+mi-cmd-break.po: xm.h
+mi-cmd-disas.o: nm.h
+mi-cmd-disas.o: tm.h
+mi-cmd-disas.o: xm.h
+mi-cmd-disas.po: nm.h
+mi-cmd-disas.po: tm.h
+mi-cmd-disas.po: xm.h
+mi-cmd-env.o: nm.h
+mi-cmd-env.o: tm.h
+mi-cmd-env.o: xm.h
+mi-cmd-env.po: nm.h
+mi-cmd-env.po: tm.h
+mi-cmd-env.po: xm.h
+mi-cmd-file.o: nm.h
+mi-cmd-file.o: tm.h
+mi-cmd-file.o: xm.h
+mi-cmd-file.po: nm.h
+mi-cmd-file.po: tm.h
+mi-cmd-file.po: xm.h
+mi-cmd-stack.o: nm.h
+mi-cmd-stack.o: tm.h
+mi-cmd-stack.o: xm.h
+mi-cmd-stack.po: nm.h
+mi-cmd-stack.po: tm.h
+mi-cmd-stack.po: xm.h
+mi-cmd-var.o: nm.h
+mi-cmd-var.o: tm.h
+mi-cmd-var.o: xm.h
+mi-cmd-var.po: nm.h
+mi-cmd-var.po: tm.h
+mi-cmd-var.po: xm.h
+mi-cmds.o: nm.h
+mi-cmds.o: tm.h
+mi-cmds.o: xm.h
+mi-cmds.po: nm.h
+mi-cmds.po: tm.h
+mi-cmds.po: xm.h
+mi-console.o: nm.h
+mi-console.o: tm.h
+mi-console.o: xm.h
+mi-console.po: nm.h
+mi-console.po: tm.h
+mi-console.po: xm.h
+mi-getopt.o: nm.h
+mi-getopt.o: tm.h
+mi-getopt.o: xm.h
+mi-getopt.po: nm.h
+mi-getopt.po: tm.h
+mi-getopt.po: xm.h
+mi-interp.o: nm.h
+mi-interp.o: tm.h
+mi-interp.o: xm.h
+mi-interp.po: nm.h
+mi-interp.po: tm.h
+mi-interp.po: xm.h
+mi-main.o: nm.h
+mi-main.o: tm.h
+mi-main.o: xm.h
+mi-main.po: nm.h
+mi-main.po: tm.h
+mi-main.po: xm.h
+mi-out.o: nm.h
+mi-out.o: tm.h
+mi-out.o: xm.h
+mi-out.po: nm.h
+mi-out.po: tm.h
+mi-out.po: xm.h
+mi-parse.o: nm.h
+mi-parse.o: tm.h
+mi-parse.o: xm.h
+mi-parse.po: nm.h
+mi-parse.po: tm.h
+mi-parse.po: xm.h
+mi-symbol-cmds.o: nm.h
+mi-symbol-cmds.o: tm.h
+mi-symbol-cmds.o: xm.h
+mi-symbol-cmds.po: nm.h
+mi-symbol-cmds.po: tm.h
+mi-symbol-cmds.po: xm.h
+minsyms.o: nm.h
+minsyms.o: tm.h
+minsyms.o: xm.h
+minsyms.po: nm.h
+minsyms.po: tm.h
+minsyms.po: xm.h
+mipsread.o: nm.h
+mipsread.o: tm.h
+mipsread.o: xm.h
+mipsread.po: nm.h
+mipsread.po: tm.h
+mipsread.po: xm.h
+nlmread.o: nm.h
+nlmread.o: tm.h
+nlmread.o: xm.h
+nlmread.po: nm.h
+nlmread.po: tm.h
+nlmread.po: xm.h
+objc-exp.o: nm.h
+objc-exp.o: objc-exp.c
+objc-exp.o: tm.h
+objc-exp.o: xm.h
+objc-exp.po: nm.h
+objc-exp.po: objc-exp.c
+objc-exp.po: tm.h
+objc-exp.po: xm.h
+objc-lang.o: nm.h
+objc-lang.o: tm.h
+objc-lang.o: xm.h
+objc-lang.po: nm.h
+objc-lang.po: tm.h
+objc-lang.po: xm.h
+objfiles.o: nm.h
+objfiles.o: tm.h
+objfiles.o: xm.h
+objfiles.po: nm.h
+objfiles.po: tm.h
+objfiles.po: xm.h
+observer.o: nm.h
+observer.o: tm.h
+observer.o: xm.h
+observer.po: nm.h
+observer.po: tm.h
+observer.po: xm.h
+osabi.o: nm.h
+osabi.o: tm.h
+osabi.o: xm.h
+osabi.po: nm.h
+osabi.po: tm.h
+osabi.po: xm.h
+p-exp.o: nm.h
+p-exp.o: p-exp.c
+p-exp.o: tm.h
+p-exp.o: xm.h
+p-exp.po: nm.h
+p-exp.po: p-exp.c
+p-exp.po: tm.h
+p-exp.po: xm.h
+p-lang.o: nm.h
+p-lang.o: tm.h
+p-lang.o: xm.h
+p-lang.po: nm.h
+p-lang.po: tm.h
+p-lang.po: xm.h
+p-typeprint.o: nm.h
+p-typeprint.o: tm.h
+p-typeprint.o: xm.h
+p-typeprint.po: nm.h
+p-typeprint.po: tm.h
+p-typeprint.po: xm.h
+p-valprint.o: nm.h
+p-valprint.o: tm.h
+p-valprint.o: xm.h
+p-valprint.po: nm.h
+p-valprint.po: tm.h
+p-valprint.po: xm.h
+parse.o: nm.h
+parse.o: tm.h
+parse.o: xm.h
+parse.po: nm.h
+parse.po: tm.h
+parse.po: xm.h
+printcmd.o: nm.h
+printcmd.o: tm.h
+printcmd.o: xm.h
+printcmd.po: nm.h
+printcmd.po: tm.h
+printcmd.po: xm.h
+regcache.o: nm.h
+regcache.o: tm.h
+regcache.o: xm.h
+regcache.po: nm.h
+regcache.po: tm.h
+regcache.po: xm.h
+reggroups.o: nm.h
+reggroups.o: tm.h
+reggroups.o: xm.h
+reggroups.po: nm.h
+reggroups.po: tm.h
+reggroups.po: xm.h
+remote-fileio.o: nm.h
+remote-fileio.o: tm.h
+remote-fileio.o: xm.h
+remote-fileio.po: nm.h
+remote-fileio.po: tm.h
+remote-fileio.po: xm.h
+remote-utils.o: nm.h
+remote-utils.o: tm.h
+remote-utils.o: xm.h
+remote-utils.po: nm.h
+remote-utils.po: tm.h
+remote-utils.po: xm.h
+remote.o: nm.h
+remote.o: tm.h
+remote.o: xm.h
+remote.po: nm.h
+remote.po: tm.h
+remote.po: xm.h
+scm-exp.o: nm.h
+scm-exp.o: tm.h
+scm-exp.o: xm.h
+scm-exp.po: nm.h
+scm-exp.po: tm.h
+scm-exp.po: xm.h
+scm-lang.o: nm.h
+scm-lang.o: tm.h
+scm-lang.o: xm.h
+scm-lang.po: nm.h
+scm-lang.po: tm.h
+scm-lang.po: xm.h
+scm-valprint.o: nm.h
+scm-valprint.o: tm.h
+scm-valprint.o: xm.h
+scm-valprint.po: nm.h
+scm-valprint.po: tm.h
+scm-valprint.po: xm.h
+sentinel-frame.o: nm.h
+sentinel-frame.o: tm.h
+sentinel-frame.o: xm.h
+sentinel-frame.po: nm.h
+sentinel-frame.po: tm.h
+sentinel-frame.po: xm.h
+ser-pipe.o: nm.h
+ser-pipe.o: tm.h
+ser-pipe.o: xm.h
+ser-pipe.po: nm.h
+ser-pipe.po: tm.h
+ser-pipe.po: xm.h
+ser-tcp.o: nm.h
+ser-tcp.o: tm.h
+ser-tcp.o: xm.h
+ser-tcp.po: nm.h
+ser-tcp.po: tm.h
+ser-tcp.po: xm.h
+ser-unix.o: nm.h
+ser-unix.o: tm.h
+ser-unix.o: xm.h
+ser-unix.po: nm.h
+ser-unix.po: tm.h
+ser-unix.po: xm.h
+serial.o: nm.h
+serial.o: tm.h
+serial.o: xm.h
+serial.po: nm.h
+serial.po: tm.h
+serial.po: xm.h
+signals.o: nm.h
+signals.o: tm.h
+signals.o: xm.h
+signals.po: nm.h
+signals.po: tm.h
+signals.po: xm.h
+solib-svr4.o: nm.h
+solib-svr4.o: tm.h
+solib-svr4.o: xm.h
+solib-svr4.po: nm.h
+solib-svr4.po: tm.h
+solib-svr4.po: xm.h
+solib.o: nm.h
+solib.o: tm.h
+solib.o: xm.h
+solib.po: nm.h
+solib.po: tm.h
+solib.po: xm.h
+source.o: nm.h
+source.o: tm.h
+source.o: xm.h
+source.po: nm.h
+source.po: tm.h
+source.po: xm.h
+stabsread.o: nm.h
+stabsread.o: tm.h
+stabsread.o: xm.h
+stabsread.po: nm.h
+stabsread.po: tm.h
+stabsread.po: xm.h
+stack.o: nm.h
+stack.o: tm.h
+stack.o: xm.h
+stack.po: nm.h
+stack.po: tm.h
+stack.po: xm.h
+std-regs.o: nm.h
+std-regs.o: tm.h
+std-regs.o: xm.h
+std-regs.po: nm.h
+std-regs.po: tm.h
+std-regs.po: xm.h
+symfile.o: nm.h
+symfile.o: tm.h
+symfile.o: xm.h
+symfile.po: nm.h
+symfile.po: tm.h
+symfile.po: xm.h
+symmisc.o: nm.h
+symmisc.o: tm.h
+symmisc.o: xm.h
+symmisc.po: nm.h
+symmisc.po: tm.h
+symmisc.po: xm.h
+symtab.o: nm.h
+symtab.o: tm.h
+symtab.o: xm.h
+symtab.po: nm.h
+symtab.po: tm.h
+symtab.po: xm.h
+target.o: nm.h
+target.o: tm.h
+target.o: xm.h
+target.po: nm.h
+target.po: tm.h
+target.po: xm.h
+thread.o: nm.h
+thread.o: tm.h
+thread.o: xm.h
+thread.po: nm.h
+thread.po: tm.h
+thread.po: xm.h
+top.o: nm.h
+top.o: tm.h
+top.o: xm.h
+top.po: nm.h
+top.po: tm.h
+top.po: xm.h
+tracepoint.o: nm.h
+tracepoint.o: tm.h
+tracepoint.o: xm.h
+tracepoint.po: nm.h
+tracepoint.po: tm.h
+tracepoint.po: xm.h
+trad-frame.o: nm.h
+trad-frame.o: tm.h
+trad-frame.o: xm.h
+trad-frame.po: nm.h
+trad-frame.po: tm.h
+trad-frame.po: xm.h
+tui-command.o: nm.h
+tui-command.o: tm.h
+tui-command.o: xm.h
+tui-command.po: nm.h
+tui-command.po: tm.h
+tui-command.po: xm.h
+tui-data.o: nm.h
+tui-data.o: tm.h
+tui-data.o: xm.h
+tui-data.po: nm.h
+tui-data.po: tm.h
+tui-data.po: xm.h
+tui-disasm.o: nm.h
+tui-disasm.o: tm.h
+tui-disasm.o: xm.h
+tui-disasm.po: nm.h
+tui-disasm.po: tm.h
+tui-disasm.po: xm.h
+tui-file.o: nm.h
+tui-file.o: tm.h
+tui-file.o: xm.h
+tui-file.po: nm.h
+tui-file.po: tm.h
+tui-file.po: xm.h
+tui-hooks.o: nm.h
+tui-hooks.o: tm.h
+tui-hooks.o: xm.h
+tui-hooks.po: nm.h
+tui-hooks.po: tm.h
+tui-hooks.po: xm.h
+tui-interp.o: nm.h
+tui-interp.o: tm.h
+tui-interp.o: xm.h
+tui-interp.po: nm.h
+tui-interp.po: tm.h
+tui-interp.po: xm.h
+tui-io.o: nm.h
+tui-io.o: tm.h
+tui-io.o: xm.h
+tui-io.po: nm.h
+tui-io.po: tm.h
+tui-io.po: xm.h
+tui-layout.o: nm.h
+tui-layout.o: tm.h
+tui-layout.o: xm.h
+tui-layout.po: nm.h
+tui-layout.po: tm.h
+tui-layout.po: xm.h
+tui-out.o: nm.h
+tui-out.o: tm.h
+tui-out.o: xm.h
+tui-out.po: nm.h
+tui-out.po: tm.h
+tui-out.po: xm.h
+tui-regs.o: nm.h
+tui-regs.o: tm.h
+tui-regs.o: xm.h
+tui-regs.po: nm.h
+tui-regs.po: tm.h
+tui-regs.po: xm.h
+tui-source.o: nm.h
+tui-source.o: tm.h
+tui-source.o: xm.h
+tui-source.po: nm.h
+tui-source.po: tm.h
+tui-source.po: xm.h
+tui-stack.o: nm.h
+tui-stack.o: tm.h
+tui-stack.o: xm.h
+tui-stack.po: nm.h
+tui-stack.po: tm.h
+tui-stack.po: xm.h
+tui-win.o: nm.h
+tui-win.o: tm.h
+tui-win.o: xm.h
+tui-win.po: nm.h
+tui-win.po: tm.h
+tui-win.po: xm.h
+tui-windata.o: nm.h
+tui-windata.o: tm.h
+tui-windata.o: xm.h
+tui-windata.po: nm.h
+tui-windata.po: tm.h
+tui-windata.po: xm.h
+tui-wingeneral.o: nm.h
+tui-wingeneral.o: tm.h
+tui-wingeneral.o: xm.h
+tui-wingeneral.po: nm.h
+tui-wingeneral.po: tm.h
+tui-wingeneral.po: xm.h
+tui-winsource.o: nm.h
+tui-winsource.o: tm.h
+tui-winsource.o: xm.h
+tui-winsource.po: nm.h
+tui-winsource.po: tm.h
+tui-winsource.po: xm.h
+tui.o: nm.h
+tui.o: tm.h
+tui.o: xm.h
+tui.po: nm.h
+tui.po: tm.h
+tui.po: xm.h
+typeprint.o: nm.h
+typeprint.o: tm.h
+typeprint.o: xm.h
+typeprint.po: nm.h
+typeprint.po: tm.h
+typeprint.po: xm.h
+ui-file.o: nm.h
+ui-file.o: tm.h
+ui-file.o: xm.h
+ui-file.po: nm.h
+ui-file.po: tm.h
+ui-file.po: xm.h
+ui-out.o: nm.h
+ui-out.o: tm.h
+ui-out.o: xm.h
+ui-out.po: nm.h
+ui-out.po: tm.h
+ui-out.po: xm.h
+user-regs.o: nm.h
+user-regs.o: tm.h
+user-regs.o: xm.h
+user-regs.po: nm.h
+user-regs.po: tm.h
+user-regs.po: xm.h
+utils.o: nm.h
+utils.o: tm.h
+utils.o: xm.h
+utils.po: nm.h
+utils.po: tm.h
+utils.po: xm.h
+valarith.o: nm.h
+valarith.o: tm.h
+valarith.o: xm.h
+valarith.po: nm.h
+valarith.po: tm.h
+valarith.po: xm.h
+valops.o: nm.h
+valops.o: tm.h
+valops.o: xm.h
+valops.po: nm.h
+valops.po: tm.h
+valops.po: xm.h
+valprint.o: nm.h
+valprint.o: tm.h
+valprint.o: xm.h
+valprint.po: nm.h
+valprint.po: tm.h
+valprint.po: xm.h
+values.o: nm.h
+values.o: tm.h
+values.o: xm.h
+values.po: nm.h
+values.po: tm.h
+values.po: xm.h
+varobj.o: nm.h
+varobj.o: tm.h
+varobj.o: xm.h
+varobj.po: nm.h
+varobj.po: tm.h
+varobj.po: xm.h
+version.o: version.c
+version.po: version.c
+wrapper.o: nm.h
+wrapper.o: tm.h
+wrapper.o: xm.h
+wrapper.po: nm.h
+wrapper.po: tm.h
+wrapper.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gperf/Makefile.depend b/gnu/usr.bin/gperf/Makefile.depend
new file mode 100644
index 0000000..1956799
--- /dev/null
+++ b/gnu/usr.bin/gperf/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libstdc++ \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/grep/Makefile.depend b/gnu/usr.bin/grep/Makefile.depend
new file mode 100644
index 0000000..435d267
--- /dev/null
+++ b/gnu/usr.bin/grep/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/Makefile.inc b/gnu/usr.bin/groff/Makefile.inc
index 053f385..67b61a8 100644
--- a/gnu/usr.bin/groff/Makefile.inc
+++ b/gnu/usr.bin/groff/Makefile.inc
@@ -127,6 +127,7 @@ revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(GROFF_DIST)/REVISION`
.sh .pl:
@${ECHO} Making ${.TARGET} from ${.IMPSRC}
+ @rm -f ${.TARGET}
@sed -e "s|@BINDIR@|${BINDIR}|g" \
-e 's|@GROFF_BIN_PATH_SETUP@|GROFF_RUNTIME="$${GROFF_BIN_PATH=${BINDIR}}:"|g' \
-e "s;@FONTDIR@;$(fontdir);g" \
diff --git a/gnu/usr.bin/groff/contrib/mm/Makefile.depend b/gnu/usr.bin/groff/contrib/mm/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/contrib/mm/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX100-12/Makefile b/gnu/usr.bin/groff/font/devX100-12/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX100-12/Makefile
+++ b/gnu/usr.bin/groff/font/devX100-12/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX100-12/Makefile.depend b/gnu/usr.bin/groff/font/devX100-12/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX100-12/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX100/Makefile b/gnu/usr.bin/groff/font/devX100/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX100/Makefile
+++ b/gnu/usr.bin/groff/font/devX100/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX100/Makefile.depend b/gnu/usr.bin/groff/font/devX100/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX100/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX75-12/Makefile b/gnu/usr.bin/groff/font/devX75-12/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX75-12/Makefile
+++ b/gnu/usr.bin/groff/font/devX75-12/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX75-12/Makefile.depend b/gnu/usr.bin/groff/font/devX75-12/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX75-12/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX75/Makefile b/gnu/usr.bin/groff/font/devX75/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX75/Makefile
+++ b/gnu/usr.bin/groff/font/devX75/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX75/Makefile.depend b/gnu/usr.bin/groff/font/devX75/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX75/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devascii/Makefile.depend b/gnu/usr.bin/groff/font/devascii/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devascii/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devcp1047/Makefile.depend b/gnu/usr.bin/groff/font/devcp1047/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devcp1047/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devdvi/Makefile.depend b/gnu/usr.bin/groff/font/devdvi/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devdvi/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devhtml/Makefile.depend b/gnu/usr.bin/groff/font/devhtml/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devhtml/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend b/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlatin1/Makefile.depend b/gnu/usr.bin/groff/font/devlatin1/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlatin1/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlbp/Makefile.depend b/gnu/usr.bin/groff/font/devlbp/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlbp/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlj4/Makefile.depend b/gnu/usr.bin/groff/font/devlj4/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlj4/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devps/Makefile.depend b/gnu/usr.bin/groff/font/devps/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devps/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devutf8/Makefile.depend b/gnu/usr.bin/groff/font/devutf8/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devutf8/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/man/Makefile.depend b/gnu/usr.bin/groff/man/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/man/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend b/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend b/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend b/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend b/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grops/Makefile.depend b/gnu/usr.bin/groff/src/devices/grops/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grops/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend b/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend
new file mode 100644
index 0000000..273f2d4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend b/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend b/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend
new file mode 100644
index 0000000..c210061
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend b/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend
new file mode 100644
index 0000000..b01cf38
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.cpp
+version.po: version.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend b/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend
new file mode 100644
index 0000000..f3ae4bf
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eqn.o: eqn.cpp
+eqn.po: eqn.cpp
+lex.o: eqn_tab.h
+lex.po: eqn_tab.h
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend b/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/html/Makefile.depend b/gnu/usr.bin/groff/src/preproc/html/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/html/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend b/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend
new file mode 100644
index 0000000..e78d5c4
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: pic_tab.h
+lex.po: pic_tab.h
+pic.o: pic.cpp
+pic.po: pic.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend b/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend
new file mode 100644
index 0000000..f68ef58
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+label.o: label.cpp
+label.po: label.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend b/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/groff/Makefile.depend b/gnu/usr.bin/groff/src/roff/groff/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/groff/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/grog/Makefile.depend b/gnu/usr.bin/groff/src/roff/grog/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/grog/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend b/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend b/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/troff/Makefile.depend b/gnu/usr.bin/groff/src/roff/troff/Makefile.depend
new file mode 100644
index 0000000..974b022
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/troff/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+majorminor.o: majorminor.cpp
+majorminor.po: majorminor.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend b/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend
new file mode 100644
index 0000000..19d4feb
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend
new file mode 100644
index 0000000..19d4feb
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend
new file mode 100644
index 0000000..19d4feb
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend b/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend
new file mode 100644
index 0000000..770e2eb
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend
new file mode 100644
index 0000000..7ca2c25
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/tmac/Makefile.depend b/gnu/usr.bin/groff/tmac/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/groff/tmac/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/ci/Makefile.depend b/gnu/usr.bin/rcs/ci/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/ci/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/co/Makefile.depend b/gnu/usr.bin/rcs/co/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/co/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/ident/Makefile.depend b/gnu/usr.bin/rcs/ident/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/ident/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/lib/Makefile.depend b/gnu/usr.bin/rcs/lib/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/gnu/usr.bin/rcs/lib/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/merge/Makefile.depend b/gnu/usr.bin/rcs/merge/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/merge/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcs/Makefile.depend b/gnu/usr.bin/rcs/rcs/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsclean/Makefile.depend b/gnu/usr.bin/rcs/rcsclean/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsclean/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsdiff/Makefile.depend b/gnu/usr.bin/rcs/rcsdiff/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsdiff/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend b/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsmerge/Makefile.depend b/gnu/usr.bin/rcs/rcsmerge/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsmerge/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rlog/Makefile.depend b/gnu/usr.bin/rcs/rlog/Makefile.depend
new file mode 100644
index 0000000..cab8f8fe
--- /dev/null
+++ b/gnu/usr.bin/rcs/rlog/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/sdiff/Makefile.depend b/gnu/usr.bin/sdiff/Makefile.depend
new file mode 100644
index 0000000..4ba3ae9
--- /dev/null
+++ b/gnu/usr.bin/sdiff/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+sdiff.o: sdiff.c
+sdiff.po: sdiff.c
+.endif
diff --git a/include/Makefile b/include/Makefile
index d7badd7..ccdc8aa 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -128,8 +128,30 @@ _MARCHS= ${MACHINE_CPUARCH}
_MARCHS+= x86
.endif
+.if ${MK_STAGING} == "yes"
+# tell bsd.incs.mk that we have it covered
+NO_STAGE_INCLUDES=
+.endif
+
.include <bsd.prog.mk>
+.if ${MK_STAGING} != "no" && !defined(_SKIP_BUILD)
+.if make(all)
+DESTDIR= ${STAGE_OBJTOP}
+
+all: stage_include
+installincludes: buildincludes
+buildincludes: stage_prep
+
+stage_prep:
+ @mkdir -p ${DESTDIR}${INCLUDEDIR}
+ @touch $@
+
+stage_include: .dirdep installincludes
+ @touch $@
+.endif
+.endif
+
installincludes: ${SHARED}
${SHARED}: compat
@@ -142,7 +164,10 @@ compat:
.endfor
mtree -deU ${MTREE_FOLLOWS_SYMLINKS} \
-f ${.CURDIR}/../etc/mtree/BSD.include.dist \
- -p ${DESTDIR}${INCLUDEDIR}
+ -p ${DESTDIR}${INCLUDEDIR} > /dev/null
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
copies:
.for i in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} crypto machine machine/pc \
@@ -229,6 +254,9 @@ copies:
cd ${.CURDIR}/../sys/teken; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 teken.h \
${DESTDIR}${INCLUDEDIR}/teken
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
symlinks:
@${ECHO} "Setting up symlinks to kernel source tree..."
@@ -343,3 +371,15 @@ symlinks:
ln -fs ../../../sys/rpc/$$h \
${DESTDIR}${INCLUDEDIR}/rpc; \
done
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
+
+.if ${MACHINE} == "host"
+# we're here because we are building a sysroot...
+# we need MACHINE et al set correctly
+HOST_MACHINE!= uname -m
+HOST_MACHINE_ARCH!= uname -p
+MACHINE:= ${HOST_MACHINE}
+MACHINE_ARCH:= ${HOST_MACHINE_ARCH}
+.endif
diff --git a/include/Makefile.depend b/include/Makefile.depend
new file mode 100644
index 0000000..d7cfba0
--- /dev/null
+++ b/include/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/arpa/Makefile b/include/arpa/Makefile
index 63ab7ea..77ac03c 100644
--- a/include/arpa/Makefile
+++ b/include/arpa/Makefile
@@ -2,11 +2,8 @@
.include <src.opts.mk>
-NO_OBJ=
INCS= ftp.h inet.h nameser.h nameser_compat.h tftp.h
-.if ${MK_TELNET} == "no"
INCS+= telnet.h
-.endif
INCSDIR=${INCLUDEDIR}/arpa
.include <bsd.prog.mk>
diff --git a/include/arpa/Makefile.depend b/include/arpa/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/arpa/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/gssapi/Makefile b/include/gssapi/Makefile
index 8fb643f..b8b8dde 100644
--- a/include/gssapi/Makefile
+++ b/include/gssapi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= gssapi.h
INCSDIR= ${INCLUDEDIR}/gssapi
diff --git a/include/gssapi/Makefile.depend b/include/gssapi/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/gssapi/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/mk-osreldate.sh b/include/mk-osreldate.sh
index 239a661..ed8311c 100755
--- a/include/mk-osreldate.sh
+++ b/include/mk-osreldate.sh
@@ -49,4 +49,4 @@ $COPYRIGHT
#endif
EOF
chmod 644 $tmpfile
-mv $tmpfile osreldate.h
+mv -f $tmpfile osreldate.h
diff --git a/include/protocols/Makefile b/include/protocols/Makefile
index ddd8f21..a41f354 100644
--- a/include/protocols/Makefile
+++ b/include/protocols/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= dumprestore.h routed.h rwhod.h talkd.h timed.h
INCSDIR=${INCLUDEDIR}/protocols
diff --git a/include/protocols/Makefile.depend b/include/protocols/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/protocols/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/rpc/Makefile.depend b/include/rpc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/rpc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/rpcsvc/Makefile.depend b/include/rpcsvc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/rpcsvc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/xlocale/Makefile b/include/xlocale/Makefile
index 7c20ea9..0ece6d2 100644
--- a/include/xlocale/Makefile
+++ b/include/xlocale/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= _ctype.h _inttypes.h _langinfo.h _locale.h _monetary.h _stdio.h\
_stdlib.h _string.h _strings.h _time.h _uchar.h _wchar.h
INCSDIR=${INCLUDEDIR}/xlocale
diff --git a/include/xlocale/Makefile.depend b/include/xlocale/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/include/xlocale/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/Makefile.inc b/kerberos5/Makefile.inc
index 6048589..39bac11 100644
--- a/kerberos5/Makefile.inc
+++ b/kerberos5/Makefile.inc
@@ -34,7 +34,7 @@ ETSRCS= \
.for ET in ${ETSRCS}
.for _ET in ${ET:T:R}
.if ${SRCS:M${_ET}.[ch]} != ""
-.ORDER: ${_ET}.c ${_ET}.h
+.ORDER: ${_ET}.h ${_ET}.c
${_ET}.c ${_ET}.h: ${ET}
compile_et ${.ALLSRC}
CLEANFILES+= ${_ET}.h ${_ET}.c
diff --git a/kerberos5/lib/libasn1/Makefile b/kerberos5/lib/libasn1/Makefile
index 3d65eee..177de85 100644
--- a/kerberos5/lib/libasn1/Makefile
+++ b/kerberos5/lib/libasn1/Makefile
@@ -115,7 +115,12 @@ ${GEN_KX509}: kx509.asn1
.hx.h:
${CP} ${.IMPSRC} ${.TARGET}
-
+
+# This makefile generates a lot of its headers
+# so tell bsd.sys.mk not to try and stage them before they are built.
+# Note: this is rare
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
diff --git a/kerberos5/lib/libasn1/Makefile.depend b/kerberos5/lib/libasn1/Makefile.depend
new file mode 100644
index 0000000..2b73dcd
--- /dev/null
+++ b/kerberos5/lib/libasn1/Makefile.depend
@@ -0,0 +1,193 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_cms_asn1.So: asn1_cms_asn1.c
+asn1_cms_asn1.So: asn1_err.h
+asn1_cms_asn1.So: cms_asn1-priv.h
+asn1_cms_asn1.So: cms_asn1.h
+asn1_cms_asn1.So: rfc2459_asn1.h
+asn1_cms_asn1.o: asn1_cms_asn1.c
+asn1_cms_asn1.o: asn1_err.h
+asn1_cms_asn1.o: cms_asn1-priv.h
+asn1_cms_asn1.o: cms_asn1.h
+asn1_cms_asn1.o: rfc2459_asn1.h
+asn1_cms_asn1.po: asn1_cms_asn1.c
+asn1_cms_asn1.po: asn1_err.h
+asn1_cms_asn1.po: cms_asn1-priv.h
+asn1_cms_asn1.po: cms_asn1.h
+asn1_cms_asn1.po: rfc2459_asn1.h
+asn1_digest_asn1.So: asn1_digest_asn1.c
+asn1_digest_asn1.So: asn1_err.h
+asn1_digest_asn1.So: digest_asn1-priv.h
+asn1_digest_asn1.So: digest_asn1.h
+asn1_digest_asn1.So: krb5_asn1.h
+asn1_digest_asn1.o: asn1_digest_asn1.c
+asn1_digest_asn1.o: asn1_err.h
+asn1_digest_asn1.o: digest_asn1-priv.h
+asn1_digest_asn1.o: digest_asn1.h
+asn1_digest_asn1.o: krb5_asn1.h
+asn1_digest_asn1.po: asn1_digest_asn1.c
+asn1_digest_asn1.po: asn1_err.h
+asn1_digest_asn1.po: digest_asn1-priv.h
+asn1_digest_asn1.po: digest_asn1.h
+asn1_digest_asn1.po: krb5_asn1.h
+asn1_err.So: asn1_err.c
+asn1_err.So: asn1_err.h
+asn1_err.o: asn1_err.c
+asn1_err.o: asn1_err.h
+asn1_err.po: asn1_err.c
+asn1_err.po: asn1_err.h
+asn1_krb5_asn1.So: asn1_err.h
+asn1_krb5_asn1.So: asn1_krb5_asn1.c
+asn1_krb5_asn1.So: krb5_asn1-priv.h
+asn1_krb5_asn1.So: krb5_asn1.h
+asn1_krb5_asn1.o: asn1_err.h
+asn1_krb5_asn1.o: asn1_krb5_asn1.c
+asn1_krb5_asn1.o: krb5_asn1-priv.h
+asn1_krb5_asn1.o: krb5_asn1.h
+asn1_krb5_asn1.po: asn1_err.h
+asn1_krb5_asn1.po: asn1_krb5_asn1.c
+asn1_krb5_asn1.po: krb5_asn1-priv.h
+asn1_krb5_asn1.po: krb5_asn1.h
+asn1_kx509_asn1.So: asn1_err.h
+asn1_kx509_asn1.So: asn1_kx509_asn1.c
+asn1_kx509_asn1.So: kx509_asn1-priv.h
+asn1_kx509_asn1.So: kx509_asn1.h
+asn1_kx509_asn1.o: asn1_err.h
+asn1_kx509_asn1.o: asn1_kx509_asn1.c
+asn1_kx509_asn1.o: kx509_asn1-priv.h
+asn1_kx509_asn1.o: kx509_asn1.h
+asn1_kx509_asn1.po: asn1_err.h
+asn1_kx509_asn1.po: asn1_kx509_asn1.c
+asn1_kx509_asn1.po: kx509_asn1-priv.h
+asn1_kx509_asn1.po: kx509_asn1.h
+asn1_pkcs12_asn1.So: asn1_err.h
+asn1_pkcs12_asn1.So: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.So: cms_asn1.h
+asn1_pkcs12_asn1.So: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.So: pkcs12_asn1.h
+asn1_pkcs12_asn1.So: rfc2459_asn1.h
+asn1_pkcs12_asn1.o: asn1_err.h
+asn1_pkcs12_asn1.o: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.o: cms_asn1.h
+asn1_pkcs12_asn1.o: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.o: pkcs12_asn1.h
+asn1_pkcs12_asn1.o: rfc2459_asn1.h
+asn1_pkcs12_asn1.po: asn1_err.h
+asn1_pkcs12_asn1.po: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.po: cms_asn1.h
+asn1_pkcs12_asn1.po: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.po: pkcs12_asn1.h
+asn1_pkcs12_asn1.po: rfc2459_asn1.h
+asn1_pkcs8_asn1.So: asn1_err.h
+asn1_pkcs8_asn1.So: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.So: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.So: pkcs8_asn1.h
+asn1_pkcs8_asn1.So: rfc2459_asn1.h
+asn1_pkcs8_asn1.o: asn1_err.h
+asn1_pkcs8_asn1.o: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.o: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.o: pkcs8_asn1.h
+asn1_pkcs8_asn1.o: rfc2459_asn1.h
+asn1_pkcs8_asn1.po: asn1_err.h
+asn1_pkcs8_asn1.po: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.po: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.po: pkcs8_asn1.h
+asn1_pkcs8_asn1.po: rfc2459_asn1.h
+asn1_pkcs9_asn1.So: asn1_err.h
+asn1_pkcs9_asn1.So: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.So: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.So: pkcs9_asn1.h
+asn1_pkcs9_asn1.o: asn1_err.h
+asn1_pkcs9_asn1.o: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.o: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.o: pkcs9_asn1.h
+asn1_pkcs9_asn1.po: asn1_err.h
+asn1_pkcs9_asn1.po: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.po: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.po: pkcs9_asn1.h
+asn1_pkinit_asn1.So: asn1_err.h
+asn1_pkinit_asn1.So: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.So: cms_asn1.h
+asn1_pkinit_asn1.So: krb5_asn1.h
+asn1_pkinit_asn1.So: pkinit_asn1-priv.h
+asn1_pkinit_asn1.So: pkinit_asn1.h
+asn1_pkinit_asn1.So: rfc2459_asn1.h
+asn1_pkinit_asn1.o: asn1_err.h
+asn1_pkinit_asn1.o: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.o: cms_asn1.h
+asn1_pkinit_asn1.o: krb5_asn1.h
+asn1_pkinit_asn1.o: pkinit_asn1-priv.h
+asn1_pkinit_asn1.o: pkinit_asn1.h
+asn1_pkinit_asn1.o: rfc2459_asn1.h
+asn1_pkinit_asn1.po: asn1_err.h
+asn1_pkinit_asn1.po: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.po: cms_asn1.h
+asn1_pkinit_asn1.po: krb5_asn1.h
+asn1_pkinit_asn1.po: pkinit_asn1-priv.h
+asn1_pkinit_asn1.po: pkinit_asn1.h
+asn1_pkinit_asn1.po: rfc2459_asn1.h
+asn1_rfc2459_asn1.So: asn1_err.h
+asn1_rfc2459_asn1.So: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.So: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.So: rfc2459_asn1.h
+asn1_rfc2459_asn1.o: asn1_err.h
+asn1_rfc2459_asn1.o: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.o: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.o: rfc2459_asn1.h
+asn1_rfc2459_asn1.po: asn1_err.h
+asn1_rfc2459_asn1.po: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.po: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.po: rfc2459_asn1.h
+der.So: asn1_err.h
+der.o: asn1_err.h
+der.po: asn1_err.h
+der_cmp.So: asn1_err.h
+der_cmp.o: asn1_err.h
+der_cmp.po: asn1_err.h
+der_copy.So: asn1_err.h
+der_copy.o: asn1_err.h
+der_copy.po: asn1_err.h
+der_format.So: asn1_err.h
+der_format.o: asn1_err.h
+der_format.po: asn1_err.h
+der_free.So: asn1_err.h
+der_free.o: asn1_err.h
+der_free.po: asn1_err.h
+der_get.So: asn1_err.h
+der_get.o: asn1_err.h
+der_get.po: asn1_err.h
+der_length.So: asn1_err.h
+der_length.o: asn1_err.h
+der_length.po: asn1_err.h
+der_put.So: asn1_err.h
+der_put.o: asn1_err.h
+der_put.po: asn1_err.h
+extra.So: asn1_err.h
+extra.o: asn1_err.h
+extra.po: asn1_err.h
+template.So: asn1_err.h
+template.o: asn1_err.h
+template.po: asn1_err.h
+timegm.So: asn1_err.h
+timegm.o: asn1_err.h
+timegm.po: asn1_err.h
+.endif
diff --git a/kerberos5/lib/libgssapi_krb5/Makefile.depend b/kerberos5/lib/libgssapi_krb5/Makefile.depend
new file mode 100644
index 0000000..f265a8d
--- /dev/null
+++ b/kerberos5/lib/libgssapi_krb5/Makefile.depend
@@ -0,0 +1,192 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ lib/libthr \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+8003.So: gkrb5_err.h
+8003.o: gkrb5_err.h
+8003.po: gkrb5_err.h
+accept_sec_context.So: gkrb5_err.h
+accept_sec_context.o: gkrb5_err.h
+accept_sec_context.po: gkrb5_err.h
+acquire_cred.So: gkrb5_err.h
+acquire_cred.o: gkrb5_err.h
+acquire_cred.po: gkrb5_err.h
+add_cred.So: gkrb5_err.h
+add_cred.o: gkrb5_err.h
+add_cred.po: gkrb5_err.h
+address_to_krb5addr.So: gkrb5_err.h
+address_to_krb5addr.o: gkrb5_err.h
+address_to_krb5addr.po: gkrb5_err.h
+aeap.So: gkrb5_err.h
+aeap.o: gkrb5_err.h
+aeap.po: gkrb5_err.h
+arcfour.So: gkrb5_err.h
+arcfour.o: gkrb5_err.h
+arcfour.po: gkrb5_err.h
+authorize_localname.So: gkrb5_err.h
+authorize_localname.o: gkrb5_err.h
+authorize_localname.po: gkrb5_err.h
+canonicalize_name.So: gkrb5_err.h
+canonicalize_name.o: gkrb5_err.h
+canonicalize_name.po: gkrb5_err.h
+ccache_name.So: gkrb5_err.h
+ccache_name.o: gkrb5_err.h
+ccache_name.po: gkrb5_err.h
+cfx.So: gkrb5_err.h
+cfx.o: gkrb5_err.h
+cfx.po: gkrb5_err.h
+compare_name.So: gkrb5_err.h
+compare_name.o: gkrb5_err.h
+compare_name.po: gkrb5_err.h
+compat.So: gkrb5_err.h
+compat.o: gkrb5_err.h
+compat.po: gkrb5_err.h
+context_time.So: gkrb5_err.h
+context_time.o: gkrb5_err.h
+context_time.po: gkrb5_err.h
+copy_ccache.So: gkrb5_err.h
+copy_ccache.o: gkrb5_err.h
+copy_ccache.po: gkrb5_err.h
+creds.So: gkrb5_err.h
+creds.o: gkrb5_err.h
+creds.po: gkrb5_err.h
+decapsulate.So: gkrb5_err.h
+decapsulate.o: gkrb5_err.h
+decapsulate.po: gkrb5_err.h
+delete_sec_context.So: gkrb5_err.h
+delete_sec_context.o: gkrb5_err.h
+delete_sec_context.po: gkrb5_err.h
+display_name.So: gkrb5_err.h
+display_name.o: gkrb5_err.h
+display_name.po: gkrb5_err.h
+display_status.So: gkrb5_err.h
+display_status.o: gkrb5_err.h
+display_status.po: gkrb5_err.h
+duplicate_name.So: gkrb5_err.h
+duplicate_name.o: gkrb5_err.h
+duplicate_name.po: gkrb5_err.h
+encapsulate.So: gkrb5_err.h
+encapsulate.o: gkrb5_err.h
+encapsulate.po: gkrb5_err.h
+export_name.So: gkrb5_err.h
+export_name.o: gkrb5_err.h
+export_name.po: gkrb5_err.h
+export_sec_context.So: gkrb5_err.h
+export_sec_context.o: gkrb5_err.h
+export_sec_context.po: gkrb5_err.h
+external.So: gkrb5_err.h
+external.o: gkrb5_err.h
+external.po: gkrb5_err.h
+get_mic.So: gkrb5_err.h
+get_mic.o: gkrb5_err.h
+get_mic.po: gkrb5_err.h
+gkrb5_err.So: gkrb5_err.c
+gkrb5_err.So: gkrb5_err.h
+gkrb5_err.o: gkrb5_err.c
+gkrb5_err.o: gkrb5_err.h
+gkrb5_err.po: gkrb5_err.c
+gkrb5_err.po: gkrb5_err.h
+import_name.So: gkrb5_err.h
+import_name.o: gkrb5_err.h
+import_name.po: gkrb5_err.h
+import_sec_context.So: gkrb5_err.h
+import_sec_context.o: gkrb5_err.h
+import_sec_context.po: gkrb5_err.h
+indicate_mechs.So: gkrb5_err.h
+indicate_mechs.o: gkrb5_err.h
+indicate_mechs.po: gkrb5_err.h
+init.So: gkrb5_err.h
+init.o: gkrb5_err.h
+init.po: gkrb5_err.h
+init_sec_context.So: gkrb5_err.h
+init_sec_context.o: gkrb5_err.h
+init_sec_context.po: gkrb5_err.h
+inquire_context.So: gkrb5_err.h
+inquire_context.o: gkrb5_err.h
+inquire_context.po: gkrb5_err.h
+inquire_cred.So: gkrb5_err.h
+inquire_cred.o: gkrb5_err.h
+inquire_cred.po: gkrb5_err.h
+inquire_cred_by_mech.So: gkrb5_err.h
+inquire_cred_by_mech.o: gkrb5_err.h
+inquire_cred_by_mech.po: gkrb5_err.h
+inquire_cred_by_oid.So: gkrb5_err.h
+inquire_cred_by_oid.o: gkrb5_err.h
+inquire_cred_by_oid.po: gkrb5_err.h
+inquire_mechs_for_name.So: gkrb5_err.h
+inquire_mechs_for_name.o: gkrb5_err.h
+inquire_mechs_for_name.po: gkrb5_err.h
+inquire_names_for_mech.So: gkrb5_err.h
+inquire_names_for_mech.o: gkrb5_err.h
+inquire_names_for_mech.po: gkrb5_err.h
+inquire_sec_context_by_oid.So: gkrb5_err.h
+inquire_sec_context_by_oid.o: gkrb5_err.h
+inquire_sec_context_by_oid.po: gkrb5_err.h
+pname_to_uid.So: gkrb5_err.h
+pname_to_uid.o: gkrb5_err.h
+pname_to_uid.po: gkrb5_err.h
+prf.So: gkrb5_err.h
+prf.o: gkrb5_err.h
+prf.po: gkrb5_err.h
+process_context_token.So: gkrb5_err.h
+process_context_token.o: gkrb5_err.h
+process_context_token.po: gkrb5_err.h
+release_buffer.So: gkrb5_err.h
+release_buffer.o: gkrb5_err.h
+release_buffer.po: gkrb5_err.h
+release_cred.So: gkrb5_err.h
+release_cred.o: gkrb5_err.h
+release_cred.po: gkrb5_err.h
+release_name.So: gkrb5_err.h
+release_name.o: gkrb5_err.h
+release_name.po: gkrb5_err.h
+sequence.So: gkrb5_err.h
+sequence.o: gkrb5_err.h
+sequence.po: gkrb5_err.h
+set_cred_option.So: gkrb5_err.h
+set_cred_option.o: gkrb5_err.h
+set_cred_option.po: gkrb5_err.h
+set_sec_context_option.So: gkrb5_err.h
+set_sec_context_option.o: gkrb5_err.h
+set_sec_context_option.po: gkrb5_err.h
+store_cred.So: gkrb5_err.h
+store_cred.o: gkrb5_err.h
+store_cred.po: gkrb5_err.h
+ticket_flags.So: gkrb5_err.h
+ticket_flags.o: gkrb5_err.h
+ticket_flags.po: gkrb5_err.h
+unwrap.So: gkrb5_err.h
+unwrap.o: gkrb5_err.h
+unwrap.po: gkrb5_err.h
+verify_mic.So: gkrb5_err.h
+verify_mic.o: gkrb5_err.h
+verify_mic.po: gkrb5_err.h
+wrap.So: gkrb5_err.h
+wrap.o: gkrb5_err.h
+wrap.po: gkrb5_err.h
+.endif
diff --git a/kerberos5/lib/libgssapi_ntlm/Makefile.depend b/kerberos5/lib/libgssapi_ntlm/Makefile.depend
new file mode 100644
index 0000000..ded534a
--- /dev/null
+++ b/kerberos5/lib/libgssapi_ntlm/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ lib/libthr \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libgssapi_spnego/Makefile.depend b/kerberos5/lib/libgssapi_spnego/Makefile.depend
new file mode 100644
index 0000000..ba78e76
--- /dev/null
+++ b/kerberos5/lib/libgssapi_spnego/Makefile.depend
@@ -0,0 +1,124 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+accept_sec_context.So: spnego_asn1.h
+accept_sec_context.o: spnego_asn1.h
+accept_sec_context.po: spnego_asn1.h
+asn1_ContextFlags.So: asn1_ContextFlags.c
+asn1_ContextFlags.So: spnego_asn1-priv.h
+asn1_ContextFlags.So: spnego_asn1.h
+asn1_ContextFlags.o: asn1_ContextFlags.c
+asn1_ContextFlags.o: spnego_asn1-priv.h
+asn1_ContextFlags.o: spnego_asn1.h
+asn1_ContextFlags.po: asn1_ContextFlags.c
+asn1_ContextFlags.po: spnego_asn1-priv.h
+asn1_ContextFlags.po: spnego_asn1.h
+asn1_MechType.So: asn1_MechType.c
+asn1_MechType.So: spnego_asn1-priv.h
+asn1_MechType.So: spnego_asn1.h
+asn1_MechType.o: asn1_MechType.c
+asn1_MechType.o: spnego_asn1-priv.h
+asn1_MechType.o: spnego_asn1.h
+asn1_MechType.po: asn1_MechType.c
+asn1_MechType.po: spnego_asn1-priv.h
+asn1_MechType.po: spnego_asn1.h
+asn1_MechTypeList.So: asn1_MechTypeList.c
+asn1_MechTypeList.So: spnego_asn1-priv.h
+asn1_MechTypeList.So: spnego_asn1.h
+asn1_MechTypeList.o: asn1_MechTypeList.c
+asn1_MechTypeList.o: spnego_asn1-priv.h
+asn1_MechTypeList.o: spnego_asn1.h
+asn1_MechTypeList.po: asn1_MechTypeList.c
+asn1_MechTypeList.po: spnego_asn1-priv.h
+asn1_MechTypeList.po: spnego_asn1.h
+asn1_NegHints.So: asn1_NegHints.c
+asn1_NegHints.So: spnego_asn1-priv.h
+asn1_NegHints.So: spnego_asn1.h
+asn1_NegHints.o: asn1_NegHints.c
+asn1_NegHints.o: spnego_asn1-priv.h
+asn1_NegHints.o: spnego_asn1.h
+asn1_NegHints.po: asn1_NegHints.c
+asn1_NegHints.po: spnego_asn1-priv.h
+asn1_NegHints.po: spnego_asn1.h
+asn1_NegTokenInit.So: asn1_NegTokenInit.c
+asn1_NegTokenInit.So: spnego_asn1-priv.h
+asn1_NegTokenInit.So: spnego_asn1.h
+asn1_NegTokenInit.o: asn1_NegTokenInit.c
+asn1_NegTokenInit.o: spnego_asn1-priv.h
+asn1_NegTokenInit.o: spnego_asn1.h
+asn1_NegTokenInit.po: asn1_NegTokenInit.c
+asn1_NegTokenInit.po: spnego_asn1-priv.h
+asn1_NegTokenInit.po: spnego_asn1.h
+asn1_NegTokenInitWin.So: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.So: spnego_asn1-priv.h
+asn1_NegTokenInitWin.So: spnego_asn1.h
+asn1_NegTokenInitWin.o: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.o: spnego_asn1-priv.h
+asn1_NegTokenInitWin.o: spnego_asn1.h
+asn1_NegTokenInitWin.po: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.po: spnego_asn1-priv.h
+asn1_NegTokenInitWin.po: spnego_asn1.h
+asn1_NegTokenResp.So: asn1_NegTokenResp.c
+asn1_NegTokenResp.So: spnego_asn1-priv.h
+asn1_NegTokenResp.So: spnego_asn1.h
+asn1_NegTokenResp.o: asn1_NegTokenResp.c
+asn1_NegTokenResp.o: spnego_asn1-priv.h
+asn1_NegTokenResp.o: spnego_asn1.h
+asn1_NegTokenResp.po: asn1_NegTokenResp.c
+asn1_NegTokenResp.po: spnego_asn1-priv.h
+asn1_NegTokenResp.po: spnego_asn1.h
+asn1_NegotiationToken.So: asn1_NegotiationToken.c
+asn1_NegotiationToken.So: spnego_asn1-priv.h
+asn1_NegotiationToken.So: spnego_asn1.h
+asn1_NegotiationToken.o: asn1_NegotiationToken.c
+asn1_NegotiationToken.o: spnego_asn1-priv.h
+asn1_NegotiationToken.o: spnego_asn1.h
+asn1_NegotiationToken.po: asn1_NegotiationToken.c
+asn1_NegotiationToken.po: spnego_asn1-priv.h
+asn1_NegotiationToken.po: spnego_asn1.h
+asn1_NegotiationTokenWin.So: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.So: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.So: spnego_asn1.h
+asn1_NegotiationTokenWin.o: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.o: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.o: spnego_asn1.h
+asn1_NegotiationTokenWin.po: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.po: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.po: spnego_asn1.h
+compat.So: spnego_asn1.h
+compat.o: spnego_asn1.h
+compat.po: spnego_asn1.h
+context_stubs.So: spnego_asn1.h
+context_stubs.o: spnego_asn1.h
+context_stubs.po: spnego_asn1.h
+cred_stubs.So: spnego_asn1.h
+cred_stubs.o: spnego_asn1.h
+cred_stubs.po: spnego_asn1.h
+external.So: spnego_asn1.h
+external.o: spnego_asn1.h
+external.po: spnego_asn1.h
+init_sec_context.So: spnego_asn1.h
+init_sec_context.o: spnego_asn1.h
+init_sec_context.po: spnego_asn1.h
+.endif
diff --git a/kerberos5/lib/libhdb/Makefile b/kerberos5/lib/libhdb/Makefile
index 7781e63..9134fb5 100644
--- a/kerberos5/lib/libhdb/Makefile
+++ b/kerberos5/lib/libhdb/Makefile
@@ -96,6 +96,11 @@ ${GEN}: hdb.asn1
.hx.h:
${CP} ${.IMPSRC} ${.TARGET}
+# This makefile generates a lot of its headers
+# so tell bsd.sys.mk not to try and stage them before they are built.
+# Note: this is rare
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
diff --git a/kerberos5/lib/libhdb/Makefile.depend b/kerberos5/lib/libhdb/Makefile.depend
new file mode 100644
index 0000000..04a35d3
--- /dev/null
+++ b/kerberos5/lib/libhdb/Makefile.depend
@@ -0,0 +1,279 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libsqlite3 \
+ lib/libthr \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_Event.So: asn1_Event.c
+asn1_Event.So: hdb_asn1-priv.h
+asn1_Event.So: hdb_asn1.h
+asn1_Event.o: asn1_Event.c
+asn1_Event.o: hdb_asn1-priv.h
+asn1_Event.o: hdb_asn1.h
+asn1_Event.po: asn1_Event.c
+asn1_Event.po: hdb_asn1-priv.h
+asn1_Event.po: hdb_asn1.h
+asn1_GENERATION.So: asn1_GENERATION.c
+asn1_GENERATION.So: hdb_asn1-priv.h
+asn1_GENERATION.So: hdb_asn1.h
+asn1_GENERATION.o: asn1_GENERATION.c
+asn1_GENERATION.o: hdb_asn1-priv.h
+asn1_GENERATION.o: hdb_asn1.h
+asn1_GENERATION.po: asn1_GENERATION.c
+asn1_GENERATION.po: hdb_asn1-priv.h
+asn1_GENERATION.po: hdb_asn1.h
+asn1_HDBFlags.So: asn1_HDBFlags.c
+asn1_HDBFlags.So: hdb_asn1-priv.h
+asn1_HDBFlags.So: hdb_asn1.h
+asn1_HDBFlags.o: asn1_HDBFlags.c
+asn1_HDBFlags.o: hdb_asn1-priv.h
+asn1_HDBFlags.o: hdb_asn1.h
+asn1_HDBFlags.po: asn1_HDBFlags.c
+asn1_HDBFlags.po: hdb_asn1-priv.h
+asn1_HDBFlags.po: hdb_asn1.h
+asn1_HDB_Ext_Aliases.So: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.So: hdb_asn1.h
+asn1_HDB_Ext_Aliases.o: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.o: hdb_asn1.h
+asn1_HDB_Ext_Aliases.po: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.po: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.So: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.So: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.o: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.o: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.po: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.po: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.So: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.So: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.o: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.o: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.po: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.So: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.o: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.po: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.So: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.o: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.po: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.So: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.o: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.po: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.po: hdb_asn1.h
+asn1_HDB_Ext_Password.So: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.So: hdb_asn1.h
+asn1_HDB_Ext_Password.o: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.o: hdb_asn1.h
+asn1_HDB_Ext_Password.po: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.po: hdb_asn1.h
+asn1_HDB_extension.So: asn1_HDB_extension.c
+asn1_HDB_extension.So: hdb_asn1-priv.h
+asn1_HDB_extension.So: hdb_asn1.h
+asn1_HDB_extension.o: asn1_HDB_extension.c
+asn1_HDB_extension.o: hdb_asn1-priv.h
+asn1_HDB_extension.o: hdb_asn1.h
+asn1_HDB_extension.po: asn1_HDB_extension.c
+asn1_HDB_extension.po: hdb_asn1-priv.h
+asn1_HDB_extension.po: hdb_asn1.h
+asn1_HDB_extensions.So: asn1_HDB_extensions.c
+asn1_HDB_extensions.So: hdb_asn1-priv.h
+asn1_HDB_extensions.So: hdb_asn1.h
+asn1_HDB_extensions.o: asn1_HDB_extensions.c
+asn1_HDB_extensions.o: hdb_asn1-priv.h
+asn1_HDB_extensions.o: hdb_asn1.h
+asn1_HDB_extensions.po: asn1_HDB_extensions.c
+asn1_HDB_extensions.po: hdb_asn1-priv.h
+asn1_HDB_extensions.po: hdb_asn1.h
+asn1_Key.So: asn1_Key.c
+asn1_Key.So: hdb_asn1-priv.h
+asn1_Key.So: hdb_asn1.h
+asn1_Key.o: asn1_Key.c
+asn1_Key.o: hdb_asn1-priv.h
+asn1_Key.o: hdb_asn1.h
+asn1_Key.po: asn1_Key.c
+asn1_Key.po: hdb_asn1-priv.h
+asn1_Key.po: hdb_asn1.h
+asn1_Salt.So: asn1_Salt.c
+asn1_Salt.So: hdb_asn1-priv.h
+asn1_Salt.So: hdb_asn1.h
+asn1_Salt.o: asn1_Salt.c
+asn1_Salt.o: hdb_asn1-priv.h
+asn1_Salt.o: hdb_asn1.h
+asn1_Salt.po: asn1_Salt.c
+asn1_Salt.po: hdb_asn1-priv.h
+asn1_Salt.po: hdb_asn1.h
+asn1_hdb_entry.So: asn1_hdb_entry.c
+asn1_hdb_entry.So: hdb_asn1-priv.h
+asn1_hdb_entry.So: hdb_asn1.h
+asn1_hdb_entry.o: asn1_hdb_entry.c
+asn1_hdb_entry.o: hdb_asn1-priv.h
+asn1_hdb_entry.o: hdb_asn1.h
+asn1_hdb_entry.po: asn1_hdb_entry.c
+asn1_hdb_entry.po: hdb_asn1-priv.h
+asn1_hdb_entry.po: hdb_asn1.h
+asn1_hdb_entry_alias.So: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.So: hdb_asn1-priv.h
+asn1_hdb_entry_alias.So: hdb_asn1.h
+asn1_hdb_entry_alias.o: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.o: hdb_asn1-priv.h
+asn1_hdb_entry_alias.o: hdb_asn1.h
+asn1_hdb_entry_alias.po: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.po: hdb_asn1-priv.h
+asn1_hdb_entry_alias.po: hdb_asn1.h
+asn1_hdb_keyset.So: asn1_hdb_keyset.c
+asn1_hdb_keyset.So: hdb_asn1-priv.h
+asn1_hdb_keyset.So: hdb_asn1.h
+asn1_hdb_keyset.o: asn1_hdb_keyset.c
+asn1_hdb_keyset.o: hdb_asn1-priv.h
+asn1_hdb_keyset.o: hdb_asn1.h
+asn1_hdb_keyset.po: asn1_hdb_keyset.c
+asn1_hdb_keyset.po: hdb_asn1-priv.h
+asn1_hdb_keyset.po: hdb_asn1.h
+common.So: hdb_asn1.h
+common.So: hdb_err.h
+common.o: hdb_asn1.h
+common.o: hdb_err.h
+common.po: hdb_asn1.h
+common.po: hdb_err.h
+db.So: hdb_asn1.h
+db.So: hdb_err.h
+db.o: hdb_asn1.h
+db.o: hdb_err.h
+db.po: hdb_asn1.h
+db.po: hdb_err.h
+db3.So: hdb_asn1.h
+db3.So: hdb_err.h
+db3.o: hdb_asn1.h
+db3.o: hdb_err.h
+db3.po: hdb_asn1.h
+db3.po: hdb_err.h
+dbinfo.So: hdb_asn1.h
+dbinfo.So: hdb_err.h
+dbinfo.o: hdb_asn1.h
+dbinfo.o: hdb_err.h
+dbinfo.po: hdb_asn1.h
+dbinfo.po: hdb_err.h
+ext.So: hdb_asn1.h
+ext.So: hdb_err.h
+ext.o: hdb_asn1.h
+ext.o: hdb_err.h
+ext.po: hdb_asn1.h
+ext.po: hdb_err.h
+hdb-keytab.So: hdb_asn1.h
+hdb-keytab.So: hdb_err.h
+hdb-keytab.o: hdb_asn1.h
+hdb-keytab.o: hdb_err.h
+hdb-keytab.po: hdb_asn1.h
+hdb-keytab.po: hdb_err.h
+hdb-ldap.So: hdb_asn1.h
+hdb-ldap.So: hdb_err.h
+hdb-ldap.o: hdb_asn1.h
+hdb-ldap.o: hdb_err.h
+hdb-ldap.po: hdb_asn1.h
+hdb-ldap.po: hdb_err.h
+hdb-mitdb.So: hdb_asn1.h
+hdb-mitdb.So: hdb_err.h
+hdb-mitdb.o: hdb_asn1.h
+hdb-mitdb.o: hdb_err.h
+hdb-mitdb.po: hdb_asn1.h
+hdb-mitdb.po: hdb_err.h
+hdb-sqlite.So: hdb_asn1.h
+hdb-sqlite.So: hdb_err.h
+hdb-sqlite.o: hdb_asn1.h
+hdb-sqlite.o: hdb_err.h
+hdb-sqlite.po: hdb_asn1.h
+hdb-sqlite.po: hdb_err.h
+hdb.So: hdb_asn1.h
+hdb.So: hdb_err.h
+hdb.o: hdb_asn1.h
+hdb.o: hdb_err.h
+hdb.po: hdb_asn1.h
+hdb.po: hdb_err.h
+hdb_err.So: hdb_err.c
+hdb_err.So: hdb_err.h
+hdb_err.o: hdb_err.c
+hdb_err.o: hdb_err.h
+hdb_err.po: hdb_err.c
+hdb_err.po: hdb_err.h
+keys.So: hdb_asn1.h
+keys.So: hdb_err.h
+keys.o: hdb_asn1.h
+keys.o: hdb_err.h
+keys.po: hdb_asn1.h
+keys.po: hdb_err.h
+keytab.So: hdb_asn1.h
+keytab.So: hdb_err.h
+keytab.o: hdb_asn1.h
+keytab.o: hdb_err.h
+keytab.po: hdb_asn1.h
+keytab.po: hdb_err.h
+mkey.So: hdb_asn1.h
+mkey.So: hdb_err.h
+mkey.o: hdb_asn1.h
+mkey.o: hdb_err.h
+mkey.po: hdb_asn1.h
+mkey.po: hdb_err.h
+ndbm.So: hdb_asn1.h
+ndbm.So: hdb_err.h
+ndbm.o: hdb_asn1.h
+ndbm.o: hdb_err.h
+ndbm.po: hdb_asn1.h
+ndbm.po: hdb_err.h
+print.So: hdb_asn1.h
+print.So: hdb_err.h
+print.o: hdb_asn1.h
+print.o: hdb_err.h
+print.po: hdb_asn1.h
+print.po: hdb_err.h
+.endif
diff --git a/kerberos5/lib/libheimbase/Makefile.depend b/kerberos5/lib/libheimbase/Makefile.depend
new file mode 100644
index 0000000..0a2f351
--- /dev/null
+++ b/kerberos5/lib/libheimbase/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimipcc/Makefile b/kerberos5/lib/libheimipcc/Makefile
index 1016541..9ec7125 100644
--- a/kerberos5/lib/libheimipcc/Makefile
+++ b/kerberos5/lib/libheimipcc/Makefile
@@ -10,7 +10,8 @@ SRCS= \
CFLAGS+= -I${KRB5DIR}/lib/roken \
-I${KRB5DIR}/base \
- -I${KRB5DIR}/lib/ipc
+ -I${KRB5DIR}/lib/ipc \
+ -I${KRB5DIR}/include
.include <bsd.lib.mk>
diff --git a/kerberos5/lib/libheimipcc/Makefile.depend b/kerberos5/lib/libheimipcc/Makefile.depend
new file mode 100644
index 0000000..f59f10f
--- /dev/null
+++ b/kerberos5/lib/libheimipcc/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimipcs/Makefile.depend b/kerberos5/lib/libheimipcs/Makefile.depend
new file mode 100644
index 0000000..a9a0d8d
--- /dev/null
+++ b/kerberos5/lib/libheimipcs/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimntlm/Makefile.depend b/kerberos5/lib/libheimntlm/Makefile.depend
new file mode 100644
index 0000000..7959ad5
--- /dev/null
+++ b/kerberos5/lib/libheimntlm/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libthr \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ntlm_err.So: ntlm_err.c
+ntlm_err.So: ntlm_err.h
+ntlm_err.o: ntlm_err.c
+ntlm_err.o: ntlm_err.h
+ntlm_err.po: ntlm_err.c
+ntlm_err.po: ntlm_err.h
+.endif
diff --git a/kerberos5/lib/libhx509/Makefile b/kerberos5/lib/libhx509/Makefile
index 29c45e2..d7bedfc 100644
--- a/kerberos5/lib/libhx509/Makefile
+++ b/kerberos5/lib/libhx509/Makefile
@@ -268,7 +268,7 @@ CLEANFILES= ${GEN} ${GEN:S/.x$/.c/:S/.hx$/.h/} ocsp_asn1_files \
INCS+= ocsp_asn1.h pkcs10_asn1.h crmf_asn1.h
-.ORDER: ${GEN_OSCP}
+.ORDER: ${GEN_OCSP}
${GEN_OCSP}: ocsp.asn1 ocsp.opt
${ASN1_COMPILE} --option-file=${.ALLSRC:M*.opt} \
${.ALLSRC:M*.asn1} ocsp_asn1
@@ -290,6 +290,11 @@ ${GEN_CRMF}: crmf.asn1
.hx.h:
${CP} ${.IMPSRC} ${.TARGET}
+# This makefile generates a lot of its headers
+# so tell bsd.sys.mk not to try and stage them before they are built.
+# Note: this is rare
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
diff --git a/kerberos5/lib/libhx509/Makefile.depend b/kerberos5/lib/libhx509/Makefile.depend
new file mode 100644
index 0000000..d737a69
--- /dev/null
+++ b/kerberos5/lib/libhx509/Makefile.depend
@@ -0,0 +1,446 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_CertificationRequest.So: asn1_CertificationRequest.c
+asn1_CertificationRequest.So: pkcs10_asn1-priv.h
+asn1_CertificationRequest.So: pkcs10_asn1.h
+asn1_CertificationRequest.o: asn1_CertificationRequest.c
+asn1_CertificationRequest.o: pkcs10_asn1-priv.h
+asn1_CertificationRequest.o: pkcs10_asn1.h
+asn1_CertificationRequest.po: asn1_CertificationRequest.c
+asn1_CertificationRequest.po: pkcs10_asn1-priv.h
+asn1_CertificationRequest.po: pkcs10_asn1.h
+asn1_CertificationRequestInfo.So: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.So: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.So: pkcs10_asn1.h
+asn1_CertificationRequestInfo.o: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.o: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.o: pkcs10_asn1.h
+asn1_CertificationRequestInfo.po: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.po: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.po: pkcs10_asn1.h
+asn1_OCSPBasicOCSPResponse.So: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.So: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.So: ocsp_asn1.h
+asn1_OCSPBasicOCSPResponse.o: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.o: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.o: ocsp_asn1.h
+asn1_OCSPBasicOCSPResponse.po: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.po: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.po: ocsp_asn1.h
+asn1_OCSPCertID.So: asn1_OCSPCertID.c
+asn1_OCSPCertID.So: ocsp_asn1-priv.h
+asn1_OCSPCertID.So: ocsp_asn1.h
+asn1_OCSPCertID.o: asn1_OCSPCertID.c
+asn1_OCSPCertID.o: ocsp_asn1-priv.h
+asn1_OCSPCertID.o: ocsp_asn1.h
+asn1_OCSPCertID.po: asn1_OCSPCertID.c
+asn1_OCSPCertID.po: ocsp_asn1-priv.h
+asn1_OCSPCertID.po: ocsp_asn1.h
+asn1_OCSPCertStatus.So: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.So: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.So: ocsp_asn1.h
+asn1_OCSPCertStatus.o: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.o: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.o: ocsp_asn1.h
+asn1_OCSPCertStatus.po: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.po: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.po: ocsp_asn1.h
+asn1_OCSPInnerRequest.So: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.So: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.So: ocsp_asn1.h
+asn1_OCSPInnerRequest.o: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.o: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.o: ocsp_asn1.h
+asn1_OCSPInnerRequest.po: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.po: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.po: ocsp_asn1.h
+asn1_OCSPKeyHash.So: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.So: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.So: ocsp_asn1.h
+asn1_OCSPKeyHash.o: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.o: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.o: ocsp_asn1.h
+asn1_OCSPKeyHash.po: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.po: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.po: ocsp_asn1.h
+asn1_OCSPRequest.So: asn1_OCSPRequest.c
+asn1_OCSPRequest.So: ocsp_asn1-priv.h
+asn1_OCSPRequest.So: ocsp_asn1.h
+asn1_OCSPRequest.o: asn1_OCSPRequest.c
+asn1_OCSPRequest.o: ocsp_asn1-priv.h
+asn1_OCSPRequest.o: ocsp_asn1.h
+asn1_OCSPRequest.po: asn1_OCSPRequest.c
+asn1_OCSPRequest.po: ocsp_asn1-priv.h
+asn1_OCSPRequest.po: ocsp_asn1.h
+asn1_OCSPResponderID.So: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.So: ocsp_asn1-priv.h
+asn1_OCSPResponderID.So: ocsp_asn1.h
+asn1_OCSPResponderID.o: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.o: ocsp_asn1-priv.h
+asn1_OCSPResponderID.o: ocsp_asn1.h
+asn1_OCSPResponderID.po: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.po: ocsp_asn1-priv.h
+asn1_OCSPResponderID.po: ocsp_asn1.h
+asn1_OCSPResponse.So: asn1_OCSPResponse.c
+asn1_OCSPResponse.So: ocsp_asn1-priv.h
+asn1_OCSPResponse.So: ocsp_asn1.h
+asn1_OCSPResponse.o: asn1_OCSPResponse.c
+asn1_OCSPResponse.o: ocsp_asn1-priv.h
+asn1_OCSPResponse.o: ocsp_asn1.h
+asn1_OCSPResponse.po: asn1_OCSPResponse.c
+asn1_OCSPResponse.po: ocsp_asn1-priv.h
+asn1_OCSPResponse.po: ocsp_asn1.h
+asn1_OCSPResponseBytes.So: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.So: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.So: ocsp_asn1.h
+asn1_OCSPResponseBytes.o: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.o: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.o: ocsp_asn1.h
+asn1_OCSPResponseBytes.po: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.po: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.po: ocsp_asn1.h
+asn1_OCSPResponseData.So: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.So: ocsp_asn1-priv.h
+asn1_OCSPResponseData.So: ocsp_asn1.h
+asn1_OCSPResponseData.o: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.o: ocsp_asn1-priv.h
+asn1_OCSPResponseData.o: ocsp_asn1.h
+asn1_OCSPResponseData.po: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.po: ocsp_asn1-priv.h
+asn1_OCSPResponseData.po: ocsp_asn1.h
+asn1_OCSPResponseStatus.So: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.So: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.So: ocsp_asn1.h
+asn1_OCSPResponseStatus.o: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.o: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.o: ocsp_asn1.h
+asn1_OCSPResponseStatus.po: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.po: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.po: ocsp_asn1.h
+asn1_OCSPSignature.So: asn1_OCSPSignature.c
+asn1_OCSPSignature.So: ocsp_asn1-priv.h
+asn1_OCSPSignature.So: ocsp_asn1.h
+asn1_OCSPSignature.o: asn1_OCSPSignature.c
+asn1_OCSPSignature.o: ocsp_asn1-priv.h
+asn1_OCSPSignature.o: ocsp_asn1.h
+asn1_OCSPSignature.po: asn1_OCSPSignature.c
+asn1_OCSPSignature.po: ocsp_asn1-priv.h
+asn1_OCSPSignature.po: ocsp_asn1.h
+asn1_OCSPSingleResponse.So: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.So: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.So: ocsp_asn1.h
+asn1_OCSPSingleResponse.o: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.o: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.o: ocsp_asn1.h
+asn1_OCSPSingleResponse.po: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.po: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.po: ocsp_asn1.h
+asn1_OCSPTBSRequest.So: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.So: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.So: ocsp_asn1.h
+asn1_OCSPTBSRequest.o: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.o: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.o: ocsp_asn1.h
+asn1_OCSPTBSRequest.po: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.po: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.po: ocsp_asn1.h
+asn1_OCSPVersion.So: asn1_OCSPVersion.c
+asn1_OCSPVersion.So: ocsp_asn1-priv.h
+asn1_OCSPVersion.So: ocsp_asn1.h
+asn1_OCSPVersion.o: asn1_OCSPVersion.c
+asn1_OCSPVersion.o: ocsp_asn1-priv.h
+asn1_OCSPVersion.o: ocsp_asn1.h
+asn1_OCSPVersion.po: asn1_OCSPVersion.c
+asn1_OCSPVersion.po: ocsp_asn1-priv.h
+asn1_OCSPVersion.po: ocsp_asn1.h
+asn1_id_pkix_ocsp.So: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.So: ocsp_asn1.h
+asn1_id_pkix_ocsp.o: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.o: ocsp_asn1.h
+asn1_id_pkix_ocsp.po: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.po: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.So: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.So: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.o: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.o: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.po: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.po: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.So: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.So: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.o: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.o: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.po: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.po: ocsp_asn1.h
+ca.So: hx509_err.h
+ca.So: ocsp_asn1.h
+ca.So: pkcs10_asn1.h
+ca.o: hx509_err.h
+ca.o: ocsp_asn1.h
+ca.o: pkcs10_asn1.h
+ca.po: hx509_err.h
+ca.po: ocsp_asn1.h
+ca.po: pkcs10_asn1.h
+cert.So: hx509_err.h
+cert.So: ocsp_asn1.h
+cert.So: pkcs10_asn1.h
+cert.o: hx509_err.h
+cert.o: ocsp_asn1.h
+cert.o: pkcs10_asn1.h
+cert.po: hx509_err.h
+cert.po: ocsp_asn1.h
+cert.po: pkcs10_asn1.h
+cms.So: hx509_err.h
+cms.So: ocsp_asn1.h
+cms.So: pkcs10_asn1.h
+cms.o: hx509_err.h
+cms.o: ocsp_asn1.h
+cms.o: pkcs10_asn1.h
+cms.po: hx509_err.h
+cms.po: ocsp_asn1.h
+cms.po: pkcs10_asn1.h
+collector.So: hx509_err.h
+collector.So: ocsp_asn1.h
+collector.So: pkcs10_asn1.h
+collector.o: hx509_err.h
+collector.o: ocsp_asn1.h
+collector.o: pkcs10_asn1.h
+collector.po: hx509_err.h
+collector.po: ocsp_asn1.h
+collector.po: pkcs10_asn1.h
+crypto.So: hx509_err.h
+crypto.So: ocsp_asn1.h
+crypto.So: pkcs10_asn1.h
+crypto.o: hx509_err.h
+crypto.o: ocsp_asn1.h
+crypto.o: pkcs10_asn1.h
+crypto.po: hx509_err.h
+crypto.po: ocsp_asn1.h
+crypto.po: pkcs10_asn1.h
+env.So: hx509_err.h
+env.So: ocsp_asn1.h
+env.So: pkcs10_asn1.h
+env.o: hx509_err.h
+env.o: ocsp_asn1.h
+env.o: pkcs10_asn1.h
+env.po: hx509_err.h
+env.po: ocsp_asn1.h
+env.po: pkcs10_asn1.h
+error.So: hx509_err.h
+error.So: ocsp_asn1.h
+error.So: pkcs10_asn1.h
+error.o: hx509_err.h
+error.o: ocsp_asn1.h
+error.o: pkcs10_asn1.h
+error.po: hx509_err.h
+error.po: ocsp_asn1.h
+error.po: pkcs10_asn1.h
+file.So: hx509_err.h
+file.So: ocsp_asn1.h
+file.So: pkcs10_asn1.h
+file.o: hx509_err.h
+file.o: ocsp_asn1.h
+file.o: pkcs10_asn1.h
+file.po: hx509_err.h
+file.po: ocsp_asn1.h
+file.po: pkcs10_asn1.h
+hx509_err.So: hx509_err.c
+hx509_err.So: hx509_err.h
+hx509_err.o: hx509_err.c
+hx509_err.o: hx509_err.h
+hx509_err.po: hx509_err.c
+hx509_err.po: hx509_err.h
+keyset.So: hx509_err.h
+keyset.So: ocsp_asn1.h
+keyset.So: pkcs10_asn1.h
+keyset.o: hx509_err.h
+keyset.o: ocsp_asn1.h
+keyset.o: pkcs10_asn1.h
+keyset.po: hx509_err.h
+keyset.po: ocsp_asn1.h
+keyset.po: pkcs10_asn1.h
+ks_dir.So: hx509_err.h
+ks_dir.So: ocsp_asn1.h
+ks_dir.So: pkcs10_asn1.h
+ks_dir.o: hx509_err.h
+ks_dir.o: ocsp_asn1.h
+ks_dir.o: pkcs10_asn1.h
+ks_dir.po: hx509_err.h
+ks_dir.po: ocsp_asn1.h
+ks_dir.po: pkcs10_asn1.h
+ks_file.So: hx509_err.h
+ks_file.So: ocsp_asn1.h
+ks_file.So: pkcs10_asn1.h
+ks_file.o: hx509_err.h
+ks_file.o: ocsp_asn1.h
+ks_file.o: pkcs10_asn1.h
+ks_file.po: hx509_err.h
+ks_file.po: ocsp_asn1.h
+ks_file.po: pkcs10_asn1.h
+ks_keychain.So: hx509_err.h
+ks_keychain.So: ocsp_asn1.h
+ks_keychain.So: pkcs10_asn1.h
+ks_keychain.o: hx509_err.h
+ks_keychain.o: ocsp_asn1.h
+ks_keychain.o: pkcs10_asn1.h
+ks_keychain.po: hx509_err.h
+ks_keychain.po: ocsp_asn1.h
+ks_keychain.po: pkcs10_asn1.h
+ks_mem.So: hx509_err.h
+ks_mem.So: ocsp_asn1.h
+ks_mem.So: pkcs10_asn1.h
+ks_mem.o: hx509_err.h
+ks_mem.o: ocsp_asn1.h
+ks_mem.o: pkcs10_asn1.h
+ks_mem.po: hx509_err.h
+ks_mem.po: ocsp_asn1.h
+ks_mem.po: pkcs10_asn1.h
+ks_null.So: hx509_err.h
+ks_null.So: ocsp_asn1.h
+ks_null.So: pkcs10_asn1.h
+ks_null.o: hx509_err.h
+ks_null.o: ocsp_asn1.h
+ks_null.o: pkcs10_asn1.h
+ks_null.po: hx509_err.h
+ks_null.po: ocsp_asn1.h
+ks_null.po: pkcs10_asn1.h
+ks_p11.So: hx509_err.h
+ks_p11.So: ocsp_asn1.h
+ks_p11.So: pkcs10_asn1.h
+ks_p11.o: hx509_err.h
+ks_p11.o: ocsp_asn1.h
+ks_p11.o: pkcs10_asn1.h
+ks_p11.po: hx509_err.h
+ks_p11.po: ocsp_asn1.h
+ks_p11.po: pkcs10_asn1.h
+ks_p12.So: hx509_err.h
+ks_p12.So: ocsp_asn1.h
+ks_p12.So: pkcs10_asn1.h
+ks_p12.o: hx509_err.h
+ks_p12.o: ocsp_asn1.h
+ks_p12.o: pkcs10_asn1.h
+ks_p12.po: hx509_err.h
+ks_p12.po: ocsp_asn1.h
+ks_p12.po: pkcs10_asn1.h
+lock.So: hx509_err.h
+lock.So: ocsp_asn1.h
+lock.So: pkcs10_asn1.h
+lock.o: hx509_err.h
+lock.o: ocsp_asn1.h
+lock.o: pkcs10_asn1.h
+lock.po: hx509_err.h
+lock.po: ocsp_asn1.h
+lock.po: pkcs10_asn1.h
+name.So: hx509_err.h
+name.So: ocsp_asn1.h
+name.So: pkcs10_asn1.h
+name.o: hx509_err.h
+name.o: ocsp_asn1.h
+name.o: pkcs10_asn1.h
+name.po: hx509_err.h
+name.po: ocsp_asn1.h
+name.po: pkcs10_asn1.h
+peer.So: hx509_err.h
+peer.So: ocsp_asn1.h
+peer.So: pkcs10_asn1.h
+peer.o: hx509_err.h
+peer.o: ocsp_asn1.h
+peer.o: pkcs10_asn1.h
+peer.po: hx509_err.h
+peer.po: ocsp_asn1.h
+peer.po: pkcs10_asn1.h
+print.So: hx509_err.h
+print.So: ocsp_asn1.h
+print.So: pkcs10_asn1.h
+print.o: hx509_err.h
+print.o: ocsp_asn1.h
+print.o: pkcs10_asn1.h
+print.po: hx509_err.h
+print.po: ocsp_asn1.h
+print.po: pkcs10_asn1.h
+req.So: hx509_err.h
+req.So: ocsp_asn1.h
+req.So: pkcs10_asn1.h
+req.o: hx509_err.h
+req.o: ocsp_asn1.h
+req.o: pkcs10_asn1.h
+req.po: hx509_err.h
+req.po: ocsp_asn1.h
+req.po: pkcs10_asn1.h
+revoke.So: hx509_err.h
+revoke.So: ocsp_asn1.h
+revoke.So: pkcs10_asn1.h
+revoke.o: hx509_err.h
+revoke.o: ocsp_asn1.h
+revoke.o: pkcs10_asn1.h
+revoke.po: hx509_err.h
+revoke.po: ocsp_asn1.h
+revoke.po: pkcs10_asn1.h
+sel-gram.So: hx509_err.h
+sel-gram.So: ocsp_asn1.h
+sel-gram.So: pkcs10_asn1.h
+sel-gram.So: sel-gram.c
+sel-gram.o: hx509_err.h
+sel-gram.o: ocsp_asn1.h
+sel-gram.o: pkcs10_asn1.h
+sel-gram.o: sel-gram.c
+sel-gram.po: hx509_err.h
+sel-gram.po: ocsp_asn1.h
+sel-gram.po: pkcs10_asn1.h
+sel-gram.po: sel-gram.c
+sel-lex.So: sel-gram.h
+sel-lex.So: sel-lex.c
+sel-lex.o: sel-gram.h
+sel-lex.o: sel-lex.c
+sel-lex.po: sel-gram.h
+sel-lex.po: sel-lex.c
+sel.So: hx509_err.h
+sel.So: ocsp_asn1.h
+sel.So: pkcs10_asn1.h
+sel.o: hx509_err.h
+sel.o: ocsp_asn1.h
+sel.o: pkcs10_asn1.h
+sel.po: hx509_err.h
+sel.po: ocsp_asn1.h
+sel.po: pkcs10_asn1.h
+softp11.So: hx509_err.h
+softp11.So: ocsp_asn1.h
+softp11.So: pkcs10_asn1.h
+softp11.o: hx509_err.h
+softp11.o: ocsp_asn1.h
+softp11.o: pkcs10_asn1.h
+softp11.po: hx509_err.h
+softp11.po: ocsp_asn1.h
+softp11.po: pkcs10_asn1.h
+.endif
diff --git a/kerberos5/lib/libkadm5clnt/Makefile.depend b/kerberos5/lib/libkadm5clnt/Makefile.depend
new file mode 100644
index 0000000..2988689
--- /dev/null
+++ b/kerberos5/lib/libkadm5clnt/Makefile.depend
@@ -0,0 +1,86 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ad.So: kadm5_err.h
+ad.o: kadm5_err.h
+ad.po: kadm5_err.h
+chpass_c.So: kadm5_err.h
+chpass_c.o: kadm5_err.h
+chpass_c.po: kadm5_err.h
+client_glue.So: kadm5_err.h
+client_glue.o: kadm5_err.h
+client_glue.po: kadm5_err.h
+common_glue.So: kadm5_err.h
+common_glue.o: kadm5_err.h
+common_glue.po: kadm5_err.h
+create_c.So: kadm5_err.h
+create_c.o: kadm5_err.h
+create_c.po: kadm5_err.h
+delete_c.So: kadm5_err.h
+delete_c.o: kadm5_err.h
+delete_c.po: kadm5_err.h
+destroy_c.So: kadm5_err.h
+destroy_c.o: kadm5_err.h
+destroy_c.po: kadm5_err.h
+flush_c.So: kadm5_err.h
+flush_c.o: kadm5_err.h
+flush_c.po: kadm5_err.h
+free.So: kadm5_err.h
+free.o: kadm5_err.h
+free.po: kadm5_err.h
+get_c.So: kadm5_err.h
+get_c.o: kadm5_err.h
+get_c.po: kadm5_err.h
+get_princs_c.So: kadm5_err.h
+get_princs_c.o: kadm5_err.h
+get_princs_c.po: kadm5_err.h
+init_c.So: kadm5_err.h
+init_c.o: kadm5_err.h
+init_c.po: kadm5_err.h
+kadm5_err.So: kadm5_err.c
+kadm5_err.So: kadm5_err.h
+kadm5_err.o: kadm5_err.c
+kadm5_err.o: kadm5_err.h
+kadm5_err.po: kadm5_err.c
+kadm5_err.po: kadm5_err.h
+marshall.So: kadm5_err.h
+marshall.o: kadm5_err.h
+marshall.po: kadm5_err.h
+modify_c.So: kadm5_err.h
+modify_c.o: kadm5_err.h
+modify_c.po: kadm5_err.h
+privs_c.So: kadm5_err.h
+privs_c.o: kadm5_err.h
+privs_c.po: kadm5_err.h
+randkey_c.So: kadm5_err.h
+randkey_c.o: kadm5_err.h
+randkey_c.po: kadm5_err.h
+rename_c.So: kadm5_err.h
+rename_c.o: kadm5_err.h
+rename_c.po: kadm5_err.h
+send_recv.So: kadm5_err.h
+send_recv.o: kadm5_err.h
+send_recv.po: kadm5_err.h
+.endif
diff --git a/kerberos5/lib/libkadm5srv/Makefile.depend b/kerberos5/lib/libkadm5srv/Makefile.depend
new file mode 100644
index 0000000..15a0788
--- /dev/null
+++ b/kerberos5/lib/libkadm5srv/Makefile.depend
@@ -0,0 +1,110 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acl.So: kadm5_err.h
+acl.o: kadm5_err.h
+acl.po: kadm5_err.h
+bump_pw_expire.So: kadm5_err.h
+bump_pw_expire.o: kadm5_err.h
+bump_pw_expire.po: kadm5_err.h
+chpass_s.So: kadm5_err.h
+chpass_s.o: kadm5_err.h
+chpass_s.po: kadm5_err.h
+common_glue.So: kadm5_err.h
+common_glue.o: kadm5_err.h
+common_glue.po: kadm5_err.h
+context_s.So: kadm5_err.h
+context_s.o: kadm5_err.h
+context_s.po: kadm5_err.h
+create_s.So: kadm5_err.h
+create_s.o: kadm5_err.h
+create_s.po: kadm5_err.h
+delete_s.So: kadm5_err.h
+delete_s.o: kadm5_err.h
+delete_s.po: kadm5_err.h
+destroy_s.So: kadm5_err.h
+destroy_s.o: kadm5_err.h
+destroy_s.po: kadm5_err.h
+ent_setup.So: kadm5_err.h
+ent_setup.o: kadm5_err.h
+ent_setup.po: kadm5_err.h
+error.So: kadm5_err.h
+error.o: kadm5_err.h
+error.po: kadm5_err.h
+flush_s.So: kadm5_err.h
+flush_s.o: kadm5_err.h
+flush_s.po: kadm5_err.h
+free.So: kadm5_err.h
+free.o: kadm5_err.h
+free.po: kadm5_err.h
+get_princs_s.So: kadm5_err.h
+get_princs_s.o: kadm5_err.h
+get_princs_s.po: kadm5_err.h
+get_s.So: kadm5_err.h
+get_s.o: kadm5_err.h
+get_s.po: kadm5_err.h
+init_s.So: kadm5_err.h
+init_s.o: kadm5_err.h
+init_s.po: kadm5_err.h
+kadm5_err.So: kadm5_err.c
+kadm5_err.So: kadm5_err.h
+kadm5_err.o: kadm5_err.c
+kadm5_err.o: kadm5_err.h
+kadm5_err.po: kadm5_err.c
+kadm5_err.po: kadm5_err.h
+keys.So: kadm5_err.h
+keys.o: kadm5_err.h
+keys.po: kadm5_err.h
+log.So: kadm5_err.h
+log.o: kadm5_err.h
+log.po: kadm5_err.h
+marshall.So: kadm5_err.h
+marshall.o: kadm5_err.h
+marshall.po: kadm5_err.h
+modify_s.So: kadm5_err.h
+modify_s.o: kadm5_err.h
+modify_s.po: kadm5_err.h
+password_quality.So: kadm5_err.h
+password_quality.o: kadm5_err.h
+password_quality.po: kadm5_err.h
+privs_s.So: kadm5_err.h
+privs_s.o: kadm5_err.h
+privs_s.po: kadm5_err.h
+randkey_s.So: kadm5_err.h
+randkey_s.o: kadm5_err.h
+randkey_s.po: kadm5_err.h
+rename_s.So: kadm5_err.h
+rename_s.o: kadm5_err.h
+rename_s.po: kadm5_err.h
+server_glue.So: kadm5_err.h
+server_glue.o: kadm5_err.h
+server_glue.po: kadm5_err.h
+set_keys.So: kadm5_err.h
+set_keys.o: kadm5_err.h
+set_keys.po: kadm5_err.h
+set_modifier.So: kadm5_err.h
+set_modifier.o: kadm5_err.h
+set_modifier.po: kadm5_err.h
+.endif
diff --git a/kerberos5/lib/libkafs5/Makefile.depend b/kerberos5/lib/libkafs5/Makefile.depend
new file mode 100644
index 0000000..8f9723c
--- /dev/null
+++ b/kerberos5/lib/libkafs5/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libkdc/Makefile.depend b/kerberos5/lib/libkdc/Makefile.depend
new file mode 100644
index 0000000..0f4b829
--- /dev/null
+++ b/kerberos5/lib/libkdc/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libkrb5/Makefile.depend b/kerberos5/lib/libkrb5/Makefile.depend
new file mode 100644
index 0000000..edf6cf8
--- /dev/null
+++ b/kerberos5/lib/libkrb5/Makefile.depend
@@ -0,0 +1,1100 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acache.So: heim_err.h
+acache.So: k524_err.h
+acache.So: krb5_err.h
+acache.o: heim_err.h
+acache.o: k524_err.h
+acache.o: krb5_err.h
+acache.po: heim_err.h
+acache.po: k524_err.h
+acache.po: krb5_err.h
+acl.So: heim_err.h
+acl.So: k524_err.h
+acl.So: krb5_err.h
+acl.o: heim_err.h
+acl.o: k524_err.h
+acl.o: krb5_err.h
+acl.po: heim_err.h
+acl.po: k524_err.h
+acl.po: krb5_err.h
+add_et_list.So: heim_err.h
+add_et_list.So: k524_err.h
+add_et_list.So: krb5_err.h
+add_et_list.o: heim_err.h
+add_et_list.o: k524_err.h
+add_et_list.o: krb5_err.h
+add_et_list.po: heim_err.h
+add_et_list.po: k524_err.h
+add_et_list.po: krb5_err.h
+addr_families.So: heim_err.h
+addr_families.So: k524_err.h
+addr_families.So: krb5_err.h
+addr_families.o: heim_err.h
+addr_families.o: k524_err.h
+addr_families.o: krb5_err.h
+addr_families.po: heim_err.h
+addr_families.po: k524_err.h
+addr_families.po: krb5_err.h
+aname_to_localname.So: heim_err.h
+aname_to_localname.So: k524_err.h
+aname_to_localname.So: krb5_err.h
+aname_to_localname.o: heim_err.h
+aname_to_localname.o: k524_err.h
+aname_to_localname.o: krb5_err.h
+aname_to_localname.po: heim_err.h
+aname_to_localname.po: k524_err.h
+aname_to_localname.po: krb5_err.h
+appdefault.So: heim_err.h
+appdefault.So: k524_err.h
+appdefault.So: krb5_err.h
+appdefault.o: heim_err.h
+appdefault.o: k524_err.h
+appdefault.o: krb5_err.h
+appdefault.po: heim_err.h
+appdefault.po: k524_err.h
+appdefault.po: krb5_err.h
+asn1_glue.So: heim_err.h
+asn1_glue.So: k524_err.h
+asn1_glue.So: krb5_err.h
+asn1_glue.o: heim_err.h
+asn1_glue.o: k524_err.h
+asn1_glue.o: krb5_err.h
+asn1_glue.po: heim_err.h
+asn1_glue.po: k524_err.h
+asn1_glue.po: krb5_err.h
+auth_context.So: heim_err.h
+auth_context.So: k524_err.h
+auth_context.So: krb5_err.h
+auth_context.o: heim_err.h
+auth_context.o: k524_err.h
+auth_context.o: krb5_err.h
+auth_context.po: heim_err.h
+auth_context.po: k524_err.h
+auth_context.po: krb5_err.h
+build_ap_req.So: heim_err.h
+build_ap_req.So: k524_err.h
+build_ap_req.So: krb5_err.h
+build_ap_req.o: heim_err.h
+build_ap_req.o: k524_err.h
+build_ap_req.o: krb5_err.h
+build_ap_req.po: heim_err.h
+build_ap_req.po: k524_err.h
+build_ap_req.po: krb5_err.h
+build_auth.So: heim_err.h
+build_auth.So: k524_err.h
+build_auth.So: krb5_err.h
+build_auth.o: heim_err.h
+build_auth.o: k524_err.h
+build_auth.o: krb5_err.h
+build_auth.po: heim_err.h
+build_auth.po: k524_err.h
+build_auth.po: krb5_err.h
+cache.So: heim_err.h
+cache.So: k524_err.h
+cache.So: krb5_err.h
+cache.o: heim_err.h
+cache.o: k524_err.h
+cache.o: krb5_err.h
+cache.po: heim_err.h
+cache.po: k524_err.h
+cache.po: krb5_err.h
+changepw.So: heim_err.h
+changepw.So: k524_err.h
+changepw.So: krb5_err.h
+changepw.o: heim_err.h
+changepw.o: k524_err.h
+changepw.o: krb5_err.h
+changepw.po: heim_err.h
+changepw.po: k524_err.h
+changepw.po: krb5_err.h
+codec.So: heim_err.h
+codec.So: k524_err.h
+codec.So: krb5_err.h
+codec.o: heim_err.h
+codec.o: k524_err.h
+codec.o: krb5_err.h
+codec.po: heim_err.h
+codec.po: k524_err.h
+codec.po: krb5_err.h
+config_file.So: heim_err.h
+config_file.So: k524_err.h
+config_file.So: krb5_err.h
+config_file.o: heim_err.h
+config_file.o: k524_err.h
+config_file.o: krb5_err.h
+config_file.po: heim_err.h
+config_file.po: k524_err.h
+config_file.po: krb5_err.h
+constants.So: heim_err.h
+constants.So: k524_err.h
+constants.So: krb5_err.h
+constants.o: heim_err.h
+constants.o: k524_err.h
+constants.o: krb5_err.h
+constants.po: heim_err.h
+constants.po: k524_err.h
+constants.po: krb5_err.h
+context.So: heim_err.h
+context.So: k524_err.h
+context.So: krb5_err.h
+context.o: heim_err.h
+context.o: k524_err.h
+context.o: krb5_err.h
+context.po: heim_err.h
+context.po: k524_err.h
+context.po: krb5_err.h
+convert_creds.So: heim_err.h
+convert_creds.So: k524_err.h
+convert_creds.So: krb5_err.h
+convert_creds.So: krb_err.h
+convert_creds.o: heim_err.h
+convert_creds.o: k524_err.h
+convert_creds.o: krb5_err.h
+convert_creds.o: krb_err.h
+convert_creds.po: heim_err.h
+convert_creds.po: k524_err.h
+convert_creds.po: krb5_err.h
+convert_creds.po: krb_err.h
+copy_host_realm.So: heim_err.h
+copy_host_realm.So: k524_err.h
+copy_host_realm.So: krb5_err.h
+copy_host_realm.o: heim_err.h
+copy_host_realm.o: k524_err.h
+copy_host_realm.o: krb5_err.h
+copy_host_realm.po: heim_err.h
+copy_host_realm.po: k524_err.h
+copy_host_realm.po: krb5_err.h
+crc.So: heim_err.h
+crc.So: k524_err.h
+crc.So: krb5_err.h
+crc.o: heim_err.h
+crc.o: k524_err.h
+crc.o: krb5_err.h
+crc.po: heim_err.h
+crc.po: k524_err.h
+crc.po: krb5_err.h
+creds.So: heim_err.h
+creds.So: k524_err.h
+creds.So: krb5_err.h
+creds.o: heim_err.h
+creds.o: k524_err.h
+creds.o: krb5_err.h
+creds.po: heim_err.h
+creds.po: k524_err.h
+creds.po: krb5_err.h
+crypto-aes.So: heim_err.h
+crypto-aes.So: k524_err.h
+crypto-aes.So: krb5_err.h
+crypto-aes.o: heim_err.h
+crypto-aes.o: k524_err.h
+crypto-aes.o: krb5_err.h
+crypto-aes.po: heim_err.h
+crypto-aes.po: k524_err.h
+crypto-aes.po: krb5_err.h
+crypto-algs.So: heim_err.h
+crypto-algs.So: k524_err.h
+crypto-algs.So: krb5_err.h
+crypto-algs.o: heim_err.h
+crypto-algs.o: k524_err.h
+crypto-algs.o: krb5_err.h
+crypto-algs.po: heim_err.h
+crypto-algs.po: k524_err.h
+crypto-algs.po: krb5_err.h
+crypto-arcfour.So: heim_err.h
+crypto-arcfour.So: k524_err.h
+crypto-arcfour.So: krb5_err.h
+crypto-arcfour.o: heim_err.h
+crypto-arcfour.o: k524_err.h
+crypto-arcfour.o: krb5_err.h
+crypto-arcfour.po: heim_err.h
+crypto-arcfour.po: k524_err.h
+crypto-arcfour.po: krb5_err.h
+crypto-des-common.So: heim_err.h
+crypto-des-common.So: k524_err.h
+crypto-des-common.So: krb5_err.h
+crypto-des-common.o: heim_err.h
+crypto-des-common.o: k524_err.h
+crypto-des-common.o: krb5_err.h
+crypto-des-common.po: heim_err.h
+crypto-des-common.po: k524_err.h
+crypto-des-common.po: krb5_err.h
+crypto-des.So: heim_err.h
+crypto-des.So: k524_err.h
+crypto-des.So: krb5_err.h
+crypto-des.o: heim_err.h
+crypto-des.o: k524_err.h
+crypto-des.o: krb5_err.h
+crypto-des.po: heim_err.h
+crypto-des.po: k524_err.h
+crypto-des.po: krb5_err.h
+crypto-des3.So: heim_err.h
+crypto-des3.So: k524_err.h
+crypto-des3.So: krb5_err.h
+crypto-des3.o: heim_err.h
+crypto-des3.o: k524_err.h
+crypto-des3.o: krb5_err.h
+crypto-des3.po: heim_err.h
+crypto-des3.po: k524_err.h
+crypto-des3.po: krb5_err.h
+crypto-evp.So: heim_err.h
+crypto-evp.So: k524_err.h
+crypto-evp.So: krb5_err.h
+crypto-evp.o: heim_err.h
+crypto-evp.o: k524_err.h
+crypto-evp.o: krb5_err.h
+crypto-evp.po: heim_err.h
+crypto-evp.po: k524_err.h
+crypto-evp.po: krb5_err.h
+crypto-null.So: heim_err.h
+crypto-null.So: k524_err.h
+crypto-null.So: krb5_err.h
+crypto-null.o: heim_err.h
+crypto-null.o: k524_err.h
+crypto-null.o: krb5_err.h
+crypto-null.po: heim_err.h
+crypto-null.po: k524_err.h
+crypto-null.po: krb5_err.h
+crypto-pk.So: heim_err.h
+crypto-pk.So: k524_err.h
+crypto-pk.So: krb5_err.h
+crypto-pk.o: heim_err.h
+crypto-pk.o: k524_err.h
+crypto-pk.o: krb5_err.h
+crypto-pk.po: heim_err.h
+crypto-pk.po: k524_err.h
+crypto-pk.po: krb5_err.h
+crypto-rand.So: heim_err.h
+crypto-rand.So: k524_err.h
+crypto-rand.So: krb5_err.h
+crypto-rand.o: heim_err.h
+crypto-rand.o: k524_err.h
+crypto-rand.o: krb5_err.h
+crypto-rand.po: heim_err.h
+crypto-rand.po: k524_err.h
+crypto-rand.po: krb5_err.h
+crypto.So: heim_err.h
+crypto.So: k524_err.h
+crypto.So: krb5_err.h
+crypto.o: heim_err.h
+crypto.o: k524_err.h
+crypto.o: krb5_err.h
+crypto.po: heim_err.h
+crypto.po: k524_err.h
+crypto.po: krb5_err.h
+data.So: heim_err.h
+data.So: k524_err.h
+data.So: krb5_err.h
+data.o: heim_err.h
+data.o: k524_err.h
+data.o: krb5_err.h
+data.po: heim_err.h
+data.po: k524_err.h
+data.po: krb5_err.h
+deprecated.So: heim_err.h
+deprecated.So: k524_err.h
+deprecated.So: krb5_err.h
+deprecated.o: heim_err.h
+deprecated.o: k524_err.h
+deprecated.o: krb5_err.h
+deprecated.po: heim_err.h
+deprecated.po: k524_err.h
+deprecated.po: krb5_err.h
+digest.So: heim_err.h
+digest.So: k524_err.h
+digest.So: krb5_err.h
+digest.o: heim_err.h
+digest.o: k524_err.h
+digest.o: krb5_err.h
+digest.po: heim_err.h
+digest.po: k524_err.h
+digest.po: krb5_err.h
+doxygen.So: heim_err.h
+doxygen.So: k524_err.h
+doxygen.So: krb5_err.h
+doxygen.o: heim_err.h
+doxygen.o: k524_err.h
+doxygen.o: krb5_err.h
+doxygen.po: heim_err.h
+doxygen.po: k524_err.h
+doxygen.po: krb5_err.h
+eai_to_heim_errno.So: heim_err.h
+eai_to_heim_errno.So: k524_err.h
+eai_to_heim_errno.So: krb5_err.h
+eai_to_heim_errno.o: heim_err.h
+eai_to_heim_errno.o: k524_err.h
+eai_to_heim_errno.o: krb5_err.h
+eai_to_heim_errno.po: heim_err.h
+eai_to_heim_errno.po: k524_err.h
+eai_to_heim_errno.po: krb5_err.h
+error_string.So: heim_err.h
+error_string.So: k524_err.h
+error_string.So: krb5_err.h
+error_string.o: heim_err.h
+error_string.o: k524_err.h
+error_string.o: krb5_err.h
+error_string.po: heim_err.h
+error_string.po: k524_err.h
+error_string.po: krb5_err.h
+expand_hostname.So: heim_err.h
+expand_hostname.So: k524_err.h
+expand_hostname.So: krb5_err.h
+expand_hostname.o: heim_err.h
+expand_hostname.o: k524_err.h
+expand_hostname.o: krb5_err.h
+expand_hostname.po: heim_err.h
+expand_hostname.po: k524_err.h
+expand_hostname.po: krb5_err.h
+expand_path.So: heim_err.h
+expand_path.So: k524_err.h
+expand_path.So: krb5_err.h
+expand_path.o: heim_err.h
+expand_path.o: k524_err.h
+expand_path.o: krb5_err.h
+expand_path.po: heim_err.h
+expand_path.po: k524_err.h
+expand_path.po: krb5_err.h
+fcache.So: heim_err.h
+fcache.So: k524_err.h
+fcache.So: krb5_err.h
+fcache.o: heim_err.h
+fcache.o: k524_err.h
+fcache.o: krb5_err.h
+fcache.po: heim_err.h
+fcache.po: k524_err.h
+fcache.po: krb5_err.h
+free.So: heim_err.h
+free.So: k524_err.h
+free.So: krb5_err.h
+free.o: heim_err.h
+free.o: k524_err.h
+free.o: krb5_err.h
+free.po: heim_err.h
+free.po: k524_err.h
+free.po: krb5_err.h
+free_host_realm.So: heim_err.h
+free_host_realm.So: k524_err.h
+free_host_realm.So: krb5_err.h
+free_host_realm.o: heim_err.h
+free_host_realm.o: k524_err.h
+free_host_realm.o: krb5_err.h
+free_host_realm.po: heim_err.h
+free_host_realm.po: k524_err.h
+free_host_realm.po: krb5_err.h
+generate_seq_number.So: heim_err.h
+generate_seq_number.So: k524_err.h
+generate_seq_number.So: krb5_err.h
+generate_seq_number.o: heim_err.h
+generate_seq_number.o: k524_err.h
+generate_seq_number.o: krb5_err.h
+generate_seq_number.po: heim_err.h
+generate_seq_number.po: k524_err.h
+generate_seq_number.po: krb5_err.h
+generate_subkey.So: heim_err.h
+generate_subkey.So: k524_err.h
+generate_subkey.So: krb5_err.h
+generate_subkey.o: heim_err.h
+generate_subkey.o: k524_err.h
+generate_subkey.o: krb5_err.h
+generate_subkey.po: heim_err.h
+generate_subkey.po: k524_err.h
+generate_subkey.po: krb5_err.h
+get_addrs.So: heim_err.h
+get_addrs.So: k524_err.h
+get_addrs.So: krb5_err.h
+get_addrs.o: heim_err.h
+get_addrs.o: k524_err.h
+get_addrs.o: krb5_err.h
+get_addrs.po: heim_err.h
+get_addrs.po: k524_err.h
+get_addrs.po: krb5_err.h
+get_cred.So: heim_err.h
+get_cred.So: k524_err.h
+get_cred.So: krb5_err.h
+get_cred.o: heim_err.h
+get_cred.o: k524_err.h
+get_cred.o: krb5_err.h
+get_cred.po: heim_err.h
+get_cred.po: k524_err.h
+get_cred.po: krb5_err.h
+get_default_principal.So: heim_err.h
+get_default_principal.So: k524_err.h
+get_default_principal.So: krb5_err.h
+get_default_principal.o: heim_err.h
+get_default_principal.o: k524_err.h
+get_default_principal.o: krb5_err.h
+get_default_principal.po: heim_err.h
+get_default_principal.po: k524_err.h
+get_default_principal.po: krb5_err.h
+get_default_realm.So: heim_err.h
+get_default_realm.So: k524_err.h
+get_default_realm.So: krb5_err.h
+get_default_realm.o: heim_err.h
+get_default_realm.o: k524_err.h
+get_default_realm.o: krb5_err.h
+get_default_realm.po: heim_err.h
+get_default_realm.po: k524_err.h
+get_default_realm.po: krb5_err.h
+get_for_creds.So: heim_err.h
+get_for_creds.So: k524_err.h
+get_for_creds.So: krb5_err.h
+get_for_creds.o: heim_err.h
+get_for_creds.o: k524_err.h
+get_for_creds.o: krb5_err.h
+get_for_creds.po: heim_err.h
+get_for_creds.po: k524_err.h
+get_for_creds.po: krb5_err.h
+get_host_realm.So: heim_err.h
+get_host_realm.So: k524_err.h
+get_host_realm.So: krb5_err.h
+get_host_realm.o: heim_err.h
+get_host_realm.o: k524_err.h
+get_host_realm.o: krb5_err.h
+get_host_realm.po: heim_err.h
+get_host_realm.po: k524_err.h
+get_host_realm.po: krb5_err.h
+get_in_tkt.So: heim_err.h
+get_in_tkt.So: k524_err.h
+get_in_tkt.So: krb5_err.h
+get_in_tkt.o: heim_err.h
+get_in_tkt.o: k524_err.h
+get_in_tkt.o: krb5_err.h
+get_in_tkt.po: heim_err.h
+get_in_tkt.po: k524_err.h
+get_in_tkt.po: krb5_err.h
+get_port.So: heim_err.h
+get_port.So: k524_err.h
+get_port.So: krb5_err.h
+get_port.o: heim_err.h
+get_port.o: k524_err.h
+get_port.o: krb5_err.h
+get_port.po: heim_err.h
+get_port.po: k524_err.h
+get_port.po: krb5_err.h
+heim_err.So: heim_err.c
+heim_err.So: heim_err.h
+heim_err.o: heim_err.c
+heim_err.o: heim_err.h
+heim_err.po: heim_err.c
+heim_err.po: heim_err.h
+init_creds.So: heim_err.h
+init_creds.So: k524_err.h
+init_creds.So: krb5_err.h
+init_creds.o: heim_err.h
+init_creds.o: k524_err.h
+init_creds.o: krb5_err.h
+init_creds.po: heim_err.h
+init_creds.po: k524_err.h
+init_creds.po: krb5_err.h
+init_creds_pw.So: heim_err.h
+init_creds_pw.So: k524_err.h
+init_creds_pw.So: krb5_err.h
+init_creds_pw.o: heim_err.h
+init_creds_pw.o: k524_err.h
+init_creds_pw.o: krb5_err.h
+init_creds_pw.po: heim_err.h
+init_creds_pw.po: k524_err.h
+init_creds_pw.po: krb5_err.h
+k524_err.So: k524_err.c
+k524_err.So: k524_err.h
+k524_err.o: k524_err.c
+k524_err.o: k524_err.h
+k524_err.po: k524_err.c
+k524_err.po: k524_err.h
+kcm.So: heim_err.h
+kcm.So: k524_err.h
+kcm.So: krb5_err.h
+kcm.o: heim_err.h
+kcm.o: k524_err.h
+kcm.o: krb5_err.h
+kcm.po: heim_err.h
+kcm.po: k524_err.h
+kcm.po: krb5_err.h
+keyblock.So: heim_err.h
+keyblock.So: k524_err.h
+keyblock.So: krb5_err.h
+keyblock.o: heim_err.h
+keyblock.o: k524_err.h
+keyblock.o: krb5_err.h
+keyblock.po: heim_err.h
+keyblock.po: k524_err.h
+keyblock.po: krb5_err.h
+keytab.So: heim_err.h
+keytab.So: k524_err.h
+keytab.So: krb5_err.h
+keytab.o: heim_err.h
+keytab.o: k524_err.h
+keytab.o: krb5_err.h
+keytab.po: heim_err.h
+keytab.po: k524_err.h
+keytab.po: krb5_err.h
+keytab_any.So: heim_err.h
+keytab_any.So: k524_err.h
+keytab_any.So: krb5_err.h
+keytab_any.o: heim_err.h
+keytab_any.o: k524_err.h
+keytab_any.o: krb5_err.h
+keytab_any.po: heim_err.h
+keytab_any.po: k524_err.h
+keytab_any.po: krb5_err.h
+keytab_file.So: heim_err.h
+keytab_file.So: k524_err.h
+keytab_file.So: krb5_err.h
+keytab_file.o: heim_err.h
+keytab_file.o: k524_err.h
+keytab_file.o: krb5_err.h
+keytab_file.po: heim_err.h
+keytab_file.po: k524_err.h
+keytab_file.po: krb5_err.h
+keytab_keyfile.So: heim_err.h
+keytab_keyfile.So: k524_err.h
+keytab_keyfile.So: krb5_err.h
+keytab_keyfile.o: heim_err.h
+keytab_keyfile.o: k524_err.h
+keytab_keyfile.o: krb5_err.h
+keytab_keyfile.po: heim_err.h
+keytab_keyfile.po: k524_err.h
+keytab_keyfile.po: krb5_err.h
+keytab_memory.So: heim_err.h
+keytab_memory.So: k524_err.h
+keytab_memory.So: krb5_err.h
+keytab_memory.o: heim_err.h
+keytab_memory.o: k524_err.h
+keytab_memory.o: krb5_err.h
+keytab_memory.po: heim_err.h
+keytab_memory.po: k524_err.h
+keytab_memory.po: krb5_err.h
+krb5_err.So: krb5_err.c
+krb5_err.So: krb5_err.h
+krb5_err.o: krb5_err.c
+krb5_err.o: krb5_err.h
+krb5_err.po: krb5_err.c
+krb5_err.po: krb5_err.h
+krb_err.So: krb_err.c
+krb_err.So: krb_err.h
+krb_err.o: krb_err.c
+krb_err.o: krb_err.h
+krb_err.po: krb_err.c
+krb_err.po: krb_err.h
+krbhst.So: heim_err.h
+krbhst.So: k524_err.h
+krbhst.So: krb5_err.h
+krbhst.o: heim_err.h
+krbhst.o: k524_err.h
+krbhst.o: krb5_err.h
+krbhst.po: heim_err.h
+krbhst.po: k524_err.h
+krbhst.po: krb5_err.h
+kuserok.So: heim_err.h
+kuserok.So: k524_err.h
+kuserok.So: krb5_err.h
+kuserok.o: heim_err.h
+kuserok.o: k524_err.h
+kuserok.o: krb5_err.h
+kuserok.po: heim_err.h
+kuserok.po: k524_err.h
+kuserok.po: krb5_err.h
+log.So: heim_err.h
+log.So: k524_err.h
+log.So: krb5_err.h
+log.o: heim_err.h
+log.o: k524_err.h
+log.o: krb5_err.h
+log.po: heim_err.h
+log.po: k524_err.h
+log.po: krb5_err.h
+mcache.So: heim_err.h
+mcache.So: k524_err.h
+mcache.So: krb5_err.h
+mcache.o: heim_err.h
+mcache.o: k524_err.h
+mcache.o: krb5_err.h
+mcache.po: heim_err.h
+mcache.po: k524_err.h
+mcache.po: krb5_err.h
+misc.So: heim_err.h
+misc.So: k524_err.h
+misc.So: krb5_err.h
+misc.o: heim_err.h
+misc.o: k524_err.h
+misc.o: krb5_err.h
+misc.po: heim_err.h
+misc.po: k524_err.h
+misc.po: krb5_err.h
+mit_glue.So: heim_err.h
+mit_glue.So: k524_err.h
+mit_glue.So: krb5_err.h
+mit_glue.o: heim_err.h
+mit_glue.o: k524_err.h
+mit_glue.o: krb5_err.h
+mit_glue.po: heim_err.h
+mit_glue.po: k524_err.h
+mit_glue.po: krb5_err.h
+mk_error.So: heim_err.h
+mk_error.So: k524_err.h
+mk_error.So: krb5_err.h
+mk_error.o: heim_err.h
+mk_error.o: k524_err.h
+mk_error.o: krb5_err.h
+mk_error.po: heim_err.h
+mk_error.po: k524_err.h
+mk_error.po: krb5_err.h
+mk_priv.So: heim_err.h
+mk_priv.So: k524_err.h
+mk_priv.So: krb5_err.h
+mk_priv.o: heim_err.h
+mk_priv.o: k524_err.h
+mk_priv.o: krb5_err.h
+mk_priv.po: heim_err.h
+mk_priv.po: k524_err.h
+mk_priv.po: krb5_err.h
+mk_rep.So: heim_err.h
+mk_rep.So: k524_err.h
+mk_rep.So: krb5_err.h
+mk_rep.o: heim_err.h
+mk_rep.o: k524_err.h
+mk_rep.o: krb5_err.h
+mk_rep.po: heim_err.h
+mk_rep.po: k524_err.h
+mk_rep.po: krb5_err.h
+mk_req.So: heim_err.h
+mk_req.So: k524_err.h
+mk_req.So: krb5_err.h
+mk_req.o: heim_err.h
+mk_req.o: k524_err.h
+mk_req.o: krb5_err.h
+mk_req.po: heim_err.h
+mk_req.po: k524_err.h
+mk_req.po: krb5_err.h
+mk_req_ext.So: heim_err.h
+mk_req_ext.So: k524_err.h
+mk_req_ext.So: krb5_err.h
+mk_req_ext.o: heim_err.h
+mk_req_ext.o: k524_err.h
+mk_req_ext.o: krb5_err.h
+mk_req_ext.po: heim_err.h
+mk_req_ext.po: k524_err.h
+mk_req_ext.po: krb5_err.h
+mk_safe.So: heim_err.h
+mk_safe.So: k524_err.h
+mk_safe.So: krb5_err.h
+mk_safe.o: heim_err.h
+mk_safe.o: k524_err.h
+mk_safe.o: krb5_err.h
+mk_safe.po: heim_err.h
+mk_safe.po: k524_err.h
+mk_safe.po: krb5_err.h
+n-fold.So: heim_err.h
+n-fold.So: k524_err.h
+n-fold.So: krb5_err.h
+n-fold.o: heim_err.h
+n-fold.o: k524_err.h
+n-fold.o: krb5_err.h
+n-fold.po: heim_err.h
+n-fold.po: k524_err.h
+n-fold.po: krb5_err.h
+net_read.So: heim_err.h
+net_read.So: k524_err.h
+net_read.So: krb5_err.h
+net_read.o: heim_err.h
+net_read.o: k524_err.h
+net_read.o: krb5_err.h
+net_read.po: heim_err.h
+net_read.po: k524_err.h
+net_read.po: krb5_err.h
+net_write.So: heim_err.h
+net_write.So: k524_err.h
+net_write.So: krb5_err.h
+net_write.o: heim_err.h
+net_write.o: k524_err.h
+net_write.o: krb5_err.h
+net_write.po: heim_err.h
+net_write.po: k524_err.h
+net_write.po: krb5_err.h
+pac.So: heim_err.h
+pac.So: k524_err.h
+pac.So: krb5_err.h
+pac.o: heim_err.h
+pac.o: k524_err.h
+pac.o: krb5_err.h
+pac.po: heim_err.h
+pac.po: k524_err.h
+pac.po: krb5_err.h
+padata.So: heim_err.h
+padata.So: k524_err.h
+padata.So: krb5_err.h
+padata.o: heim_err.h
+padata.o: k524_err.h
+padata.o: krb5_err.h
+padata.po: heim_err.h
+padata.po: k524_err.h
+padata.po: krb5_err.h
+pcache.So: heim_err.h
+pcache.So: k524_err.h
+pcache.So: krb5_err.h
+pcache.o: heim_err.h
+pcache.o: k524_err.h
+pcache.o: krb5_err.h
+pcache.po: heim_err.h
+pcache.po: k524_err.h
+pcache.po: krb5_err.h
+pkinit.So: heim_err.h
+pkinit.So: k524_err.h
+pkinit.So: krb5_err.h
+pkinit.o: heim_err.h
+pkinit.o: k524_err.h
+pkinit.o: krb5_err.h
+pkinit.po: heim_err.h
+pkinit.po: k524_err.h
+pkinit.po: krb5_err.h
+plugin.So: heim_err.h
+plugin.So: k524_err.h
+plugin.So: krb5_err.h
+plugin.o: heim_err.h
+plugin.o: k524_err.h
+plugin.o: krb5_err.h
+plugin.po: heim_err.h
+plugin.po: k524_err.h
+plugin.po: krb5_err.h
+principal.So: heim_err.h
+principal.So: k524_err.h
+principal.So: krb5_err.h
+principal.o: heim_err.h
+principal.o: k524_err.h
+principal.o: krb5_err.h
+principal.po: heim_err.h
+principal.po: k524_err.h
+principal.po: krb5_err.h
+prog_setup.So: heim_err.h
+prog_setup.So: k524_err.h
+prog_setup.So: krb5_err.h
+prog_setup.o: heim_err.h
+prog_setup.o: k524_err.h
+prog_setup.o: krb5_err.h
+prog_setup.po: heim_err.h
+prog_setup.po: k524_err.h
+prog_setup.po: krb5_err.h
+prompter_posix.So: heim_err.h
+prompter_posix.So: k524_err.h
+prompter_posix.So: krb5_err.h
+prompter_posix.o: heim_err.h
+prompter_posix.o: k524_err.h
+prompter_posix.o: krb5_err.h
+prompter_posix.po: heim_err.h
+prompter_posix.po: k524_err.h
+prompter_posix.po: krb5_err.h
+rd_cred.So: heim_err.h
+rd_cred.So: k524_err.h
+rd_cred.So: krb5_err.h
+rd_cred.o: heim_err.h
+rd_cred.o: k524_err.h
+rd_cred.o: krb5_err.h
+rd_cred.po: heim_err.h
+rd_cred.po: k524_err.h
+rd_cred.po: krb5_err.h
+rd_error.So: heim_err.h
+rd_error.So: k524_err.h
+rd_error.So: krb5_err.h
+rd_error.o: heim_err.h
+rd_error.o: k524_err.h
+rd_error.o: krb5_err.h
+rd_error.po: heim_err.h
+rd_error.po: k524_err.h
+rd_error.po: krb5_err.h
+rd_priv.So: heim_err.h
+rd_priv.So: k524_err.h
+rd_priv.So: krb5_err.h
+rd_priv.o: heim_err.h
+rd_priv.o: k524_err.h
+rd_priv.o: krb5_err.h
+rd_priv.po: heim_err.h
+rd_priv.po: k524_err.h
+rd_priv.po: krb5_err.h
+rd_rep.So: heim_err.h
+rd_rep.So: k524_err.h
+rd_rep.So: krb5_err.h
+rd_rep.o: heim_err.h
+rd_rep.o: k524_err.h
+rd_rep.o: krb5_err.h
+rd_rep.po: heim_err.h
+rd_rep.po: k524_err.h
+rd_rep.po: krb5_err.h
+rd_req.So: heim_err.h
+rd_req.So: k524_err.h
+rd_req.So: krb5_err.h
+rd_req.o: heim_err.h
+rd_req.o: k524_err.h
+rd_req.o: krb5_err.h
+rd_req.po: heim_err.h
+rd_req.po: k524_err.h
+rd_req.po: krb5_err.h
+rd_safe.So: heim_err.h
+rd_safe.So: k524_err.h
+rd_safe.So: krb5_err.h
+rd_safe.o: heim_err.h
+rd_safe.o: k524_err.h
+rd_safe.o: krb5_err.h
+rd_safe.po: heim_err.h
+rd_safe.po: k524_err.h
+rd_safe.po: krb5_err.h
+read_message.So: heim_err.h
+read_message.So: k524_err.h
+read_message.So: krb5_err.h
+read_message.o: heim_err.h
+read_message.o: k524_err.h
+read_message.o: krb5_err.h
+read_message.po: heim_err.h
+read_message.po: k524_err.h
+read_message.po: krb5_err.h
+recvauth.So: heim_err.h
+recvauth.So: k524_err.h
+recvauth.So: krb5_err.h
+recvauth.o: heim_err.h
+recvauth.o: k524_err.h
+recvauth.o: krb5_err.h
+recvauth.po: heim_err.h
+recvauth.po: k524_err.h
+recvauth.po: krb5_err.h
+replay.So: heim_err.h
+replay.So: k524_err.h
+replay.So: krb5_err.h
+replay.o: heim_err.h
+replay.o: k524_err.h
+replay.o: krb5_err.h
+replay.po: heim_err.h
+replay.po: k524_err.h
+replay.po: krb5_err.h
+salt-aes.So: heim_err.h
+salt-aes.So: k524_err.h
+salt-aes.So: krb5_err.h
+salt-aes.o: heim_err.h
+salt-aes.o: k524_err.h
+salt-aes.o: krb5_err.h
+salt-aes.po: heim_err.h
+salt-aes.po: k524_err.h
+salt-aes.po: krb5_err.h
+salt-arcfour.So: heim_err.h
+salt-arcfour.So: k524_err.h
+salt-arcfour.So: krb5_err.h
+salt-arcfour.o: heim_err.h
+salt-arcfour.o: k524_err.h
+salt-arcfour.o: krb5_err.h
+salt-arcfour.po: heim_err.h
+salt-arcfour.po: k524_err.h
+salt-arcfour.po: krb5_err.h
+salt-des.So: heim_err.h
+salt-des.So: k524_err.h
+salt-des.So: krb5_err.h
+salt-des.o: heim_err.h
+salt-des.o: k524_err.h
+salt-des.o: krb5_err.h
+salt-des.po: heim_err.h
+salt-des.po: k524_err.h
+salt-des.po: krb5_err.h
+salt-des3.So: heim_err.h
+salt-des3.So: k524_err.h
+salt-des3.So: krb5_err.h
+salt-des3.o: heim_err.h
+salt-des3.o: k524_err.h
+salt-des3.o: krb5_err.h
+salt-des3.po: heim_err.h
+salt-des3.po: k524_err.h
+salt-des3.po: krb5_err.h
+salt.So: heim_err.h
+salt.So: k524_err.h
+salt.So: krb5_err.h
+salt.o: heim_err.h
+salt.o: k524_err.h
+salt.o: krb5_err.h
+salt.po: heim_err.h
+salt.po: k524_err.h
+salt.po: krb5_err.h
+scache.So: heim_err.h
+scache.So: k524_err.h
+scache.So: krb5_err.h
+scache.o: heim_err.h
+scache.o: k524_err.h
+scache.o: krb5_err.h
+scache.po: heim_err.h
+scache.po: k524_err.h
+scache.po: krb5_err.h
+send_to_kdc.So: heim_err.h
+send_to_kdc.So: k524_err.h
+send_to_kdc.So: krb5_err.h
+send_to_kdc.o: heim_err.h
+send_to_kdc.o: k524_err.h
+send_to_kdc.o: krb5_err.h
+send_to_kdc.po: heim_err.h
+send_to_kdc.po: k524_err.h
+send_to_kdc.po: krb5_err.h
+sendauth.So: heim_err.h
+sendauth.So: k524_err.h
+sendauth.So: krb5_err.h
+sendauth.o: heim_err.h
+sendauth.o: k524_err.h
+sendauth.o: krb5_err.h
+sendauth.po: heim_err.h
+sendauth.po: k524_err.h
+sendauth.po: krb5_err.h
+set_default_realm.So: heim_err.h
+set_default_realm.So: k524_err.h
+set_default_realm.So: krb5_err.h
+set_default_realm.o: heim_err.h
+set_default_realm.o: k524_err.h
+set_default_realm.o: krb5_err.h
+set_default_realm.po: heim_err.h
+set_default_realm.po: k524_err.h
+set_default_realm.po: krb5_err.h
+sock_principal.So: heim_err.h
+sock_principal.So: k524_err.h
+sock_principal.So: krb5_err.h
+sock_principal.o: heim_err.h
+sock_principal.o: k524_err.h
+sock_principal.o: krb5_err.h
+sock_principal.po: heim_err.h
+sock_principal.po: k524_err.h
+sock_principal.po: krb5_err.h
+store-int.So: heim_err.h
+store-int.So: k524_err.h
+store-int.So: krb5_err.h
+store-int.o: heim_err.h
+store-int.o: k524_err.h
+store-int.o: krb5_err.h
+store-int.po: heim_err.h
+store-int.po: k524_err.h
+store-int.po: krb5_err.h
+store.So: heim_err.h
+store.So: k524_err.h
+store.So: krb5_err.h
+store.o: heim_err.h
+store.o: k524_err.h
+store.o: krb5_err.h
+store.po: heim_err.h
+store.po: k524_err.h
+store.po: krb5_err.h
+store_emem.So: heim_err.h
+store_emem.So: k524_err.h
+store_emem.So: krb5_err.h
+store_emem.o: heim_err.h
+store_emem.o: k524_err.h
+store_emem.o: krb5_err.h
+store_emem.po: heim_err.h
+store_emem.po: k524_err.h
+store_emem.po: krb5_err.h
+store_fd.So: heim_err.h
+store_fd.So: k524_err.h
+store_fd.So: krb5_err.h
+store_fd.o: heim_err.h
+store_fd.o: k524_err.h
+store_fd.o: krb5_err.h
+store_fd.po: heim_err.h
+store_fd.po: k524_err.h
+store_fd.po: krb5_err.h
+store_mem.So: heim_err.h
+store_mem.So: k524_err.h
+store_mem.So: krb5_err.h
+store_mem.o: heim_err.h
+store_mem.o: k524_err.h
+store_mem.o: krb5_err.h
+store_mem.po: heim_err.h
+store_mem.po: k524_err.h
+store_mem.po: krb5_err.h
+ticket.So: heim_err.h
+ticket.So: k524_err.h
+ticket.So: krb5_err.h
+ticket.o: heim_err.h
+ticket.o: k524_err.h
+ticket.o: krb5_err.h
+ticket.po: heim_err.h
+ticket.po: k524_err.h
+ticket.po: krb5_err.h
+time.So: heim_err.h
+time.So: k524_err.h
+time.So: krb5_err.h
+time.o: heim_err.h
+time.o: k524_err.h
+time.o: krb5_err.h
+time.po: heim_err.h
+time.po: k524_err.h
+time.po: krb5_err.h
+transited.So: heim_err.h
+transited.So: k524_err.h
+transited.So: krb5_err.h
+transited.o: heim_err.h
+transited.o: k524_err.h
+transited.o: krb5_err.h
+transited.po: heim_err.h
+transited.po: k524_err.h
+transited.po: krb5_err.h
+verify_init.So: heim_err.h
+verify_init.So: k524_err.h
+verify_init.So: krb5_err.h
+verify_init.o: heim_err.h
+verify_init.o: k524_err.h
+verify_init.o: krb5_err.h
+verify_init.po: heim_err.h
+verify_init.po: k524_err.h
+verify_init.po: krb5_err.h
+verify_user.So: heim_err.h
+verify_user.So: k524_err.h
+verify_user.So: krb5_err.h
+verify_user.o: heim_err.h
+verify_user.o: k524_err.h
+verify_user.o: krb5_err.h
+verify_user.po: heim_err.h
+verify_user.po: k524_err.h
+verify_user.po: krb5_err.h
+version.So: heim_err.h
+version.So: k524_err.h
+version.So: krb5_err.h
+version.o: heim_err.h
+version.o: k524_err.h
+version.o: krb5_err.h
+version.po: heim_err.h
+version.po: k524_err.h
+version.po: krb5_err.h
+warn.So: heim_err.h
+warn.So: k524_err.h
+warn.So: krb5_err.h
+warn.o: heim_err.h
+warn.o: k524_err.h
+warn.o: krb5_err.h
+warn.po: heim_err.h
+warn.po: k524_err.h
+warn.po: krb5_err.h
+write_message.So: heim_err.h
+write_message.So: k524_err.h
+write_message.So: krb5_err.h
+write_message.o: heim_err.h
+write_message.o: k524_err.h
+write_message.o: krb5_err.h
+write_message.po: heim_err.h
+write_message.po: k524_err.h
+write_message.po: krb5_err.h
+.endif
diff --git a/kerberos5/lib/libroken/Makefile.depend b/kerberos5/lib/libroken/Makefile.depend
new file mode 100644
index 0000000..102ac86
--- /dev/null
+++ b/kerberos5/lib/libroken/Makefile.depend
@@ -0,0 +1,177 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bswap.So: roken.h
+bswap.o: roken.h
+bswap.po: roken.h
+cloexec.So: roken.h
+cloexec.o: roken.h
+cloexec.po: roken.h
+concat.So: roken.h
+concat.o: roken.h
+concat.po: roken.h
+copyhostent.So: roken.h
+copyhostent.o: roken.h
+copyhostent.po: roken.h
+ct.So: roken.h
+ct.o: roken.h
+ct.po: roken.h
+dumpdata.So: roken.h
+dumpdata.o: roken.h
+dumpdata.po: roken.h
+ecalloc.So: roken.h
+ecalloc.o: roken.h
+ecalloc.po: roken.h
+emalloc.So: roken.h
+emalloc.o: roken.h
+emalloc.po: roken.h
+environment.So: roken.h
+environment.o: roken.h
+environment.po: roken.h
+eread.So: roken.h
+eread.o: roken.h
+eread.po: roken.h
+erealloc.So: roken.h
+erealloc.o: roken.h
+erealloc.po: roken.h
+esetenv.So: roken.h
+esetenv.o: roken.h
+esetenv.po: roken.h
+estrdup.So: roken.h
+estrdup.o: roken.h
+estrdup.po: roken.h
+ewrite.So: roken.h
+ewrite.o: roken.h
+ewrite.po: roken.h
+get_default_username.So: roken.h
+get_default_username.o: roken.h
+get_default_username.po: roken.h
+get_window_size.So: roken.h
+get_window_size.o: roken.h
+get_window_size.po: roken.h
+getaddrinfo_hostspec.So: roken.h
+getaddrinfo_hostspec.o: roken.h
+getaddrinfo_hostspec.po: roken.h
+getarg.So: roken.h
+getarg.o: roken.h
+getarg.po: roken.h
+getnameinfo_verified.So: roken.h
+getnameinfo_verified.o: roken.h
+getnameinfo_verified.po: roken.h
+getprogname.So: roken.h
+getprogname.o: roken.h
+getprogname.po: roken.h
+hex.So: roken.h
+hex.o: roken.h
+hex.po: roken.h
+hostent_find_fqdn.So: roken.h
+hostent_find_fqdn.o: roken.h
+hostent_find_fqdn.po: roken.h
+issuid.So: roken.h
+issuid.o: roken.h
+issuid.po: roken.h
+k_getpwnam.So: roken.h
+k_getpwnam.o: roken.h
+k_getpwnam.po: roken.h
+k_getpwuid.So: roken.h
+k_getpwuid.o: roken.h
+k_getpwuid.po: roken.h
+mini_inetd.So: roken.h
+mini_inetd.o: roken.h
+mini_inetd.po: roken.h
+net_read.So: roken.h
+net_read.o: roken.h
+net_read.po: roken.h
+net_write.So: roken.h
+net_write.o: roken.h
+net_write.po: roken.h
+parse_units.So: roken.h
+parse_units.o: roken.h
+parse_units.po: roken.h
+rand.So: roken.h
+rand.o: roken.h
+rand.po: roken.h
+realloc.So: roken.h
+realloc.o: roken.h
+realloc.po: roken.h
+resolve.So: roken.h
+resolve.o: roken.h
+resolve.po: roken.h
+roken_gethostby.So: roken.h
+roken_gethostby.o: roken.h
+roken_gethostby.po: roken.h
+rtbl.So: roken.h
+rtbl.o: roken.h
+rtbl.po: roken.h
+setprogname.So: roken.h
+setprogname.o: roken.h
+setprogname.po: roken.h
+signal.So: roken.h
+signal.o: roken.h
+signal.po: roken.h
+simple_exec.So: roken.h
+simple_exec.o: roken.h
+simple_exec.po: roken.h
+snprintf.So: roken.h
+snprintf.o: roken.h
+snprintf.po: roken.h
+socket.So: roken.h
+socket.o: roken.h
+socket.po: roken.h
+strcollect.So: roken.h
+strcollect.o: roken.h
+strcollect.po: roken.h
+strlwr.So: roken.h
+strlwr.o: roken.h
+strlwr.po: roken.h
+strpool.So: roken.h
+strpool.o: roken.h
+strpool.po: roken.h
+strsep_copy.So: roken.h
+strsep_copy.o: roken.h
+strsep_copy.po: roken.h
+strupr.So: roken.h
+strupr.o: roken.h
+strupr.po: roken.h
+timeval.So: roken.h
+timeval.o: roken.h
+timeval.po: roken.h
+tm2time.So: roken.h
+tm2time.o: roken.h
+tm2time.po: roken.h
+unvis.So: roken.h
+unvis.o: roken.h
+unvis.po: roken.h
+verify.So: roken.h
+verify.o: roken.h
+verify.po: roken.h
+vis.So: roken.h
+vis.o: roken.h
+vis.po: roken.h
+warnerr.So: roken.h
+warnerr.o: roken.h
+warnerr.po: roken.h
+write_pid.So: roken.h
+write_pid.o: roken.h
+write_pid.po: roken.h
+xfree.So: roken.h
+xfree.o: roken.h
+xfree.po: roken.h
+.endif
diff --git a/kerberos5/lib/libsl/Makefile.depend b/kerberos5/lib/libsl/Makefile.depend
new file mode 100644
index 0000000..bf55d61
--- /dev/null
+++ b/kerberos5/lib/libsl/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libvers/Makefile.depend b/kerberos5/lib/libvers/Makefile.depend
new file mode 100644
index 0000000..ae841b8
--- /dev/null
+++ b/kerberos5/lib/libvers/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+print_version.o: roken.h
+print_version.po: roken.h
+.endif
diff --git a/kerberos5/lib/libwind/Makefile.depend b/kerberos5/lib/libwind/Makefile.depend
new file mode 100644
index 0000000..6ed1a57
--- /dev/null
+++ b/kerberos5/lib/libwind/Makefile.depend
@@ -0,0 +1,61 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bidi.So: wind_err.h
+bidi.o: wind_err.h
+bidi.po: wind_err.h
+combining.So: wind_err.h
+combining.o: wind_err.h
+combining.po: wind_err.h
+errorlist.So: wind_err.h
+errorlist.o: wind_err.h
+errorlist.po: wind_err.h
+errorlist_table.So: wind_err.h
+errorlist_table.o: wind_err.h
+errorlist_table.po: wind_err.h
+ldap.So: wind_err.h
+ldap.o: wind_err.h
+ldap.po: wind_err.h
+map.So: wind_err.h
+map.o: wind_err.h
+map.po: wind_err.h
+map_table.So: wind_err.h
+map_table.o: wind_err.h
+map_table.po: wind_err.h
+normalize.So: wind_err.h
+normalize.o: wind_err.h
+normalize.po: wind_err.h
+punycode.So: wind_err.h
+punycode.o: wind_err.h
+punycode.po: wind_err.h
+stringprep.So: wind_err.h
+stringprep.o: wind_err.h
+stringprep.po: wind_err.h
+utf8.So: wind_err.h
+utf8.o: wind_err.h
+utf8.po: wind_err.h
+wind_err.So: wind_err.c
+wind_err.So: wind_err.h
+wind_err.o: wind_err.c
+wind_err.o: wind_err.h
+wind_err.po: wind_err.c
+wind_err.po: wind_err.h
+.endif
diff --git a/kerberos5/libexec/digest-service/Makefile.depend b/kerberos5/libexec/digest-service/Makefile.depend
new file mode 100644
index 0000000..65f84a9
--- /dev/null
+++ b/kerberos5/libexec/digest-service/Makefile.depend
@@ -0,0 +1,37 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/hprop/Makefile.depend b/kerberos5/libexec/hprop/Makefile.depend
new file mode 100644
index 0000000..df6a5f7
--- /dev/null
+++ b/kerberos5/libexec/hprop/Makefile.depend
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/hpropd/Makefile.depend b/kerberos5/libexec/hpropd/Makefile.depend
new file mode 100644
index 0000000..fc78d6c
--- /dev/null
+++ b/kerberos5/libexec/hpropd/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/ipropd-master/Makefile.depend b/kerberos5/libexec/ipropd-master/Makefile.depend
new file mode 100644
index 0000000..35482e2
--- /dev/null
+++ b/kerberos5/libexec/ipropd-master/Makefile.depend
@@ -0,0 +1,38 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipropd_common.o: kadm5_err.h
+ipropd_common.po: kadm5_err.h
+ipropd_master.o: kadm5_err.h
+ipropd_master.po: kadm5_err.h
+.endif
diff --git a/kerberos5/libexec/ipropd-slave/Makefile.depend b/kerberos5/libexec/ipropd-slave/Makefile.depend
new file mode 100644
index 0000000..bbde923
--- /dev/null
+++ b/kerberos5/libexec/ipropd-slave/Makefile.depend
@@ -0,0 +1,38 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipropd_common.o: kadm5_err.h
+ipropd_common.po: kadm5_err.h
+ipropd_slave.o: kadm5_err.h
+ipropd_slave.po: kadm5_err.h
+.endif
diff --git a/kerberos5/libexec/kadmind/Makefile.depend b/kerberos5/libexec/kadmind/Makefile.depend
new file mode 100644
index 0000000..0fd8ac8
--- /dev/null
+++ b/kerberos5/libexec/kadmind/Makefile.depend
@@ -0,0 +1,38 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kcm/Makefile.depend b/kerberos5/libexec/kcm/Makefile.depend
new file mode 100644
index 0000000..aa443c3
--- /dev/null
+++ b/kerberos5/libexec/kcm/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kdc/Makefile.depend b/kerberos5/libexec/kdc/Makefile.depend
new file mode 100644
index 0000000..eb56231
--- /dev/null
+++ b/kerberos5/libexec/kdc/Makefile.depend
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kdigest/Makefile.depend b/kerberos5/libexec/kdigest/Makefile.depend
new file mode 100644
index 0000000..a87c8e0
--- /dev/null
+++ b/kerberos5/libexec/kdigest/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+kdigest-commands.o: kdigest-commands.c
+kdigest-commands.o: kdigest-commands.h
+kdigest-commands.po: kdigest-commands.c
+kdigest-commands.po: kdigest-commands.h
+kdigest.o: kdigest-commands.h
+kdigest.po: kdigest-commands.h
+.endif
diff --git a/kerberos5/libexec/kfd/Makefile.depend b/kerberos5/libexec/kfd/Makefile.depend
new file mode 100644
index 0000000..b434af8
--- /dev/null
+++ b/kerberos5/libexec/kfd/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kimpersonate/Makefile.depend b/kerberos5/libexec/kimpersonate/Makefile.depend
new file mode 100644
index 0000000..9e85d37
--- /dev/null
+++ b/kerberos5/libexec/kimpersonate/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kpasswdd/Makefile.depend b/kerberos5/libexec/kpasswdd/Makefile.depend
new file mode 100644
index 0000000..1c794c4
--- /dev/null
+++ b/kerberos5/libexec/kpasswdd/Makefile.depend
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/tools/asn1_compile/Makefile.depend b/kerberos5/tools/asn1_compile/Makefile.depend
new file mode 100644
index 0000000..cdec769
--- /dev/null
+++ b/kerberos5/tools/asn1_compile/Makefile.depend
@@ -0,0 +1,56 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1parse.o: asn1parse.c
+asn1parse.o: roken.h
+asn1parse.po: asn1parse.c
+asn1parse.po: roken.h
+gen.o: roken.h
+gen.po: roken.h
+gen_copy.o: roken.h
+gen_copy.po: roken.h
+gen_decode.o: roken.h
+gen_decode.po: roken.h
+gen_encode.o: roken.h
+gen_encode.po: roken.h
+gen_free.o: roken.h
+gen_free.po: roken.h
+gen_glue.o: roken.h
+gen_glue.po: roken.h
+gen_length.o: roken.h
+gen_length.po: roken.h
+gen_seq.o: roken.h
+gen_seq.po: roken.h
+gen_template.o: roken.h
+gen_template.po: roken.h
+hash.o: roken.h
+hash.po: roken.h
+lex.o: asn1parse.h
+lex.o: lex.c
+lex.o: roken.h
+lex.po: asn1parse.h
+lex.po: lex.c
+lex.po: roken.h
+main.o: roken.h
+main.po: roken.h
+symbol.o: roken.h
+symbol.po: roken.h
+.endif
diff --git a/kerberos5/tools/make-roken/Makefile.depend b/kerberos5/tools/make-roken/Makefile.depend
new file mode 100644
index 0000000..ef25e5c
--- /dev/null
+++ b/kerberos5/tools/make-roken/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+make-roken.o: make-roken.c
+make-roken.po: make-roken.c
+.endif
diff --git a/kerberos5/tools/slc/Makefile.depend b/kerberos5/tools/slc/Makefile.depend
new file mode 100644
index 0000000..f585953
--- /dev/null
+++ b/kerberos5/tools/slc/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+slc-gram.o: roken.h
+slc-gram.o: slc-gram.c
+slc-gram.po: roken.h
+slc-gram.po: slc-gram.c
+slc-lex.o: slc-gram.h
+slc-lex.o: slc-lex.c
+slc-lex.po: slc-gram.h
+slc-lex.po: slc-lex.c
+.endif
diff --git a/kerberos5/usr.bin/hxtool/Makefile.depend b/kerberos5/usr.bin/hxtool/Makefile.depend
new file mode 100644
index 0000000..b39235f
--- /dev/null
+++ b/kerberos5/usr.bin/hxtool/Makefile.depend
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hxtool-commands.o: hxtool-commands.c
+hxtool-commands.o: hxtool-commands.h
+hxtool-commands.po: hxtool-commands.c
+hxtool-commands.po: hxtool-commands.h
+hxtool.o: hxtool-commands.h
+hxtool.po: hxtool-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kadmin/Makefile.depend b/kerberos5/usr.bin/kadmin/Makefile.depend
new file mode 100644
index 0000000..ba39879
--- /dev/null
+++ b/kerberos5/usr.bin/kadmin/Makefile.depend
@@ -0,0 +1,75 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+add_enctype.o: kadmin-commands.h
+add_enctype.po: kadmin-commands.h
+ank.o: kadmin-commands.h
+ank.po: kadmin-commands.h
+check.o: kadmin-commands.h
+check.po: kadmin-commands.h
+cpw.o: kadmin-commands.h
+cpw.po: kadmin-commands.h
+del.o: kadmin-commands.h
+del.po: kadmin-commands.h
+del_enctype.o: kadmin-commands.h
+del_enctype.po: kadmin-commands.h
+dump.o: kadmin-commands.h
+dump.po: kadmin-commands.h
+ext.o: kadmin-commands.h
+ext.po: kadmin-commands.h
+get.o: kadmin-commands.h
+get.po: kadmin-commands.h
+init.o: kadmin-commands.h
+init.po: kadmin-commands.h
+kadmin-commands.o: kadmin-commands.c
+kadmin-commands.o: kadmin-commands.h
+kadmin-commands.po: kadmin-commands.c
+kadmin-commands.po: kadmin-commands.h
+kadmin.o: kadmin-commands.h
+kadmin.po: kadmin-commands.h
+load.o: kadmin-commands.h
+load.po: kadmin-commands.h
+mod.o: kadmin-commands.h
+mod.po: kadmin-commands.h
+pw_quality.o: kadmin-commands.h
+pw_quality.po: kadmin-commands.h
+rename.o: kadmin-commands.h
+rename.po: kadmin-commands.h
+stash.o: kadmin-commands.h
+stash.po: kadmin-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kcc/Makefile.depend b/kerberos5/usr.bin/kcc/Makefile.depend
new file mode 100644
index 0000000..385f604
--- /dev/null
+++ b/kerberos5/usr.bin/kcc/Makefile.depend
@@ -0,0 +1,47 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+copy_cred_cache.o: kcc-commands.h
+copy_cred_cache.po: kcc-commands.h
+kcc-commands.o: kcc-commands.c
+kcc-commands.o: kcc-commands.h
+kcc-commands.po: kcc-commands.c
+kcc-commands.po: kcc-commands.h
+kcc.o: kcc-commands.h
+kcc.po: kcc-commands.h
+klist.o: kcc-commands.h
+klist.po: kcc-commands.h
+kswitch.o: kcc-commands.h
+kswitch.po: kcc-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kdestroy/Makefile.depend b/kerberos5/usr.bin/kdestroy/Makefile.depend
new file mode 100644
index 0000000..9e85d37
--- /dev/null
+++ b/kerberos5/usr.bin/kdestroy/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kf/Makefile.depend b/kerberos5/usr.bin/kf/Makefile.depend
new file mode 100644
index 0000000..b434af8
--- /dev/null
+++ b/kerberos5/usr.bin/kf/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kgetcred/Makefile.depend b/kerberos5/usr.bin/kgetcred/Makefile.depend
new file mode 100644
index 0000000..9e85d37
--- /dev/null
+++ b/kerberos5/usr.bin/kgetcred/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kinit/Makefile.depend b/kerberos5/usr.bin/kinit/Makefile.depend
new file mode 100644
index 0000000..dcd0d64
--- /dev/null
+++ b/kerberos5/usr.bin/kinit/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kpasswd/Makefile.depend b/kerberos5/usr.bin/kpasswd/Makefile.depend
new file mode 100644
index 0000000..1f4d460
--- /dev/null
+++ b/kerberos5/usr.bin/kpasswd/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/krb5-config/Makefile.depend b/kerberos5/usr.bin/krb5-config/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/kerberos5/usr.bin/krb5-config/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/ksu/Makefile.depend b/kerberos5/usr.bin/ksu/Makefile.depend
new file mode 100644
index 0000000..9e85d37
--- /dev/null
+++ b/kerberos5/usr.bin/ksu/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/string2key/Makefile.depend b/kerberos5/usr.bin/string2key/Makefile.depend
new file mode 100644
index 0000000..517300f
--- /dev/null
+++ b/kerberos5/usr.bin/string2key/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend b/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend
new file mode 100644
index 0000000..b434af8
--- /dev/null
+++ b/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.sbin/iprop-log/Makefile.depend b/kerberos5/usr.sbin/iprop-log/Makefile.depend
new file mode 100644
index 0000000..5d0a242
--- /dev/null
+++ b/kerberos5/usr.sbin/iprop-log/Makefile.depend
@@ -0,0 +1,45 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+iprop-commands.o: iprop-commands.c
+iprop-commands.o: iprop-commands.h
+iprop-commands.po: iprop-commands.c
+iprop-commands.po: iprop-commands.h
+iprop-log.o: iprop-commands.h
+iprop-log.o: kadm5_err.h
+iprop-log.po: iprop-commands.h
+iprop-log.po: kadm5_err.h
+.endif
diff --git a/kerberos5/usr.sbin/kstash/Makefile.depend b/kerberos5/usr.sbin/kstash/Makefile.depend
new file mode 100644
index 0000000..fc78d6c
--- /dev/null
+++ b/kerberos5/usr.sbin/kstash/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.sbin/ktutil/Makefile.depend b/kerberos5/usr.sbin/ktutil/Makefile.depend
new file mode 100644
index 0000000..4d47a99
--- /dev/null
+++ b/kerberos5/usr.sbin/ktutil/Makefile.depend
@@ -0,0 +1,59 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+add.o: ktutil-commands.h
+add.po: ktutil-commands.h
+change.o: ktutil-commands.h
+change.po: ktutil-commands.h
+copy.o: ktutil-commands.h
+copy.po: ktutil-commands.h
+destroy.o: ktutil-commands.h
+destroy.po: ktutil-commands.h
+get.o: ktutil-commands.h
+get.po: ktutil-commands.h
+ktutil-commands.o: ktutil-commands.c
+ktutil-commands.o: ktutil-commands.h
+ktutil-commands.po: ktutil-commands.c
+ktutil-commands.po: ktutil-commands.h
+ktutil.o: ktutil-commands.h
+ktutil.po: ktutil-commands.h
+list.o: ktutil-commands.h
+list.po: ktutil-commands.h
+purge.o: ktutil-commands.h
+purge.po: ktutil-commands.h
+remove.o: ktutil-commands.h
+remove.po: ktutil-commands.h
+rename.o: ktutil-commands.h
+rename.po: ktutil-commands.h
+.endif
diff --git a/lib/atf/libatf-c++/Makefile.depend b/lib/atf/libatf-c++/Makefile.depend
new file mode 100644
index 0000000..5de4727
--- /dev/null
+++ b/lib/atf/libatf-c++/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/atf/libatf-c/Makefile.depend b/lib/atf/libatf-c/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/atf/libatf-c/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/clang.build.mk b/lib/clang/clang.build.mk
index a3fae12..5cb0dd0 100644
--- a/lib/clang/clang.build.mk
+++ b/lib/clang/clang.build.mk
@@ -39,6 +39,24 @@ CXXFLAGS.clang+= -stdlib=libc++
.PATH: ${LLVM_SRCS}/${SRCDIR}
+.if empty(TOOLSDIR) || !exists(${TOOLSDIR}/usr/bin/clang-tblgen)
+.if ${MACHINE} == "host" && defined(BOOTSTRAPPING_TOOLS)
+.if !empty(LEGACY_TOOLS) && exists(${LEGACY_TOOLS}/usr/bin/tblgen)
+TOOLSDIR= ${LEGACY_TOOLS}
+.endif
+.endif
+.if ${MK_STAGING} == "yes" && exists(${STAGE_HOST_OBJTOP:Uno}/usr/bin/tblgen)
+TOOLSDIR= ${STAGE_HOST_OBJTOP}
+.endif
+.if exists(${LEGACY_TOOLS:Uno}/usr/bin/tblgen)
+TOOLSDIR= ${LEGACY_TOOLS}
+.endif
+.endif
+TOOLSDIR?=
+.if !empty(TOOLSDIR) && exists(${TOOLSDIR}/usr/bin/clang-tblgen)
+TBLGEN= ${TOOLSDIR}/usr/bin/tblgen
+CLANG_TBLGEN= ${TOOLSDIR}/usr/bin/clang-tblgen
+.endif
TBLGEN?= tblgen
CLANG_TBLGEN?= clang-tblgen
@@ -227,3 +245,7 @@ Checkers.inc.h: ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td
SRCS+= ${TGHDRS:C/$/.inc.h/}
DPSRCS+= ${TGHDRS:C/$/.inc.h/}
CLEANFILES+= ${TGHDRS:C/$/.inc.h/} ${TGHDRS:C/$/.inc.d/}
+
+# if we are not doing explicit 'make depend', there is
+# nothing to cause these to be generated.
+beforebuild: ${SRCS:M*.inc.h}
diff --git a/lib/clang/include/Makefile b/lib/clang/include/Makefile
index e605a22..e1697f7 100644
--- a/lib/clang/include/Makefile
+++ b/lib/clang/include/Makefile
@@ -64,4 +64,7 @@ INCS= Intrin.h \
GENINCS= arm_neon.h
CLEANFILES= ${GENINCS}
+# avoid a circular dependency
+GENDIRDEPS_FILTER+= Nusr.bin/clang/clang-tblgen.host
+
.include <bsd.prog.mk>
diff --git a/lib/clang/include/Makefile.depend b/lib/clang/include/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/lib/clang/include/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libclanganalysis/Makefile.depend b/lib/clang/libclanganalysis/Makefile.depend
new file mode 100644
index 0000000..5c5da718
--- /dev/null
+++ b/lib/clang/libclanganalysis/Makefile.depend
@@ -0,0 +1,196 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisDeclContext.o: AttrList.inc.h
+AnalysisDeclContext.o: Attrs.inc.h
+AnalysisDeclContext.o: CommentCommandList.inc.h
+AnalysisDeclContext.o: DeclNodes.inc.h
+AnalysisDeclContext.o: DiagnosticCommonKinds.inc.h
+AnalysisDeclContext.o: StmtNodes.inc.h
+AnalysisDeclContext.po: AttrList.inc.h
+AnalysisDeclContext.po: Attrs.inc.h
+AnalysisDeclContext.po: CommentCommandList.inc.h
+AnalysisDeclContext.po: DeclNodes.inc.h
+AnalysisDeclContext.po: DiagnosticCommonKinds.inc.h
+AnalysisDeclContext.po: StmtNodes.inc.h
+BodyFarm.o: CommentCommandList.inc.h
+BodyFarm.o: DeclNodes.inc.h
+BodyFarm.o: DiagnosticCommonKinds.inc.h
+BodyFarm.o: StmtNodes.inc.h
+BodyFarm.po: CommentCommandList.inc.h
+BodyFarm.po: DeclNodes.inc.h
+BodyFarm.po: DiagnosticCommonKinds.inc.h
+BodyFarm.po: StmtNodes.inc.h
+CFG.o: AttrList.inc.h
+CFG.o: Attrs.inc.h
+CFG.o: CommentCommandList.inc.h
+CFG.o: DeclNodes.inc.h
+CFG.o: DiagnosticCommonKinds.inc.h
+CFG.o: StmtNodes.inc.h
+CFG.po: AttrList.inc.h
+CFG.po: Attrs.inc.h
+CFG.po: CommentCommandList.inc.h
+CFG.po: DeclNodes.inc.h
+CFG.po: DiagnosticCommonKinds.inc.h
+CFG.po: StmtNodes.inc.h
+CFGReachabilityAnalysis.o: StmtNodes.inc.h
+CFGReachabilityAnalysis.po: StmtNodes.inc.h
+CFGStmtMap.o: StmtNodes.inc.h
+CFGStmtMap.po: StmtNodes.inc.h
+CallGraph.o: AttrList.inc.h
+CallGraph.o: AttrVisitor.inc.h
+CallGraph.o: Attrs.inc.h
+CallGraph.o: CommentCommandList.inc.h
+CallGraph.o: DeclNodes.inc.h
+CallGraph.o: DiagnosticCommonKinds.inc.h
+CallGraph.o: StmtNodes.inc.h
+CallGraph.po: AttrList.inc.h
+CallGraph.po: AttrVisitor.inc.h
+CallGraph.po: Attrs.inc.h
+CallGraph.po: CommentCommandList.inc.h
+CallGraph.po: DeclNodes.inc.h
+CallGraph.po: DiagnosticCommonKinds.inc.h
+CallGraph.po: StmtNodes.inc.h
+CocoaConventions.o: DeclNodes.inc.h
+CocoaConventions.o: DiagnosticCommonKinds.inc.h
+CocoaConventions.po: DeclNodes.inc.h
+CocoaConventions.po: DiagnosticCommonKinds.inc.h
+Consumed.o: AttrList.inc.h
+Consumed.o: AttrVisitor.inc.h
+Consumed.o: Attrs.inc.h
+Consumed.o: CommentCommandList.inc.h
+Consumed.o: DeclNodes.inc.h
+Consumed.o: DiagnosticCommonKinds.inc.h
+Consumed.o: StmtNodes.inc.h
+Consumed.po: AttrList.inc.h
+Consumed.po: AttrVisitor.inc.h
+Consumed.po: Attrs.inc.h
+Consumed.po: CommentCommandList.inc.h
+Consumed.po: DeclNodes.inc.h
+Consumed.po: DiagnosticCommonKinds.inc.h
+Consumed.po: StmtNodes.inc.h
+Dominators.o: DeclNodes.inc.h
+Dominators.o: DiagnosticCommonKinds.inc.h
+Dominators.o: StmtNodes.inc.h
+Dominators.po: DeclNodes.inc.h
+Dominators.po: DiagnosticCommonKinds.inc.h
+Dominators.po: StmtNodes.inc.h
+FormatString.o: CommentCommandList.inc.h
+FormatString.o: DeclNodes.inc.h
+FormatString.o: DiagnosticCommonKinds.inc.h
+FormatString.o: StmtNodes.inc.h
+FormatString.po: CommentCommandList.inc.h
+FormatString.po: DeclNodes.inc.h
+FormatString.po: DiagnosticCommonKinds.inc.h
+FormatString.po: StmtNodes.inc.h
+LiveVariables.o: DeclNodes.inc.h
+LiveVariables.o: DiagnosticCommonKinds.inc.h
+LiveVariables.o: StmtNodes.inc.h
+LiveVariables.po: DeclNodes.inc.h
+LiveVariables.po: DiagnosticCommonKinds.inc.h
+LiveVariables.po: StmtNodes.inc.h
+ObjCNoReturn.o: CommentCommandList.inc.h
+ObjCNoReturn.o: DeclNodes.inc.h
+ObjCNoReturn.o: DiagnosticCommonKinds.inc.h
+ObjCNoReturn.o: StmtNodes.inc.h
+ObjCNoReturn.po: CommentCommandList.inc.h
+ObjCNoReturn.po: DeclNodes.inc.h
+ObjCNoReturn.po: DiagnosticCommonKinds.inc.h
+ObjCNoReturn.po: StmtNodes.inc.h
+PostOrderCFGView.o: DeclNodes.inc.h
+PostOrderCFGView.o: DiagnosticCommonKinds.inc.h
+PostOrderCFGView.o: StmtNodes.inc.h
+PostOrderCFGView.po: DeclNodes.inc.h
+PostOrderCFGView.po: DiagnosticCommonKinds.inc.h
+PostOrderCFGView.po: StmtNodes.inc.h
+PrintfFormatString.o: CommentCommandList.inc.h
+PrintfFormatString.o: DeclNodes.inc.h
+PrintfFormatString.o: DiagnosticCommonKinds.inc.h
+PrintfFormatString.o: StmtNodes.inc.h
+PrintfFormatString.po: CommentCommandList.inc.h
+PrintfFormatString.po: DeclNodes.inc.h
+PrintfFormatString.po: DiagnosticCommonKinds.inc.h
+PrintfFormatString.po: StmtNodes.inc.h
+ProgramPoint.o: DeclNodes.inc.h
+ProgramPoint.o: DiagnosticCommonKinds.inc.h
+ProgramPoint.o: StmtNodes.inc.h
+ProgramPoint.po: DeclNodes.inc.h
+ProgramPoint.po: DiagnosticCommonKinds.inc.h
+ProgramPoint.po: StmtNodes.inc.h
+PseudoConstantAnalysis.o: DeclNodes.inc.h
+PseudoConstantAnalysis.o: DiagnosticCommonKinds.inc.h
+PseudoConstantAnalysis.o: StmtNodes.inc.h
+PseudoConstantAnalysis.po: DeclNodes.inc.h
+PseudoConstantAnalysis.po: DiagnosticCommonKinds.inc.h
+PseudoConstantAnalysis.po: StmtNodes.inc.h
+ReachableCode.o: DeclNodes.inc.h
+ReachableCode.o: DiagnosticCommonKinds.inc.h
+ReachableCode.o: StmtNodes.inc.h
+ReachableCode.po: DeclNodes.inc.h
+ReachableCode.po: DiagnosticCommonKinds.inc.h
+ReachableCode.po: StmtNodes.inc.h
+ScanfFormatString.o: CommentCommandList.inc.h
+ScanfFormatString.o: DeclNodes.inc.h
+ScanfFormatString.o: DiagnosticCommonKinds.inc.h
+ScanfFormatString.o: StmtNodes.inc.h
+ScanfFormatString.po: CommentCommandList.inc.h
+ScanfFormatString.po: DeclNodes.inc.h
+ScanfFormatString.po: DiagnosticCommonKinds.inc.h
+ScanfFormatString.po: StmtNodes.inc.h
+ThreadSafety.o: AttrList.inc.h
+ThreadSafety.o: Attrs.inc.h
+ThreadSafety.o: DeclNodes.inc.h
+ThreadSafety.o: DiagnosticCommonKinds.inc.h
+ThreadSafety.o: StmtNodes.inc.h
+ThreadSafety.po: AttrList.inc.h
+ThreadSafety.po: Attrs.inc.h
+ThreadSafety.po: DeclNodes.inc.h
+ThreadSafety.po: DiagnosticCommonKinds.inc.h
+ThreadSafety.po: StmtNodes.inc.h
+ThreadSafetyCommon.o: AttrList.inc.h
+ThreadSafetyCommon.o: Attrs.inc.h
+ThreadSafetyCommon.o: DeclNodes.inc.h
+ThreadSafetyCommon.o: DiagnosticCommonKinds.inc.h
+ThreadSafetyCommon.o: StmtNodes.inc.h
+ThreadSafetyCommon.po: AttrList.inc.h
+ThreadSafetyCommon.po: Attrs.inc.h
+ThreadSafetyCommon.po: DeclNodes.inc.h
+ThreadSafetyCommon.po: DiagnosticCommonKinds.inc.h
+ThreadSafetyCommon.po: StmtNodes.inc.h
+ThreadSafetyLogical.o: DeclNodes.inc.h
+ThreadSafetyLogical.o: DiagnosticCommonKinds.inc.h
+ThreadSafetyLogical.o: StmtNodes.inc.h
+ThreadSafetyLogical.po: DeclNodes.inc.h
+ThreadSafetyLogical.po: DiagnosticCommonKinds.inc.h
+ThreadSafetyLogical.po: StmtNodes.inc.h
+ThreadSafetyTIL.o: DeclNodes.inc.h
+ThreadSafetyTIL.o: DiagnosticCommonKinds.inc.h
+ThreadSafetyTIL.o: StmtNodes.inc.h
+ThreadSafetyTIL.po: DeclNodes.inc.h
+ThreadSafetyTIL.po: DiagnosticCommonKinds.inc.h
+ThreadSafetyTIL.po: StmtNodes.inc.h
+UninitializedValues.o: AttrList.inc.h
+UninitializedValues.o: Attrs.inc.h
+UninitializedValues.o: CommentCommandList.inc.h
+UninitializedValues.o: DeclNodes.inc.h
+UninitializedValues.o: DiagnosticCommonKinds.inc.h
+UninitializedValues.o: StmtNodes.inc.h
+UninitializedValues.po: AttrList.inc.h
+UninitializedValues.po: Attrs.inc.h
+UninitializedValues.po: CommentCommandList.inc.h
+UninitializedValues.po: DeclNodes.inc.h
+UninitializedValues.po: DiagnosticCommonKinds.inc.h
+UninitializedValues.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangarcmigrate/Makefile.depend b/lib/clang/libclangarcmigrate/Makefile.depend
new file mode 100644
index 0000000..70e0854
--- /dev/null
+++ b/lib/clang/libclangarcmigrate/Makefile.depend
@@ -0,0 +1,286 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARCMT.o: AttrList.inc.h
+ARCMT.o: AttrParsedAttrList.inc.h
+ARCMT.o: Attrs.inc.h
+ARCMT.o: CommentCommandList.inc.h
+ARCMT.o: DeclNodes.inc.h
+ARCMT.o: DiagnosticCommonKinds.inc.h
+ARCMT.o: DiagnosticGroups.inc.h
+ARCMT.o: DiagnosticSemaKinds.inc.h
+ARCMT.o: StmtNodes.inc.h
+ARCMT.po: AttrList.inc.h
+ARCMT.po: AttrParsedAttrList.inc.h
+ARCMT.po: Attrs.inc.h
+ARCMT.po: CommentCommandList.inc.h
+ARCMT.po: DeclNodes.inc.h
+ARCMT.po: DiagnosticCommonKinds.inc.h
+ARCMT.po: DiagnosticGroups.inc.h
+ARCMT.po: DiagnosticSemaKinds.inc.h
+ARCMT.po: StmtNodes.inc.h
+ARCMTActions.o: CommentCommandList.inc.h
+ARCMTActions.o: DeclNodes.inc.h
+ARCMTActions.o: DiagnosticCommonKinds.inc.h
+ARCMTActions.o: StmtNodes.inc.h
+ARCMTActions.po: CommentCommandList.inc.h
+ARCMTActions.po: DeclNodes.inc.h
+ARCMTActions.po: DiagnosticCommonKinds.inc.h
+ARCMTActions.po: StmtNodes.inc.h
+FileRemapper.o: DiagnosticCommonKinds.inc.h
+FileRemapper.po: DiagnosticCommonKinds.inc.h
+ObjCMT.o: AttrList.inc.h
+ObjCMT.o: AttrVisitor.inc.h
+ObjCMT.o: Attrs.inc.h
+ObjCMT.o: CommentCommandList.inc.h
+ObjCMT.o: DeclNodes.inc.h
+ObjCMT.o: DiagnosticCommonKinds.inc.h
+ObjCMT.o: StmtNodes.inc.h
+ObjCMT.po: AttrList.inc.h
+ObjCMT.po: AttrVisitor.inc.h
+ObjCMT.po: Attrs.inc.h
+ObjCMT.po: CommentCommandList.inc.h
+ObjCMT.po: DeclNodes.inc.h
+ObjCMT.po: DiagnosticCommonKinds.inc.h
+ObjCMT.po: StmtNodes.inc.h
+PlistReporter.o: DiagnosticCommonKinds.inc.h
+PlistReporter.po: DiagnosticCommonKinds.inc.h
+TransAPIUses.o: AttrList.inc.h
+TransAPIUses.o: AttrVisitor.inc.h
+TransAPIUses.o: Attrs.inc.h
+TransAPIUses.o: CommentCommandList.inc.h
+TransAPIUses.o: DeclNodes.inc.h
+TransAPIUses.o: DiagnosticCommonKinds.inc.h
+TransAPIUses.o: DiagnosticSemaKinds.inc.h
+TransAPIUses.o: StmtNodes.inc.h
+TransAPIUses.po: AttrList.inc.h
+TransAPIUses.po: AttrVisitor.inc.h
+TransAPIUses.po: Attrs.inc.h
+TransAPIUses.po: CommentCommandList.inc.h
+TransAPIUses.po: DeclNodes.inc.h
+TransAPIUses.po: DiagnosticCommonKinds.inc.h
+TransAPIUses.po: DiagnosticSemaKinds.inc.h
+TransAPIUses.po: StmtNodes.inc.h
+TransARCAssign.o: AttrList.inc.h
+TransARCAssign.o: AttrVisitor.inc.h
+TransARCAssign.o: Attrs.inc.h
+TransARCAssign.o: CommentCommandList.inc.h
+TransARCAssign.o: DeclNodes.inc.h
+TransARCAssign.o: DiagnosticCommonKinds.inc.h
+TransARCAssign.o: DiagnosticSemaKinds.inc.h
+TransARCAssign.o: StmtNodes.inc.h
+TransARCAssign.po: AttrList.inc.h
+TransARCAssign.po: AttrVisitor.inc.h
+TransARCAssign.po: Attrs.inc.h
+TransARCAssign.po: CommentCommandList.inc.h
+TransARCAssign.po: DeclNodes.inc.h
+TransARCAssign.po: DiagnosticCommonKinds.inc.h
+TransARCAssign.po: DiagnosticSemaKinds.inc.h
+TransARCAssign.po: StmtNodes.inc.h
+TransAutoreleasePool.o: AttrList.inc.h
+TransAutoreleasePool.o: AttrVisitor.inc.h
+TransAutoreleasePool.o: Attrs.inc.h
+TransAutoreleasePool.o: CommentCommandList.inc.h
+TransAutoreleasePool.o: DeclNodes.inc.h
+TransAutoreleasePool.o: DiagnosticCommonKinds.inc.h
+TransAutoreleasePool.o: DiagnosticSemaKinds.inc.h
+TransAutoreleasePool.o: StmtNodes.inc.h
+TransAutoreleasePool.po: AttrList.inc.h
+TransAutoreleasePool.po: AttrVisitor.inc.h
+TransAutoreleasePool.po: Attrs.inc.h
+TransAutoreleasePool.po: CommentCommandList.inc.h
+TransAutoreleasePool.po: DeclNodes.inc.h
+TransAutoreleasePool.po: DiagnosticCommonKinds.inc.h
+TransAutoreleasePool.po: DiagnosticSemaKinds.inc.h
+TransAutoreleasePool.po: StmtNodes.inc.h
+TransBlockObjCVariable.o: AttrList.inc.h
+TransBlockObjCVariable.o: AttrVisitor.inc.h
+TransBlockObjCVariable.o: Attrs.inc.h
+TransBlockObjCVariable.o: CommentCommandList.inc.h
+TransBlockObjCVariable.o: DeclNodes.inc.h
+TransBlockObjCVariable.o: DiagnosticCommonKinds.inc.h
+TransBlockObjCVariable.o: StmtNodes.inc.h
+TransBlockObjCVariable.po: AttrList.inc.h
+TransBlockObjCVariable.po: AttrVisitor.inc.h
+TransBlockObjCVariable.po: Attrs.inc.h
+TransBlockObjCVariable.po: CommentCommandList.inc.h
+TransBlockObjCVariable.po: DeclNodes.inc.h
+TransBlockObjCVariable.po: DiagnosticCommonKinds.inc.h
+TransBlockObjCVariable.po: StmtNodes.inc.h
+TransEmptyStatementsAndDealloc.o: AttrList.inc.h
+TransEmptyStatementsAndDealloc.o: AttrVisitor.inc.h
+TransEmptyStatementsAndDealloc.o: Attrs.inc.h
+TransEmptyStatementsAndDealloc.o: CommentCommandList.inc.h
+TransEmptyStatementsAndDealloc.o: DeclNodes.inc.h
+TransEmptyStatementsAndDealloc.o: DiagnosticCommonKinds.inc.h
+TransEmptyStatementsAndDealloc.o: StmtNodes.inc.h
+TransEmptyStatementsAndDealloc.po: AttrList.inc.h
+TransEmptyStatementsAndDealloc.po: AttrVisitor.inc.h
+TransEmptyStatementsAndDealloc.po: Attrs.inc.h
+TransEmptyStatementsAndDealloc.po: CommentCommandList.inc.h
+TransEmptyStatementsAndDealloc.po: DeclNodes.inc.h
+TransEmptyStatementsAndDealloc.po: DiagnosticCommonKinds.inc.h
+TransEmptyStatementsAndDealloc.po: StmtNodes.inc.h
+TransGCAttrs.o: AttrList.inc.h
+TransGCAttrs.o: AttrVisitor.inc.h
+TransGCAttrs.o: Attrs.inc.h
+TransGCAttrs.o: CommentCommandList.inc.h
+TransGCAttrs.o: DeclNodes.inc.h
+TransGCAttrs.o: DiagnosticCommonKinds.inc.h
+TransGCAttrs.o: DiagnosticSemaKinds.inc.h
+TransGCAttrs.o: StmtNodes.inc.h
+TransGCAttrs.po: AttrList.inc.h
+TransGCAttrs.po: AttrVisitor.inc.h
+TransGCAttrs.po: Attrs.inc.h
+TransGCAttrs.po: CommentCommandList.inc.h
+TransGCAttrs.po: DeclNodes.inc.h
+TransGCAttrs.po: DiagnosticCommonKinds.inc.h
+TransGCAttrs.po: DiagnosticSemaKinds.inc.h
+TransGCAttrs.po: StmtNodes.inc.h
+TransGCCalls.o: AttrList.inc.h
+TransGCCalls.o: AttrVisitor.inc.h
+TransGCCalls.o: Attrs.inc.h
+TransGCCalls.o: CommentCommandList.inc.h
+TransGCCalls.o: DeclNodes.inc.h
+TransGCCalls.o: DiagnosticCommonKinds.inc.h
+TransGCCalls.o: DiagnosticSemaKinds.inc.h
+TransGCCalls.o: StmtNodes.inc.h
+TransGCCalls.po: AttrList.inc.h
+TransGCCalls.po: AttrVisitor.inc.h
+TransGCCalls.po: Attrs.inc.h
+TransGCCalls.po: CommentCommandList.inc.h
+TransGCCalls.po: DeclNodes.inc.h
+TransGCCalls.po: DiagnosticCommonKinds.inc.h
+TransGCCalls.po: DiagnosticSemaKinds.inc.h
+TransGCCalls.po: StmtNodes.inc.h
+TransProperties.o: AttrList.inc.h
+TransProperties.o: AttrVisitor.inc.h
+TransProperties.o: Attrs.inc.h
+TransProperties.o: DeclNodes.inc.h
+TransProperties.o: DiagnosticCommonKinds.inc.h
+TransProperties.o: DiagnosticSemaKinds.inc.h
+TransProperties.o: StmtNodes.inc.h
+TransProperties.po: AttrList.inc.h
+TransProperties.po: AttrVisitor.inc.h
+TransProperties.po: Attrs.inc.h
+TransProperties.po: DeclNodes.inc.h
+TransProperties.po: DiagnosticCommonKinds.inc.h
+TransProperties.po: DiagnosticSemaKinds.inc.h
+TransProperties.po: StmtNodes.inc.h
+TransProtectedScope.o: AttrList.inc.h
+TransProtectedScope.o: AttrVisitor.inc.h
+TransProtectedScope.o: Attrs.inc.h
+TransProtectedScope.o: CommentCommandList.inc.h
+TransProtectedScope.o: DeclNodes.inc.h
+TransProtectedScope.o: DiagnosticCommonKinds.inc.h
+TransProtectedScope.o: DiagnosticSemaKinds.inc.h
+TransProtectedScope.o: StmtNodes.inc.h
+TransProtectedScope.po: AttrList.inc.h
+TransProtectedScope.po: AttrVisitor.inc.h
+TransProtectedScope.po: Attrs.inc.h
+TransProtectedScope.po: CommentCommandList.inc.h
+TransProtectedScope.po: DeclNodes.inc.h
+TransProtectedScope.po: DiagnosticCommonKinds.inc.h
+TransProtectedScope.po: DiagnosticSemaKinds.inc.h
+TransProtectedScope.po: StmtNodes.inc.h
+TransRetainReleaseDealloc.o: AttrList.inc.h
+TransRetainReleaseDealloc.o: AttrVisitor.inc.h
+TransRetainReleaseDealloc.o: Attrs.inc.h
+TransRetainReleaseDealloc.o: CommentCommandList.inc.h
+TransRetainReleaseDealloc.o: DeclNodes.inc.h
+TransRetainReleaseDealloc.o: DiagnosticCommonKinds.inc.h
+TransRetainReleaseDealloc.o: DiagnosticSemaKinds.inc.h
+TransRetainReleaseDealloc.o: StmtNodes.inc.h
+TransRetainReleaseDealloc.po: AttrList.inc.h
+TransRetainReleaseDealloc.po: AttrVisitor.inc.h
+TransRetainReleaseDealloc.po: Attrs.inc.h
+TransRetainReleaseDealloc.po: CommentCommandList.inc.h
+TransRetainReleaseDealloc.po: DeclNodes.inc.h
+TransRetainReleaseDealloc.po: DiagnosticCommonKinds.inc.h
+TransRetainReleaseDealloc.po: DiagnosticSemaKinds.inc.h
+TransRetainReleaseDealloc.po: StmtNodes.inc.h
+TransUnbridgedCasts.o: AttrList.inc.h
+TransUnbridgedCasts.o: AttrVisitor.inc.h
+TransUnbridgedCasts.o: Attrs.inc.h
+TransUnbridgedCasts.o: CommentCommandList.inc.h
+TransUnbridgedCasts.o: DeclNodes.inc.h
+TransUnbridgedCasts.o: DiagnosticCommonKinds.inc.h
+TransUnbridgedCasts.o: DiagnosticSemaKinds.inc.h
+TransUnbridgedCasts.o: StmtNodes.inc.h
+TransUnbridgedCasts.po: AttrList.inc.h
+TransUnbridgedCasts.po: AttrVisitor.inc.h
+TransUnbridgedCasts.po: Attrs.inc.h
+TransUnbridgedCasts.po: CommentCommandList.inc.h
+TransUnbridgedCasts.po: DeclNodes.inc.h
+TransUnbridgedCasts.po: DiagnosticCommonKinds.inc.h
+TransUnbridgedCasts.po: DiagnosticSemaKinds.inc.h
+TransUnbridgedCasts.po: StmtNodes.inc.h
+TransUnusedInitDelegate.o: AttrList.inc.h
+TransUnusedInitDelegate.o: AttrVisitor.inc.h
+TransUnusedInitDelegate.o: Attrs.inc.h
+TransUnusedInitDelegate.o: CommentCommandList.inc.h
+TransUnusedInitDelegate.o: DeclNodes.inc.h
+TransUnusedInitDelegate.o: DiagnosticCommonKinds.inc.h
+TransUnusedInitDelegate.o: DiagnosticSemaKinds.inc.h
+TransUnusedInitDelegate.o: StmtNodes.inc.h
+TransUnusedInitDelegate.po: AttrList.inc.h
+TransUnusedInitDelegate.po: AttrVisitor.inc.h
+TransUnusedInitDelegate.po: Attrs.inc.h
+TransUnusedInitDelegate.po: CommentCommandList.inc.h
+TransUnusedInitDelegate.po: DeclNodes.inc.h
+TransUnusedInitDelegate.po: DiagnosticCommonKinds.inc.h
+TransUnusedInitDelegate.po: DiagnosticSemaKinds.inc.h
+TransUnusedInitDelegate.po: StmtNodes.inc.h
+TransZeroOutPropsInDealloc.o: AttrList.inc.h
+TransZeroOutPropsInDealloc.o: AttrVisitor.inc.h
+TransZeroOutPropsInDealloc.o: Attrs.inc.h
+TransZeroOutPropsInDealloc.o: CommentCommandList.inc.h
+TransZeroOutPropsInDealloc.o: DeclNodes.inc.h
+TransZeroOutPropsInDealloc.o: DiagnosticCommonKinds.inc.h
+TransZeroOutPropsInDealloc.o: StmtNodes.inc.h
+TransZeroOutPropsInDealloc.po: AttrList.inc.h
+TransZeroOutPropsInDealloc.po: AttrVisitor.inc.h
+TransZeroOutPropsInDealloc.po: Attrs.inc.h
+TransZeroOutPropsInDealloc.po: CommentCommandList.inc.h
+TransZeroOutPropsInDealloc.po: DeclNodes.inc.h
+TransZeroOutPropsInDealloc.po: DiagnosticCommonKinds.inc.h
+TransZeroOutPropsInDealloc.po: StmtNodes.inc.h
+TransformActions.o: CommentCommandList.inc.h
+TransformActions.o: DeclNodes.inc.h
+TransformActions.o: DiagnosticCommonKinds.inc.h
+TransformActions.o: StmtNodes.inc.h
+TransformActions.po: CommentCommandList.inc.h
+TransformActions.po: DeclNodes.inc.h
+TransformActions.po: DiagnosticCommonKinds.inc.h
+TransformActions.po: StmtNodes.inc.h
+Transforms.o: AttrList.inc.h
+Transforms.o: AttrParsedAttrList.inc.h
+Transforms.o: AttrVisitor.inc.h
+Transforms.o: Attrs.inc.h
+Transforms.o: CommentCommandList.inc.h
+Transforms.o: DeclNodes.inc.h
+Transforms.o: DiagnosticCommonKinds.inc.h
+Transforms.o: DiagnosticSemaKinds.inc.h
+Transforms.o: StmtNodes.inc.h
+Transforms.po: AttrList.inc.h
+Transforms.po: AttrParsedAttrList.inc.h
+Transforms.po: AttrVisitor.inc.h
+Transforms.po: Attrs.inc.h
+Transforms.po: CommentCommandList.inc.h
+Transforms.po: DeclNodes.inc.h
+Transforms.po: DiagnosticCommonKinds.inc.h
+Transforms.po: DiagnosticSemaKinds.inc.h
+Transforms.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangast/Makefile.depend b/lib/clang/libclangast/Makefile.depend
new file mode 100644
index 0000000..89d2a29
--- /dev/null
+++ b/lib/clang/libclangast/Makefile.depend
@@ -0,0 +1,622 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+APValue.o: AttrList.inc.h
+APValue.o: Attrs.inc.h
+APValue.o: CommentCommandList.inc.h
+APValue.o: DeclNodes.inc.h
+APValue.o: DiagnosticCommonKinds.inc.h
+APValue.o: StmtNodes.inc.h
+APValue.po: AttrList.inc.h
+APValue.po: Attrs.inc.h
+APValue.po: CommentCommandList.inc.h
+APValue.po: DeclNodes.inc.h
+APValue.po: DiagnosticCommonKinds.inc.h
+APValue.po: StmtNodes.inc.h
+ASTConsumer.o: DeclNodes.inc.h
+ASTConsumer.o: DiagnosticCommonKinds.inc.h
+ASTConsumer.po: DeclNodes.inc.h
+ASTConsumer.po: DiagnosticCommonKinds.inc.h
+ASTContext.o: AttrList.inc.h
+ASTContext.o: AttrVisitor.inc.h
+ASTContext.o: Attrs.inc.h
+ASTContext.o: CommentCommandList.inc.h
+ASTContext.o: CommentNodes.inc.h
+ASTContext.o: DeclNodes.inc.h
+ASTContext.o: DiagnosticCommonKinds.inc.h
+ASTContext.o: StmtNodes.inc.h
+ASTContext.po: AttrList.inc.h
+ASTContext.po: AttrVisitor.inc.h
+ASTContext.po: Attrs.inc.h
+ASTContext.po: CommentCommandList.inc.h
+ASTContext.po: CommentNodes.inc.h
+ASTContext.po: DeclNodes.inc.h
+ASTContext.po: DiagnosticCommonKinds.inc.h
+ASTContext.po: StmtNodes.inc.h
+ASTDiagnostic.o: AttrList.inc.h
+ASTDiagnostic.o: Attrs.inc.h
+ASTDiagnostic.o: CommentCommandList.inc.h
+ASTDiagnostic.o: DeclNodes.inc.h
+ASTDiagnostic.o: DiagnosticASTKinds.inc.h
+ASTDiagnostic.o: DiagnosticCommonKinds.inc.h
+ASTDiagnostic.o: StmtNodes.inc.h
+ASTDiagnostic.po: AttrList.inc.h
+ASTDiagnostic.po: Attrs.inc.h
+ASTDiagnostic.po: CommentCommandList.inc.h
+ASTDiagnostic.po: DeclNodes.inc.h
+ASTDiagnostic.po: DiagnosticASTKinds.inc.h
+ASTDiagnostic.po: DiagnosticCommonKinds.inc.h
+ASTDiagnostic.po: StmtNodes.inc.h
+ASTDumper.o: AttrDump.inc.h
+ASTDumper.o: AttrList.inc.h
+ASTDumper.o: Attrs.inc.h
+ASTDumper.o: CommentCommandList.inc.h
+ASTDumper.o: CommentNodes.inc.h
+ASTDumper.o: DeclNodes.inc.h
+ASTDumper.o: DiagnosticCommonKinds.inc.h
+ASTDumper.o: StmtNodes.inc.h
+ASTDumper.po: AttrDump.inc.h
+ASTDumper.po: AttrList.inc.h
+ASTDumper.po: Attrs.inc.h
+ASTDumper.po: CommentCommandList.inc.h
+ASTDumper.po: CommentNodes.inc.h
+ASTDumper.po: DeclNodes.inc.h
+ASTDumper.po: DiagnosticCommonKinds.inc.h
+ASTDumper.po: StmtNodes.inc.h
+ASTImporter.o: AttrList.inc.h
+ASTImporter.o: Attrs.inc.h
+ASTImporter.o: CommentCommandList.inc.h
+ASTImporter.o: DeclNodes.inc.h
+ASTImporter.o: DiagnosticASTKinds.inc.h
+ASTImporter.o: DiagnosticCommonKinds.inc.h
+ASTImporter.o: StmtNodes.inc.h
+ASTImporter.po: AttrList.inc.h
+ASTImporter.po: Attrs.inc.h
+ASTImporter.po: CommentCommandList.inc.h
+ASTImporter.po: DeclNodes.inc.h
+ASTImporter.po: DiagnosticASTKinds.inc.h
+ASTImporter.po: DiagnosticCommonKinds.inc.h
+ASTImporter.po: StmtNodes.inc.h
+ASTTypeTraits.o: AttrList.inc.h
+ASTTypeTraits.o: Attrs.inc.h
+ASTTypeTraits.o: CommentCommandList.inc.h
+ASTTypeTraits.o: DeclNodes.inc.h
+ASTTypeTraits.o: DiagnosticCommonKinds.inc.h
+ASTTypeTraits.o: StmtNodes.inc.h
+ASTTypeTraits.po: AttrList.inc.h
+ASTTypeTraits.po: Attrs.inc.h
+ASTTypeTraits.po: CommentCommandList.inc.h
+ASTTypeTraits.po: DeclNodes.inc.h
+ASTTypeTraits.po: DiagnosticCommonKinds.inc.h
+ASTTypeTraits.po: StmtNodes.inc.h
+AttrImpl.o: AttrImpl.inc.h
+AttrImpl.o: AttrList.inc.h
+AttrImpl.o: Attrs.inc.h
+AttrImpl.o: CommentCommandList.inc.h
+AttrImpl.o: DeclNodes.inc.h
+AttrImpl.o: DiagnosticCommonKinds.inc.h
+AttrImpl.o: StmtNodes.inc.h
+AttrImpl.po: AttrImpl.inc.h
+AttrImpl.po: AttrList.inc.h
+AttrImpl.po: Attrs.inc.h
+AttrImpl.po: CommentCommandList.inc.h
+AttrImpl.po: DeclNodes.inc.h
+AttrImpl.po: DiagnosticCommonKinds.inc.h
+AttrImpl.po: StmtNodes.inc.h
+CXXInheritance.o: AttrList.inc.h
+CXXInheritance.o: Attrs.inc.h
+CXXInheritance.o: CommentCommandList.inc.h
+CXXInheritance.o: DeclNodes.inc.h
+CXXInheritance.o: DiagnosticCommonKinds.inc.h
+CXXInheritance.o: StmtNodes.inc.h
+CXXInheritance.po: AttrList.inc.h
+CXXInheritance.po: Attrs.inc.h
+CXXInheritance.po: CommentCommandList.inc.h
+CXXInheritance.po: DeclNodes.inc.h
+CXXInheritance.po: DiagnosticCommonKinds.inc.h
+CXXInheritance.po: StmtNodes.inc.h
+Comment.o: AttrList.inc.h
+Comment.o: Attrs.inc.h
+Comment.o: CommentCommandList.inc.h
+Comment.o: CommentNodes.inc.h
+Comment.o: DeclNodes.inc.h
+Comment.o: DiagnosticCommonKinds.inc.h
+Comment.o: StmtNodes.inc.h
+Comment.po: AttrList.inc.h
+Comment.po: Attrs.inc.h
+Comment.po: CommentCommandList.inc.h
+Comment.po: CommentNodes.inc.h
+Comment.po: DeclNodes.inc.h
+Comment.po: DiagnosticCommonKinds.inc.h
+Comment.po: StmtNodes.inc.h
+CommentBriefParser.o: CommentCommandList.inc.h
+CommentBriefParser.o: DiagnosticCommonKinds.inc.h
+CommentBriefParser.po: CommentCommandList.inc.h
+CommentBriefParser.po: DiagnosticCommonKinds.inc.h
+CommentCommandTraits.o: CommentCommandInfo.inc.h
+CommentCommandTraits.o: CommentCommandList.inc.h
+CommentCommandTraits.po: CommentCommandInfo.inc.h
+CommentCommandTraits.po: CommentCommandList.inc.h
+CommentLexer.o: CommentCommandList.inc.h
+CommentLexer.o: CommentHTMLNamedCharacterReferences.inc.h
+CommentLexer.o: CommentHTMLTags.inc.h
+CommentLexer.o: DiagnosticCommentKinds.inc.h
+CommentLexer.o: DiagnosticCommonKinds.inc.h
+CommentLexer.po: CommentCommandList.inc.h
+CommentLexer.po: CommentHTMLNamedCharacterReferences.inc.h
+CommentLexer.po: CommentHTMLTags.inc.h
+CommentLexer.po: DiagnosticCommentKinds.inc.h
+CommentLexer.po: DiagnosticCommonKinds.inc.h
+CommentParser.o: CommentCommandList.inc.h
+CommentParser.o: CommentNodes.inc.h
+CommentParser.o: DeclNodes.inc.h
+CommentParser.o: DiagnosticCommentKinds.inc.h
+CommentParser.o: DiagnosticCommonKinds.inc.h
+CommentParser.po: CommentCommandList.inc.h
+CommentParser.po: CommentNodes.inc.h
+CommentParser.po: DeclNodes.inc.h
+CommentParser.po: DiagnosticCommentKinds.inc.h
+CommentParser.po: DiagnosticCommonKinds.inc.h
+CommentSema.o: AttrList.inc.h
+CommentSema.o: Attrs.inc.h
+CommentSema.o: CommentCommandList.inc.h
+CommentSema.o: CommentHTMLTagsProperties.inc.h
+CommentSema.o: CommentNodes.inc.h
+CommentSema.o: DeclNodes.inc.h
+CommentSema.o: DiagnosticCommentKinds.inc.h
+CommentSema.o: DiagnosticCommonKinds.inc.h
+CommentSema.o: StmtNodes.inc.h
+CommentSema.po: AttrList.inc.h
+CommentSema.po: Attrs.inc.h
+CommentSema.po: CommentCommandList.inc.h
+CommentSema.po: CommentHTMLTagsProperties.inc.h
+CommentSema.po: CommentNodes.inc.h
+CommentSema.po: DeclNodes.inc.h
+CommentSema.po: DiagnosticCommentKinds.inc.h
+CommentSema.po: DiagnosticCommonKinds.inc.h
+CommentSema.po: StmtNodes.inc.h
+Decl.o: AttrList.inc.h
+Decl.o: Attrs.inc.h
+Decl.o: CommentCommandList.inc.h
+Decl.o: DeclNodes.inc.h
+Decl.o: DiagnosticCommonKinds.inc.h
+Decl.o: DiagnosticFrontendKinds.inc.h
+Decl.o: StmtNodes.inc.h
+Decl.po: AttrList.inc.h
+Decl.po: Attrs.inc.h
+Decl.po: CommentCommandList.inc.h
+Decl.po: DeclNodes.inc.h
+Decl.po: DiagnosticCommonKinds.inc.h
+Decl.po: DiagnosticFrontendKinds.inc.h
+Decl.po: StmtNodes.inc.h
+DeclBase.o: AttrList.inc.h
+DeclBase.o: Attrs.inc.h
+DeclBase.o: CommentCommandList.inc.h
+DeclBase.o: DeclNodes.inc.h
+DeclBase.o: DiagnosticCommonKinds.inc.h
+DeclBase.o: StmtNodes.inc.h
+DeclBase.po: AttrList.inc.h
+DeclBase.po: Attrs.inc.h
+DeclBase.po: CommentCommandList.inc.h
+DeclBase.po: DeclNodes.inc.h
+DeclBase.po: DiagnosticCommonKinds.inc.h
+DeclBase.po: StmtNodes.inc.h
+DeclCXX.o: AttrList.inc.h
+DeclCXX.o: Attrs.inc.h
+DeclCXX.o: CommentCommandList.inc.h
+DeclCXX.o: DeclNodes.inc.h
+DeclCXX.o: DiagnosticCommonKinds.inc.h
+DeclCXX.o: StmtNodes.inc.h
+DeclCXX.po: AttrList.inc.h
+DeclCXX.po: Attrs.inc.h
+DeclCXX.po: CommentCommandList.inc.h
+DeclCXX.po: DeclNodes.inc.h
+DeclCXX.po: DiagnosticCommonKinds.inc.h
+DeclCXX.po: StmtNodes.inc.h
+DeclFriend.o: AttrList.inc.h
+DeclFriend.o: Attrs.inc.h
+DeclFriend.o: CommentCommandList.inc.h
+DeclFriend.o: DeclNodes.inc.h
+DeclFriend.o: DiagnosticCommonKinds.inc.h
+DeclFriend.o: StmtNodes.inc.h
+DeclFriend.po: AttrList.inc.h
+DeclFriend.po: Attrs.inc.h
+DeclFriend.po: CommentCommandList.inc.h
+DeclFriend.po: DeclNodes.inc.h
+DeclFriend.po: DiagnosticCommonKinds.inc.h
+DeclFriend.po: StmtNodes.inc.h
+DeclGroup.o: CommentCommandList.inc.h
+DeclGroup.o: DeclNodes.inc.h
+DeclGroup.o: DiagnosticCommonKinds.inc.h
+DeclGroup.o: StmtNodes.inc.h
+DeclGroup.po: CommentCommandList.inc.h
+DeclGroup.po: DeclNodes.inc.h
+DeclGroup.po: DiagnosticCommonKinds.inc.h
+DeclGroup.po: StmtNodes.inc.h
+DeclObjC.o: AttrList.inc.h
+DeclObjC.o: Attrs.inc.h
+DeclObjC.o: CommentCommandList.inc.h
+DeclObjC.o: DeclNodes.inc.h
+DeclObjC.o: DiagnosticCommonKinds.inc.h
+DeclObjC.o: StmtNodes.inc.h
+DeclObjC.po: AttrList.inc.h
+DeclObjC.po: Attrs.inc.h
+DeclObjC.po: CommentCommandList.inc.h
+DeclObjC.po: DeclNodes.inc.h
+DeclObjC.po: DiagnosticCommonKinds.inc.h
+DeclObjC.po: StmtNodes.inc.h
+DeclOpenMP.o: CommentCommandList.inc.h
+DeclOpenMP.o: DeclNodes.inc.h
+DeclOpenMP.o: DiagnosticCommonKinds.inc.h
+DeclOpenMP.o: StmtNodes.inc.h
+DeclOpenMP.po: CommentCommandList.inc.h
+DeclOpenMP.po: DeclNodes.inc.h
+DeclOpenMP.po: DiagnosticCommonKinds.inc.h
+DeclOpenMP.po: StmtNodes.inc.h
+DeclPrinter.o: AttrList.inc.h
+DeclPrinter.o: Attrs.inc.h
+DeclPrinter.o: CommentCommandList.inc.h
+DeclPrinter.o: DeclNodes.inc.h
+DeclPrinter.o: DiagnosticCommonKinds.inc.h
+DeclPrinter.o: StmtNodes.inc.h
+DeclPrinter.po: AttrList.inc.h
+DeclPrinter.po: Attrs.inc.h
+DeclPrinter.po: CommentCommandList.inc.h
+DeclPrinter.po: DeclNodes.inc.h
+DeclPrinter.po: DiagnosticCommonKinds.inc.h
+DeclPrinter.po: StmtNodes.inc.h
+DeclTemplate.o: AttrList.inc.h
+DeclTemplate.o: Attrs.inc.h
+DeclTemplate.o: CommentCommandList.inc.h
+DeclTemplate.o: DeclNodes.inc.h
+DeclTemplate.o: DiagnosticCommonKinds.inc.h
+DeclTemplate.o: StmtNodes.inc.h
+DeclTemplate.po: AttrList.inc.h
+DeclTemplate.po: Attrs.inc.h
+DeclTemplate.po: CommentCommandList.inc.h
+DeclTemplate.po: DeclNodes.inc.h
+DeclTemplate.po: DiagnosticCommonKinds.inc.h
+DeclTemplate.po: StmtNodes.inc.h
+DeclarationName.o: CommentCommandList.inc.h
+DeclarationName.o: DeclNodes.inc.h
+DeclarationName.o: DiagnosticCommonKinds.inc.h
+DeclarationName.o: StmtNodes.inc.h
+DeclarationName.po: CommentCommandList.inc.h
+DeclarationName.po: DeclNodes.inc.h
+DeclarationName.po: DiagnosticCommonKinds.inc.h
+DeclarationName.po: StmtNodes.inc.h
+Expr.o: AttrList.inc.h
+Expr.o: Attrs.inc.h
+Expr.o: CommentCommandList.inc.h
+Expr.o: DeclNodes.inc.h
+Expr.o: DiagnosticCommonKinds.inc.h
+Expr.o: DiagnosticSemaKinds.inc.h
+Expr.o: StmtNodes.inc.h
+Expr.po: AttrList.inc.h
+Expr.po: Attrs.inc.h
+Expr.po: CommentCommandList.inc.h
+Expr.po: DeclNodes.inc.h
+Expr.po: DiagnosticCommonKinds.inc.h
+Expr.po: DiagnosticSemaKinds.inc.h
+Expr.po: StmtNodes.inc.h
+ExprCXX.o: AttrList.inc.h
+ExprCXX.o: Attrs.inc.h
+ExprCXX.o: CommentCommandList.inc.h
+ExprCXX.o: DeclNodes.inc.h
+ExprCXX.o: DiagnosticCommonKinds.inc.h
+ExprCXX.o: StmtNodes.inc.h
+ExprCXX.po: AttrList.inc.h
+ExprCXX.po: Attrs.inc.h
+ExprCXX.po: CommentCommandList.inc.h
+ExprCXX.po: DeclNodes.inc.h
+ExprCXX.po: DiagnosticCommonKinds.inc.h
+ExprCXX.po: StmtNodes.inc.h
+ExprClassification.o: AttrList.inc.h
+ExprClassification.o: Attrs.inc.h
+ExprClassification.o: CommentCommandList.inc.h
+ExprClassification.o: DeclNodes.inc.h
+ExprClassification.o: DiagnosticCommonKinds.inc.h
+ExprClassification.o: StmtNodes.inc.h
+ExprClassification.po: AttrList.inc.h
+ExprClassification.po: Attrs.inc.h
+ExprClassification.po: CommentCommandList.inc.h
+ExprClassification.po: DeclNodes.inc.h
+ExprClassification.po: DiagnosticCommonKinds.inc.h
+ExprClassification.po: StmtNodes.inc.h
+ExprConstant.o: AttrList.inc.h
+ExprConstant.o: Attrs.inc.h
+ExprConstant.o: CommentCommandList.inc.h
+ExprConstant.o: DeclNodes.inc.h
+ExprConstant.o: DiagnosticASTKinds.inc.h
+ExprConstant.o: DiagnosticCommonKinds.inc.h
+ExprConstant.o: StmtNodes.inc.h
+ExprConstant.po: AttrList.inc.h
+ExprConstant.po: Attrs.inc.h
+ExprConstant.po: CommentCommandList.inc.h
+ExprConstant.po: DeclNodes.inc.h
+ExprConstant.po: DiagnosticASTKinds.inc.h
+ExprConstant.po: DiagnosticCommonKinds.inc.h
+ExprConstant.po: StmtNodes.inc.h
+ExternalASTSource.o: CommentCommandList.inc.h
+ExternalASTSource.o: DeclNodes.inc.h
+ExternalASTSource.o: DiagnosticCommonKinds.inc.h
+ExternalASTSource.o: StmtNodes.inc.h
+ExternalASTSource.po: CommentCommandList.inc.h
+ExternalASTSource.po: DeclNodes.inc.h
+ExternalASTSource.po: DiagnosticCommonKinds.inc.h
+ExternalASTSource.po: StmtNodes.inc.h
+InheritViz.o: AttrList.inc.h
+InheritViz.o: Attrs.inc.h
+InheritViz.o: CommentCommandList.inc.h
+InheritViz.o: DeclNodes.inc.h
+InheritViz.o: DiagnosticCommonKinds.inc.h
+InheritViz.o: StmtNodes.inc.h
+InheritViz.po: AttrList.inc.h
+InheritViz.po: Attrs.inc.h
+InheritViz.po: CommentCommandList.inc.h
+InheritViz.po: DeclNodes.inc.h
+InheritViz.po: DiagnosticCommonKinds.inc.h
+InheritViz.po: StmtNodes.inc.h
+ItaniumCXXABI.o: AttrList.inc.h
+ItaniumCXXABI.o: Attrs.inc.h
+ItaniumCXXABI.o: CommentCommandList.inc.h
+ItaniumCXXABI.o: DeclNodes.inc.h
+ItaniumCXXABI.o: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.o: StmtNodes.inc.h
+ItaniumCXXABI.po: AttrList.inc.h
+ItaniumCXXABI.po: Attrs.inc.h
+ItaniumCXXABI.po: CommentCommandList.inc.h
+ItaniumCXXABI.po: DeclNodes.inc.h
+ItaniumCXXABI.po: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.po: StmtNodes.inc.h
+ItaniumMangle.o: AttrList.inc.h
+ItaniumMangle.o: Attrs.inc.h
+ItaniumMangle.o: CommentCommandList.inc.h
+ItaniumMangle.o: DeclNodes.inc.h
+ItaniumMangle.o: DiagnosticCommonKinds.inc.h
+ItaniumMangle.o: StmtNodes.inc.h
+ItaniumMangle.po: AttrList.inc.h
+ItaniumMangle.po: Attrs.inc.h
+ItaniumMangle.po: CommentCommandList.inc.h
+ItaniumMangle.po: DeclNodes.inc.h
+ItaniumMangle.po: DiagnosticCommonKinds.inc.h
+ItaniumMangle.po: StmtNodes.inc.h
+Mangle.o: AttrList.inc.h
+Mangle.o: Attrs.inc.h
+Mangle.o: CommentCommandList.inc.h
+Mangle.o: DeclNodes.inc.h
+Mangle.o: DiagnosticCommonKinds.inc.h
+Mangle.o: StmtNodes.inc.h
+Mangle.po: AttrList.inc.h
+Mangle.po: Attrs.inc.h
+Mangle.po: CommentCommandList.inc.h
+Mangle.po: DeclNodes.inc.h
+Mangle.po: DiagnosticCommonKinds.inc.h
+Mangle.po: StmtNodes.inc.h
+MicrosoftCXXABI.o: AttrList.inc.h
+MicrosoftCXXABI.o: Attrs.inc.h
+MicrosoftCXXABI.o: CommentCommandList.inc.h
+MicrosoftCXXABI.o: DeclNodes.inc.h
+MicrosoftCXXABI.o: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.o: StmtNodes.inc.h
+MicrosoftCXXABI.po: AttrList.inc.h
+MicrosoftCXXABI.po: Attrs.inc.h
+MicrosoftCXXABI.po: CommentCommandList.inc.h
+MicrosoftCXXABI.po: DeclNodes.inc.h
+MicrosoftCXXABI.po: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.po: StmtNodes.inc.h
+MicrosoftMangle.o: AttrList.inc.h
+MicrosoftMangle.o: Attrs.inc.h
+MicrosoftMangle.o: CommentCommandList.inc.h
+MicrosoftMangle.o: DeclNodes.inc.h
+MicrosoftMangle.o: DiagnosticCommonKinds.inc.h
+MicrosoftMangle.o: StmtNodes.inc.h
+MicrosoftMangle.po: AttrList.inc.h
+MicrosoftMangle.po: Attrs.inc.h
+MicrosoftMangle.po: CommentCommandList.inc.h
+MicrosoftMangle.po: DeclNodes.inc.h
+MicrosoftMangle.po: DiagnosticCommonKinds.inc.h
+MicrosoftMangle.po: StmtNodes.inc.h
+NSAPI.o: CommentCommandList.inc.h
+NSAPI.o: DeclNodes.inc.h
+NSAPI.o: DiagnosticCommonKinds.inc.h
+NSAPI.o: StmtNodes.inc.h
+NSAPI.po: CommentCommandList.inc.h
+NSAPI.po: DeclNodes.inc.h
+NSAPI.po: DiagnosticCommonKinds.inc.h
+NSAPI.po: StmtNodes.inc.h
+NestedNameSpecifier.o: AttrList.inc.h
+NestedNameSpecifier.o: Attrs.inc.h
+NestedNameSpecifier.o: CommentCommandList.inc.h
+NestedNameSpecifier.o: DeclNodes.inc.h
+NestedNameSpecifier.o: DiagnosticCommonKinds.inc.h
+NestedNameSpecifier.o: StmtNodes.inc.h
+NestedNameSpecifier.po: AttrList.inc.h
+NestedNameSpecifier.po: Attrs.inc.h
+NestedNameSpecifier.po: CommentCommandList.inc.h
+NestedNameSpecifier.po: DeclNodes.inc.h
+NestedNameSpecifier.po: DiagnosticCommonKinds.inc.h
+NestedNameSpecifier.po: StmtNodes.inc.h
+ParentMap.o: DeclNodes.inc.h
+ParentMap.o: DiagnosticCommonKinds.inc.h
+ParentMap.o: StmtNodes.inc.h
+ParentMap.po: DeclNodes.inc.h
+ParentMap.po: DiagnosticCommonKinds.inc.h
+ParentMap.po: StmtNodes.inc.h
+RawCommentList.o: CommentCommandList.inc.h
+RawCommentList.o: CommentNodes.inc.h
+RawCommentList.o: DeclNodes.inc.h
+RawCommentList.o: DiagnosticCommonKinds.inc.h
+RawCommentList.o: StmtNodes.inc.h
+RawCommentList.po: CommentCommandList.inc.h
+RawCommentList.po: CommentNodes.inc.h
+RawCommentList.po: DeclNodes.inc.h
+RawCommentList.po: DiagnosticCommonKinds.inc.h
+RawCommentList.po: StmtNodes.inc.h
+RecordLayout.o: AttrList.inc.h
+RecordLayout.o: Attrs.inc.h
+RecordLayout.o: CommentCommandList.inc.h
+RecordLayout.o: DeclNodes.inc.h
+RecordLayout.o: DiagnosticCommonKinds.inc.h
+RecordLayout.o: StmtNodes.inc.h
+RecordLayout.po: AttrList.inc.h
+RecordLayout.po: Attrs.inc.h
+RecordLayout.po: CommentCommandList.inc.h
+RecordLayout.po: DeclNodes.inc.h
+RecordLayout.po: DiagnosticCommonKinds.inc.h
+RecordLayout.po: StmtNodes.inc.h
+RecordLayoutBuilder.o: AttrList.inc.h
+RecordLayoutBuilder.o: Attrs.inc.h
+RecordLayoutBuilder.o: CommentCommandList.inc.h
+RecordLayoutBuilder.o: DeclNodes.inc.h
+RecordLayoutBuilder.o: DiagnosticCommonKinds.inc.h
+RecordLayoutBuilder.o: DiagnosticSemaKinds.inc.h
+RecordLayoutBuilder.o: StmtNodes.inc.h
+RecordLayoutBuilder.po: AttrList.inc.h
+RecordLayoutBuilder.po: Attrs.inc.h
+RecordLayoutBuilder.po: CommentCommandList.inc.h
+RecordLayoutBuilder.po: DeclNodes.inc.h
+RecordLayoutBuilder.po: DiagnosticCommonKinds.inc.h
+RecordLayoutBuilder.po: DiagnosticSemaKinds.inc.h
+RecordLayoutBuilder.po: StmtNodes.inc.h
+SelectorLocationsKind.o: DeclNodes.inc.h
+SelectorLocationsKind.o: DiagnosticCommonKinds.inc.h
+SelectorLocationsKind.o: StmtNodes.inc.h
+SelectorLocationsKind.po: DeclNodes.inc.h
+SelectorLocationsKind.po: DiagnosticCommonKinds.inc.h
+SelectorLocationsKind.po: StmtNodes.inc.h
+Stmt.o: CommentCommandList.inc.h
+Stmt.o: DeclNodes.inc.h
+Stmt.o: DiagnosticASTKinds.inc.h
+Stmt.o: DiagnosticCommonKinds.inc.h
+Stmt.o: StmtNodes.inc.h
+Stmt.po: CommentCommandList.inc.h
+Stmt.po: DeclNodes.inc.h
+Stmt.po: DiagnosticASTKinds.inc.h
+Stmt.po: DiagnosticCommonKinds.inc.h
+Stmt.po: StmtNodes.inc.h
+StmtIterator.o: DeclNodes.inc.h
+StmtIterator.o: DiagnosticCommonKinds.inc.h
+StmtIterator.po: DeclNodes.inc.h
+StmtIterator.po: DiagnosticCommonKinds.inc.h
+StmtPrinter.o: AttrList.inc.h
+StmtPrinter.o: Attrs.inc.h
+StmtPrinter.o: CommentCommandList.inc.h
+StmtPrinter.o: DeclNodes.inc.h
+StmtPrinter.o: DiagnosticCommonKinds.inc.h
+StmtPrinter.o: StmtNodes.inc.h
+StmtPrinter.po: AttrList.inc.h
+StmtPrinter.po: Attrs.inc.h
+StmtPrinter.po: CommentCommandList.inc.h
+StmtPrinter.po: DeclNodes.inc.h
+StmtPrinter.po: DiagnosticCommonKinds.inc.h
+StmtPrinter.po: StmtNodes.inc.h
+StmtProfile.o: AttrList.inc.h
+StmtProfile.o: Attrs.inc.h
+StmtProfile.o: CommentCommandList.inc.h
+StmtProfile.o: DeclNodes.inc.h
+StmtProfile.o: DiagnosticCommonKinds.inc.h
+StmtProfile.o: StmtNodes.inc.h
+StmtProfile.po: AttrList.inc.h
+StmtProfile.po: Attrs.inc.h
+StmtProfile.po: CommentCommandList.inc.h
+StmtProfile.po: DeclNodes.inc.h
+StmtProfile.po: DiagnosticCommonKinds.inc.h
+StmtProfile.po: StmtNodes.inc.h
+StmtViz.o: DeclNodes.inc.h
+StmtViz.o: DiagnosticCommonKinds.inc.h
+StmtViz.o: StmtNodes.inc.h
+StmtViz.po: DeclNodes.inc.h
+StmtViz.po: DiagnosticCommonKinds.inc.h
+StmtViz.po: StmtNodes.inc.h
+TemplateBase.o: AttrList.inc.h
+TemplateBase.o: Attrs.inc.h
+TemplateBase.o: CommentCommandList.inc.h
+TemplateBase.o: DeclNodes.inc.h
+TemplateBase.o: DiagnosticCommonKinds.inc.h
+TemplateBase.o: StmtNodes.inc.h
+TemplateBase.po: AttrList.inc.h
+TemplateBase.po: Attrs.inc.h
+TemplateBase.po: CommentCommandList.inc.h
+TemplateBase.po: DeclNodes.inc.h
+TemplateBase.po: DiagnosticCommonKinds.inc.h
+TemplateBase.po: StmtNodes.inc.h
+TemplateName.o: AttrList.inc.h
+TemplateName.o: Attrs.inc.h
+TemplateName.o: DeclNodes.inc.h
+TemplateName.o: DiagnosticCommonKinds.inc.h
+TemplateName.o: StmtNodes.inc.h
+TemplateName.po: AttrList.inc.h
+TemplateName.po: Attrs.inc.h
+TemplateName.po: DeclNodes.inc.h
+TemplateName.po: DiagnosticCommonKinds.inc.h
+TemplateName.po: StmtNodes.inc.h
+Type.o: AttrList.inc.h
+Type.o: Attrs.inc.h
+Type.o: CommentCommandList.inc.h
+Type.o: DeclNodes.inc.h
+Type.o: DiagnosticCommonKinds.inc.h
+Type.o: StmtNodes.inc.h
+Type.po: AttrList.inc.h
+Type.po: Attrs.inc.h
+Type.po: CommentCommandList.inc.h
+Type.po: DeclNodes.inc.h
+Type.po: DiagnosticCommonKinds.inc.h
+Type.po: StmtNodes.inc.h
+TypeLoc.o: CommentCommandList.inc.h
+TypeLoc.o: DeclNodes.inc.h
+TypeLoc.o: DiagnosticCommonKinds.inc.h
+TypeLoc.o: StmtNodes.inc.h
+TypeLoc.po: CommentCommandList.inc.h
+TypeLoc.po: DeclNodes.inc.h
+TypeLoc.po: DiagnosticCommonKinds.inc.h
+TypeLoc.po: StmtNodes.inc.h
+TypePrinter.o: AttrList.inc.h
+TypePrinter.o: Attrs.inc.h
+TypePrinter.o: CommentCommandList.inc.h
+TypePrinter.o: DeclNodes.inc.h
+TypePrinter.o: DiagnosticCommonKinds.inc.h
+TypePrinter.o: StmtNodes.inc.h
+TypePrinter.po: AttrList.inc.h
+TypePrinter.po: Attrs.inc.h
+TypePrinter.po: CommentCommandList.inc.h
+TypePrinter.po: DeclNodes.inc.h
+TypePrinter.po: DiagnosticCommonKinds.inc.h
+TypePrinter.po: StmtNodes.inc.h
+VTTBuilder.o: AttrList.inc.h
+VTTBuilder.o: Attrs.inc.h
+VTTBuilder.o: CommentCommandList.inc.h
+VTTBuilder.o: DeclNodes.inc.h
+VTTBuilder.o: DiagnosticCommonKinds.inc.h
+VTTBuilder.o: StmtNodes.inc.h
+VTTBuilder.po: AttrList.inc.h
+VTTBuilder.po: Attrs.inc.h
+VTTBuilder.po: CommentCommandList.inc.h
+VTTBuilder.po: DeclNodes.inc.h
+VTTBuilder.po: DiagnosticCommonKinds.inc.h
+VTTBuilder.po: StmtNodes.inc.h
+VTableBuilder.o: AttrList.inc.h
+VTableBuilder.o: Attrs.inc.h
+VTableBuilder.o: CommentCommandList.inc.h
+VTableBuilder.o: DeclNodes.inc.h
+VTableBuilder.o: DiagnosticCommonKinds.inc.h
+VTableBuilder.o: StmtNodes.inc.h
+VTableBuilder.po: AttrList.inc.h
+VTableBuilder.po: Attrs.inc.h
+VTableBuilder.po: CommentCommandList.inc.h
+VTableBuilder.po: DeclNodes.inc.h
+VTableBuilder.po: DiagnosticCommonKinds.inc.h
+VTableBuilder.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangbasic/Makefile.depend b/lib/clang/libclangbasic/Makefile.depend
new file mode 100644
index 0000000..ea23a70
--- /dev/null
+++ b/lib/clang/libclangbasic/Makefile.depend
@@ -0,0 +1,69 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/clang/include.host \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Attributes.o: AttrHasAttributeImpl.inc.h
+Attributes.po: AttrHasAttributeImpl.inc.h
+Diagnostic.o: DiagnosticCommonKinds.inc.h
+Diagnostic.po: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.o: DiagnosticASTKinds.inc.h
+DiagnosticIDs.o: DiagnosticAnalysisKinds.inc.h
+DiagnosticIDs.o: DiagnosticCommentKinds.inc.h
+DiagnosticIDs.o: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.o: DiagnosticDriverKinds.inc.h
+DiagnosticIDs.o: DiagnosticFrontendKinds.inc.h
+DiagnosticIDs.o: DiagnosticGroups.inc.h
+DiagnosticIDs.o: DiagnosticLexKinds.inc.h
+DiagnosticIDs.o: DiagnosticParseKinds.inc.h
+DiagnosticIDs.o: DiagnosticSemaKinds.inc.h
+DiagnosticIDs.o: DiagnosticSerializationKinds.inc.h
+DiagnosticIDs.po: DiagnosticASTKinds.inc.h
+DiagnosticIDs.po: DiagnosticAnalysisKinds.inc.h
+DiagnosticIDs.po: DiagnosticCommentKinds.inc.h
+DiagnosticIDs.po: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.po: DiagnosticDriverKinds.inc.h
+DiagnosticIDs.po: DiagnosticFrontendKinds.inc.h
+DiagnosticIDs.po: DiagnosticGroups.inc.h
+DiagnosticIDs.po: DiagnosticLexKinds.inc.h
+DiagnosticIDs.po: DiagnosticParseKinds.inc.h
+DiagnosticIDs.po: DiagnosticSemaKinds.inc.h
+DiagnosticIDs.po: DiagnosticSerializationKinds.inc.h
+SourceManager.o: DiagnosticCommonKinds.inc.h
+SourceManager.po: DiagnosticCommonKinds.inc.h
+Targets.o: DiagnosticCommonKinds.inc.h
+Targets.o: arm_neon.inc.h
+Targets.po: DiagnosticCommonKinds.inc.h
+Targets.po: arm_neon.inc.h
+Warnings.o: DiagnosticASTKinds.inc.h
+Warnings.o: DiagnosticAnalysisKinds.inc.h
+Warnings.o: DiagnosticCommentKinds.inc.h
+Warnings.o: DiagnosticCommonKinds.inc.h
+Warnings.o: DiagnosticDriverKinds.inc.h
+Warnings.o: DiagnosticFrontendKinds.inc.h
+Warnings.o: DiagnosticLexKinds.inc.h
+Warnings.o: DiagnosticParseKinds.inc.h
+Warnings.o: DiagnosticSemaKinds.inc.h
+Warnings.o: DiagnosticSerializationKinds.inc.h
+Warnings.po: DiagnosticASTKinds.inc.h
+Warnings.po: DiagnosticAnalysisKinds.inc.h
+Warnings.po: DiagnosticCommentKinds.inc.h
+Warnings.po: DiagnosticCommonKinds.inc.h
+Warnings.po: DiagnosticDriverKinds.inc.h
+Warnings.po: DiagnosticFrontendKinds.inc.h
+Warnings.po: DiagnosticLexKinds.inc.h
+Warnings.po: DiagnosticParseKinds.inc.h
+Warnings.po: DiagnosticSemaKinds.inc.h
+Warnings.po: DiagnosticSerializationKinds.inc.h
+.endif
diff --git a/lib/clang/libclangcodegen/Makefile.depend b/lib/clang/libclangcodegen/Makefile.depend
new file mode 100644
index 0000000..bb7fc0e
--- /dev/null
+++ b/lib/clang/libclangcodegen/Makefile.depend
@@ -0,0 +1,601 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BackendUtil.o: DiagnosticCommonKinds.inc.h
+BackendUtil.o: DiagnosticFrontendKinds.inc.h
+BackendUtil.po: DiagnosticCommonKinds.inc.h
+BackendUtil.po: DiagnosticFrontendKinds.inc.h
+CGAtomic.o: AttrList.inc.h
+CGAtomic.o: Attrs.inc.h
+CGAtomic.o: CommentCommandList.inc.h
+CGAtomic.o: DeclNodes.inc.h
+CGAtomic.o: DiagnosticCommonKinds.inc.h
+CGAtomic.o: Intrinsics.inc.h
+CGAtomic.o: StmtNodes.inc.h
+CGAtomic.po: AttrList.inc.h
+CGAtomic.po: Attrs.inc.h
+CGAtomic.po: CommentCommandList.inc.h
+CGAtomic.po: DeclNodes.inc.h
+CGAtomic.po: DiagnosticCommonKinds.inc.h
+CGAtomic.po: Intrinsics.inc.h
+CGAtomic.po: StmtNodes.inc.h
+CGBlocks.o: AttrList.inc.h
+CGBlocks.o: Attrs.inc.h
+CGBlocks.o: CommentCommandList.inc.h
+CGBlocks.o: DeclNodes.inc.h
+CGBlocks.o: DiagnosticCommonKinds.inc.h
+CGBlocks.o: StmtNodes.inc.h
+CGBlocks.po: AttrList.inc.h
+CGBlocks.po: Attrs.inc.h
+CGBlocks.po: CommentCommandList.inc.h
+CGBlocks.po: DeclNodes.inc.h
+CGBlocks.po: DiagnosticCommonKinds.inc.h
+CGBlocks.po: StmtNodes.inc.h
+CGBuiltin.o: AttrList.inc.h
+CGBuiltin.o: Attrs.inc.h
+CGBuiltin.o: CommentCommandList.inc.h
+CGBuiltin.o: DeclNodes.inc.h
+CGBuiltin.o: DiagnosticCommonKinds.inc.h
+CGBuiltin.o: Intrinsics.inc.h
+CGBuiltin.o: StmtNodes.inc.h
+CGBuiltin.o: arm_neon.inc.h
+CGBuiltin.po: AttrList.inc.h
+CGBuiltin.po: Attrs.inc.h
+CGBuiltin.po: CommentCommandList.inc.h
+CGBuiltin.po: DeclNodes.inc.h
+CGBuiltin.po: DiagnosticCommonKinds.inc.h
+CGBuiltin.po: Intrinsics.inc.h
+CGBuiltin.po: StmtNodes.inc.h
+CGBuiltin.po: arm_neon.inc.h
+CGCUDANV.o: AttrList.inc.h
+CGCUDANV.o: Attrs.inc.h
+CGCUDANV.o: CommentCommandList.inc.h
+CGCUDANV.o: DeclNodes.inc.h
+CGCUDANV.o: DiagnosticCommonKinds.inc.h
+CGCUDANV.o: StmtNodes.inc.h
+CGCUDANV.po: AttrList.inc.h
+CGCUDANV.po: Attrs.inc.h
+CGCUDANV.po: CommentCommandList.inc.h
+CGCUDANV.po: DeclNodes.inc.h
+CGCUDANV.po: DiagnosticCommonKinds.inc.h
+CGCUDANV.po: StmtNodes.inc.h
+CGCUDARuntime.o: AttrList.inc.h
+CGCUDARuntime.o: Attrs.inc.h
+CGCUDARuntime.o: CommentCommandList.inc.h
+CGCUDARuntime.o: DeclNodes.inc.h
+CGCUDARuntime.o: DiagnosticCommonKinds.inc.h
+CGCUDARuntime.o: StmtNodes.inc.h
+CGCUDARuntime.po: AttrList.inc.h
+CGCUDARuntime.po: Attrs.inc.h
+CGCUDARuntime.po: CommentCommandList.inc.h
+CGCUDARuntime.po: DeclNodes.inc.h
+CGCUDARuntime.po: DiagnosticCommonKinds.inc.h
+CGCUDARuntime.po: StmtNodes.inc.h
+CGCXX.o: AttrList.inc.h
+CGCXX.o: Attrs.inc.h
+CGCXX.o: CommentCommandList.inc.h
+CGCXX.o: DeclNodes.inc.h
+CGCXX.o: DiagnosticCommonKinds.inc.h
+CGCXX.o: StmtNodes.inc.h
+CGCXX.po: AttrList.inc.h
+CGCXX.po: Attrs.inc.h
+CGCXX.po: CommentCommandList.inc.h
+CGCXX.po: DeclNodes.inc.h
+CGCXX.po: DiagnosticCommonKinds.inc.h
+CGCXX.po: StmtNodes.inc.h
+CGCXXABI.o: AttrList.inc.h
+CGCXXABI.o: Attrs.inc.h
+CGCXXABI.o: CommentCommandList.inc.h
+CGCXXABI.o: DeclNodes.inc.h
+CGCXXABI.o: DiagnosticCommonKinds.inc.h
+CGCXXABI.o: StmtNodes.inc.h
+CGCXXABI.po: AttrList.inc.h
+CGCXXABI.po: Attrs.inc.h
+CGCXXABI.po: CommentCommandList.inc.h
+CGCXXABI.po: DeclNodes.inc.h
+CGCXXABI.po: DiagnosticCommonKinds.inc.h
+CGCXXABI.po: StmtNodes.inc.h
+CGCall.o: AttrList.inc.h
+CGCall.o: Attrs.inc.h
+CGCall.o: CommentCommandList.inc.h
+CGCall.o: DeclNodes.inc.h
+CGCall.o: DiagnosticCommonKinds.inc.h
+CGCall.o: Intrinsics.inc.h
+CGCall.o: StmtNodes.inc.h
+CGCall.po: AttrList.inc.h
+CGCall.po: Attrs.inc.h
+CGCall.po: CommentCommandList.inc.h
+CGCall.po: DeclNodes.inc.h
+CGCall.po: DiagnosticCommonKinds.inc.h
+CGCall.po: Intrinsics.inc.h
+CGCall.po: StmtNodes.inc.h
+CGClass.o: AttrList.inc.h
+CGClass.o: Attrs.inc.h
+CGClass.o: CommentCommandList.inc.h
+CGClass.o: DeclNodes.inc.h
+CGClass.o: DiagnosticCommonKinds.inc.h
+CGClass.o: StmtNodes.inc.h
+CGClass.o: arm_neon.inc.h
+CGClass.po: AttrList.inc.h
+CGClass.po: Attrs.inc.h
+CGClass.po: CommentCommandList.inc.h
+CGClass.po: DeclNodes.inc.h
+CGClass.po: DiagnosticCommonKinds.inc.h
+CGClass.po: StmtNodes.inc.h
+CGClass.po: arm_neon.inc.h
+CGCleanup.o: AttrList.inc.h
+CGCleanup.o: Attrs.inc.h
+CGCleanup.o: CommentCommandList.inc.h
+CGCleanup.o: DeclNodes.inc.h
+CGCleanup.o: DiagnosticCommonKinds.inc.h
+CGCleanup.o: StmtNodes.inc.h
+CGCleanup.po: AttrList.inc.h
+CGCleanup.po: Attrs.inc.h
+CGCleanup.po: CommentCommandList.inc.h
+CGCleanup.po: DeclNodes.inc.h
+CGCleanup.po: DiagnosticCommonKinds.inc.h
+CGCleanup.po: StmtNodes.inc.h
+CGDebugInfo.o: AttrList.inc.h
+CGDebugInfo.o: Attrs.inc.h
+CGDebugInfo.o: CommentCommandList.inc.h
+CGDebugInfo.o: DeclNodes.inc.h
+CGDebugInfo.o: DiagnosticCommonKinds.inc.h
+CGDebugInfo.o: Intrinsics.inc.h
+CGDebugInfo.o: StmtNodes.inc.h
+CGDebugInfo.po: AttrList.inc.h
+CGDebugInfo.po: Attrs.inc.h
+CGDebugInfo.po: CommentCommandList.inc.h
+CGDebugInfo.po: DeclNodes.inc.h
+CGDebugInfo.po: DiagnosticCommonKinds.inc.h
+CGDebugInfo.po: Intrinsics.inc.h
+CGDebugInfo.po: StmtNodes.inc.h
+CGDecl.o: AttrList.inc.h
+CGDecl.o: Attrs.inc.h
+CGDecl.o: CommentCommandList.inc.h
+CGDecl.o: DeclNodes.inc.h
+CGDecl.o: DiagnosticCommonKinds.inc.h
+CGDecl.o: Intrinsics.inc.h
+CGDecl.o: StmtNodes.inc.h
+CGDecl.po: AttrList.inc.h
+CGDecl.po: Attrs.inc.h
+CGDecl.po: CommentCommandList.inc.h
+CGDecl.po: DeclNodes.inc.h
+CGDecl.po: DiagnosticCommonKinds.inc.h
+CGDecl.po: Intrinsics.inc.h
+CGDecl.po: StmtNodes.inc.h
+CGDeclCXX.o: AttrList.inc.h
+CGDeclCXX.o: Attrs.inc.h
+CGDeclCXX.o: CommentCommandList.inc.h
+CGDeclCXX.o: DeclNodes.inc.h
+CGDeclCXX.o: DiagnosticCommonKinds.inc.h
+CGDeclCXX.o: Intrinsics.inc.h
+CGDeclCXX.o: StmtNodes.inc.h
+CGDeclCXX.po: AttrList.inc.h
+CGDeclCXX.po: Attrs.inc.h
+CGDeclCXX.po: CommentCommandList.inc.h
+CGDeclCXX.po: DeclNodes.inc.h
+CGDeclCXX.po: DiagnosticCommonKinds.inc.h
+CGDeclCXX.po: Intrinsics.inc.h
+CGDeclCXX.po: StmtNodes.inc.h
+CGException.o: AttrList.inc.h
+CGException.o: Attrs.inc.h
+CGException.o: CommentCommandList.inc.h
+CGException.o: DeclNodes.inc.h
+CGException.o: DiagnosticCommonKinds.inc.h
+CGException.o: Intrinsics.inc.h
+CGException.o: StmtNodes.inc.h
+CGException.po: AttrList.inc.h
+CGException.po: Attrs.inc.h
+CGException.po: CommentCommandList.inc.h
+CGException.po: DeclNodes.inc.h
+CGException.po: DiagnosticCommonKinds.inc.h
+CGException.po: Intrinsics.inc.h
+CGException.po: StmtNodes.inc.h
+CGExpr.o: AttrList.inc.h
+CGExpr.o: Attrs.inc.h
+CGExpr.o: CommentCommandList.inc.h
+CGExpr.o: DeclNodes.inc.h
+CGExpr.o: DiagnosticCommonKinds.inc.h
+CGExpr.o: Intrinsics.inc.h
+CGExpr.o: StmtNodes.inc.h
+CGExpr.po: AttrList.inc.h
+CGExpr.po: Attrs.inc.h
+CGExpr.po: CommentCommandList.inc.h
+CGExpr.po: DeclNodes.inc.h
+CGExpr.po: DiagnosticCommonKinds.inc.h
+CGExpr.po: Intrinsics.inc.h
+CGExpr.po: StmtNodes.inc.h
+CGExprAgg.o: AttrList.inc.h
+CGExprAgg.o: Attrs.inc.h
+CGExprAgg.o: CommentCommandList.inc.h
+CGExprAgg.o: DeclNodes.inc.h
+CGExprAgg.o: DiagnosticCommonKinds.inc.h
+CGExprAgg.o: Intrinsics.inc.h
+CGExprAgg.o: StmtNodes.inc.h
+CGExprAgg.po: AttrList.inc.h
+CGExprAgg.po: Attrs.inc.h
+CGExprAgg.po: CommentCommandList.inc.h
+CGExprAgg.po: DeclNodes.inc.h
+CGExprAgg.po: DiagnosticCommonKinds.inc.h
+CGExprAgg.po: Intrinsics.inc.h
+CGExprAgg.po: StmtNodes.inc.h
+CGExprCXX.o: AttrList.inc.h
+CGExprCXX.o: Attrs.inc.h
+CGExprCXX.o: CommentCommandList.inc.h
+CGExprCXX.o: DeclNodes.inc.h
+CGExprCXX.o: DiagnosticCommonKinds.inc.h
+CGExprCXX.o: Intrinsics.inc.h
+CGExprCXX.o: StmtNodes.inc.h
+CGExprCXX.po: AttrList.inc.h
+CGExprCXX.po: Attrs.inc.h
+CGExprCXX.po: CommentCommandList.inc.h
+CGExprCXX.po: DeclNodes.inc.h
+CGExprCXX.po: DiagnosticCommonKinds.inc.h
+CGExprCXX.po: Intrinsics.inc.h
+CGExprCXX.po: StmtNodes.inc.h
+CGExprComplex.o: AttrList.inc.h
+CGExprComplex.o: Attrs.inc.h
+CGExprComplex.o: CommentCommandList.inc.h
+CGExprComplex.o: DeclNodes.inc.h
+CGExprComplex.o: DiagnosticCommonKinds.inc.h
+CGExprComplex.o: StmtNodes.inc.h
+CGExprComplex.po: AttrList.inc.h
+CGExprComplex.po: Attrs.inc.h
+CGExprComplex.po: CommentCommandList.inc.h
+CGExprComplex.po: DeclNodes.inc.h
+CGExprComplex.po: DiagnosticCommonKinds.inc.h
+CGExprComplex.po: StmtNodes.inc.h
+CGExprConstant.o: AttrList.inc.h
+CGExprConstant.o: Attrs.inc.h
+CGExprConstant.o: CommentCommandList.inc.h
+CGExprConstant.o: DeclNodes.inc.h
+CGExprConstant.o: DiagnosticCommonKinds.inc.h
+CGExprConstant.o: StmtNodes.inc.h
+CGExprConstant.po: AttrList.inc.h
+CGExprConstant.po: Attrs.inc.h
+CGExprConstant.po: CommentCommandList.inc.h
+CGExprConstant.po: DeclNodes.inc.h
+CGExprConstant.po: DiagnosticCommonKinds.inc.h
+CGExprConstant.po: StmtNodes.inc.h
+CGExprScalar.o: AttrList.inc.h
+CGExprScalar.o: Attrs.inc.h
+CGExprScalar.o: CommentCommandList.inc.h
+CGExprScalar.o: DeclNodes.inc.h
+CGExprScalar.o: DiagnosticCommonKinds.inc.h
+CGExprScalar.o: Intrinsics.inc.h
+CGExprScalar.o: StmtNodes.inc.h
+CGExprScalar.po: AttrList.inc.h
+CGExprScalar.po: Attrs.inc.h
+CGExprScalar.po: CommentCommandList.inc.h
+CGExprScalar.po: DeclNodes.inc.h
+CGExprScalar.po: DiagnosticCommonKinds.inc.h
+CGExprScalar.po: Intrinsics.inc.h
+CGExprScalar.po: StmtNodes.inc.h
+CGObjC.o: AttrList.inc.h
+CGObjC.o: Attrs.inc.h
+CGObjC.o: CommentCommandList.inc.h
+CGObjC.o: DeclNodes.inc.h
+CGObjC.o: DiagnosticCommonKinds.inc.h
+CGObjC.o: StmtNodes.inc.h
+CGObjC.po: AttrList.inc.h
+CGObjC.po: Attrs.inc.h
+CGObjC.po: CommentCommandList.inc.h
+CGObjC.po: DeclNodes.inc.h
+CGObjC.po: DiagnosticCommonKinds.inc.h
+CGObjC.po: StmtNodes.inc.h
+CGObjCGNU.o: AttrList.inc.h
+CGObjCGNU.o: Attrs.inc.h
+CGObjCGNU.o: CommentCommandList.inc.h
+CGObjCGNU.o: DeclNodes.inc.h
+CGObjCGNU.o: DiagnosticCommonKinds.inc.h
+CGObjCGNU.o: Intrinsics.inc.h
+CGObjCGNU.o: StmtNodes.inc.h
+CGObjCGNU.po: AttrList.inc.h
+CGObjCGNU.po: Attrs.inc.h
+CGObjCGNU.po: CommentCommandList.inc.h
+CGObjCGNU.po: DeclNodes.inc.h
+CGObjCGNU.po: DiagnosticCommonKinds.inc.h
+CGObjCGNU.po: Intrinsics.inc.h
+CGObjCGNU.po: StmtNodes.inc.h
+CGObjCMac.o: AttrList.inc.h
+CGObjCMac.o: Attrs.inc.h
+CGObjCMac.o: CommentCommandList.inc.h
+CGObjCMac.o: DeclNodes.inc.h
+CGObjCMac.o: DiagnosticCommonKinds.inc.h
+CGObjCMac.o: Intrinsics.inc.h
+CGObjCMac.o: StmtNodes.inc.h
+CGObjCMac.po: AttrList.inc.h
+CGObjCMac.po: Attrs.inc.h
+CGObjCMac.po: CommentCommandList.inc.h
+CGObjCMac.po: DeclNodes.inc.h
+CGObjCMac.po: DiagnosticCommonKinds.inc.h
+CGObjCMac.po: Intrinsics.inc.h
+CGObjCMac.po: StmtNodes.inc.h
+CGObjCRuntime.o: AttrList.inc.h
+CGObjCRuntime.o: Attrs.inc.h
+CGObjCRuntime.o: CommentCommandList.inc.h
+CGObjCRuntime.o: DeclNodes.inc.h
+CGObjCRuntime.o: DiagnosticCommonKinds.inc.h
+CGObjCRuntime.o: StmtNodes.inc.h
+CGObjCRuntime.po: AttrList.inc.h
+CGObjCRuntime.po: Attrs.inc.h
+CGObjCRuntime.po: CommentCommandList.inc.h
+CGObjCRuntime.po: DeclNodes.inc.h
+CGObjCRuntime.po: DiagnosticCommonKinds.inc.h
+CGObjCRuntime.po: StmtNodes.inc.h
+CGOpenCLRuntime.o: AttrList.inc.h
+CGOpenCLRuntime.o: Attrs.inc.h
+CGOpenCLRuntime.o: CommentCommandList.inc.h
+CGOpenCLRuntime.o: DeclNodes.inc.h
+CGOpenCLRuntime.o: DiagnosticCommonKinds.inc.h
+CGOpenCLRuntime.o: StmtNodes.inc.h
+CGOpenCLRuntime.po: AttrList.inc.h
+CGOpenCLRuntime.po: Attrs.inc.h
+CGOpenCLRuntime.po: CommentCommandList.inc.h
+CGOpenCLRuntime.po: DeclNodes.inc.h
+CGOpenCLRuntime.po: DiagnosticCommonKinds.inc.h
+CGOpenCLRuntime.po: StmtNodes.inc.h
+CGOpenMPRuntime.o: AttrList.inc.h
+CGOpenMPRuntime.o: Attrs.inc.h
+CGOpenMPRuntime.o: CommentCommandList.inc.h
+CGOpenMPRuntime.o: DeclNodes.inc.h
+CGOpenMPRuntime.o: DiagnosticCommonKinds.inc.h
+CGOpenMPRuntime.o: StmtNodes.inc.h
+CGOpenMPRuntime.po: AttrList.inc.h
+CGOpenMPRuntime.po: Attrs.inc.h
+CGOpenMPRuntime.po: CommentCommandList.inc.h
+CGOpenMPRuntime.po: DeclNodes.inc.h
+CGOpenMPRuntime.po: DiagnosticCommonKinds.inc.h
+CGOpenMPRuntime.po: StmtNodes.inc.h
+CGRecordLayoutBuilder.o: AttrList.inc.h
+CGRecordLayoutBuilder.o: Attrs.inc.h
+CGRecordLayoutBuilder.o: CommentCommandList.inc.h
+CGRecordLayoutBuilder.o: DeclNodes.inc.h
+CGRecordLayoutBuilder.o: DiagnosticCommonKinds.inc.h
+CGRecordLayoutBuilder.o: StmtNodes.inc.h
+CGRecordLayoutBuilder.po: AttrList.inc.h
+CGRecordLayoutBuilder.po: Attrs.inc.h
+CGRecordLayoutBuilder.po: CommentCommandList.inc.h
+CGRecordLayoutBuilder.po: DeclNodes.inc.h
+CGRecordLayoutBuilder.po: DiagnosticCommonKinds.inc.h
+CGRecordLayoutBuilder.po: StmtNodes.inc.h
+CGStmt.o: AttrList.inc.h
+CGStmt.o: AttrParsedAttrList.inc.h
+CGStmt.o: Attrs.inc.h
+CGStmt.o: CommentCommandList.inc.h
+CGStmt.o: DeclNodes.inc.h
+CGStmt.o: DiagnosticCommonKinds.inc.h
+CGStmt.o: DiagnosticSemaKinds.inc.h
+CGStmt.o: Intrinsics.inc.h
+CGStmt.o: StmtNodes.inc.h
+CGStmt.po: AttrList.inc.h
+CGStmt.po: AttrParsedAttrList.inc.h
+CGStmt.po: Attrs.inc.h
+CGStmt.po: CommentCommandList.inc.h
+CGStmt.po: DeclNodes.inc.h
+CGStmt.po: DiagnosticCommonKinds.inc.h
+CGStmt.po: DiagnosticSemaKinds.inc.h
+CGStmt.po: Intrinsics.inc.h
+CGStmt.po: StmtNodes.inc.h
+CGStmtOpenMP.o: AttrList.inc.h
+CGStmtOpenMP.o: Attrs.inc.h
+CGStmtOpenMP.o: CommentCommandList.inc.h
+CGStmtOpenMP.o: DeclNodes.inc.h
+CGStmtOpenMP.o: DiagnosticCommonKinds.inc.h
+CGStmtOpenMP.o: StmtNodes.inc.h
+CGStmtOpenMP.po: AttrList.inc.h
+CGStmtOpenMP.po: Attrs.inc.h
+CGStmtOpenMP.po: CommentCommandList.inc.h
+CGStmtOpenMP.po: DeclNodes.inc.h
+CGStmtOpenMP.po: DiagnosticCommonKinds.inc.h
+CGStmtOpenMP.po: StmtNodes.inc.h
+CGVTT.o: AttrList.inc.h
+CGVTT.o: Attrs.inc.h
+CGVTT.o: CommentCommandList.inc.h
+CGVTT.o: DeclNodes.inc.h
+CGVTT.o: DiagnosticCommonKinds.inc.h
+CGVTT.o: StmtNodes.inc.h
+CGVTT.po: AttrList.inc.h
+CGVTT.po: Attrs.inc.h
+CGVTT.po: CommentCommandList.inc.h
+CGVTT.po: DeclNodes.inc.h
+CGVTT.po: DiagnosticCommonKinds.inc.h
+CGVTT.po: StmtNodes.inc.h
+CGVTables.o: AttrList.inc.h
+CGVTables.o: Attrs.inc.h
+CGVTables.o: CommentCommandList.inc.h
+CGVTables.o: DeclNodes.inc.h
+CGVTables.o: DiagnosticCommonKinds.inc.h
+CGVTables.o: StmtNodes.inc.h
+CGVTables.po: AttrList.inc.h
+CGVTables.po: Attrs.inc.h
+CGVTables.po: CommentCommandList.inc.h
+CGVTables.po: DeclNodes.inc.h
+CGVTables.po: DiagnosticCommonKinds.inc.h
+CGVTables.po: StmtNodes.inc.h
+CodeGenABITypes.o: AttrList.inc.h
+CodeGenABITypes.o: Attrs.inc.h
+CodeGenABITypes.o: CommentCommandList.inc.h
+CodeGenABITypes.o: DeclNodes.inc.h
+CodeGenABITypes.o: DiagnosticCommonKinds.inc.h
+CodeGenABITypes.o: StmtNodes.inc.h
+CodeGenABITypes.po: AttrList.inc.h
+CodeGenABITypes.po: Attrs.inc.h
+CodeGenABITypes.po: CommentCommandList.inc.h
+CodeGenABITypes.po: DeclNodes.inc.h
+CodeGenABITypes.po: DiagnosticCommonKinds.inc.h
+CodeGenABITypes.po: StmtNodes.inc.h
+CodeGenAction.o: AttrList.inc.h
+CodeGenAction.o: Attrs.inc.h
+CodeGenAction.o: CommentCommandList.inc.h
+CodeGenAction.o: DeclNodes.inc.h
+CodeGenAction.o: DiagnosticCommonKinds.inc.h
+CodeGenAction.o: DiagnosticFrontendKinds.inc.h
+CodeGenAction.o: StmtNodes.inc.h
+CodeGenAction.po: AttrList.inc.h
+CodeGenAction.po: Attrs.inc.h
+CodeGenAction.po: CommentCommandList.inc.h
+CodeGenAction.po: DeclNodes.inc.h
+CodeGenAction.po: DiagnosticCommonKinds.inc.h
+CodeGenAction.po: DiagnosticFrontendKinds.inc.h
+CodeGenAction.po: StmtNodes.inc.h
+CodeGenFunction.o: AttrList.inc.h
+CodeGenFunction.o: Attrs.inc.h
+CodeGenFunction.o: CommentCommandList.inc.h
+CodeGenFunction.o: DeclNodes.inc.h
+CodeGenFunction.o: DiagnosticCommonKinds.inc.h
+CodeGenFunction.o: Intrinsics.inc.h
+CodeGenFunction.o: StmtNodes.inc.h
+CodeGenFunction.po: AttrList.inc.h
+CodeGenFunction.po: Attrs.inc.h
+CodeGenFunction.po: CommentCommandList.inc.h
+CodeGenFunction.po: DeclNodes.inc.h
+CodeGenFunction.po: DiagnosticCommonKinds.inc.h
+CodeGenFunction.po: Intrinsics.inc.h
+CodeGenFunction.po: StmtNodes.inc.h
+CodeGenModule.o: AttrList.inc.h
+CodeGenModule.o: AttrVisitor.inc.h
+CodeGenModule.o: Attrs.inc.h
+CodeGenModule.o: CommentCommandList.inc.h
+CodeGenModule.o: DeclNodes.inc.h
+CodeGenModule.o: DiagnosticCommonKinds.inc.h
+CodeGenModule.o: DiagnosticSemaKinds.inc.h
+CodeGenModule.o: Intrinsics.inc.h
+CodeGenModule.o: StmtNodes.inc.h
+CodeGenModule.po: AttrList.inc.h
+CodeGenModule.po: AttrVisitor.inc.h
+CodeGenModule.po: Attrs.inc.h
+CodeGenModule.po: CommentCommandList.inc.h
+CodeGenModule.po: DeclNodes.inc.h
+CodeGenModule.po: DiagnosticCommonKinds.inc.h
+CodeGenModule.po: DiagnosticSemaKinds.inc.h
+CodeGenModule.po: Intrinsics.inc.h
+CodeGenModule.po: StmtNodes.inc.h
+CodeGenPGO.o: AttrList.inc.h
+CodeGenPGO.o: AttrVisitor.inc.h
+CodeGenPGO.o: Attrs.inc.h
+CodeGenPGO.o: CommentCommandList.inc.h
+CodeGenPGO.o: DeclNodes.inc.h
+CodeGenPGO.o: DiagnosticCommonKinds.inc.h
+CodeGenPGO.o: Intrinsics.inc.h
+CodeGenPGO.o: StmtNodes.inc.h
+CodeGenPGO.po: AttrList.inc.h
+CodeGenPGO.po: AttrVisitor.inc.h
+CodeGenPGO.po: Attrs.inc.h
+CodeGenPGO.po: CommentCommandList.inc.h
+CodeGenPGO.po: DeclNodes.inc.h
+CodeGenPGO.po: DiagnosticCommonKinds.inc.h
+CodeGenPGO.po: Intrinsics.inc.h
+CodeGenPGO.po: StmtNodes.inc.h
+CodeGenTBAA.o: AttrList.inc.h
+CodeGenTBAA.o: Attrs.inc.h
+CodeGenTBAA.o: CommentCommandList.inc.h
+CodeGenTBAA.o: DeclNodes.inc.h
+CodeGenTBAA.o: DiagnosticCommonKinds.inc.h
+CodeGenTBAA.o: StmtNodes.inc.h
+CodeGenTBAA.po: AttrList.inc.h
+CodeGenTBAA.po: Attrs.inc.h
+CodeGenTBAA.po: CommentCommandList.inc.h
+CodeGenTBAA.po: DeclNodes.inc.h
+CodeGenTBAA.po: DiagnosticCommonKinds.inc.h
+CodeGenTBAA.po: StmtNodes.inc.h
+CodeGenTypes.o: AttrList.inc.h
+CodeGenTypes.o: Attrs.inc.h
+CodeGenTypes.o: CommentCommandList.inc.h
+CodeGenTypes.o: DeclNodes.inc.h
+CodeGenTypes.o: DiagnosticCommonKinds.inc.h
+CodeGenTypes.o: StmtNodes.inc.h
+CodeGenTypes.po: AttrList.inc.h
+CodeGenTypes.po: Attrs.inc.h
+CodeGenTypes.po: CommentCommandList.inc.h
+CodeGenTypes.po: DeclNodes.inc.h
+CodeGenTypes.po: DiagnosticCommonKinds.inc.h
+CodeGenTypes.po: StmtNodes.inc.h
+CoverageMappingGen.o: AttrList.inc.h
+CoverageMappingGen.o: Attrs.inc.h
+CoverageMappingGen.o: CommentCommandList.inc.h
+CoverageMappingGen.o: DeclNodes.inc.h
+CoverageMappingGen.o: DiagnosticCommonKinds.inc.h
+CoverageMappingGen.o: StmtNodes.inc.h
+CoverageMappingGen.po: AttrList.inc.h
+CoverageMappingGen.po: Attrs.inc.h
+CoverageMappingGen.po: CommentCommandList.inc.h
+CoverageMappingGen.po: DeclNodes.inc.h
+CoverageMappingGen.po: DiagnosticCommonKinds.inc.h
+CoverageMappingGen.po: StmtNodes.inc.h
+ItaniumCXXABI.o: AttrList.inc.h
+ItaniumCXXABI.o: Attrs.inc.h
+ItaniumCXXABI.o: CommentCommandList.inc.h
+ItaniumCXXABI.o: DeclNodes.inc.h
+ItaniumCXXABI.o: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.o: Intrinsics.inc.h
+ItaniumCXXABI.o: StmtNodes.inc.h
+ItaniumCXXABI.po: AttrList.inc.h
+ItaniumCXXABI.po: Attrs.inc.h
+ItaniumCXXABI.po: CommentCommandList.inc.h
+ItaniumCXXABI.po: DeclNodes.inc.h
+ItaniumCXXABI.po: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.po: Intrinsics.inc.h
+ItaniumCXXABI.po: StmtNodes.inc.h
+MicrosoftCXXABI.o: AttrList.inc.h
+MicrosoftCXXABI.o: Attrs.inc.h
+MicrosoftCXXABI.o: CommentCommandList.inc.h
+MicrosoftCXXABI.o: DeclNodes.inc.h
+MicrosoftCXXABI.o: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.o: StmtNodes.inc.h
+MicrosoftCXXABI.po: AttrList.inc.h
+MicrosoftCXXABI.po: Attrs.inc.h
+MicrosoftCXXABI.po: CommentCommandList.inc.h
+MicrosoftCXXABI.po: DeclNodes.inc.h
+MicrosoftCXXABI.po: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.po: StmtNodes.inc.h
+ModuleBuilder.o: AttrList.inc.h
+ModuleBuilder.o: Attrs.inc.h
+ModuleBuilder.o: CommentCommandList.inc.h
+ModuleBuilder.o: DeclNodes.inc.h
+ModuleBuilder.o: DiagnosticCommonKinds.inc.h
+ModuleBuilder.o: StmtNodes.inc.h
+ModuleBuilder.po: AttrList.inc.h
+ModuleBuilder.po: Attrs.inc.h
+ModuleBuilder.po: CommentCommandList.inc.h
+ModuleBuilder.po: DeclNodes.inc.h
+ModuleBuilder.po: DiagnosticCommonKinds.inc.h
+ModuleBuilder.po: StmtNodes.inc.h
+SanitizerMetadata.o: AttrList.inc.h
+SanitizerMetadata.o: Attrs.inc.h
+SanitizerMetadata.o: CommentCommandList.inc.h
+SanitizerMetadata.o: DeclNodes.inc.h
+SanitizerMetadata.o: DiagnosticCommonKinds.inc.h
+SanitizerMetadata.o: StmtNodes.inc.h
+SanitizerMetadata.po: AttrList.inc.h
+SanitizerMetadata.po: Attrs.inc.h
+SanitizerMetadata.po: CommentCommandList.inc.h
+SanitizerMetadata.po: DeclNodes.inc.h
+SanitizerMetadata.po: DiagnosticCommonKinds.inc.h
+SanitizerMetadata.po: StmtNodes.inc.h
+TargetInfo.o: AttrList.inc.h
+TargetInfo.o: Attrs.inc.h
+TargetInfo.o: CommentCommandList.inc.h
+TargetInfo.o: DeclNodes.inc.h
+TargetInfo.o: DiagnosticCommonKinds.inc.h
+TargetInfo.o: StmtNodes.inc.h
+TargetInfo.po: AttrList.inc.h
+TargetInfo.po: Attrs.inc.h
+TargetInfo.po: CommentCommandList.inc.h
+TargetInfo.po: DeclNodes.inc.h
+TargetInfo.po: DiagnosticCommonKinds.inc.h
+TargetInfo.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangdriver/Makefile.depend b/lib/clang/libclangdriver/Makefile.depend
new file mode 100644
index 0000000..24c1e09
--- /dev/null
+++ b/lib/clang/libclangdriver/Makefile.depend
@@ -0,0 +1,71 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Compilation.o: DiagnosticCommonKinds.inc.h
+Compilation.o: DiagnosticDriverKinds.inc.h
+Compilation.o: Options.inc.h
+Compilation.po: DiagnosticCommonKinds.inc.h
+Compilation.po: DiagnosticDriverKinds.inc.h
+Compilation.po: Options.inc.h
+CrossWindowsToolChain.o: DiagnosticCommonKinds.inc.h
+CrossWindowsToolChain.o: Options.inc.h
+CrossWindowsToolChain.po: DiagnosticCommonKinds.inc.h
+CrossWindowsToolChain.po: Options.inc.h
+Driver.o: DiagnosticCommonKinds.inc.h
+Driver.o: DiagnosticDriverKinds.inc.h
+Driver.o: Options.inc.h
+Driver.po: DiagnosticCommonKinds.inc.h
+Driver.po: DiagnosticDriverKinds.inc.h
+Driver.po: Options.inc.h
+DriverOptions.o: Options.inc.h
+DriverOptions.po: Options.inc.h
+Job.o: DiagnosticCommonKinds.inc.h
+Job.o: DiagnosticDriverKinds.inc.h
+Job.po: DiagnosticCommonKinds.inc.h
+Job.po: DiagnosticDriverKinds.inc.h
+MSVCToolChain.o: DiagnosticCommonKinds.inc.h
+MSVCToolChain.o: DiagnosticDriverKinds.inc.h
+MSVCToolChain.o: Options.inc.h
+MSVCToolChain.po: DiagnosticCommonKinds.inc.h
+MSVCToolChain.po: DiagnosticDriverKinds.inc.h
+MSVCToolChain.po: Options.inc.h
+Multilib.o: Options.inc.h
+Multilib.po: Options.inc.h
+SanitizerArgs.o: DiagnosticCommonKinds.inc.h
+SanitizerArgs.o: DiagnosticDriverKinds.inc.h
+SanitizerArgs.o: Options.inc.h
+SanitizerArgs.po: DiagnosticCommonKinds.inc.h
+SanitizerArgs.po: DiagnosticDriverKinds.inc.h
+SanitizerArgs.po: Options.inc.h
+ToolChain.o: DiagnosticCommonKinds.inc.h
+ToolChain.o: DiagnosticDriverKinds.inc.h
+ToolChain.o: Options.inc.h
+ToolChain.po: DiagnosticCommonKinds.inc.h
+ToolChain.po: DiagnosticDriverKinds.inc.h
+ToolChain.po: Options.inc.h
+ToolChains.o: DiagnosticCommonKinds.inc.h
+ToolChains.o: DiagnosticDriverKinds.inc.h
+ToolChains.o: Options.inc.h
+ToolChains.po: DiagnosticCommonKinds.inc.h
+ToolChains.po: DiagnosticDriverKinds.inc.h
+ToolChains.po: Options.inc.h
+Tools.o: DiagnosticCommonKinds.inc.h
+Tools.o: DiagnosticDriverKinds.inc.h
+Tools.o: Options.inc.h
+Tools.po: DiagnosticCommonKinds.inc.h
+Tools.po: DiagnosticDriverKinds.inc.h
+Tools.po: Options.inc.h
+.endif
diff --git a/lib/clang/libclangedit/Makefile.depend b/lib/clang/libclangedit/Makefile.depend
new file mode 100644
index 0000000..778a945
--- /dev/null
+++ b/lib/clang/libclangedit/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Commit.o: DiagnosticCommonKinds.inc.h
+Commit.po: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.o: CommentCommandList.inc.h
+RewriteObjCFoundationAPI.o: DeclNodes.inc.h
+RewriteObjCFoundationAPI.o: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.o: StmtNodes.inc.h
+RewriteObjCFoundationAPI.po: CommentCommandList.inc.h
+RewriteObjCFoundationAPI.po: DeclNodes.inc.h
+RewriteObjCFoundationAPI.po: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangfrontend/Makefile.depend b/lib/clang/libclangfrontend/Makefile.depend
new file mode 100644
index 0000000..8605e39
--- /dev/null
+++ b/lib/clang/libclangfrontend/Makefile.depend
@@ -0,0 +1,225 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ASTConsumers.o: AttrList.inc.h
+ASTConsumers.o: AttrVisitor.inc.h
+ASTConsumers.o: Attrs.inc.h
+ASTConsumers.o: CommentCommandList.inc.h
+ASTConsumers.o: DeclNodes.inc.h
+ASTConsumers.o: DiagnosticCommonKinds.inc.h
+ASTConsumers.o: StmtNodes.inc.h
+ASTConsumers.po: AttrList.inc.h
+ASTConsumers.po: AttrVisitor.inc.h
+ASTConsumers.po: Attrs.inc.h
+ASTConsumers.po: CommentCommandList.inc.h
+ASTConsumers.po: DeclNodes.inc.h
+ASTConsumers.po: DiagnosticCommonKinds.inc.h
+ASTConsumers.po: StmtNodes.inc.h
+ASTMerge.o: CommentCommandList.inc.h
+ASTMerge.o: DeclNodes.inc.h
+ASTMerge.o: DiagnosticASTKinds.inc.h
+ASTMerge.o: DiagnosticCommonKinds.inc.h
+ASTMerge.o: StmtNodes.inc.h
+ASTMerge.po: CommentCommandList.inc.h
+ASTMerge.po: DeclNodes.inc.h
+ASTMerge.po: DiagnosticASTKinds.inc.h
+ASTMerge.po: DiagnosticCommonKinds.inc.h
+ASTMerge.po: StmtNodes.inc.h
+ASTUnit.o: AttrList.inc.h
+ASTUnit.o: AttrParsedAttrList.inc.h
+ASTUnit.o: Attrs.inc.h
+ASTUnit.o: CommentCommandList.inc.h
+ASTUnit.o: DeclNodes.inc.h
+ASTUnit.o: DiagnosticCommonKinds.inc.h
+ASTUnit.o: DiagnosticFrontendKinds.inc.h
+ASTUnit.o: StmtNodes.inc.h
+ASTUnit.po: AttrList.inc.h
+ASTUnit.po: AttrParsedAttrList.inc.h
+ASTUnit.po: Attrs.inc.h
+ASTUnit.po: CommentCommandList.inc.h
+ASTUnit.po: DeclNodes.inc.h
+ASTUnit.po: DiagnosticCommonKinds.inc.h
+ASTUnit.po: DiagnosticFrontendKinds.inc.h
+ASTUnit.po: StmtNodes.inc.h
+CacheTokens.o: DiagnosticCommonKinds.inc.h
+CacheTokens.po: DiagnosticCommonKinds.inc.h
+ChainedDiagnosticConsumer.o: DiagnosticCommonKinds.inc.h
+ChainedDiagnosticConsumer.po: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.o: AttrList.inc.h
+ChainedIncludesSource.o: AttrParsedAttrList.inc.h
+ChainedIncludesSource.o: Attrs.inc.h
+ChainedIncludesSource.o: CommentCommandList.inc.h
+ChainedIncludesSource.o: DeclNodes.inc.h
+ChainedIncludesSource.o: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.o: StmtNodes.inc.h
+ChainedIncludesSource.po: AttrList.inc.h
+ChainedIncludesSource.po: AttrParsedAttrList.inc.h
+ChainedIncludesSource.po: Attrs.inc.h
+ChainedIncludesSource.po: CommentCommandList.inc.h
+ChainedIncludesSource.po: DeclNodes.inc.h
+ChainedIncludesSource.po: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.po: StmtNodes.inc.h
+CompilerInstance.o: AttrList.inc.h
+CompilerInstance.o: AttrParsedAttrList.inc.h
+CompilerInstance.o: Attrs.inc.h
+CompilerInstance.o: CommentCommandList.inc.h
+CompilerInstance.o: DeclNodes.inc.h
+CompilerInstance.o: DiagnosticCommonKinds.inc.h
+CompilerInstance.o: DiagnosticFrontendKinds.inc.h
+CompilerInstance.o: StmtNodes.inc.h
+CompilerInstance.po: AttrList.inc.h
+CompilerInstance.po: AttrParsedAttrList.inc.h
+CompilerInstance.po: Attrs.inc.h
+CompilerInstance.po: CommentCommandList.inc.h
+CompilerInstance.po: DeclNodes.inc.h
+CompilerInstance.po: DiagnosticCommonKinds.inc.h
+CompilerInstance.po: DiagnosticFrontendKinds.inc.h
+CompilerInstance.po: StmtNodes.inc.h
+CompilerInvocation.o: AttrList.inc.h
+CompilerInvocation.o: AttrParsedAttrList.inc.h
+CompilerInvocation.o: Attrs.inc.h
+CompilerInvocation.o: DeclNodes.inc.h
+CompilerInvocation.o: DiagnosticCommonKinds.inc.h
+CompilerInvocation.o: DiagnosticDriverKinds.inc.h
+CompilerInvocation.o: DiagnosticFrontendKinds.inc.h
+CompilerInvocation.o: Options.inc.h
+CompilerInvocation.o: StmtNodes.inc.h
+CompilerInvocation.po: AttrList.inc.h
+CompilerInvocation.po: AttrParsedAttrList.inc.h
+CompilerInvocation.po: Attrs.inc.h
+CompilerInvocation.po: DeclNodes.inc.h
+CompilerInvocation.po: DiagnosticCommonKinds.inc.h
+CompilerInvocation.po: DiagnosticDriverKinds.inc.h
+CompilerInvocation.po: DiagnosticFrontendKinds.inc.h
+CompilerInvocation.po: Options.inc.h
+CompilerInvocation.po: StmtNodes.inc.h
+CreateInvocationFromCommandLine.o: DiagnosticCommonKinds.inc.h
+CreateInvocationFromCommandLine.o: DiagnosticFrontendKinds.inc.h
+CreateInvocationFromCommandLine.o: Options.inc.h
+CreateInvocationFromCommandLine.po: DiagnosticCommonKinds.inc.h
+CreateInvocationFromCommandLine.po: DiagnosticFrontendKinds.inc.h
+CreateInvocationFromCommandLine.po: Options.inc.h
+DependencyFile.o: AttrList.inc.h
+DependencyFile.o: AttrParsedAttrList.inc.h
+DependencyFile.o: Attrs.inc.h
+DependencyFile.o: DeclNodes.inc.h
+DependencyFile.o: DiagnosticCommonKinds.inc.h
+DependencyFile.o: DiagnosticFrontendKinds.inc.h
+DependencyFile.o: DiagnosticLexKinds.inc.h
+DependencyFile.o: StmtNodes.inc.h
+DependencyFile.po: AttrList.inc.h
+DependencyFile.po: AttrParsedAttrList.inc.h
+DependencyFile.po: Attrs.inc.h
+DependencyFile.po: DeclNodes.inc.h
+DependencyFile.po: DiagnosticCommonKinds.inc.h
+DependencyFile.po: DiagnosticFrontendKinds.inc.h
+DependencyFile.po: DiagnosticLexKinds.inc.h
+DependencyFile.po: StmtNodes.inc.h
+DependencyGraph.o: DiagnosticCommonKinds.inc.h
+DependencyGraph.o: DiagnosticFrontendKinds.inc.h
+DependencyGraph.po: DiagnosticCommonKinds.inc.h
+DependencyGraph.po: DiagnosticFrontendKinds.inc.h
+DiagnosticRenderer.o: DiagnosticCommonKinds.inc.h
+DiagnosticRenderer.po: DiagnosticCommonKinds.inc.h
+FrontendAction.o: AttrList.inc.h
+FrontendAction.o: AttrParsedAttrList.inc.h
+FrontendAction.o: Attrs.inc.h
+FrontendAction.o: CommentCommandList.inc.h
+FrontendAction.o: DeclNodes.inc.h
+FrontendAction.o: DiagnosticCommonKinds.inc.h
+FrontendAction.o: DiagnosticFrontendKinds.inc.h
+FrontendAction.o: StmtNodes.inc.h
+FrontendAction.po: AttrList.inc.h
+FrontendAction.po: AttrParsedAttrList.inc.h
+FrontendAction.po: Attrs.inc.h
+FrontendAction.po: CommentCommandList.inc.h
+FrontendAction.po: DeclNodes.inc.h
+FrontendAction.po: DiagnosticCommonKinds.inc.h
+FrontendAction.po: DiagnosticFrontendKinds.inc.h
+FrontendAction.po: StmtNodes.inc.h
+FrontendActions.o: AttrList.inc.h
+FrontendActions.o: AttrParsedAttrList.inc.h
+FrontendActions.o: Attrs.inc.h
+FrontendActions.o: CommentCommandList.inc.h
+FrontendActions.o: DeclNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.o: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: StmtNodes.inc.h
+FrontendActions.po: AttrList.inc.h
+FrontendActions.po: AttrParsedAttrList.inc.h
+FrontendActions.po: Attrs.inc.h
+FrontendActions.po: CommentCommandList.inc.h
+FrontendActions.po: DeclNodes.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+FrontendActions.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.po: StmtNodes.inc.h
+HeaderIncludeGen.o: DiagnosticCommonKinds.inc.h
+HeaderIncludeGen.o: DiagnosticFrontendKinds.inc.h
+HeaderIncludeGen.po: DiagnosticCommonKinds.inc.h
+HeaderIncludeGen.po: DiagnosticFrontendKinds.inc.h
+InitHeaderSearch.o: DiagnosticCommonKinds.inc.h
+InitHeaderSearch.po: DiagnosticCommonKinds.inc.h
+InitPreprocessor.o: AttrList.inc.h
+InitPreprocessor.o: AttrParsedAttrList.inc.h
+InitPreprocessor.o: Attrs.inc.h
+InitPreprocessor.o: DeclNodes.inc.h
+InitPreprocessor.o: DiagnosticCommonKinds.inc.h
+InitPreprocessor.o: DiagnosticFrontendKinds.inc.h
+InitPreprocessor.o: StmtNodes.inc.h
+InitPreprocessor.po: AttrList.inc.h
+InitPreprocessor.po: AttrParsedAttrList.inc.h
+InitPreprocessor.po: Attrs.inc.h
+InitPreprocessor.po: DeclNodes.inc.h
+InitPreprocessor.po: DiagnosticCommonKinds.inc.h
+InitPreprocessor.po: DiagnosticFrontendKinds.inc.h
+InitPreprocessor.po: StmtNodes.inc.h
+LayoutOverrideSource.o: DeclNodes.inc.h
+LayoutOverrideSource.o: DiagnosticCommonKinds.inc.h
+LayoutOverrideSource.po: DeclNodes.inc.h
+LayoutOverrideSource.po: DiagnosticCommonKinds.inc.h
+LogDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+LogDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+ModuleDependencyCollector.o: AttrList.inc.h
+ModuleDependencyCollector.o: AttrParsedAttrList.inc.h
+ModuleDependencyCollector.o: Attrs.inc.h
+ModuleDependencyCollector.o: DeclNodes.inc.h
+ModuleDependencyCollector.o: DiagnosticCommonKinds.inc.h
+ModuleDependencyCollector.o: StmtNodes.inc.h
+ModuleDependencyCollector.po: AttrList.inc.h
+ModuleDependencyCollector.po: AttrParsedAttrList.inc.h
+ModuleDependencyCollector.po: Attrs.inc.h
+ModuleDependencyCollector.po: DeclNodes.inc.h
+ModuleDependencyCollector.po: DiagnosticCommonKinds.inc.h
+ModuleDependencyCollector.po: StmtNodes.inc.h
+MultiplexConsumer.o: DiagnosticCommonKinds.inc.h
+MultiplexConsumer.po: DiagnosticCommonKinds.inc.h
+PrintPreprocessedOutput.o: DiagnosticCommonKinds.inc.h
+PrintPreprocessedOutput.po: DiagnosticCommonKinds.inc.h
+SerializedDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+SerializedDiagnosticPrinter.o: DiagnosticFrontendKinds.inc.h
+SerializedDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+SerializedDiagnosticPrinter.po: DiagnosticFrontendKinds.inc.h
+TextDiagnostic.o: DiagnosticCommonKinds.inc.h
+TextDiagnostic.po: DiagnosticCommonKinds.inc.h
+TextDiagnosticBuffer.o: DiagnosticCommonKinds.inc.h
+TextDiagnosticBuffer.po: DiagnosticCommonKinds.inc.h
+TextDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+TextDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.o: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.o: DiagnosticFrontendKinds.inc.h
+VerifyDiagnosticConsumer.po: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.po: DiagnosticFrontendKinds.inc.h
+.endif
diff --git a/lib/clang/libclangfrontendtool/Makefile.depend b/lib/clang/libclangfrontendtool/Makefile.depend
new file mode 100644
index 0000000..78a5190
--- /dev/null
+++ b/lib/clang/libclangfrontendtool/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ExecuteCompilerInvocation.o: CommentCommandList.inc.h
+ExecuteCompilerInvocation.o: DeclNodes.inc.h
+ExecuteCompilerInvocation.o: DiagnosticCommonKinds.inc.h
+ExecuteCompilerInvocation.o: DiagnosticFrontendKinds.inc.h
+ExecuteCompilerInvocation.o: Options.inc.h
+ExecuteCompilerInvocation.o: StmtNodes.inc.h
+ExecuteCompilerInvocation.po: CommentCommandList.inc.h
+ExecuteCompilerInvocation.po: DeclNodes.inc.h
+ExecuteCompilerInvocation.po: DiagnosticCommonKinds.inc.h
+ExecuteCompilerInvocation.po: DiagnosticFrontendKinds.inc.h
+ExecuteCompilerInvocation.po: Options.inc.h
+ExecuteCompilerInvocation.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclanglex/Makefile.depend b/lib/clang/libclanglex/Makefile.depend
new file mode 100644
index 0000000..ae88032
--- /dev/null
+++ b/lib/clang/libclanglex/Makefile.depend
@@ -0,0 +1,85 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/clang/include.host \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+HeaderSearch.o: DiagnosticCommonKinds.inc.h
+HeaderSearch.o: DiagnosticLexKinds.inc.h
+HeaderSearch.po: DiagnosticCommonKinds.inc.h
+HeaderSearch.po: DiagnosticLexKinds.inc.h
+Lexer.o: DiagnosticCommonKinds.inc.h
+Lexer.o: DiagnosticLexKinds.inc.h
+Lexer.po: DiagnosticCommonKinds.inc.h
+Lexer.po: DiagnosticLexKinds.inc.h
+LiteralSupport.o: DiagnosticCommonKinds.inc.h
+LiteralSupport.o: DiagnosticLexKinds.inc.h
+LiteralSupport.po: DiagnosticCommonKinds.inc.h
+LiteralSupport.po: DiagnosticLexKinds.inc.h
+MacroArgs.o: DiagnosticCommonKinds.inc.h
+MacroArgs.o: DiagnosticLexKinds.inc.h
+MacroArgs.po: DiagnosticCommonKinds.inc.h
+MacroArgs.po: DiagnosticLexKinds.inc.h
+MacroInfo.o: DiagnosticCommonKinds.inc.h
+MacroInfo.po: DiagnosticCommonKinds.inc.h
+ModuleMap.o: DiagnosticCommonKinds.inc.h
+ModuleMap.o: DiagnosticLexKinds.inc.h
+ModuleMap.po: DiagnosticCommonKinds.inc.h
+ModuleMap.po: DiagnosticLexKinds.inc.h
+PPCaching.o: DiagnosticCommonKinds.inc.h
+PPCaching.po: DiagnosticCommonKinds.inc.h
+PPCallbacks.o: DiagnosticCommonKinds.inc.h
+PPCallbacks.po: DiagnosticCommonKinds.inc.h
+PPConditionalDirectiveRecord.o: DiagnosticCommonKinds.inc.h
+PPConditionalDirectiveRecord.po: DiagnosticCommonKinds.inc.h
+PPDirectives.o: DiagnosticCommonKinds.inc.h
+PPDirectives.o: DiagnosticLexKinds.inc.h
+PPDirectives.po: DiagnosticCommonKinds.inc.h
+PPDirectives.po: DiagnosticLexKinds.inc.h
+PPExpressions.o: DiagnosticCommonKinds.inc.h
+PPExpressions.o: DiagnosticLexKinds.inc.h
+PPExpressions.po: DiagnosticCommonKinds.inc.h
+PPExpressions.po: DiagnosticLexKinds.inc.h
+PPLexerChange.o: DiagnosticCommonKinds.inc.h
+PPLexerChange.o: DiagnosticLexKinds.inc.h
+PPLexerChange.po: DiagnosticCommonKinds.inc.h
+PPLexerChange.po: DiagnosticLexKinds.inc.h
+PPMacroExpansion.o: DiagnosticCommonKinds.inc.h
+PPMacroExpansion.o: DiagnosticLexKinds.inc.h
+PPMacroExpansion.po: DiagnosticCommonKinds.inc.h
+PPMacroExpansion.po: DiagnosticLexKinds.inc.h
+PTHLexer.o: DiagnosticCommonKinds.inc.h
+PTHLexer.o: DiagnosticLexKinds.inc.h
+PTHLexer.po: DiagnosticCommonKinds.inc.h
+PTHLexer.po: DiagnosticLexKinds.inc.h
+Pragma.o: DiagnosticCommonKinds.inc.h
+Pragma.o: DiagnosticLexKinds.inc.h
+Pragma.po: DiagnosticCommonKinds.inc.h
+Pragma.po: DiagnosticLexKinds.inc.h
+PreprocessingRecord.o: DiagnosticCommonKinds.inc.h
+PreprocessingRecord.po: DiagnosticCommonKinds.inc.h
+Preprocessor.o: DiagnosticCommonKinds.inc.h
+Preprocessor.o: DiagnosticLexKinds.inc.h
+Preprocessor.po: DiagnosticCommonKinds.inc.h
+Preprocessor.po: DiagnosticLexKinds.inc.h
+PreprocessorLexer.o: DiagnosticCommonKinds.inc.h
+PreprocessorLexer.o: DiagnosticLexKinds.inc.h
+PreprocessorLexer.po: DiagnosticCommonKinds.inc.h
+PreprocessorLexer.po: DiagnosticLexKinds.inc.h
+TokenConcatenation.o: DiagnosticCommonKinds.inc.h
+TokenConcatenation.po: DiagnosticCommonKinds.inc.h
+TokenLexer.o: DiagnosticCommonKinds.inc.h
+TokenLexer.o: DiagnosticLexKinds.inc.h
+TokenLexer.po: DiagnosticCommonKinds.inc.h
+TokenLexer.po: DiagnosticLexKinds.inc.h
+.endif
diff --git a/lib/clang/libclangparse/Makefile.depend b/lib/clang/libclangparse/Makefile.depend
new file mode 100644
index 0000000..52a5e4e
--- /dev/null
+++ b/lib/clang/libclangparse/Makefile.depend
@@ -0,0 +1,250 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ParseAST.o: AttrList.inc.h
+ParseAST.o: AttrParsedAttrList.inc.h
+ParseAST.o: Attrs.inc.h
+ParseAST.o: CommentCommandList.inc.h
+ParseAST.o: DeclNodes.inc.h
+ParseAST.o: DiagnosticCommonKinds.inc.h
+ParseAST.o: DiagnosticParseKinds.inc.h
+ParseAST.o: StmtNodes.inc.h
+ParseAST.po: AttrList.inc.h
+ParseAST.po: AttrParsedAttrList.inc.h
+ParseAST.po: Attrs.inc.h
+ParseAST.po: CommentCommandList.inc.h
+ParseAST.po: DeclNodes.inc.h
+ParseAST.po: DiagnosticCommonKinds.inc.h
+ParseAST.po: DiagnosticParseKinds.inc.h
+ParseAST.po: StmtNodes.inc.h
+ParseCXXInlineMethods.o: AttrList.inc.h
+ParseCXXInlineMethods.o: AttrParsedAttrList.inc.h
+ParseCXXInlineMethods.o: Attrs.inc.h
+ParseCXXInlineMethods.o: DeclNodes.inc.h
+ParseCXXInlineMethods.o: DiagnosticCommonKinds.inc.h
+ParseCXXInlineMethods.o: DiagnosticParseKinds.inc.h
+ParseCXXInlineMethods.o: StmtNodes.inc.h
+ParseCXXInlineMethods.po: AttrList.inc.h
+ParseCXXInlineMethods.po: AttrParsedAttrList.inc.h
+ParseCXXInlineMethods.po: Attrs.inc.h
+ParseCXXInlineMethods.po: DeclNodes.inc.h
+ParseCXXInlineMethods.po: DiagnosticCommonKinds.inc.h
+ParseCXXInlineMethods.po: DiagnosticParseKinds.inc.h
+ParseCXXInlineMethods.po: StmtNodes.inc.h
+ParseDecl.o: AttrList.inc.h
+ParseDecl.o: AttrParsedAttrList.inc.h
+ParseDecl.o: AttrParserStringSwitches.inc.h
+ParseDecl.o: Attrs.inc.h
+ParseDecl.o: CommentCommandList.inc.h
+ParseDecl.o: DeclNodes.inc.h
+ParseDecl.o: DiagnosticCommonKinds.inc.h
+ParseDecl.o: DiagnosticParseKinds.inc.h
+ParseDecl.o: StmtNodes.inc.h
+ParseDecl.po: AttrList.inc.h
+ParseDecl.po: AttrParsedAttrList.inc.h
+ParseDecl.po: AttrParserStringSwitches.inc.h
+ParseDecl.po: Attrs.inc.h
+ParseDecl.po: CommentCommandList.inc.h
+ParseDecl.po: DeclNodes.inc.h
+ParseDecl.po: DiagnosticCommonKinds.inc.h
+ParseDecl.po: DiagnosticParseKinds.inc.h
+ParseDecl.po: StmtNodes.inc.h
+ParseDeclCXX.o: AttrList.inc.h
+ParseDeclCXX.o: AttrParsedAttrList.inc.h
+ParseDeclCXX.o: Attrs.inc.h
+ParseDeclCXX.o: CommentCommandList.inc.h
+ParseDeclCXX.o: DeclNodes.inc.h
+ParseDeclCXX.o: DiagnosticCommonKinds.inc.h
+ParseDeclCXX.o: DiagnosticParseKinds.inc.h
+ParseDeclCXX.o: DiagnosticSemaKinds.inc.h
+ParseDeclCXX.o: StmtNodes.inc.h
+ParseDeclCXX.po: AttrList.inc.h
+ParseDeclCXX.po: AttrParsedAttrList.inc.h
+ParseDeclCXX.po: Attrs.inc.h
+ParseDeclCXX.po: CommentCommandList.inc.h
+ParseDeclCXX.po: DeclNodes.inc.h
+ParseDeclCXX.po: DiagnosticCommonKinds.inc.h
+ParseDeclCXX.po: DiagnosticParseKinds.inc.h
+ParseDeclCXX.po: DiagnosticSemaKinds.inc.h
+ParseDeclCXX.po: StmtNodes.inc.h
+ParseExpr.o: AttrList.inc.h
+ParseExpr.o: AttrParsedAttrList.inc.h
+ParseExpr.o: Attrs.inc.h
+ParseExpr.o: CommentCommandList.inc.h
+ParseExpr.o: DeclNodes.inc.h
+ParseExpr.o: DiagnosticCommonKinds.inc.h
+ParseExpr.o: DiagnosticParseKinds.inc.h
+ParseExpr.o: StmtNodes.inc.h
+ParseExpr.po: AttrList.inc.h
+ParseExpr.po: AttrParsedAttrList.inc.h
+ParseExpr.po: Attrs.inc.h
+ParseExpr.po: CommentCommandList.inc.h
+ParseExpr.po: DeclNodes.inc.h
+ParseExpr.po: DiagnosticCommonKinds.inc.h
+ParseExpr.po: DiagnosticParseKinds.inc.h
+ParseExpr.po: StmtNodes.inc.h
+ParseExprCXX.o: AttrList.inc.h
+ParseExprCXX.o: AttrParsedAttrList.inc.h
+ParseExprCXX.o: Attrs.inc.h
+ParseExprCXX.o: CommentCommandList.inc.h
+ParseExprCXX.o: DeclNodes.inc.h
+ParseExprCXX.o: DiagnosticCommonKinds.inc.h
+ParseExprCXX.o: DiagnosticParseKinds.inc.h
+ParseExprCXX.o: StmtNodes.inc.h
+ParseExprCXX.po: AttrList.inc.h
+ParseExprCXX.po: AttrParsedAttrList.inc.h
+ParseExprCXX.po: Attrs.inc.h
+ParseExprCXX.po: CommentCommandList.inc.h
+ParseExprCXX.po: DeclNodes.inc.h
+ParseExprCXX.po: DiagnosticCommonKinds.inc.h
+ParseExprCXX.po: DiagnosticParseKinds.inc.h
+ParseExprCXX.po: StmtNodes.inc.h
+ParseInit.o: AttrList.inc.h
+ParseInit.o: AttrParsedAttrList.inc.h
+ParseInit.o: Attrs.inc.h
+ParseInit.o: DeclNodes.inc.h
+ParseInit.o: DiagnosticCommonKinds.inc.h
+ParseInit.o: DiagnosticParseKinds.inc.h
+ParseInit.o: StmtNodes.inc.h
+ParseInit.po: AttrList.inc.h
+ParseInit.po: AttrParsedAttrList.inc.h
+ParseInit.po: Attrs.inc.h
+ParseInit.po: DeclNodes.inc.h
+ParseInit.po: DiagnosticCommonKinds.inc.h
+ParseInit.po: DiagnosticParseKinds.inc.h
+ParseInit.po: StmtNodes.inc.h
+ParseObjc.o: AttrList.inc.h
+ParseObjc.o: AttrParsedAttrList.inc.h
+ParseObjc.o: Attrs.inc.h
+ParseObjc.o: DeclNodes.inc.h
+ParseObjc.o: DiagnosticCommonKinds.inc.h
+ParseObjc.o: DiagnosticParseKinds.inc.h
+ParseObjc.o: StmtNodes.inc.h
+ParseObjc.po: AttrList.inc.h
+ParseObjc.po: AttrParsedAttrList.inc.h
+ParseObjc.po: Attrs.inc.h
+ParseObjc.po: DeclNodes.inc.h
+ParseObjc.po: DiagnosticCommonKinds.inc.h
+ParseObjc.po: DiagnosticParseKinds.inc.h
+ParseObjc.po: StmtNodes.inc.h
+ParseOpenMP.o: AttrList.inc.h
+ParseOpenMP.o: AttrParsedAttrList.inc.h
+ParseOpenMP.o: Attrs.inc.h
+ParseOpenMP.o: CommentCommandList.inc.h
+ParseOpenMP.o: DeclNodes.inc.h
+ParseOpenMP.o: DiagnosticCommonKinds.inc.h
+ParseOpenMP.o: DiagnosticParseKinds.inc.h
+ParseOpenMP.o: StmtNodes.inc.h
+ParseOpenMP.po: AttrList.inc.h
+ParseOpenMP.po: AttrParsedAttrList.inc.h
+ParseOpenMP.po: Attrs.inc.h
+ParseOpenMP.po: CommentCommandList.inc.h
+ParseOpenMP.po: DeclNodes.inc.h
+ParseOpenMP.po: DiagnosticCommonKinds.inc.h
+ParseOpenMP.po: DiagnosticParseKinds.inc.h
+ParseOpenMP.po: StmtNodes.inc.h
+ParsePragma.o: AttrList.inc.h
+ParsePragma.o: AttrParsedAttrList.inc.h
+ParsePragma.o: Attrs.inc.h
+ParsePragma.o: CommentCommandList.inc.h
+ParsePragma.o: DeclNodes.inc.h
+ParsePragma.o: DiagnosticCommonKinds.inc.h
+ParsePragma.o: DiagnosticParseKinds.inc.h
+ParsePragma.o: StmtNodes.inc.h
+ParsePragma.po: AttrList.inc.h
+ParsePragma.po: AttrParsedAttrList.inc.h
+ParsePragma.po: Attrs.inc.h
+ParsePragma.po: CommentCommandList.inc.h
+ParsePragma.po: DeclNodes.inc.h
+ParsePragma.po: DiagnosticCommonKinds.inc.h
+ParsePragma.po: DiagnosticParseKinds.inc.h
+ParsePragma.po: StmtNodes.inc.h
+ParseStmt.o: AttrList.inc.h
+ParseStmt.o: AttrParsedAttrList.inc.h
+ParseStmt.o: Attrs.inc.h
+ParseStmt.o: CommentCommandList.inc.h
+ParseStmt.o: DeclNodes.inc.h
+ParseStmt.o: DiagnosticCommonKinds.inc.h
+ParseStmt.o: DiagnosticParseKinds.inc.h
+ParseStmt.o: StmtNodes.inc.h
+ParseStmt.po: AttrList.inc.h
+ParseStmt.po: AttrParsedAttrList.inc.h
+ParseStmt.po: Attrs.inc.h
+ParseStmt.po: CommentCommandList.inc.h
+ParseStmt.po: DeclNodes.inc.h
+ParseStmt.po: DiagnosticCommonKinds.inc.h
+ParseStmt.po: DiagnosticParseKinds.inc.h
+ParseStmt.po: StmtNodes.inc.h
+ParseStmtAsm.o: AttrList.inc.h
+ParseStmtAsm.o: AttrParsedAttrList.inc.h
+ParseStmtAsm.o: Attrs.inc.h
+ParseStmtAsm.o: CommentCommandList.inc.h
+ParseStmtAsm.o: DeclNodes.inc.h
+ParseStmtAsm.o: DiagnosticCommonKinds.inc.h
+ParseStmtAsm.o: DiagnosticParseKinds.inc.h
+ParseStmtAsm.o: StmtNodes.inc.h
+ParseStmtAsm.po: AttrList.inc.h
+ParseStmtAsm.po: AttrParsedAttrList.inc.h
+ParseStmtAsm.po: Attrs.inc.h
+ParseStmtAsm.po: CommentCommandList.inc.h
+ParseStmtAsm.po: DeclNodes.inc.h
+ParseStmtAsm.po: DiagnosticCommonKinds.inc.h
+ParseStmtAsm.po: DiagnosticParseKinds.inc.h
+ParseStmtAsm.po: StmtNodes.inc.h
+ParseTemplate.o: AttrList.inc.h
+ParseTemplate.o: AttrParsedAttrList.inc.h
+ParseTemplate.o: Attrs.inc.h
+ParseTemplate.o: DeclNodes.inc.h
+ParseTemplate.o: DiagnosticCommonKinds.inc.h
+ParseTemplate.o: DiagnosticParseKinds.inc.h
+ParseTemplate.o: StmtNodes.inc.h
+ParseTemplate.po: AttrList.inc.h
+ParseTemplate.po: AttrParsedAttrList.inc.h
+ParseTemplate.po: Attrs.inc.h
+ParseTemplate.po: DeclNodes.inc.h
+ParseTemplate.po: DiagnosticCommonKinds.inc.h
+ParseTemplate.po: DiagnosticParseKinds.inc.h
+ParseTemplate.po: StmtNodes.inc.h
+ParseTentative.o: AttrList.inc.h
+ParseTentative.o: AttrParsedAttrList.inc.h
+ParseTentative.o: Attrs.inc.h
+ParseTentative.o: DeclNodes.inc.h
+ParseTentative.o: DiagnosticCommonKinds.inc.h
+ParseTentative.o: DiagnosticParseKinds.inc.h
+ParseTentative.o: StmtNodes.inc.h
+ParseTentative.po: AttrList.inc.h
+ParseTentative.po: AttrParsedAttrList.inc.h
+ParseTentative.po: Attrs.inc.h
+ParseTentative.po: DeclNodes.inc.h
+ParseTentative.po: DiagnosticCommonKinds.inc.h
+ParseTentative.po: DiagnosticParseKinds.inc.h
+ParseTentative.po: StmtNodes.inc.h
+Parser.o: AttrList.inc.h
+Parser.o: AttrParsedAttrList.inc.h
+Parser.o: Attrs.inc.h
+Parser.o: CommentCommandList.inc.h
+Parser.o: DeclNodes.inc.h
+Parser.o: DiagnosticCommonKinds.inc.h
+Parser.o: DiagnosticParseKinds.inc.h
+Parser.o: StmtNodes.inc.h
+Parser.po: AttrList.inc.h
+Parser.po: AttrParsedAttrList.inc.h
+Parser.po: Attrs.inc.h
+Parser.po: CommentCommandList.inc.h
+Parser.po: DeclNodes.inc.h
+Parser.po: DiagnosticCommonKinds.inc.h
+Parser.po: DiagnosticParseKinds.inc.h
+Parser.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangrewrite/Makefile.depend b/lib/clang/libclangrewrite/Makefile.depend
new file mode 100644
index 0000000..a6f8e9c
--- /dev/null
+++ b/lib/clang/libclangrewrite/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+HTMLRewrite.o: DiagnosticCommonKinds.inc.h
+HTMLRewrite.po: DiagnosticCommonKinds.inc.h
+Rewriter.o: DiagnosticCommonKinds.inc.h
+Rewriter.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libclangrewritefrontend/Makefile.depend b/lib/clang/libclangrewritefrontend/Makefile.depend
new file mode 100644
index 0000000..6bb290f
--- /dev/null
+++ b/lib/clang/libclangrewritefrontend/Makefile.depend
@@ -0,0 +1,50 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+FixItRewriter.o: DiagnosticCommonKinds.inc.h
+FixItRewriter.o: DiagnosticFrontendKinds.inc.h
+FixItRewriter.po: DiagnosticCommonKinds.inc.h
+FixItRewriter.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: AttrList.inc.h
+FrontendActions.o: AttrParsedAttrList.inc.h
+FrontendActions.o: Attrs.inc.h
+FrontendActions.o: CommentCommandList.inc.h
+FrontendActions.o: DeclNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.o: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: StmtNodes.inc.h
+FrontendActions.po: AttrList.inc.h
+FrontendActions.po: AttrParsedAttrList.inc.h
+FrontendActions.po: Attrs.inc.h
+FrontendActions.po: CommentCommandList.inc.h
+FrontendActions.po: DeclNodes.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+FrontendActions.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.po: StmtNodes.inc.h
+HTMLPrint.o: CommentCommandList.inc.h
+HTMLPrint.o: DeclNodes.inc.h
+HTMLPrint.o: DiagnosticCommonKinds.inc.h
+HTMLPrint.o: StmtNodes.inc.h
+HTMLPrint.po: CommentCommandList.inc.h
+HTMLPrint.po: DeclNodes.inc.h
+HTMLPrint.po: DiagnosticCommonKinds.inc.h
+HTMLPrint.po: StmtNodes.inc.h
+InclusionRewriter.o: DiagnosticCommonKinds.inc.h
+InclusionRewriter.po: DiagnosticCommonKinds.inc.h
+RewriteMacros.o: DiagnosticCommonKinds.inc.h
+RewriteMacros.po: DiagnosticCommonKinds.inc.h
+RewriteTest.o: DiagnosticCommonKinds.inc.h
+RewriteTest.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libclangsema/Makefile.depend b/lib/clang/libclangsema/Makefile.depend
new file mode 100644
index 0000000..158b16d
--- /dev/null
+++ b/lib/clang/libclangsema/Makefile.depend
@@ -0,0 +1,722 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisBasedWarnings.o: AttrList.inc.h
+AnalysisBasedWarnings.o: AttrParsedAttrList.inc.h
+AnalysisBasedWarnings.o: AttrVisitor.inc.h
+AnalysisBasedWarnings.o: Attrs.inc.h
+AnalysisBasedWarnings.o: CommentCommandList.inc.h
+AnalysisBasedWarnings.o: DeclNodes.inc.h
+AnalysisBasedWarnings.o: DiagnosticCommonKinds.inc.h
+AnalysisBasedWarnings.o: DiagnosticSemaKinds.inc.h
+AnalysisBasedWarnings.o: StmtNodes.inc.h
+AnalysisBasedWarnings.po: AttrList.inc.h
+AnalysisBasedWarnings.po: AttrParsedAttrList.inc.h
+AnalysisBasedWarnings.po: AttrVisitor.inc.h
+AnalysisBasedWarnings.po: Attrs.inc.h
+AnalysisBasedWarnings.po: CommentCommandList.inc.h
+AnalysisBasedWarnings.po: DeclNodes.inc.h
+AnalysisBasedWarnings.po: DiagnosticCommonKinds.inc.h
+AnalysisBasedWarnings.po: DiagnosticSemaKinds.inc.h
+AnalysisBasedWarnings.po: StmtNodes.inc.h
+AttributeList.o: AttrList.inc.h
+AttributeList.o: AttrParsedAttrImpl.inc.h
+AttributeList.o: AttrParsedAttrKinds.inc.h
+AttributeList.o: AttrParsedAttrList.inc.h
+AttributeList.o: AttrSpellingListIndex.inc.h
+AttributeList.o: Attrs.inc.h
+AttributeList.o: CommentCommandList.inc.h
+AttributeList.o: DeclNodes.inc.h
+AttributeList.o: DiagnosticCommonKinds.inc.h
+AttributeList.o: DiagnosticSemaKinds.inc.h
+AttributeList.o: StmtNodes.inc.h
+AttributeList.po: AttrList.inc.h
+AttributeList.po: AttrParsedAttrImpl.inc.h
+AttributeList.po: AttrParsedAttrKinds.inc.h
+AttributeList.po: AttrParsedAttrList.inc.h
+AttributeList.po: AttrSpellingListIndex.inc.h
+AttributeList.po: Attrs.inc.h
+AttributeList.po: CommentCommandList.inc.h
+AttributeList.po: DeclNodes.inc.h
+AttributeList.po: DiagnosticCommonKinds.inc.h
+AttributeList.po: DiagnosticSemaKinds.inc.h
+AttributeList.po: StmtNodes.inc.h
+CodeCompleteConsumer.o: AttrList.inc.h
+CodeCompleteConsumer.o: AttrParsedAttrList.inc.h
+CodeCompleteConsumer.o: Attrs.inc.h
+CodeCompleteConsumer.o: DeclNodes.inc.h
+CodeCompleteConsumer.o: DiagnosticCommonKinds.inc.h
+CodeCompleteConsumer.o: StmtNodes.inc.h
+CodeCompleteConsumer.po: AttrList.inc.h
+CodeCompleteConsumer.po: AttrParsedAttrList.inc.h
+CodeCompleteConsumer.po: Attrs.inc.h
+CodeCompleteConsumer.po: DeclNodes.inc.h
+CodeCompleteConsumer.po: DiagnosticCommonKinds.inc.h
+CodeCompleteConsumer.po: StmtNodes.inc.h
+DeclSpec.o: AttrList.inc.h
+DeclSpec.o: AttrParsedAttrList.inc.h
+DeclSpec.o: Attrs.inc.h
+DeclSpec.o: CommentCommandList.inc.h
+DeclSpec.o: DeclNodes.inc.h
+DeclSpec.o: DiagnosticCommonKinds.inc.h
+DeclSpec.o: DiagnosticParseKinds.inc.h
+DeclSpec.o: DiagnosticSemaKinds.inc.h
+DeclSpec.o: StmtNodes.inc.h
+DeclSpec.po: AttrList.inc.h
+DeclSpec.po: AttrParsedAttrList.inc.h
+DeclSpec.po: Attrs.inc.h
+DeclSpec.po: CommentCommandList.inc.h
+DeclSpec.po: DeclNodes.inc.h
+DeclSpec.po: DiagnosticCommonKinds.inc.h
+DeclSpec.po: DiagnosticParseKinds.inc.h
+DeclSpec.po: DiagnosticSemaKinds.inc.h
+DeclSpec.po: StmtNodes.inc.h
+DelayedDiagnostic.o: AttrList.inc.h
+DelayedDiagnostic.o: AttrParsedAttrList.inc.h
+DelayedDiagnostic.o: Attrs.inc.h
+DelayedDiagnostic.o: DeclNodes.inc.h
+DelayedDiagnostic.o: DiagnosticCommonKinds.inc.h
+DelayedDiagnostic.o: StmtNodes.inc.h
+DelayedDiagnostic.po: AttrList.inc.h
+DelayedDiagnostic.po: AttrParsedAttrList.inc.h
+DelayedDiagnostic.po: Attrs.inc.h
+DelayedDiagnostic.po: DeclNodes.inc.h
+DelayedDiagnostic.po: DiagnosticCommonKinds.inc.h
+DelayedDiagnostic.po: StmtNodes.inc.h
+IdentifierResolver.o: DeclNodes.inc.h
+IdentifierResolver.o: DiagnosticCommonKinds.inc.h
+IdentifierResolver.po: DeclNodes.inc.h
+IdentifierResolver.po: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.o: AttrList.inc.h
+JumpDiagnostics.o: AttrParsedAttrList.inc.h
+JumpDiagnostics.o: Attrs.inc.h
+JumpDiagnostics.o: CommentCommandList.inc.h
+JumpDiagnostics.o: DeclNodes.inc.h
+JumpDiagnostics.o: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.o: DiagnosticSemaKinds.inc.h
+JumpDiagnostics.o: StmtNodes.inc.h
+JumpDiagnostics.po: AttrList.inc.h
+JumpDiagnostics.po: AttrParsedAttrList.inc.h
+JumpDiagnostics.po: Attrs.inc.h
+JumpDiagnostics.po: CommentCommandList.inc.h
+JumpDiagnostics.po: DeclNodes.inc.h
+JumpDiagnostics.po: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.po: DiagnosticSemaKinds.inc.h
+JumpDiagnostics.po: StmtNodes.inc.h
+MultiplexExternalSemaSource.o: AttrList.inc.h
+MultiplexExternalSemaSource.o: AttrParsedAttrList.inc.h
+MultiplexExternalSemaSource.o: Attrs.inc.h
+MultiplexExternalSemaSource.o: DeclNodes.inc.h
+MultiplexExternalSemaSource.o: DiagnosticCommonKinds.inc.h
+MultiplexExternalSemaSource.o: StmtNodes.inc.h
+MultiplexExternalSemaSource.po: AttrList.inc.h
+MultiplexExternalSemaSource.po: AttrParsedAttrList.inc.h
+MultiplexExternalSemaSource.po: Attrs.inc.h
+MultiplexExternalSemaSource.po: DeclNodes.inc.h
+MultiplexExternalSemaSource.po: DiagnosticCommonKinds.inc.h
+MultiplexExternalSemaSource.po: StmtNodes.inc.h
+Scope.o: DeclNodes.inc.h
+Scope.o: DiagnosticCommonKinds.inc.h
+Scope.po: DeclNodes.inc.h
+Scope.po: DiagnosticCommonKinds.inc.h
+ScopeInfo.o: AttrList.inc.h
+ScopeInfo.o: Attrs.inc.h
+ScopeInfo.o: DeclNodes.inc.h
+ScopeInfo.o: DiagnosticCommonKinds.inc.h
+ScopeInfo.o: StmtNodes.inc.h
+ScopeInfo.po: AttrList.inc.h
+ScopeInfo.po: Attrs.inc.h
+ScopeInfo.po: DeclNodes.inc.h
+ScopeInfo.po: DiagnosticCommonKinds.inc.h
+ScopeInfo.po: StmtNodes.inc.h
+Sema.o: AttrList.inc.h
+Sema.o: AttrParsedAttrList.inc.h
+Sema.o: Attrs.inc.h
+Sema.o: CommentCommandList.inc.h
+Sema.o: DeclNodes.inc.h
+Sema.o: DiagnosticASTKinds.inc.h
+Sema.o: DiagnosticCommonKinds.inc.h
+Sema.o: DiagnosticSemaKinds.inc.h
+Sema.o: StmtNodes.inc.h
+Sema.po: AttrList.inc.h
+Sema.po: AttrParsedAttrList.inc.h
+Sema.po: Attrs.inc.h
+Sema.po: CommentCommandList.inc.h
+Sema.po: DeclNodes.inc.h
+Sema.po: DiagnosticASTKinds.inc.h
+Sema.po: DiagnosticCommonKinds.inc.h
+Sema.po: DiagnosticSemaKinds.inc.h
+Sema.po: StmtNodes.inc.h
+SemaAccess.o: AttrList.inc.h
+SemaAccess.o: AttrParsedAttrList.inc.h
+SemaAccess.o: Attrs.inc.h
+SemaAccess.o: CommentCommandList.inc.h
+SemaAccess.o: DeclNodes.inc.h
+SemaAccess.o: DiagnosticCommonKinds.inc.h
+SemaAccess.o: DiagnosticSemaKinds.inc.h
+SemaAccess.o: StmtNodes.inc.h
+SemaAccess.po: AttrList.inc.h
+SemaAccess.po: AttrParsedAttrList.inc.h
+SemaAccess.po: Attrs.inc.h
+SemaAccess.po: CommentCommandList.inc.h
+SemaAccess.po: DeclNodes.inc.h
+SemaAccess.po: DiagnosticCommonKinds.inc.h
+SemaAccess.po: DiagnosticSemaKinds.inc.h
+SemaAccess.po: StmtNodes.inc.h
+SemaAttr.o: AttrList.inc.h
+SemaAttr.o: AttrParsedAttrList.inc.h
+SemaAttr.o: Attrs.inc.h
+SemaAttr.o: CommentCommandList.inc.h
+SemaAttr.o: DeclNodes.inc.h
+SemaAttr.o: DiagnosticCommonKinds.inc.h
+SemaAttr.o: DiagnosticSemaKinds.inc.h
+SemaAttr.o: StmtNodes.inc.h
+SemaAttr.po: AttrList.inc.h
+SemaAttr.po: AttrParsedAttrList.inc.h
+SemaAttr.po: Attrs.inc.h
+SemaAttr.po: CommentCommandList.inc.h
+SemaAttr.po: DeclNodes.inc.h
+SemaAttr.po: DiagnosticCommonKinds.inc.h
+SemaAttr.po: DiagnosticSemaKinds.inc.h
+SemaAttr.po: StmtNodes.inc.h
+SemaCUDA.o: AttrList.inc.h
+SemaCUDA.o: AttrParsedAttrList.inc.h
+SemaCUDA.o: Attrs.inc.h
+SemaCUDA.o: CommentCommandList.inc.h
+SemaCUDA.o: DeclNodes.inc.h
+SemaCUDA.o: DiagnosticCommonKinds.inc.h
+SemaCUDA.o: DiagnosticSemaKinds.inc.h
+SemaCUDA.o: StmtNodes.inc.h
+SemaCUDA.po: AttrList.inc.h
+SemaCUDA.po: AttrParsedAttrList.inc.h
+SemaCUDA.po: Attrs.inc.h
+SemaCUDA.po: CommentCommandList.inc.h
+SemaCUDA.po: DeclNodes.inc.h
+SemaCUDA.po: DiagnosticCommonKinds.inc.h
+SemaCUDA.po: DiagnosticSemaKinds.inc.h
+SemaCUDA.po: StmtNodes.inc.h
+SemaCXXScopeSpec.o: AttrList.inc.h
+SemaCXXScopeSpec.o: AttrParsedAttrList.inc.h
+SemaCXXScopeSpec.o: Attrs.inc.h
+SemaCXXScopeSpec.o: CommentCommandList.inc.h
+SemaCXXScopeSpec.o: DeclNodes.inc.h
+SemaCXXScopeSpec.o: DiagnosticCommonKinds.inc.h
+SemaCXXScopeSpec.o: DiagnosticSemaKinds.inc.h
+SemaCXXScopeSpec.o: StmtNodes.inc.h
+SemaCXXScopeSpec.po: AttrList.inc.h
+SemaCXXScopeSpec.po: AttrParsedAttrList.inc.h
+SemaCXXScopeSpec.po: Attrs.inc.h
+SemaCXXScopeSpec.po: CommentCommandList.inc.h
+SemaCXXScopeSpec.po: DeclNodes.inc.h
+SemaCXXScopeSpec.po: DiagnosticCommonKinds.inc.h
+SemaCXXScopeSpec.po: DiagnosticSemaKinds.inc.h
+SemaCXXScopeSpec.po: StmtNodes.inc.h
+SemaCast.o: AttrList.inc.h
+SemaCast.o: AttrParsedAttrList.inc.h
+SemaCast.o: Attrs.inc.h
+SemaCast.o: CommentCommandList.inc.h
+SemaCast.o: DeclNodes.inc.h
+SemaCast.o: DiagnosticCommonKinds.inc.h
+SemaCast.o: DiagnosticSemaKinds.inc.h
+SemaCast.o: StmtNodes.inc.h
+SemaCast.po: AttrList.inc.h
+SemaCast.po: AttrParsedAttrList.inc.h
+SemaCast.po: Attrs.inc.h
+SemaCast.po: CommentCommandList.inc.h
+SemaCast.po: DeclNodes.inc.h
+SemaCast.po: DiagnosticCommonKinds.inc.h
+SemaCast.po: DiagnosticSemaKinds.inc.h
+SemaCast.po: StmtNodes.inc.h
+SemaChecking.o: AttrList.inc.h
+SemaChecking.o: AttrParsedAttrList.inc.h
+SemaChecking.o: Attrs.inc.h
+SemaChecking.o: CommentCommandList.inc.h
+SemaChecking.o: DeclNodes.inc.h
+SemaChecking.o: DiagnosticCommonKinds.inc.h
+SemaChecking.o: DiagnosticSemaKinds.inc.h
+SemaChecking.o: StmtNodes.inc.h
+SemaChecking.o: arm_neon.inc.h
+SemaChecking.po: AttrList.inc.h
+SemaChecking.po: AttrParsedAttrList.inc.h
+SemaChecking.po: Attrs.inc.h
+SemaChecking.po: CommentCommandList.inc.h
+SemaChecking.po: DeclNodes.inc.h
+SemaChecking.po: DiagnosticCommonKinds.inc.h
+SemaChecking.po: DiagnosticSemaKinds.inc.h
+SemaChecking.po: StmtNodes.inc.h
+SemaChecking.po: arm_neon.inc.h
+SemaCodeComplete.o: AttrList.inc.h
+SemaCodeComplete.o: AttrParsedAttrList.inc.h
+SemaCodeComplete.o: Attrs.inc.h
+SemaCodeComplete.o: CommentCommandList.inc.h
+SemaCodeComplete.o: DeclNodes.inc.h
+SemaCodeComplete.o: DiagnosticCommonKinds.inc.h
+SemaCodeComplete.o: DiagnosticSemaKinds.inc.h
+SemaCodeComplete.o: StmtNodes.inc.h
+SemaCodeComplete.po: AttrList.inc.h
+SemaCodeComplete.po: AttrParsedAttrList.inc.h
+SemaCodeComplete.po: Attrs.inc.h
+SemaCodeComplete.po: CommentCommandList.inc.h
+SemaCodeComplete.po: DeclNodes.inc.h
+SemaCodeComplete.po: DiagnosticCommonKinds.inc.h
+SemaCodeComplete.po: DiagnosticSemaKinds.inc.h
+SemaCodeComplete.po: StmtNodes.inc.h
+SemaDecl.o: AttrList.inc.h
+SemaDecl.o: AttrParsedAttrList.inc.h
+SemaDecl.o: Attrs.inc.h
+SemaDecl.o: CommentCommandList.inc.h
+SemaDecl.o: DeclNodes.inc.h
+SemaDecl.o: DiagnosticCommentKinds.inc.h
+SemaDecl.o: DiagnosticCommonKinds.inc.h
+SemaDecl.o: DiagnosticParseKinds.inc.h
+SemaDecl.o: DiagnosticSemaKinds.inc.h
+SemaDecl.o: StmtNodes.inc.h
+SemaDecl.po: AttrList.inc.h
+SemaDecl.po: AttrParsedAttrList.inc.h
+SemaDecl.po: Attrs.inc.h
+SemaDecl.po: CommentCommandList.inc.h
+SemaDecl.po: DeclNodes.inc.h
+SemaDecl.po: DiagnosticCommentKinds.inc.h
+SemaDecl.po: DiagnosticCommonKinds.inc.h
+SemaDecl.po: DiagnosticParseKinds.inc.h
+SemaDecl.po: DiagnosticSemaKinds.inc.h
+SemaDecl.po: StmtNodes.inc.h
+SemaDeclAttr.o: AttrList.inc.h
+SemaDeclAttr.o: AttrParsedAttrList.inc.h
+SemaDeclAttr.o: Attrs.inc.h
+SemaDeclAttr.o: CommentCommandList.inc.h
+SemaDeclAttr.o: DeclNodes.inc.h
+SemaDeclAttr.o: DiagnosticCommonKinds.inc.h
+SemaDeclAttr.o: DiagnosticSemaKinds.inc.h
+SemaDeclAttr.o: StmtNodes.inc.h
+SemaDeclAttr.po: AttrList.inc.h
+SemaDeclAttr.po: AttrParsedAttrList.inc.h
+SemaDeclAttr.po: Attrs.inc.h
+SemaDeclAttr.po: CommentCommandList.inc.h
+SemaDeclAttr.po: DeclNodes.inc.h
+SemaDeclAttr.po: DiagnosticCommonKinds.inc.h
+SemaDeclAttr.po: DiagnosticSemaKinds.inc.h
+SemaDeclAttr.po: StmtNodes.inc.h
+SemaDeclCXX.o: AttrList.inc.h
+SemaDeclCXX.o: AttrParsedAttrList.inc.h
+SemaDeclCXX.o: AttrVisitor.inc.h
+SemaDeclCXX.o: Attrs.inc.h
+SemaDeclCXX.o: CommentCommandList.inc.h
+SemaDeclCXX.o: DeclNodes.inc.h
+SemaDeclCXX.o: DiagnosticCommonKinds.inc.h
+SemaDeclCXX.o: DiagnosticSemaKinds.inc.h
+SemaDeclCXX.o: StmtNodes.inc.h
+SemaDeclCXX.po: AttrList.inc.h
+SemaDeclCXX.po: AttrParsedAttrList.inc.h
+SemaDeclCXX.po: AttrVisitor.inc.h
+SemaDeclCXX.po: Attrs.inc.h
+SemaDeclCXX.po: CommentCommandList.inc.h
+SemaDeclCXX.po: DeclNodes.inc.h
+SemaDeclCXX.po: DiagnosticCommonKinds.inc.h
+SemaDeclCXX.po: DiagnosticSemaKinds.inc.h
+SemaDeclCXX.po: StmtNodes.inc.h
+SemaDeclObjC.o: AttrList.inc.h
+SemaDeclObjC.o: AttrParsedAttrList.inc.h
+SemaDeclObjC.o: AttrVisitor.inc.h
+SemaDeclObjC.o: Attrs.inc.h
+SemaDeclObjC.o: CommentCommandList.inc.h
+SemaDeclObjC.o: DeclNodes.inc.h
+SemaDeclObjC.o: DiagnosticCommonKinds.inc.h
+SemaDeclObjC.o: DiagnosticSemaKinds.inc.h
+SemaDeclObjC.o: StmtNodes.inc.h
+SemaDeclObjC.po: AttrList.inc.h
+SemaDeclObjC.po: AttrParsedAttrList.inc.h
+SemaDeclObjC.po: AttrVisitor.inc.h
+SemaDeclObjC.po: Attrs.inc.h
+SemaDeclObjC.po: CommentCommandList.inc.h
+SemaDeclObjC.po: DeclNodes.inc.h
+SemaDeclObjC.po: DiagnosticCommonKinds.inc.h
+SemaDeclObjC.po: DiagnosticSemaKinds.inc.h
+SemaDeclObjC.po: StmtNodes.inc.h
+SemaExceptionSpec.o: AttrList.inc.h
+SemaExceptionSpec.o: AttrParsedAttrList.inc.h
+SemaExceptionSpec.o: Attrs.inc.h
+SemaExceptionSpec.o: CommentCommandList.inc.h
+SemaExceptionSpec.o: DeclNodes.inc.h
+SemaExceptionSpec.o: DiagnosticCommonKinds.inc.h
+SemaExceptionSpec.o: DiagnosticSemaKinds.inc.h
+SemaExceptionSpec.o: StmtNodes.inc.h
+SemaExceptionSpec.po: AttrList.inc.h
+SemaExceptionSpec.po: AttrParsedAttrList.inc.h
+SemaExceptionSpec.po: Attrs.inc.h
+SemaExceptionSpec.po: CommentCommandList.inc.h
+SemaExceptionSpec.po: DeclNodes.inc.h
+SemaExceptionSpec.po: DiagnosticCommonKinds.inc.h
+SemaExceptionSpec.po: DiagnosticSemaKinds.inc.h
+SemaExceptionSpec.po: StmtNodes.inc.h
+SemaExpr.o: AttrList.inc.h
+SemaExpr.o: AttrParsedAttrList.inc.h
+SemaExpr.o: AttrVisitor.inc.h
+SemaExpr.o: Attrs.inc.h
+SemaExpr.o: CommentCommandList.inc.h
+SemaExpr.o: DeclNodes.inc.h
+SemaExpr.o: DiagnosticCommonKinds.inc.h
+SemaExpr.o: DiagnosticSemaKinds.inc.h
+SemaExpr.o: StmtNodes.inc.h
+SemaExpr.po: AttrList.inc.h
+SemaExpr.po: AttrParsedAttrList.inc.h
+SemaExpr.po: AttrVisitor.inc.h
+SemaExpr.po: Attrs.inc.h
+SemaExpr.po: CommentCommandList.inc.h
+SemaExpr.po: DeclNodes.inc.h
+SemaExpr.po: DiagnosticCommonKinds.inc.h
+SemaExpr.po: DiagnosticSemaKinds.inc.h
+SemaExpr.po: StmtNodes.inc.h
+SemaExprCXX.o: AttrList.inc.h
+SemaExprCXX.o: AttrParsedAttrList.inc.h
+SemaExprCXX.o: AttrVisitor.inc.h
+SemaExprCXX.o: Attrs.inc.h
+SemaExprCXX.o: CommentCommandList.inc.h
+SemaExprCXX.o: DeclNodes.inc.h
+SemaExprCXX.o: DiagnosticCommonKinds.inc.h
+SemaExprCXX.o: DiagnosticSemaKinds.inc.h
+SemaExprCXX.o: StmtNodes.inc.h
+SemaExprCXX.po: AttrList.inc.h
+SemaExprCXX.po: AttrParsedAttrList.inc.h
+SemaExprCXX.po: AttrVisitor.inc.h
+SemaExprCXX.po: Attrs.inc.h
+SemaExprCXX.po: CommentCommandList.inc.h
+SemaExprCXX.po: DeclNodes.inc.h
+SemaExprCXX.po: DiagnosticCommonKinds.inc.h
+SemaExprCXX.po: DiagnosticSemaKinds.inc.h
+SemaExprCXX.po: StmtNodes.inc.h
+SemaExprMember.o: AttrList.inc.h
+SemaExprMember.o: AttrParsedAttrList.inc.h
+SemaExprMember.o: Attrs.inc.h
+SemaExprMember.o: CommentCommandList.inc.h
+SemaExprMember.o: DeclNodes.inc.h
+SemaExprMember.o: DiagnosticCommonKinds.inc.h
+SemaExprMember.o: DiagnosticSemaKinds.inc.h
+SemaExprMember.o: StmtNodes.inc.h
+SemaExprMember.po: AttrList.inc.h
+SemaExprMember.po: AttrParsedAttrList.inc.h
+SemaExprMember.po: Attrs.inc.h
+SemaExprMember.po: CommentCommandList.inc.h
+SemaExprMember.po: DeclNodes.inc.h
+SemaExprMember.po: DiagnosticCommonKinds.inc.h
+SemaExprMember.po: DiagnosticSemaKinds.inc.h
+SemaExprMember.po: StmtNodes.inc.h
+SemaExprObjC.o: AttrList.inc.h
+SemaExprObjC.o: AttrParsedAttrList.inc.h
+SemaExprObjC.o: Attrs.inc.h
+SemaExprObjC.o: CommentCommandList.inc.h
+SemaExprObjC.o: DeclNodes.inc.h
+SemaExprObjC.o: DiagnosticCommonKinds.inc.h
+SemaExprObjC.o: DiagnosticSemaKinds.inc.h
+SemaExprObjC.o: StmtNodes.inc.h
+SemaExprObjC.po: AttrList.inc.h
+SemaExprObjC.po: AttrParsedAttrList.inc.h
+SemaExprObjC.po: Attrs.inc.h
+SemaExprObjC.po: CommentCommandList.inc.h
+SemaExprObjC.po: DeclNodes.inc.h
+SemaExprObjC.po: DiagnosticCommonKinds.inc.h
+SemaExprObjC.po: DiagnosticSemaKinds.inc.h
+SemaExprObjC.po: StmtNodes.inc.h
+SemaFixItUtils.o: AttrList.inc.h
+SemaFixItUtils.o: AttrParsedAttrList.inc.h
+SemaFixItUtils.o: Attrs.inc.h
+SemaFixItUtils.o: CommentCommandList.inc.h
+SemaFixItUtils.o: DeclNodes.inc.h
+SemaFixItUtils.o: DiagnosticCommonKinds.inc.h
+SemaFixItUtils.o: StmtNodes.inc.h
+SemaFixItUtils.po: AttrList.inc.h
+SemaFixItUtils.po: AttrParsedAttrList.inc.h
+SemaFixItUtils.po: Attrs.inc.h
+SemaFixItUtils.po: CommentCommandList.inc.h
+SemaFixItUtils.po: DeclNodes.inc.h
+SemaFixItUtils.po: DiagnosticCommonKinds.inc.h
+SemaFixItUtils.po: StmtNodes.inc.h
+SemaInit.o: AttrList.inc.h
+SemaInit.o: AttrParsedAttrList.inc.h
+SemaInit.o: Attrs.inc.h
+SemaInit.o: CommentCommandList.inc.h
+SemaInit.o: DeclNodes.inc.h
+SemaInit.o: DiagnosticCommonKinds.inc.h
+SemaInit.o: DiagnosticSemaKinds.inc.h
+SemaInit.o: StmtNodes.inc.h
+SemaInit.po: AttrList.inc.h
+SemaInit.po: AttrParsedAttrList.inc.h
+SemaInit.po: Attrs.inc.h
+SemaInit.po: CommentCommandList.inc.h
+SemaInit.po: DeclNodes.inc.h
+SemaInit.po: DiagnosticCommonKinds.inc.h
+SemaInit.po: DiagnosticSemaKinds.inc.h
+SemaInit.po: StmtNodes.inc.h
+SemaLambda.o: AttrList.inc.h
+SemaLambda.o: AttrParsedAttrList.inc.h
+SemaLambda.o: Attrs.inc.h
+SemaLambda.o: CommentCommandList.inc.h
+SemaLambda.o: DeclNodes.inc.h
+SemaLambda.o: DiagnosticCommonKinds.inc.h
+SemaLambda.o: DiagnosticSemaKinds.inc.h
+SemaLambda.o: StmtNodes.inc.h
+SemaLambda.po: AttrList.inc.h
+SemaLambda.po: AttrParsedAttrList.inc.h
+SemaLambda.po: Attrs.inc.h
+SemaLambda.po: CommentCommandList.inc.h
+SemaLambda.po: DeclNodes.inc.h
+SemaLambda.po: DiagnosticCommonKinds.inc.h
+SemaLambda.po: DiagnosticSemaKinds.inc.h
+SemaLambda.po: StmtNodes.inc.h
+SemaLookup.o: AttrList.inc.h
+SemaLookup.o: AttrParsedAttrList.inc.h
+SemaLookup.o: Attrs.inc.h
+SemaLookup.o: CommentCommandList.inc.h
+SemaLookup.o: DeclNodes.inc.h
+SemaLookup.o: DiagnosticCommonKinds.inc.h
+SemaLookup.o: DiagnosticSemaKinds.inc.h
+SemaLookup.o: StmtNodes.inc.h
+SemaLookup.po: AttrList.inc.h
+SemaLookup.po: AttrParsedAttrList.inc.h
+SemaLookup.po: Attrs.inc.h
+SemaLookup.po: CommentCommandList.inc.h
+SemaLookup.po: DeclNodes.inc.h
+SemaLookup.po: DiagnosticCommonKinds.inc.h
+SemaLookup.po: DiagnosticSemaKinds.inc.h
+SemaLookup.po: StmtNodes.inc.h
+SemaObjCProperty.o: AttrList.inc.h
+SemaObjCProperty.o: AttrParsedAttrList.inc.h
+SemaObjCProperty.o: Attrs.inc.h
+SemaObjCProperty.o: CommentCommandList.inc.h
+SemaObjCProperty.o: DeclNodes.inc.h
+SemaObjCProperty.o: DiagnosticCommonKinds.inc.h
+SemaObjCProperty.o: DiagnosticSemaKinds.inc.h
+SemaObjCProperty.o: StmtNodes.inc.h
+SemaObjCProperty.po: AttrList.inc.h
+SemaObjCProperty.po: AttrParsedAttrList.inc.h
+SemaObjCProperty.po: Attrs.inc.h
+SemaObjCProperty.po: CommentCommandList.inc.h
+SemaObjCProperty.po: DeclNodes.inc.h
+SemaObjCProperty.po: DiagnosticCommonKinds.inc.h
+SemaObjCProperty.po: DiagnosticSemaKinds.inc.h
+SemaObjCProperty.po: StmtNodes.inc.h
+SemaOpenMP.o: AttrList.inc.h
+SemaOpenMP.o: AttrParsedAttrList.inc.h
+SemaOpenMP.o: Attrs.inc.h
+SemaOpenMP.o: CommentCommandList.inc.h
+SemaOpenMP.o: DeclNodes.inc.h
+SemaOpenMP.o: DiagnosticCommonKinds.inc.h
+SemaOpenMP.o: DiagnosticSemaKinds.inc.h
+SemaOpenMP.o: StmtNodes.inc.h
+SemaOpenMP.po: AttrList.inc.h
+SemaOpenMP.po: AttrParsedAttrList.inc.h
+SemaOpenMP.po: Attrs.inc.h
+SemaOpenMP.po: CommentCommandList.inc.h
+SemaOpenMP.po: DeclNodes.inc.h
+SemaOpenMP.po: DiagnosticCommonKinds.inc.h
+SemaOpenMP.po: DiagnosticSemaKinds.inc.h
+SemaOpenMP.po: StmtNodes.inc.h
+SemaOverload.o: AttrList.inc.h
+SemaOverload.o: AttrParsedAttrList.inc.h
+SemaOverload.o: Attrs.inc.h
+SemaOverload.o: CommentCommandList.inc.h
+SemaOverload.o: DeclNodes.inc.h
+SemaOverload.o: DiagnosticCommonKinds.inc.h
+SemaOverload.o: DiagnosticSemaKinds.inc.h
+SemaOverload.o: StmtNodes.inc.h
+SemaOverload.po: AttrList.inc.h
+SemaOverload.po: AttrParsedAttrList.inc.h
+SemaOverload.po: Attrs.inc.h
+SemaOverload.po: CommentCommandList.inc.h
+SemaOverload.po: DeclNodes.inc.h
+SemaOverload.po: DiagnosticCommonKinds.inc.h
+SemaOverload.po: DiagnosticSemaKinds.inc.h
+SemaOverload.po: StmtNodes.inc.h
+SemaPseudoObject.o: AttrList.inc.h
+SemaPseudoObject.o: AttrParsedAttrList.inc.h
+SemaPseudoObject.o: Attrs.inc.h
+SemaPseudoObject.o: CommentCommandList.inc.h
+SemaPseudoObject.o: DeclNodes.inc.h
+SemaPseudoObject.o: DiagnosticCommonKinds.inc.h
+SemaPseudoObject.o: DiagnosticSemaKinds.inc.h
+SemaPseudoObject.o: StmtNodes.inc.h
+SemaPseudoObject.po: AttrList.inc.h
+SemaPseudoObject.po: AttrParsedAttrList.inc.h
+SemaPseudoObject.po: Attrs.inc.h
+SemaPseudoObject.po: CommentCommandList.inc.h
+SemaPseudoObject.po: DeclNodes.inc.h
+SemaPseudoObject.po: DiagnosticCommonKinds.inc.h
+SemaPseudoObject.po: DiagnosticSemaKinds.inc.h
+SemaPseudoObject.po: StmtNodes.inc.h
+SemaStmt.o: AttrList.inc.h
+SemaStmt.o: AttrParsedAttrList.inc.h
+SemaStmt.o: AttrVisitor.inc.h
+SemaStmt.o: Attrs.inc.h
+SemaStmt.o: CommentCommandList.inc.h
+SemaStmt.o: DeclNodes.inc.h
+SemaStmt.o: DiagnosticASTKinds.inc.h
+SemaStmt.o: DiagnosticCommonKinds.inc.h
+SemaStmt.o: DiagnosticSemaKinds.inc.h
+SemaStmt.o: StmtNodes.inc.h
+SemaStmt.po: AttrList.inc.h
+SemaStmt.po: AttrParsedAttrList.inc.h
+SemaStmt.po: AttrVisitor.inc.h
+SemaStmt.po: Attrs.inc.h
+SemaStmt.po: CommentCommandList.inc.h
+SemaStmt.po: DeclNodes.inc.h
+SemaStmt.po: DiagnosticASTKinds.inc.h
+SemaStmt.po: DiagnosticCommonKinds.inc.h
+SemaStmt.po: DiagnosticSemaKinds.inc.h
+SemaStmt.po: StmtNodes.inc.h
+SemaStmtAsm.o: AttrList.inc.h
+SemaStmtAsm.o: AttrParsedAttrList.inc.h
+SemaStmtAsm.o: Attrs.inc.h
+SemaStmtAsm.o: CommentCommandList.inc.h
+SemaStmtAsm.o: DeclNodes.inc.h
+SemaStmtAsm.o: DiagnosticCommonKinds.inc.h
+SemaStmtAsm.o: DiagnosticSemaKinds.inc.h
+SemaStmtAsm.o: StmtNodes.inc.h
+SemaStmtAsm.po: AttrList.inc.h
+SemaStmtAsm.po: AttrParsedAttrList.inc.h
+SemaStmtAsm.po: Attrs.inc.h
+SemaStmtAsm.po: CommentCommandList.inc.h
+SemaStmtAsm.po: DeclNodes.inc.h
+SemaStmtAsm.po: DiagnosticCommonKinds.inc.h
+SemaStmtAsm.po: DiagnosticSemaKinds.inc.h
+SemaStmtAsm.po: StmtNodes.inc.h
+SemaStmtAttr.o: AttrList.inc.h
+SemaStmtAttr.o: AttrParsedAttrList.inc.h
+SemaStmtAttr.o: Attrs.inc.h
+SemaStmtAttr.o: CommentCommandList.inc.h
+SemaStmtAttr.o: DeclNodes.inc.h
+SemaStmtAttr.o: DiagnosticCommonKinds.inc.h
+SemaStmtAttr.o: DiagnosticSemaKinds.inc.h
+SemaStmtAttr.o: StmtNodes.inc.h
+SemaStmtAttr.po: AttrList.inc.h
+SemaStmtAttr.po: AttrParsedAttrList.inc.h
+SemaStmtAttr.po: Attrs.inc.h
+SemaStmtAttr.po: CommentCommandList.inc.h
+SemaStmtAttr.po: DeclNodes.inc.h
+SemaStmtAttr.po: DiagnosticCommonKinds.inc.h
+SemaStmtAttr.po: DiagnosticSemaKinds.inc.h
+SemaStmtAttr.po: StmtNodes.inc.h
+SemaTemplate.o: AttrList.inc.h
+SemaTemplate.o: AttrParsedAttrList.inc.h
+SemaTemplate.o: AttrVisitor.inc.h
+SemaTemplate.o: Attrs.inc.h
+SemaTemplate.o: CommentCommandList.inc.h
+SemaTemplate.o: DeclNodes.inc.h
+SemaTemplate.o: DiagnosticCommonKinds.inc.h
+SemaTemplate.o: DiagnosticSemaKinds.inc.h
+SemaTemplate.o: StmtNodes.inc.h
+SemaTemplate.po: AttrList.inc.h
+SemaTemplate.po: AttrParsedAttrList.inc.h
+SemaTemplate.po: AttrVisitor.inc.h
+SemaTemplate.po: Attrs.inc.h
+SemaTemplate.po: CommentCommandList.inc.h
+SemaTemplate.po: DeclNodes.inc.h
+SemaTemplate.po: DiagnosticCommonKinds.inc.h
+SemaTemplate.po: DiagnosticSemaKinds.inc.h
+SemaTemplate.po: StmtNodes.inc.h
+SemaTemplateDeduction.o: AttrList.inc.h
+SemaTemplateDeduction.o: AttrParsedAttrList.inc.h
+SemaTemplateDeduction.o: Attrs.inc.h
+SemaTemplateDeduction.o: CommentCommandList.inc.h
+SemaTemplateDeduction.o: DeclNodes.inc.h
+SemaTemplateDeduction.o: DiagnosticCommonKinds.inc.h
+SemaTemplateDeduction.o: DiagnosticSemaKinds.inc.h
+SemaTemplateDeduction.o: StmtNodes.inc.h
+SemaTemplateDeduction.po: AttrList.inc.h
+SemaTemplateDeduction.po: AttrParsedAttrList.inc.h
+SemaTemplateDeduction.po: Attrs.inc.h
+SemaTemplateDeduction.po: CommentCommandList.inc.h
+SemaTemplateDeduction.po: DeclNodes.inc.h
+SemaTemplateDeduction.po: DiagnosticCommonKinds.inc.h
+SemaTemplateDeduction.po: DiagnosticSemaKinds.inc.h
+SemaTemplateDeduction.po: StmtNodes.inc.h
+SemaTemplateInstantiate.o: AttrList.inc.h
+SemaTemplateInstantiate.o: AttrParsedAttrList.inc.h
+SemaTemplateInstantiate.o: Attrs.inc.h
+SemaTemplateInstantiate.o: CommentCommandList.inc.h
+SemaTemplateInstantiate.o: DeclNodes.inc.h
+SemaTemplateInstantiate.o: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiate.o: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiate.o: StmtNodes.inc.h
+SemaTemplateInstantiate.po: AttrList.inc.h
+SemaTemplateInstantiate.po: AttrParsedAttrList.inc.h
+SemaTemplateInstantiate.po: Attrs.inc.h
+SemaTemplateInstantiate.po: CommentCommandList.inc.h
+SemaTemplateInstantiate.po: DeclNodes.inc.h
+SemaTemplateInstantiate.po: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiate.po: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiate.po: StmtNodes.inc.h
+SemaTemplateInstantiateDecl.o: AttrList.inc.h
+SemaTemplateInstantiateDecl.o: AttrParsedAttrList.inc.h
+SemaTemplateInstantiateDecl.o: AttrTemplateInstantiate.inc.h
+SemaTemplateInstantiateDecl.o: Attrs.inc.h
+SemaTemplateInstantiateDecl.o: CommentCommandList.inc.h
+SemaTemplateInstantiateDecl.o: DeclNodes.inc.h
+SemaTemplateInstantiateDecl.o: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiateDecl.o: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiateDecl.o: StmtNodes.inc.h
+SemaTemplateInstantiateDecl.po: AttrList.inc.h
+SemaTemplateInstantiateDecl.po: AttrParsedAttrList.inc.h
+SemaTemplateInstantiateDecl.po: AttrTemplateInstantiate.inc.h
+SemaTemplateInstantiateDecl.po: Attrs.inc.h
+SemaTemplateInstantiateDecl.po: CommentCommandList.inc.h
+SemaTemplateInstantiateDecl.po: DeclNodes.inc.h
+SemaTemplateInstantiateDecl.po: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiateDecl.po: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiateDecl.po: StmtNodes.inc.h
+SemaTemplateVariadic.o: AttrList.inc.h
+SemaTemplateVariadic.o: AttrParsedAttrList.inc.h
+SemaTemplateVariadic.o: AttrVisitor.inc.h
+SemaTemplateVariadic.o: Attrs.inc.h
+SemaTemplateVariadic.o: CommentCommandList.inc.h
+SemaTemplateVariadic.o: DeclNodes.inc.h
+SemaTemplateVariadic.o: DiagnosticCommonKinds.inc.h
+SemaTemplateVariadic.o: DiagnosticSemaKinds.inc.h
+SemaTemplateVariadic.o: StmtNodes.inc.h
+SemaTemplateVariadic.po: AttrList.inc.h
+SemaTemplateVariadic.po: AttrParsedAttrList.inc.h
+SemaTemplateVariadic.po: AttrVisitor.inc.h
+SemaTemplateVariadic.po: Attrs.inc.h
+SemaTemplateVariadic.po: CommentCommandList.inc.h
+SemaTemplateVariadic.po: DeclNodes.inc.h
+SemaTemplateVariadic.po: DiagnosticCommonKinds.inc.h
+SemaTemplateVariadic.po: DiagnosticSemaKinds.inc.h
+SemaTemplateVariadic.po: StmtNodes.inc.h
+SemaType.o: AttrList.inc.h
+SemaType.o: AttrParsedAttrList.inc.h
+SemaType.o: Attrs.inc.h
+SemaType.o: CommentCommandList.inc.h
+SemaType.o: DeclNodes.inc.h
+SemaType.o: DiagnosticCommonKinds.inc.h
+SemaType.o: DiagnosticParseKinds.inc.h
+SemaType.o: DiagnosticSemaKinds.inc.h
+SemaType.o: StmtNodes.inc.h
+SemaType.po: AttrList.inc.h
+SemaType.po: AttrParsedAttrList.inc.h
+SemaType.po: Attrs.inc.h
+SemaType.po: CommentCommandList.inc.h
+SemaType.po: DeclNodes.inc.h
+SemaType.po: DiagnosticCommonKinds.inc.h
+SemaType.po: DiagnosticParseKinds.inc.h
+SemaType.po: DiagnosticSemaKinds.inc.h
+SemaType.po: StmtNodes.inc.h
+TypeLocBuilder.o: CommentCommandList.inc.h
+TypeLocBuilder.o: DeclNodes.inc.h
+TypeLocBuilder.o: DiagnosticCommonKinds.inc.h
+TypeLocBuilder.o: StmtNodes.inc.h
+TypeLocBuilder.po: CommentCommandList.inc.h
+TypeLocBuilder.po: DeclNodes.inc.h
+TypeLocBuilder.po: DiagnosticCommonKinds.inc.h
+TypeLocBuilder.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangserialization/Makefile.depend b/lib/clang/libclangserialization/Makefile.depend
new file mode 100644
index 0000000..6ee9d58
--- /dev/null
+++ b/lib/clang/libclangserialization/Makefile.depend
@@ -0,0 +1,132 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ASTCommon.o: AttrList.inc.h
+ASTCommon.o: Attrs.inc.h
+ASTCommon.o: CommentCommandList.inc.h
+ASTCommon.o: DeclNodes.inc.h
+ASTCommon.o: DiagnosticCommonKinds.inc.h
+ASTCommon.o: StmtNodes.inc.h
+ASTCommon.po: AttrList.inc.h
+ASTCommon.po: Attrs.inc.h
+ASTCommon.po: CommentCommandList.inc.h
+ASTCommon.po: DeclNodes.inc.h
+ASTCommon.po: DiagnosticCommonKinds.inc.h
+ASTCommon.po: StmtNodes.inc.h
+ASTReader.o: AttrList.inc.h
+ASTReader.o: AttrParsedAttrList.inc.h
+ASTReader.o: Attrs.inc.h
+ASTReader.o: CommentCommandList.inc.h
+ASTReader.o: DeclNodes.inc.h
+ASTReader.o: DiagnosticCommonKinds.inc.h
+ASTReader.o: DiagnosticSerializationKinds.inc.h
+ASTReader.o: StmtNodes.inc.h
+ASTReader.po: AttrList.inc.h
+ASTReader.po: AttrParsedAttrList.inc.h
+ASTReader.po: Attrs.inc.h
+ASTReader.po: CommentCommandList.inc.h
+ASTReader.po: DeclNodes.inc.h
+ASTReader.po: DiagnosticCommonKinds.inc.h
+ASTReader.po: DiagnosticSerializationKinds.inc.h
+ASTReader.po: StmtNodes.inc.h
+ASTReaderDecl.o: AttrList.inc.h
+ASTReaderDecl.o: AttrPCHRead.inc.h
+ASTReaderDecl.o: AttrParsedAttrList.inc.h
+ASTReaderDecl.o: Attrs.inc.h
+ASTReaderDecl.o: CommentCommandList.inc.h
+ASTReaderDecl.o: DeclNodes.inc.h
+ASTReaderDecl.o: DiagnosticCommonKinds.inc.h
+ASTReaderDecl.o: DiagnosticSemaKinds.inc.h
+ASTReaderDecl.o: StmtNodes.inc.h
+ASTReaderDecl.po: AttrList.inc.h
+ASTReaderDecl.po: AttrPCHRead.inc.h
+ASTReaderDecl.po: AttrParsedAttrList.inc.h
+ASTReaderDecl.po: Attrs.inc.h
+ASTReaderDecl.po: CommentCommandList.inc.h
+ASTReaderDecl.po: DeclNodes.inc.h
+ASTReaderDecl.po: DiagnosticCommonKinds.inc.h
+ASTReaderDecl.po: DiagnosticSemaKinds.inc.h
+ASTReaderDecl.po: StmtNodes.inc.h
+ASTReaderStmt.o: AttrList.inc.h
+ASTReaderStmt.o: AttrParsedAttrList.inc.h
+ASTReaderStmt.o: Attrs.inc.h
+ASTReaderStmt.o: CommentCommandList.inc.h
+ASTReaderStmt.o: DeclNodes.inc.h
+ASTReaderStmt.o: DiagnosticCommonKinds.inc.h
+ASTReaderStmt.o: StmtNodes.inc.h
+ASTReaderStmt.po: AttrList.inc.h
+ASTReaderStmt.po: AttrParsedAttrList.inc.h
+ASTReaderStmt.po: Attrs.inc.h
+ASTReaderStmt.po: CommentCommandList.inc.h
+ASTReaderStmt.po: DeclNodes.inc.h
+ASTReaderStmt.po: DiagnosticCommonKinds.inc.h
+ASTReaderStmt.po: StmtNodes.inc.h
+ASTWriter.o: AttrList.inc.h
+ASTWriter.o: AttrPCHWrite.inc.h
+ASTWriter.o: AttrParsedAttrList.inc.h
+ASTWriter.o: Attrs.inc.h
+ASTWriter.o: CommentCommandList.inc.h
+ASTWriter.o: DeclNodes.inc.h
+ASTWriter.o: DiagnosticCommonKinds.inc.h
+ASTWriter.o: StmtNodes.inc.h
+ASTWriter.po: AttrList.inc.h
+ASTWriter.po: AttrPCHWrite.inc.h
+ASTWriter.po: AttrParsedAttrList.inc.h
+ASTWriter.po: Attrs.inc.h
+ASTWriter.po: CommentCommandList.inc.h
+ASTWriter.po: DeclNodes.inc.h
+ASTWriter.po: DiagnosticCommonKinds.inc.h
+ASTWriter.po: StmtNodes.inc.h
+ASTWriterDecl.o: AttrList.inc.h
+ASTWriterDecl.o: AttrParsedAttrList.inc.h
+ASTWriterDecl.o: Attrs.inc.h
+ASTWriterDecl.o: CommentCommandList.inc.h
+ASTWriterDecl.o: DeclNodes.inc.h
+ASTWriterDecl.o: DiagnosticCommonKinds.inc.h
+ASTWriterDecl.o: StmtNodes.inc.h
+ASTWriterDecl.po: AttrList.inc.h
+ASTWriterDecl.po: AttrParsedAttrList.inc.h
+ASTWriterDecl.po: Attrs.inc.h
+ASTWriterDecl.po: CommentCommandList.inc.h
+ASTWriterDecl.po: DeclNodes.inc.h
+ASTWriterDecl.po: DiagnosticCommonKinds.inc.h
+ASTWriterDecl.po: StmtNodes.inc.h
+ASTWriterStmt.o: AttrList.inc.h
+ASTWriterStmt.o: Attrs.inc.h
+ASTWriterStmt.o: CommentCommandList.inc.h
+ASTWriterStmt.o: DeclNodes.inc.h
+ASTWriterStmt.o: DiagnosticCommonKinds.inc.h
+ASTWriterStmt.o: StmtNodes.inc.h
+ASTWriterStmt.po: AttrList.inc.h
+ASTWriterStmt.po: Attrs.inc.h
+ASTWriterStmt.po: CommentCommandList.inc.h
+ASTWriterStmt.po: DeclNodes.inc.h
+ASTWriterStmt.po: DiagnosticCommonKinds.inc.h
+ASTWriterStmt.po: StmtNodes.inc.h
+GeneratePCH.o: CommentCommandList.inc.h
+GeneratePCH.o: DeclNodes.inc.h
+GeneratePCH.o: DiagnosticCommonKinds.inc.h
+GeneratePCH.o: StmtNodes.inc.h
+GeneratePCH.po: CommentCommandList.inc.h
+GeneratePCH.po: DeclNodes.inc.h
+GeneratePCH.po: DiagnosticCommonKinds.inc.h
+GeneratePCH.po: StmtNodes.inc.h
+GlobalModuleIndex.o: DiagnosticCommonKinds.inc.h
+GlobalModuleIndex.po: DiagnosticCommonKinds.inc.h
+Module.o: DiagnosticCommonKinds.inc.h
+Module.po: DiagnosticCommonKinds.inc.h
+ModuleManager.o: DiagnosticCommonKinds.inc.h
+ModuleManager.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzercheckers/Makefile.depend b/lib/clang/libclangstaticanalyzercheckers/Makefile.depend
new file mode 100644
index 0000000..6d91abe
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzercheckers/Makefile.depend
@@ -0,0 +1,792 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalyzerStatsChecker.o: Checkers.inc.h
+AnalyzerStatsChecker.o: CommentCommandList.inc.h
+AnalyzerStatsChecker.o: DeclNodes.inc.h
+AnalyzerStatsChecker.o: DiagnosticCommonKinds.inc.h
+AnalyzerStatsChecker.o: StmtNodes.inc.h
+AnalyzerStatsChecker.po: Checkers.inc.h
+AnalyzerStatsChecker.po: CommentCommandList.inc.h
+AnalyzerStatsChecker.po: DeclNodes.inc.h
+AnalyzerStatsChecker.po: DiagnosticCommonKinds.inc.h
+AnalyzerStatsChecker.po: StmtNodes.inc.h
+ArrayBoundChecker.o: Checkers.inc.h
+ArrayBoundChecker.o: CommentCommandList.inc.h
+ArrayBoundChecker.o: DeclNodes.inc.h
+ArrayBoundChecker.o: DiagnosticCommonKinds.inc.h
+ArrayBoundChecker.o: StmtNodes.inc.h
+ArrayBoundChecker.po: Checkers.inc.h
+ArrayBoundChecker.po: CommentCommandList.inc.h
+ArrayBoundChecker.po: DeclNodes.inc.h
+ArrayBoundChecker.po: DiagnosticCommonKinds.inc.h
+ArrayBoundChecker.po: StmtNodes.inc.h
+ArrayBoundCheckerV2.o: Checkers.inc.h
+ArrayBoundCheckerV2.o: CommentCommandList.inc.h
+ArrayBoundCheckerV2.o: DeclNodes.inc.h
+ArrayBoundCheckerV2.o: DiagnosticCommonKinds.inc.h
+ArrayBoundCheckerV2.o: StmtNodes.inc.h
+ArrayBoundCheckerV2.po: Checkers.inc.h
+ArrayBoundCheckerV2.po: CommentCommandList.inc.h
+ArrayBoundCheckerV2.po: DeclNodes.inc.h
+ArrayBoundCheckerV2.po: DiagnosticCommonKinds.inc.h
+ArrayBoundCheckerV2.po: StmtNodes.inc.h
+BasicObjCFoundationChecks.o: AttrList.inc.h
+BasicObjCFoundationChecks.o: Attrs.inc.h
+BasicObjCFoundationChecks.o: Checkers.inc.h
+BasicObjCFoundationChecks.o: CommentCommandList.inc.h
+BasicObjCFoundationChecks.o: DeclNodes.inc.h
+BasicObjCFoundationChecks.o: DiagnosticCommonKinds.inc.h
+BasicObjCFoundationChecks.o: StmtNodes.inc.h
+BasicObjCFoundationChecks.po: AttrList.inc.h
+BasicObjCFoundationChecks.po: Attrs.inc.h
+BasicObjCFoundationChecks.po: Checkers.inc.h
+BasicObjCFoundationChecks.po: CommentCommandList.inc.h
+BasicObjCFoundationChecks.po: DeclNodes.inc.h
+BasicObjCFoundationChecks.po: DiagnosticCommonKinds.inc.h
+BasicObjCFoundationChecks.po: StmtNodes.inc.h
+BoolAssignmentChecker.o: Checkers.inc.h
+BoolAssignmentChecker.o: CommentCommandList.inc.h
+BoolAssignmentChecker.o: DeclNodes.inc.h
+BoolAssignmentChecker.o: DiagnosticCommonKinds.inc.h
+BoolAssignmentChecker.o: StmtNodes.inc.h
+BoolAssignmentChecker.po: Checkers.inc.h
+BoolAssignmentChecker.po: CommentCommandList.inc.h
+BoolAssignmentChecker.po: DeclNodes.inc.h
+BoolAssignmentChecker.po: DiagnosticCommonKinds.inc.h
+BoolAssignmentChecker.po: StmtNodes.inc.h
+BuiltinFunctionChecker.o: Checkers.inc.h
+BuiltinFunctionChecker.o: CommentCommandList.inc.h
+BuiltinFunctionChecker.o: DeclNodes.inc.h
+BuiltinFunctionChecker.o: DiagnosticCommonKinds.inc.h
+BuiltinFunctionChecker.o: StmtNodes.inc.h
+BuiltinFunctionChecker.po: Checkers.inc.h
+BuiltinFunctionChecker.po: CommentCommandList.inc.h
+BuiltinFunctionChecker.po: DeclNodes.inc.h
+BuiltinFunctionChecker.po: DiagnosticCommonKinds.inc.h
+BuiltinFunctionChecker.po: StmtNodes.inc.h
+CStringChecker.o: Checkers.inc.h
+CStringChecker.o: CommentCommandList.inc.h
+CStringChecker.o: DeclNodes.inc.h
+CStringChecker.o: DiagnosticCommonKinds.inc.h
+CStringChecker.o: StmtNodes.inc.h
+CStringChecker.po: Checkers.inc.h
+CStringChecker.po: CommentCommandList.inc.h
+CStringChecker.po: DeclNodes.inc.h
+CStringChecker.po: DiagnosticCommonKinds.inc.h
+CStringChecker.po: StmtNodes.inc.h
+CStringSyntaxChecker.o: Checkers.inc.h
+CStringSyntaxChecker.o: CommentCommandList.inc.h
+CStringSyntaxChecker.o: DeclNodes.inc.h
+CStringSyntaxChecker.o: DiagnosticCommonKinds.inc.h
+CStringSyntaxChecker.o: StmtNodes.inc.h
+CStringSyntaxChecker.po: Checkers.inc.h
+CStringSyntaxChecker.po: CommentCommandList.inc.h
+CStringSyntaxChecker.po: DeclNodes.inc.h
+CStringSyntaxChecker.po: DiagnosticCommonKinds.inc.h
+CStringSyntaxChecker.po: StmtNodes.inc.h
+CallAndMessageChecker.o: AttrList.inc.h
+CallAndMessageChecker.o: Attrs.inc.h
+CallAndMessageChecker.o: Checkers.inc.h
+CallAndMessageChecker.o: CommentCommandList.inc.h
+CallAndMessageChecker.o: DeclNodes.inc.h
+CallAndMessageChecker.o: DiagnosticCommonKinds.inc.h
+CallAndMessageChecker.o: StmtNodes.inc.h
+CallAndMessageChecker.po: AttrList.inc.h
+CallAndMessageChecker.po: Attrs.inc.h
+CallAndMessageChecker.po: Checkers.inc.h
+CallAndMessageChecker.po: CommentCommandList.inc.h
+CallAndMessageChecker.po: DeclNodes.inc.h
+CallAndMessageChecker.po: DiagnosticCommonKinds.inc.h
+CallAndMessageChecker.po: StmtNodes.inc.h
+CastSizeChecker.o: Checkers.inc.h
+CastSizeChecker.o: CommentCommandList.inc.h
+CastSizeChecker.o: DeclNodes.inc.h
+CastSizeChecker.o: DiagnosticCommonKinds.inc.h
+CastSizeChecker.o: StmtNodes.inc.h
+CastSizeChecker.po: Checkers.inc.h
+CastSizeChecker.po: CommentCommandList.inc.h
+CastSizeChecker.po: DeclNodes.inc.h
+CastSizeChecker.po: DiagnosticCommonKinds.inc.h
+CastSizeChecker.po: StmtNodes.inc.h
+CastToStructChecker.o: Checkers.inc.h
+CastToStructChecker.o: CommentCommandList.inc.h
+CastToStructChecker.o: DeclNodes.inc.h
+CastToStructChecker.o: DiagnosticCommonKinds.inc.h
+CastToStructChecker.o: StmtNodes.inc.h
+CastToStructChecker.po: Checkers.inc.h
+CastToStructChecker.po: CommentCommandList.inc.h
+CastToStructChecker.po: DeclNodes.inc.h
+CastToStructChecker.po: DiagnosticCommonKinds.inc.h
+CastToStructChecker.po: StmtNodes.inc.h
+CheckObjCDealloc.o: AttrList.inc.h
+CheckObjCDealloc.o: Attrs.inc.h
+CheckObjCDealloc.o: Checkers.inc.h
+CheckObjCDealloc.o: CommentCommandList.inc.h
+CheckObjCDealloc.o: DeclNodes.inc.h
+CheckObjCDealloc.o: DiagnosticCommonKinds.inc.h
+CheckObjCDealloc.o: StmtNodes.inc.h
+CheckObjCDealloc.po: AttrList.inc.h
+CheckObjCDealloc.po: Attrs.inc.h
+CheckObjCDealloc.po: Checkers.inc.h
+CheckObjCDealloc.po: CommentCommandList.inc.h
+CheckObjCDealloc.po: DeclNodes.inc.h
+CheckObjCDealloc.po: DiagnosticCommonKinds.inc.h
+CheckObjCDealloc.po: StmtNodes.inc.h
+CheckObjCInstMethSignature.o: Checkers.inc.h
+CheckObjCInstMethSignature.o: CommentCommandList.inc.h
+CheckObjCInstMethSignature.o: DeclNodes.inc.h
+CheckObjCInstMethSignature.o: DiagnosticCommonKinds.inc.h
+CheckObjCInstMethSignature.o: StmtNodes.inc.h
+CheckObjCInstMethSignature.po: Checkers.inc.h
+CheckObjCInstMethSignature.po: CommentCommandList.inc.h
+CheckObjCInstMethSignature.po: DeclNodes.inc.h
+CheckObjCInstMethSignature.po: DiagnosticCommonKinds.inc.h
+CheckObjCInstMethSignature.po: StmtNodes.inc.h
+CheckSecuritySyntaxOnly.o: Checkers.inc.h
+CheckSecuritySyntaxOnly.o: CommentCommandList.inc.h
+CheckSecuritySyntaxOnly.o: DeclNodes.inc.h
+CheckSecuritySyntaxOnly.o: DiagnosticCommonKinds.inc.h
+CheckSecuritySyntaxOnly.o: StmtNodes.inc.h
+CheckSecuritySyntaxOnly.po: Checkers.inc.h
+CheckSecuritySyntaxOnly.po: CommentCommandList.inc.h
+CheckSecuritySyntaxOnly.po: DeclNodes.inc.h
+CheckSecuritySyntaxOnly.po: DiagnosticCommonKinds.inc.h
+CheckSecuritySyntaxOnly.po: StmtNodes.inc.h
+CheckSizeofPointer.o: Checkers.inc.h
+CheckSizeofPointer.o: CommentCommandList.inc.h
+CheckSizeofPointer.o: DeclNodes.inc.h
+CheckSizeofPointer.o: DiagnosticCommonKinds.inc.h
+CheckSizeofPointer.o: StmtNodes.inc.h
+CheckSizeofPointer.po: Checkers.inc.h
+CheckSizeofPointer.po: CommentCommandList.inc.h
+CheckSizeofPointer.po: DeclNodes.inc.h
+CheckSizeofPointer.po: DiagnosticCommonKinds.inc.h
+CheckSizeofPointer.po: StmtNodes.inc.h
+CheckerDocumentation.o: Checkers.inc.h
+CheckerDocumentation.o: CommentCommandList.inc.h
+CheckerDocumentation.o: DeclNodes.inc.h
+CheckerDocumentation.o: DiagnosticCommonKinds.inc.h
+CheckerDocumentation.o: StmtNodes.inc.h
+CheckerDocumentation.po: Checkers.inc.h
+CheckerDocumentation.po: CommentCommandList.inc.h
+CheckerDocumentation.po: DeclNodes.inc.h
+CheckerDocumentation.po: DiagnosticCommonKinds.inc.h
+CheckerDocumentation.po: StmtNodes.inc.h
+ChrootChecker.o: Checkers.inc.h
+ChrootChecker.o: CommentCommandList.inc.h
+ChrootChecker.o: DeclNodes.inc.h
+ChrootChecker.o: DiagnosticCommonKinds.inc.h
+ChrootChecker.o: StmtNodes.inc.h
+ChrootChecker.po: Checkers.inc.h
+ChrootChecker.po: CommentCommandList.inc.h
+ChrootChecker.po: DeclNodes.inc.h
+ChrootChecker.po: DiagnosticCommonKinds.inc.h
+ChrootChecker.po: StmtNodes.inc.h
+ClangCheckers.o: Checkers.inc.h
+ClangCheckers.o: CommentCommandList.inc.h
+ClangCheckers.o: DeclNodes.inc.h
+ClangCheckers.o: DiagnosticCommonKinds.inc.h
+ClangCheckers.o: StmtNodes.inc.h
+ClangCheckers.po: Checkers.inc.h
+ClangCheckers.po: CommentCommandList.inc.h
+ClangCheckers.po: DeclNodes.inc.h
+ClangCheckers.po: DiagnosticCommonKinds.inc.h
+ClangCheckers.po: StmtNodes.inc.h
+DeadStoresChecker.o: AttrList.inc.h
+DeadStoresChecker.o: AttrVisitor.inc.h
+DeadStoresChecker.o: Attrs.inc.h
+DeadStoresChecker.o: Checkers.inc.h
+DeadStoresChecker.o: CommentCommandList.inc.h
+DeadStoresChecker.o: DeclNodes.inc.h
+DeadStoresChecker.o: DiagnosticCommonKinds.inc.h
+DeadStoresChecker.o: StmtNodes.inc.h
+DeadStoresChecker.po: AttrList.inc.h
+DeadStoresChecker.po: AttrVisitor.inc.h
+DeadStoresChecker.po: Attrs.inc.h
+DeadStoresChecker.po: Checkers.inc.h
+DeadStoresChecker.po: CommentCommandList.inc.h
+DeadStoresChecker.po: DeclNodes.inc.h
+DeadStoresChecker.po: DiagnosticCommonKinds.inc.h
+DeadStoresChecker.po: StmtNodes.inc.h
+DebugCheckers.o: AttrList.inc.h
+DebugCheckers.o: AttrVisitor.inc.h
+DebugCheckers.o: Attrs.inc.h
+DebugCheckers.o: Checkers.inc.h
+DebugCheckers.o: CommentCommandList.inc.h
+DebugCheckers.o: DeclNodes.inc.h
+DebugCheckers.o: DiagnosticCommonKinds.inc.h
+DebugCheckers.o: StmtNodes.inc.h
+DebugCheckers.po: AttrList.inc.h
+DebugCheckers.po: AttrVisitor.inc.h
+DebugCheckers.po: Attrs.inc.h
+DebugCheckers.po: Checkers.inc.h
+DebugCheckers.po: CommentCommandList.inc.h
+DebugCheckers.po: DeclNodes.inc.h
+DebugCheckers.po: DiagnosticCommonKinds.inc.h
+DebugCheckers.po: StmtNodes.inc.h
+DereferenceChecker.o: Checkers.inc.h
+DereferenceChecker.o: CommentCommandList.inc.h
+DereferenceChecker.o: DeclNodes.inc.h
+DereferenceChecker.o: DiagnosticCommonKinds.inc.h
+DereferenceChecker.o: StmtNodes.inc.h
+DereferenceChecker.po: Checkers.inc.h
+DereferenceChecker.po: CommentCommandList.inc.h
+DereferenceChecker.po: DeclNodes.inc.h
+DereferenceChecker.po: DiagnosticCommonKinds.inc.h
+DereferenceChecker.po: StmtNodes.inc.h
+DirectIvarAssignment.o: AttrList.inc.h
+DirectIvarAssignment.o: Attrs.inc.h
+DirectIvarAssignment.o: Checkers.inc.h
+DirectIvarAssignment.o: CommentCommandList.inc.h
+DirectIvarAssignment.o: DeclNodes.inc.h
+DirectIvarAssignment.o: DiagnosticCommonKinds.inc.h
+DirectIvarAssignment.o: StmtNodes.inc.h
+DirectIvarAssignment.po: AttrList.inc.h
+DirectIvarAssignment.po: Attrs.inc.h
+DirectIvarAssignment.po: Checkers.inc.h
+DirectIvarAssignment.po: CommentCommandList.inc.h
+DirectIvarAssignment.po: DeclNodes.inc.h
+DirectIvarAssignment.po: DiagnosticCommonKinds.inc.h
+DirectIvarAssignment.po: StmtNodes.inc.h
+DivZeroChecker.o: Checkers.inc.h
+DivZeroChecker.o: CommentCommandList.inc.h
+DivZeroChecker.o: DeclNodes.inc.h
+DivZeroChecker.o: DiagnosticCommonKinds.inc.h
+DivZeroChecker.o: StmtNodes.inc.h
+DivZeroChecker.po: Checkers.inc.h
+DivZeroChecker.po: CommentCommandList.inc.h
+DivZeroChecker.po: DeclNodes.inc.h
+DivZeroChecker.po: DiagnosticCommonKinds.inc.h
+DivZeroChecker.po: StmtNodes.inc.h
+DynamicTypePropagation.o: AttrList.inc.h
+DynamicTypePropagation.o: Attrs.inc.h
+DynamicTypePropagation.o: Checkers.inc.h
+DynamicTypePropagation.o: CommentCommandList.inc.h
+DynamicTypePropagation.o: DeclNodes.inc.h
+DynamicTypePropagation.o: DiagnosticCommonKinds.inc.h
+DynamicTypePropagation.o: StmtNodes.inc.h
+DynamicTypePropagation.po: AttrList.inc.h
+DynamicTypePropagation.po: Attrs.inc.h
+DynamicTypePropagation.po: Checkers.inc.h
+DynamicTypePropagation.po: CommentCommandList.inc.h
+DynamicTypePropagation.po: DeclNodes.inc.h
+DynamicTypePropagation.po: DiagnosticCommonKinds.inc.h
+DynamicTypePropagation.po: StmtNodes.inc.h
+ExprInspectionChecker.o: Checkers.inc.h
+ExprInspectionChecker.o: CommentCommandList.inc.h
+ExprInspectionChecker.o: DeclNodes.inc.h
+ExprInspectionChecker.o: DiagnosticCommonKinds.inc.h
+ExprInspectionChecker.o: StmtNodes.inc.h
+ExprInspectionChecker.po: Checkers.inc.h
+ExprInspectionChecker.po: CommentCommandList.inc.h
+ExprInspectionChecker.po: DeclNodes.inc.h
+ExprInspectionChecker.po: DiagnosticCommonKinds.inc.h
+ExprInspectionChecker.po: StmtNodes.inc.h
+FixedAddressChecker.o: Checkers.inc.h
+FixedAddressChecker.o: CommentCommandList.inc.h
+FixedAddressChecker.o: DeclNodes.inc.h
+FixedAddressChecker.o: DiagnosticCommonKinds.inc.h
+FixedAddressChecker.o: StmtNodes.inc.h
+FixedAddressChecker.po: Checkers.inc.h
+FixedAddressChecker.po: CommentCommandList.inc.h
+FixedAddressChecker.po: DeclNodes.inc.h
+FixedAddressChecker.po: DiagnosticCommonKinds.inc.h
+FixedAddressChecker.po: StmtNodes.inc.h
+GenericTaintChecker.o: AttrList.inc.h
+GenericTaintChecker.o: Attrs.inc.h
+GenericTaintChecker.o: Checkers.inc.h
+GenericTaintChecker.o: CommentCommandList.inc.h
+GenericTaintChecker.o: DeclNodes.inc.h
+GenericTaintChecker.o: DiagnosticCommonKinds.inc.h
+GenericTaintChecker.o: StmtNodes.inc.h
+GenericTaintChecker.po: AttrList.inc.h
+GenericTaintChecker.po: Attrs.inc.h
+GenericTaintChecker.po: Checkers.inc.h
+GenericTaintChecker.po: CommentCommandList.inc.h
+GenericTaintChecker.po: DeclNodes.inc.h
+GenericTaintChecker.po: DiagnosticCommonKinds.inc.h
+GenericTaintChecker.po: StmtNodes.inc.h
+IdenticalExprChecker.o: AttrList.inc.h
+IdenticalExprChecker.o: AttrVisitor.inc.h
+IdenticalExprChecker.o: Attrs.inc.h
+IdenticalExprChecker.o: Checkers.inc.h
+IdenticalExprChecker.o: CommentCommandList.inc.h
+IdenticalExprChecker.o: DeclNodes.inc.h
+IdenticalExprChecker.o: DiagnosticCommonKinds.inc.h
+IdenticalExprChecker.o: StmtNodes.inc.h
+IdenticalExprChecker.po: AttrList.inc.h
+IdenticalExprChecker.po: AttrVisitor.inc.h
+IdenticalExprChecker.po: Attrs.inc.h
+IdenticalExprChecker.po: Checkers.inc.h
+IdenticalExprChecker.po: CommentCommandList.inc.h
+IdenticalExprChecker.po: DeclNodes.inc.h
+IdenticalExprChecker.po: DiagnosticCommonKinds.inc.h
+IdenticalExprChecker.po: StmtNodes.inc.h
+IvarInvalidationChecker.o: AttrList.inc.h
+IvarInvalidationChecker.o: Attrs.inc.h
+IvarInvalidationChecker.o: Checkers.inc.h
+IvarInvalidationChecker.o: CommentCommandList.inc.h
+IvarInvalidationChecker.o: DeclNodes.inc.h
+IvarInvalidationChecker.o: DiagnosticCommonKinds.inc.h
+IvarInvalidationChecker.o: StmtNodes.inc.h
+IvarInvalidationChecker.po: AttrList.inc.h
+IvarInvalidationChecker.po: Attrs.inc.h
+IvarInvalidationChecker.po: Checkers.inc.h
+IvarInvalidationChecker.po: CommentCommandList.inc.h
+IvarInvalidationChecker.po: DeclNodes.inc.h
+IvarInvalidationChecker.po: DiagnosticCommonKinds.inc.h
+IvarInvalidationChecker.po: StmtNodes.inc.h
+LLVMConventionsChecker.o: AttrList.inc.h
+LLVMConventionsChecker.o: Attrs.inc.h
+LLVMConventionsChecker.o: Checkers.inc.h
+LLVMConventionsChecker.o: CommentCommandList.inc.h
+LLVMConventionsChecker.o: DeclNodes.inc.h
+LLVMConventionsChecker.o: DiagnosticCommonKinds.inc.h
+LLVMConventionsChecker.o: StmtNodes.inc.h
+LLVMConventionsChecker.po: AttrList.inc.h
+LLVMConventionsChecker.po: Attrs.inc.h
+LLVMConventionsChecker.po: Checkers.inc.h
+LLVMConventionsChecker.po: CommentCommandList.inc.h
+LLVMConventionsChecker.po: DeclNodes.inc.h
+LLVMConventionsChecker.po: DiagnosticCommonKinds.inc.h
+LLVMConventionsChecker.po: StmtNodes.inc.h
+MacOSKeychainAPIChecker.o: Checkers.inc.h
+MacOSKeychainAPIChecker.o: CommentCommandList.inc.h
+MacOSKeychainAPIChecker.o: DeclNodes.inc.h
+MacOSKeychainAPIChecker.o: DiagnosticCommonKinds.inc.h
+MacOSKeychainAPIChecker.o: StmtNodes.inc.h
+MacOSKeychainAPIChecker.po: Checkers.inc.h
+MacOSKeychainAPIChecker.po: CommentCommandList.inc.h
+MacOSKeychainAPIChecker.po: DeclNodes.inc.h
+MacOSKeychainAPIChecker.po: DiagnosticCommonKinds.inc.h
+MacOSKeychainAPIChecker.po: StmtNodes.inc.h
+MacOSXAPIChecker.o: Checkers.inc.h
+MacOSXAPIChecker.o: CommentCommandList.inc.h
+MacOSXAPIChecker.o: DeclNodes.inc.h
+MacOSXAPIChecker.o: DiagnosticCommonKinds.inc.h
+MacOSXAPIChecker.o: StmtNodes.inc.h
+MacOSXAPIChecker.po: Checkers.inc.h
+MacOSXAPIChecker.po: CommentCommandList.inc.h
+MacOSXAPIChecker.po: DeclNodes.inc.h
+MacOSXAPIChecker.po: DiagnosticCommonKinds.inc.h
+MacOSXAPIChecker.po: StmtNodes.inc.h
+MallocChecker.o: AttrList.inc.h
+MallocChecker.o: Attrs.inc.h
+MallocChecker.o: Checkers.inc.h
+MallocChecker.o: CommentCommandList.inc.h
+MallocChecker.o: DeclNodes.inc.h
+MallocChecker.o: DiagnosticCommonKinds.inc.h
+MallocChecker.o: StmtNodes.inc.h
+MallocChecker.po: AttrList.inc.h
+MallocChecker.po: Attrs.inc.h
+MallocChecker.po: Checkers.inc.h
+MallocChecker.po: CommentCommandList.inc.h
+MallocChecker.po: DeclNodes.inc.h
+MallocChecker.po: DiagnosticCommonKinds.inc.h
+MallocChecker.po: StmtNodes.inc.h
+MallocOverflowSecurityChecker.o: AttrList.inc.h
+MallocOverflowSecurityChecker.o: Attrs.inc.h
+MallocOverflowSecurityChecker.o: Checkers.inc.h
+MallocOverflowSecurityChecker.o: CommentCommandList.inc.h
+MallocOverflowSecurityChecker.o: DeclNodes.inc.h
+MallocOverflowSecurityChecker.o: DiagnosticCommonKinds.inc.h
+MallocOverflowSecurityChecker.o: StmtNodes.inc.h
+MallocOverflowSecurityChecker.po: AttrList.inc.h
+MallocOverflowSecurityChecker.po: Attrs.inc.h
+MallocOverflowSecurityChecker.po: Checkers.inc.h
+MallocOverflowSecurityChecker.po: CommentCommandList.inc.h
+MallocOverflowSecurityChecker.po: DeclNodes.inc.h
+MallocOverflowSecurityChecker.po: DiagnosticCommonKinds.inc.h
+MallocOverflowSecurityChecker.po: StmtNodes.inc.h
+MallocSizeofChecker.o: Checkers.inc.h
+MallocSizeofChecker.o: CommentCommandList.inc.h
+MallocSizeofChecker.o: DeclNodes.inc.h
+MallocSizeofChecker.o: DiagnosticCommonKinds.inc.h
+MallocSizeofChecker.o: StmtNodes.inc.h
+MallocSizeofChecker.po: Checkers.inc.h
+MallocSizeofChecker.po: CommentCommandList.inc.h
+MallocSizeofChecker.po: DeclNodes.inc.h
+MallocSizeofChecker.po: DiagnosticCommonKinds.inc.h
+MallocSizeofChecker.po: StmtNodes.inc.h
+NSAutoreleasePoolChecker.o: AttrList.inc.h
+NSAutoreleasePoolChecker.o: Attrs.inc.h
+NSAutoreleasePoolChecker.o: Checkers.inc.h
+NSAutoreleasePoolChecker.o: CommentCommandList.inc.h
+NSAutoreleasePoolChecker.o: DeclNodes.inc.h
+NSAutoreleasePoolChecker.o: DiagnosticCommonKinds.inc.h
+NSAutoreleasePoolChecker.o: StmtNodes.inc.h
+NSAutoreleasePoolChecker.po: AttrList.inc.h
+NSAutoreleasePoolChecker.po: Attrs.inc.h
+NSAutoreleasePoolChecker.po: Checkers.inc.h
+NSAutoreleasePoolChecker.po: CommentCommandList.inc.h
+NSAutoreleasePoolChecker.po: DeclNodes.inc.h
+NSAutoreleasePoolChecker.po: DiagnosticCommonKinds.inc.h
+NSAutoreleasePoolChecker.po: StmtNodes.inc.h
+NSErrorChecker.o: Checkers.inc.h
+NSErrorChecker.o: CommentCommandList.inc.h
+NSErrorChecker.o: DeclNodes.inc.h
+NSErrorChecker.o: DiagnosticCommonKinds.inc.h
+NSErrorChecker.o: StmtNodes.inc.h
+NSErrorChecker.po: Checkers.inc.h
+NSErrorChecker.po: CommentCommandList.inc.h
+NSErrorChecker.po: DeclNodes.inc.h
+NSErrorChecker.po: DiagnosticCommonKinds.inc.h
+NSErrorChecker.po: StmtNodes.inc.h
+NoReturnFunctionChecker.o: AttrList.inc.h
+NoReturnFunctionChecker.o: Attrs.inc.h
+NoReturnFunctionChecker.o: Checkers.inc.h
+NoReturnFunctionChecker.o: CommentCommandList.inc.h
+NoReturnFunctionChecker.o: DeclNodes.inc.h
+NoReturnFunctionChecker.o: DiagnosticCommonKinds.inc.h
+NoReturnFunctionChecker.o: StmtNodes.inc.h
+NoReturnFunctionChecker.po: AttrList.inc.h
+NoReturnFunctionChecker.po: Attrs.inc.h
+NoReturnFunctionChecker.po: Checkers.inc.h
+NoReturnFunctionChecker.po: CommentCommandList.inc.h
+NoReturnFunctionChecker.po: DeclNodes.inc.h
+NoReturnFunctionChecker.po: DiagnosticCommonKinds.inc.h
+NoReturnFunctionChecker.po: StmtNodes.inc.h
+NonNullParamChecker.o: AttrList.inc.h
+NonNullParamChecker.o: Attrs.inc.h
+NonNullParamChecker.o: Checkers.inc.h
+NonNullParamChecker.o: CommentCommandList.inc.h
+NonNullParamChecker.o: DeclNodes.inc.h
+NonNullParamChecker.o: DiagnosticCommonKinds.inc.h
+NonNullParamChecker.o: StmtNodes.inc.h
+NonNullParamChecker.po: AttrList.inc.h
+NonNullParamChecker.po: Attrs.inc.h
+NonNullParamChecker.po: Checkers.inc.h
+NonNullParamChecker.po: CommentCommandList.inc.h
+NonNullParamChecker.po: DeclNodes.inc.h
+NonNullParamChecker.po: DiagnosticCommonKinds.inc.h
+NonNullParamChecker.po: StmtNodes.inc.h
+ObjCAtSyncChecker.o: Checkers.inc.h
+ObjCAtSyncChecker.o: CommentCommandList.inc.h
+ObjCAtSyncChecker.o: DeclNodes.inc.h
+ObjCAtSyncChecker.o: DiagnosticCommonKinds.inc.h
+ObjCAtSyncChecker.o: StmtNodes.inc.h
+ObjCAtSyncChecker.po: Checkers.inc.h
+ObjCAtSyncChecker.po: CommentCommandList.inc.h
+ObjCAtSyncChecker.po: DeclNodes.inc.h
+ObjCAtSyncChecker.po: DiagnosticCommonKinds.inc.h
+ObjCAtSyncChecker.po: StmtNodes.inc.h
+ObjCContainersASTChecker.o: Checkers.inc.h
+ObjCContainersASTChecker.o: CommentCommandList.inc.h
+ObjCContainersASTChecker.o: DeclNodes.inc.h
+ObjCContainersASTChecker.o: DiagnosticCommonKinds.inc.h
+ObjCContainersASTChecker.o: StmtNodes.inc.h
+ObjCContainersASTChecker.po: Checkers.inc.h
+ObjCContainersASTChecker.po: CommentCommandList.inc.h
+ObjCContainersASTChecker.po: DeclNodes.inc.h
+ObjCContainersASTChecker.po: DiagnosticCommonKinds.inc.h
+ObjCContainersASTChecker.po: StmtNodes.inc.h
+ObjCContainersChecker.o: Checkers.inc.h
+ObjCContainersChecker.o: CommentCommandList.inc.h
+ObjCContainersChecker.o: DeclNodes.inc.h
+ObjCContainersChecker.o: DiagnosticCommonKinds.inc.h
+ObjCContainersChecker.o: StmtNodes.inc.h
+ObjCContainersChecker.po: Checkers.inc.h
+ObjCContainersChecker.po: CommentCommandList.inc.h
+ObjCContainersChecker.po: DeclNodes.inc.h
+ObjCContainersChecker.po: DiagnosticCommonKinds.inc.h
+ObjCContainersChecker.po: StmtNodes.inc.h
+ObjCMissingSuperCallChecker.o: AttrList.inc.h
+ObjCMissingSuperCallChecker.o: AttrVisitor.inc.h
+ObjCMissingSuperCallChecker.o: Attrs.inc.h
+ObjCMissingSuperCallChecker.o: Checkers.inc.h
+ObjCMissingSuperCallChecker.o: CommentCommandList.inc.h
+ObjCMissingSuperCallChecker.o: DeclNodes.inc.h
+ObjCMissingSuperCallChecker.o: DiagnosticCommonKinds.inc.h
+ObjCMissingSuperCallChecker.o: StmtNodes.inc.h
+ObjCMissingSuperCallChecker.po: AttrList.inc.h
+ObjCMissingSuperCallChecker.po: AttrVisitor.inc.h
+ObjCMissingSuperCallChecker.po: Attrs.inc.h
+ObjCMissingSuperCallChecker.po: Checkers.inc.h
+ObjCMissingSuperCallChecker.po: CommentCommandList.inc.h
+ObjCMissingSuperCallChecker.po: DeclNodes.inc.h
+ObjCMissingSuperCallChecker.po: DiagnosticCommonKinds.inc.h
+ObjCMissingSuperCallChecker.po: StmtNodes.inc.h
+ObjCSelfInitChecker.o: AttrList.inc.h
+ObjCSelfInitChecker.o: Attrs.inc.h
+ObjCSelfInitChecker.o: Checkers.inc.h
+ObjCSelfInitChecker.o: CommentCommandList.inc.h
+ObjCSelfInitChecker.o: DeclNodes.inc.h
+ObjCSelfInitChecker.o: DiagnosticCommonKinds.inc.h
+ObjCSelfInitChecker.o: StmtNodes.inc.h
+ObjCSelfInitChecker.po: AttrList.inc.h
+ObjCSelfInitChecker.po: Attrs.inc.h
+ObjCSelfInitChecker.po: Checkers.inc.h
+ObjCSelfInitChecker.po: CommentCommandList.inc.h
+ObjCSelfInitChecker.po: DeclNodes.inc.h
+ObjCSelfInitChecker.po: DiagnosticCommonKinds.inc.h
+ObjCSelfInitChecker.po: StmtNodes.inc.h
+ObjCUnusedIVarsChecker.o: AttrList.inc.h
+ObjCUnusedIVarsChecker.o: Attrs.inc.h
+ObjCUnusedIVarsChecker.o: Checkers.inc.h
+ObjCUnusedIVarsChecker.o: CommentCommandList.inc.h
+ObjCUnusedIVarsChecker.o: DeclNodes.inc.h
+ObjCUnusedIVarsChecker.o: DiagnosticCommonKinds.inc.h
+ObjCUnusedIVarsChecker.o: StmtNodes.inc.h
+ObjCUnusedIVarsChecker.po: AttrList.inc.h
+ObjCUnusedIVarsChecker.po: Attrs.inc.h
+ObjCUnusedIVarsChecker.po: Checkers.inc.h
+ObjCUnusedIVarsChecker.po: CommentCommandList.inc.h
+ObjCUnusedIVarsChecker.po: DeclNodes.inc.h
+ObjCUnusedIVarsChecker.po: DiagnosticCommonKinds.inc.h
+ObjCUnusedIVarsChecker.po: StmtNodes.inc.h
+PointerArithChecker.o: Checkers.inc.h
+PointerArithChecker.o: CommentCommandList.inc.h
+PointerArithChecker.o: DeclNodes.inc.h
+PointerArithChecker.o: DiagnosticCommonKinds.inc.h
+PointerArithChecker.o: StmtNodes.inc.h
+PointerArithChecker.po: Checkers.inc.h
+PointerArithChecker.po: CommentCommandList.inc.h
+PointerArithChecker.po: DeclNodes.inc.h
+PointerArithChecker.po: DiagnosticCommonKinds.inc.h
+PointerArithChecker.po: StmtNodes.inc.h
+PointerSubChecker.o: Checkers.inc.h
+PointerSubChecker.o: CommentCommandList.inc.h
+PointerSubChecker.o: DeclNodes.inc.h
+PointerSubChecker.o: DiagnosticCommonKinds.inc.h
+PointerSubChecker.o: StmtNodes.inc.h
+PointerSubChecker.po: Checkers.inc.h
+PointerSubChecker.po: CommentCommandList.inc.h
+PointerSubChecker.po: DeclNodes.inc.h
+PointerSubChecker.po: DiagnosticCommonKinds.inc.h
+PointerSubChecker.po: StmtNodes.inc.h
+PthreadLockChecker.o: Checkers.inc.h
+PthreadLockChecker.o: CommentCommandList.inc.h
+PthreadLockChecker.o: DeclNodes.inc.h
+PthreadLockChecker.o: DiagnosticCommonKinds.inc.h
+PthreadLockChecker.o: StmtNodes.inc.h
+PthreadLockChecker.po: Checkers.inc.h
+PthreadLockChecker.po: CommentCommandList.inc.h
+PthreadLockChecker.po: DeclNodes.inc.h
+PthreadLockChecker.po: DiagnosticCommonKinds.inc.h
+PthreadLockChecker.po: StmtNodes.inc.h
+RetainCountChecker.o: AttrList.inc.h
+RetainCountChecker.o: Attrs.inc.h
+RetainCountChecker.o: Checkers.inc.h
+RetainCountChecker.o: CommentCommandList.inc.h
+RetainCountChecker.o: DeclNodes.inc.h
+RetainCountChecker.o: DiagnosticCommonKinds.inc.h
+RetainCountChecker.o: StmtNodes.inc.h
+RetainCountChecker.po: AttrList.inc.h
+RetainCountChecker.po: Attrs.inc.h
+RetainCountChecker.po: Checkers.inc.h
+RetainCountChecker.po: CommentCommandList.inc.h
+RetainCountChecker.po: DeclNodes.inc.h
+RetainCountChecker.po: DiagnosticCommonKinds.inc.h
+RetainCountChecker.po: StmtNodes.inc.h
+ReturnPointerRangeChecker.o: Checkers.inc.h
+ReturnPointerRangeChecker.o: CommentCommandList.inc.h
+ReturnPointerRangeChecker.o: DeclNodes.inc.h
+ReturnPointerRangeChecker.o: DiagnosticCommonKinds.inc.h
+ReturnPointerRangeChecker.o: StmtNodes.inc.h
+ReturnPointerRangeChecker.po: Checkers.inc.h
+ReturnPointerRangeChecker.po: CommentCommandList.inc.h
+ReturnPointerRangeChecker.po: DeclNodes.inc.h
+ReturnPointerRangeChecker.po: DiagnosticCommonKinds.inc.h
+ReturnPointerRangeChecker.po: StmtNodes.inc.h
+ReturnUndefChecker.o: AttrList.inc.h
+ReturnUndefChecker.o: Attrs.inc.h
+ReturnUndefChecker.o: Checkers.inc.h
+ReturnUndefChecker.o: CommentCommandList.inc.h
+ReturnUndefChecker.o: DeclNodes.inc.h
+ReturnUndefChecker.o: DiagnosticCommonKinds.inc.h
+ReturnUndefChecker.o: StmtNodes.inc.h
+ReturnUndefChecker.po: AttrList.inc.h
+ReturnUndefChecker.po: Attrs.inc.h
+ReturnUndefChecker.po: Checkers.inc.h
+ReturnUndefChecker.po: CommentCommandList.inc.h
+ReturnUndefChecker.po: DeclNodes.inc.h
+ReturnUndefChecker.po: DiagnosticCommonKinds.inc.h
+ReturnUndefChecker.po: StmtNodes.inc.h
+SimpleStreamChecker.o: AttrList.inc.h
+SimpleStreamChecker.o: Attrs.inc.h
+SimpleStreamChecker.o: Checkers.inc.h
+SimpleStreamChecker.o: CommentCommandList.inc.h
+SimpleStreamChecker.o: DeclNodes.inc.h
+SimpleStreamChecker.o: DiagnosticCommonKinds.inc.h
+SimpleStreamChecker.o: StmtNodes.inc.h
+SimpleStreamChecker.po: AttrList.inc.h
+SimpleStreamChecker.po: Attrs.inc.h
+SimpleStreamChecker.po: Checkers.inc.h
+SimpleStreamChecker.po: CommentCommandList.inc.h
+SimpleStreamChecker.po: DeclNodes.inc.h
+SimpleStreamChecker.po: DiagnosticCommonKinds.inc.h
+SimpleStreamChecker.po: StmtNodes.inc.h
+StackAddrEscapeChecker.o: Checkers.inc.h
+StackAddrEscapeChecker.o: CommentCommandList.inc.h
+StackAddrEscapeChecker.o: DeclNodes.inc.h
+StackAddrEscapeChecker.o: DiagnosticCommonKinds.inc.h
+StackAddrEscapeChecker.o: StmtNodes.inc.h
+StackAddrEscapeChecker.po: Checkers.inc.h
+StackAddrEscapeChecker.po: CommentCommandList.inc.h
+StackAddrEscapeChecker.po: DeclNodes.inc.h
+StackAddrEscapeChecker.po: DiagnosticCommonKinds.inc.h
+StackAddrEscapeChecker.po: StmtNodes.inc.h
+StreamChecker.o: Checkers.inc.h
+StreamChecker.o: CommentCommandList.inc.h
+StreamChecker.o: DeclNodes.inc.h
+StreamChecker.o: DiagnosticCommonKinds.inc.h
+StreamChecker.o: StmtNodes.inc.h
+StreamChecker.po: Checkers.inc.h
+StreamChecker.po: CommentCommandList.inc.h
+StreamChecker.po: DeclNodes.inc.h
+StreamChecker.po: DiagnosticCommonKinds.inc.h
+StreamChecker.po: StmtNodes.inc.h
+TaintTesterChecker.o: Checkers.inc.h
+TaintTesterChecker.o: CommentCommandList.inc.h
+TaintTesterChecker.o: DeclNodes.inc.h
+TaintTesterChecker.o: DiagnosticCommonKinds.inc.h
+TaintTesterChecker.o: StmtNodes.inc.h
+TaintTesterChecker.po: Checkers.inc.h
+TaintTesterChecker.po: CommentCommandList.inc.h
+TaintTesterChecker.po: DeclNodes.inc.h
+TaintTesterChecker.po: DiagnosticCommonKinds.inc.h
+TaintTesterChecker.po: StmtNodes.inc.h
+TestAfterDivZeroChecker.o: AttrList.inc.h
+TestAfterDivZeroChecker.o: Attrs.inc.h
+TestAfterDivZeroChecker.o: Checkers.inc.h
+TestAfterDivZeroChecker.o: CommentCommandList.inc.h
+TestAfterDivZeroChecker.o: DeclNodes.inc.h
+TestAfterDivZeroChecker.o: DiagnosticCommonKinds.inc.h
+TestAfterDivZeroChecker.o: StmtNodes.inc.h
+TestAfterDivZeroChecker.po: AttrList.inc.h
+TestAfterDivZeroChecker.po: Attrs.inc.h
+TestAfterDivZeroChecker.po: Checkers.inc.h
+TestAfterDivZeroChecker.po: CommentCommandList.inc.h
+TestAfterDivZeroChecker.po: DeclNodes.inc.h
+TestAfterDivZeroChecker.po: DiagnosticCommonKinds.inc.h
+TestAfterDivZeroChecker.po: StmtNodes.inc.h
+TraversalChecker.o: AttrList.inc.h
+TraversalChecker.o: Attrs.inc.h
+TraversalChecker.o: Checkers.inc.h
+TraversalChecker.o: CommentCommandList.inc.h
+TraversalChecker.o: DeclNodes.inc.h
+TraversalChecker.o: DiagnosticCommonKinds.inc.h
+TraversalChecker.o: StmtNodes.inc.h
+TraversalChecker.po: AttrList.inc.h
+TraversalChecker.po: Attrs.inc.h
+TraversalChecker.po: Checkers.inc.h
+TraversalChecker.po: CommentCommandList.inc.h
+TraversalChecker.po: DeclNodes.inc.h
+TraversalChecker.po: DiagnosticCommonKinds.inc.h
+TraversalChecker.po: StmtNodes.inc.h
+UndefBranchChecker.o: Checkers.inc.h
+UndefBranchChecker.o: CommentCommandList.inc.h
+UndefBranchChecker.o: DeclNodes.inc.h
+UndefBranchChecker.o: DiagnosticCommonKinds.inc.h
+UndefBranchChecker.o: StmtNodes.inc.h
+UndefBranchChecker.po: Checkers.inc.h
+UndefBranchChecker.po: CommentCommandList.inc.h
+UndefBranchChecker.po: DeclNodes.inc.h
+UndefBranchChecker.po: DiagnosticCommonKinds.inc.h
+UndefBranchChecker.po: StmtNodes.inc.h
+UndefCapturedBlockVarChecker.o: AttrList.inc.h
+UndefCapturedBlockVarChecker.o: Attrs.inc.h
+UndefCapturedBlockVarChecker.o: Checkers.inc.h
+UndefCapturedBlockVarChecker.o: CommentCommandList.inc.h
+UndefCapturedBlockVarChecker.o: DeclNodes.inc.h
+UndefCapturedBlockVarChecker.o: DiagnosticCommonKinds.inc.h
+UndefCapturedBlockVarChecker.o: StmtNodes.inc.h
+UndefCapturedBlockVarChecker.po: AttrList.inc.h
+UndefCapturedBlockVarChecker.po: Attrs.inc.h
+UndefCapturedBlockVarChecker.po: Checkers.inc.h
+UndefCapturedBlockVarChecker.po: CommentCommandList.inc.h
+UndefCapturedBlockVarChecker.po: DeclNodes.inc.h
+UndefCapturedBlockVarChecker.po: DiagnosticCommonKinds.inc.h
+UndefCapturedBlockVarChecker.po: StmtNodes.inc.h
+UndefResultChecker.o: Checkers.inc.h
+UndefResultChecker.o: CommentCommandList.inc.h
+UndefResultChecker.o: DeclNodes.inc.h
+UndefResultChecker.o: DiagnosticCommonKinds.inc.h
+UndefResultChecker.o: StmtNodes.inc.h
+UndefResultChecker.po: Checkers.inc.h
+UndefResultChecker.po: CommentCommandList.inc.h
+UndefResultChecker.po: DeclNodes.inc.h
+UndefResultChecker.po: DiagnosticCommonKinds.inc.h
+UndefResultChecker.po: StmtNodes.inc.h
+UndefinedArraySubscriptChecker.o: AttrList.inc.h
+UndefinedArraySubscriptChecker.o: Attrs.inc.h
+UndefinedArraySubscriptChecker.o: Checkers.inc.h
+UndefinedArraySubscriptChecker.o: CommentCommandList.inc.h
+UndefinedArraySubscriptChecker.o: DeclNodes.inc.h
+UndefinedArraySubscriptChecker.o: DiagnosticCommonKinds.inc.h
+UndefinedArraySubscriptChecker.o: StmtNodes.inc.h
+UndefinedArraySubscriptChecker.po: AttrList.inc.h
+UndefinedArraySubscriptChecker.po: Attrs.inc.h
+UndefinedArraySubscriptChecker.po: Checkers.inc.h
+UndefinedArraySubscriptChecker.po: CommentCommandList.inc.h
+UndefinedArraySubscriptChecker.po: DeclNodes.inc.h
+UndefinedArraySubscriptChecker.po: DiagnosticCommonKinds.inc.h
+UndefinedArraySubscriptChecker.po: StmtNodes.inc.h
+UndefinedAssignmentChecker.o: Checkers.inc.h
+UndefinedAssignmentChecker.o: CommentCommandList.inc.h
+UndefinedAssignmentChecker.o: DeclNodes.inc.h
+UndefinedAssignmentChecker.o: DiagnosticCommonKinds.inc.h
+UndefinedAssignmentChecker.o: StmtNodes.inc.h
+UndefinedAssignmentChecker.po: Checkers.inc.h
+UndefinedAssignmentChecker.po: CommentCommandList.inc.h
+UndefinedAssignmentChecker.po: DeclNodes.inc.h
+UndefinedAssignmentChecker.po: DiagnosticCommonKinds.inc.h
+UndefinedAssignmentChecker.po: StmtNodes.inc.h
+UnixAPIChecker.o: Checkers.inc.h
+UnixAPIChecker.o: CommentCommandList.inc.h
+UnixAPIChecker.o: DeclNodes.inc.h
+UnixAPIChecker.o: DiagnosticCommonKinds.inc.h
+UnixAPIChecker.o: StmtNodes.inc.h
+UnixAPIChecker.po: Checkers.inc.h
+UnixAPIChecker.po: CommentCommandList.inc.h
+UnixAPIChecker.po: DeclNodes.inc.h
+UnixAPIChecker.po: DiagnosticCommonKinds.inc.h
+UnixAPIChecker.po: StmtNodes.inc.h
+UnreachableCodeChecker.o: Checkers.inc.h
+UnreachableCodeChecker.o: CommentCommandList.inc.h
+UnreachableCodeChecker.o: DeclNodes.inc.h
+UnreachableCodeChecker.o: DiagnosticCommonKinds.inc.h
+UnreachableCodeChecker.o: StmtNodes.inc.h
+UnreachableCodeChecker.po: Checkers.inc.h
+UnreachableCodeChecker.po: CommentCommandList.inc.h
+UnreachableCodeChecker.po: DeclNodes.inc.h
+UnreachableCodeChecker.po: DiagnosticCommonKinds.inc.h
+UnreachableCodeChecker.po: StmtNodes.inc.h
+VLASizeChecker.o: Checkers.inc.h
+VLASizeChecker.o: CommentCommandList.inc.h
+VLASizeChecker.o: DeclNodes.inc.h
+VLASizeChecker.o: DiagnosticCommonKinds.inc.h
+VLASizeChecker.o: StmtNodes.inc.h
+VLASizeChecker.po: Checkers.inc.h
+VLASizeChecker.po: CommentCommandList.inc.h
+VLASizeChecker.po: DeclNodes.inc.h
+VLASizeChecker.po: DiagnosticCommonKinds.inc.h
+VLASizeChecker.po: StmtNodes.inc.h
+VirtualCallChecker.o: AttrList.inc.h
+VirtualCallChecker.o: Attrs.inc.h
+VirtualCallChecker.o: Checkers.inc.h
+VirtualCallChecker.o: CommentCommandList.inc.h
+VirtualCallChecker.o: DeclNodes.inc.h
+VirtualCallChecker.o: DiagnosticCommonKinds.inc.h
+VirtualCallChecker.o: StmtNodes.inc.h
+VirtualCallChecker.po: AttrList.inc.h
+VirtualCallChecker.po: Attrs.inc.h
+VirtualCallChecker.po: Checkers.inc.h
+VirtualCallChecker.po: CommentCommandList.inc.h
+VirtualCallChecker.po: DeclNodes.inc.h
+VirtualCallChecker.po: DiagnosticCommonKinds.inc.h
+VirtualCallChecker.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzercore/Makefile.depend b/lib/clang/libclangstaticanalyzercore/Makefile.depend
new file mode 100644
index 0000000..7a1f856
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzercore/Makefile.depend
@@ -0,0 +1,332 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisManager.o: CommentCommandList.inc.h
+AnalysisManager.o: DeclNodes.inc.h
+AnalysisManager.o: DiagnosticCommonKinds.inc.h
+AnalysisManager.o: StmtNodes.inc.h
+AnalysisManager.po: CommentCommandList.inc.h
+AnalysisManager.po: DeclNodes.inc.h
+AnalysisManager.po: DiagnosticCommonKinds.inc.h
+AnalysisManager.po: StmtNodes.inc.h
+BasicValueFactory.o: CommentCommandList.inc.h
+BasicValueFactory.o: DeclNodes.inc.h
+BasicValueFactory.o: DiagnosticCommonKinds.inc.h
+BasicValueFactory.o: StmtNodes.inc.h
+BasicValueFactory.po: CommentCommandList.inc.h
+BasicValueFactory.po: DeclNodes.inc.h
+BasicValueFactory.po: DiagnosticCommonKinds.inc.h
+BasicValueFactory.po: StmtNodes.inc.h
+BugReporter.o: CommentCommandList.inc.h
+BugReporter.o: DeclNodes.inc.h
+BugReporter.o: DiagnosticCommonKinds.inc.h
+BugReporter.o: StmtNodes.inc.h
+BugReporter.po: CommentCommandList.inc.h
+BugReporter.po: DeclNodes.inc.h
+BugReporter.po: DiagnosticCommonKinds.inc.h
+BugReporter.po: StmtNodes.inc.h
+BugReporterVisitors.o: AttrList.inc.h
+BugReporterVisitors.o: Attrs.inc.h
+BugReporterVisitors.o: CommentCommandList.inc.h
+BugReporterVisitors.o: DeclNodes.inc.h
+BugReporterVisitors.o: DiagnosticCommonKinds.inc.h
+BugReporterVisitors.o: StmtNodes.inc.h
+BugReporterVisitors.po: AttrList.inc.h
+BugReporterVisitors.po: Attrs.inc.h
+BugReporterVisitors.po: CommentCommandList.inc.h
+BugReporterVisitors.po: DeclNodes.inc.h
+BugReporterVisitors.po: DiagnosticCommonKinds.inc.h
+BugReporterVisitors.po: StmtNodes.inc.h
+CallEvent.o: AttrList.inc.h
+CallEvent.o: Attrs.inc.h
+CallEvent.o: CommentCommandList.inc.h
+CallEvent.o: DeclNodes.inc.h
+CallEvent.o: DiagnosticCommonKinds.inc.h
+CallEvent.o: StmtNodes.inc.h
+CallEvent.po: AttrList.inc.h
+CallEvent.po: Attrs.inc.h
+CallEvent.po: CommentCommandList.inc.h
+CallEvent.po: DeclNodes.inc.h
+CallEvent.po: DiagnosticCommonKinds.inc.h
+CallEvent.po: StmtNodes.inc.h
+Checker.o: CommentCommandList.inc.h
+Checker.o: DeclNodes.inc.h
+Checker.o: DiagnosticCommonKinds.inc.h
+Checker.o: StmtNodes.inc.h
+Checker.po: CommentCommandList.inc.h
+Checker.po: DeclNodes.inc.h
+Checker.po: DiagnosticCommonKinds.inc.h
+Checker.po: StmtNodes.inc.h
+CheckerContext.o: CommentCommandList.inc.h
+CheckerContext.o: DeclNodes.inc.h
+CheckerContext.o: DiagnosticCommonKinds.inc.h
+CheckerContext.o: StmtNodes.inc.h
+CheckerContext.po: CommentCommandList.inc.h
+CheckerContext.po: DeclNodes.inc.h
+CheckerContext.po: DiagnosticCommonKinds.inc.h
+CheckerContext.po: StmtNodes.inc.h
+CheckerHelpers.o: DeclNodes.inc.h
+CheckerHelpers.o: DiagnosticCommonKinds.inc.h
+CheckerHelpers.o: StmtNodes.inc.h
+CheckerHelpers.po: DeclNodes.inc.h
+CheckerHelpers.po: DiagnosticCommonKinds.inc.h
+CheckerHelpers.po: StmtNodes.inc.h
+CheckerManager.o: AttrList.inc.h
+CheckerManager.o: Attrs.inc.h
+CheckerManager.o: CommentCommandList.inc.h
+CheckerManager.o: DeclNodes.inc.h
+CheckerManager.o: DiagnosticCommonKinds.inc.h
+CheckerManager.o: StmtNodes.inc.h
+CheckerManager.po: AttrList.inc.h
+CheckerManager.po: Attrs.inc.h
+CheckerManager.po: CommentCommandList.inc.h
+CheckerManager.po: DeclNodes.inc.h
+CheckerManager.po: DiagnosticCommonKinds.inc.h
+CheckerManager.po: StmtNodes.inc.h
+CheckerRegistry.o: CommentCommandList.inc.h
+CheckerRegistry.o: DeclNodes.inc.h
+CheckerRegistry.o: DiagnosticCommonKinds.inc.h
+CheckerRegistry.o: StmtNodes.inc.h
+CheckerRegistry.po: CommentCommandList.inc.h
+CheckerRegistry.po: DeclNodes.inc.h
+CheckerRegistry.po: DiagnosticCommonKinds.inc.h
+CheckerRegistry.po: StmtNodes.inc.h
+ConstraintManager.o: CommentCommandList.inc.h
+ConstraintManager.o: DeclNodes.inc.h
+ConstraintManager.o: DiagnosticCommonKinds.inc.h
+ConstraintManager.o: StmtNodes.inc.h
+ConstraintManager.po: CommentCommandList.inc.h
+ConstraintManager.po: DeclNodes.inc.h
+ConstraintManager.po: DiagnosticCommonKinds.inc.h
+ConstraintManager.po: StmtNodes.inc.h
+CoreEngine.o: CommentCommandList.inc.h
+CoreEngine.o: DeclNodes.inc.h
+CoreEngine.o: DiagnosticCommonKinds.inc.h
+CoreEngine.o: StmtNodes.inc.h
+CoreEngine.po: CommentCommandList.inc.h
+CoreEngine.po: DeclNodes.inc.h
+CoreEngine.po: DiagnosticCommonKinds.inc.h
+CoreEngine.po: StmtNodes.inc.h
+Environment.o: CommentCommandList.inc.h
+Environment.o: DeclNodes.inc.h
+Environment.o: DiagnosticCommonKinds.inc.h
+Environment.o: StmtNodes.inc.h
+Environment.po: CommentCommandList.inc.h
+Environment.po: DeclNodes.inc.h
+Environment.po: DiagnosticCommonKinds.inc.h
+Environment.po: StmtNodes.inc.h
+ExplodedGraph.o: AttrList.inc.h
+ExplodedGraph.o: Attrs.inc.h
+ExplodedGraph.o: CommentCommandList.inc.h
+ExplodedGraph.o: DeclNodes.inc.h
+ExplodedGraph.o: DiagnosticCommonKinds.inc.h
+ExplodedGraph.o: StmtNodes.inc.h
+ExplodedGraph.po: AttrList.inc.h
+ExplodedGraph.po: Attrs.inc.h
+ExplodedGraph.po: CommentCommandList.inc.h
+ExplodedGraph.po: DeclNodes.inc.h
+ExplodedGraph.po: DiagnosticCommonKinds.inc.h
+ExplodedGraph.po: StmtNodes.inc.h
+ExprEngine.o: AttrList.inc.h
+ExprEngine.o: Attrs.inc.h
+ExprEngine.o: CommentCommandList.inc.h
+ExprEngine.o: DeclNodes.inc.h
+ExprEngine.o: DiagnosticCommonKinds.inc.h
+ExprEngine.o: StmtNodes.inc.h
+ExprEngine.po: AttrList.inc.h
+ExprEngine.po: Attrs.inc.h
+ExprEngine.po: CommentCommandList.inc.h
+ExprEngine.po: DeclNodes.inc.h
+ExprEngine.po: DiagnosticCommonKinds.inc.h
+ExprEngine.po: StmtNodes.inc.h
+ExprEngineC.o: CommentCommandList.inc.h
+ExprEngineC.o: DeclNodes.inc.h
+ExprEngineC.o: DiagnosticCommonKinds.inc.h
+ExprEngineC.o: StmtNodes.inc.h
+ExprEngineC.po: CommentCommandList.inc.h
+ExprEngineC.po: DeclNodes.inc.h
+ExprEngineC.po: DiagnosticCommonKinds.inc.h
+ExprEngineC.po: StmtNodes.inc.h
+ExprEngineCXX.o: AttrList.inc.h
+ExprEngineCXX.o: Attrs.inc.h
+ExprEngineCXX.o: CommentCommandList.inc.h
+ExprEngineCXX.o: DeclNodes.inc.h
+ExprEngineCXX.o: DiagnosticCommonKinds.inc.h
+ExprEngineCXX.o: StmtNodes.inc.h
+ExprEngineCXX.po: AttrList.inc.h
+ExprEngineCXX.po: Attrs.inc.h
+ExprEngineCXX.po: CommentCommandList.inc.h
+ExprEngineCXX.po: DeclNodes.inc.h
+ExprEngineCXX.po: DiagnosticCommonKinds.inc.h
+ExprEngineCXX.po: StmtNodes.inc.h
+ExprEngineCallAndReturn.o: AttrList.inc.h
+ExprEngineCallAndReturn.o: Attrs.inc.h
+ExprEngineCallAndReturn.o: CommentCommandList.inc.h
+ExprEngineCallAndReturn.o: DeclNodes.inc.h
+ExprEngineCallAndReturn.o: DiagnosticCommonKinds.inc.h
+ExprEngineCallAndReturn.o: StmtNodes.inc.h
+ExprEngineCallAndReturn.po: AttrList.inc.h
+ExprEngineCallAndReturn.po: Attrs.inc.h
+ExprEngineCallAndReturn.po: CommentCommandList.inc.h
+ExprEngineCallAndReturn.po: DeclNodes.inc.h
+ExprEngineCallAndReturn.po: DiagnosticCommonKinds.inc.h
+ExprEngineCallAndReturn.po: StmtNodes.inc.h
+ExprEngineObjC.o: AttrList.inc.h
+ExprEngineObjC.o: Attrs.inc.h
+ExprEngineObjC.o: CommentCommandList.inc.h
+ExprEngineObjC.o: DeclNodes.inc.h
+ExprEngineObjC.o: DiagnosticCommonKinds.inc.h
+ExprEngineObjC.o: StmtNodes.inc.h
+ExprEngineObjC.po: AttrList.inc.h
+ExprEngineObjC.po: Attrs.inc.h
+ExprEngineObjC.po: CommentCommandList.inc.h
+ExprEngineObjC.po: DeclNodes.inc.h
+ExprEngineObjC.po: DiagnosticCommonKinds.inc.h
+ExprEngineObjC.po: StmtNodes.inc.h
+HTMLDiagnostics.o: CommentCommandList.inc.h
+HTMLDiagnostics.o: DeclNodes.inc.h
+HTMLDiagnostics.o: DiagnosticCommonKinds.inc.h
+HTMLDiagnostics.o: StmtNodes.inc.h
+HTMLDiagnostics.po: CommentCommandList.inc.h
+HTMLDiagnostics.po: DeclNodes.inc.h
+HTMLDiagnostics.po: DiagnosticCommonKinds.inc.h
+HTMLDiagnostics.po: StmtNodes.inc.h
+MemRegion.o: AttrList.inc.h
+MemRegion.o: Attrs.inc.h
+MemRegion.o: CommentCommandList.inc.h
+MemRegion.o: DeclNodes.inc.h
+MemRegion.o: DiagnosticCommonKinds.inc.h
+MemRegion.o: StmtNodes.inc.h
+MemRegion.po: AttrList.inc.h
+MemRegion.po: Attrs.inc.h
+MemRegion.po: CommentCommandList.inc.h
+MemRegion.po: DeclNodes.inc.h
+MemRegion.po: DiagnosticCommonKinds.inc.h
+MemRegion.po: StmtNodes.inc.h
+PathDiagnostic.o: AttrList.inc.h
+PathDiagnostic.o: Attrs.inc.h
+PathDiagnostic.o: CommentCommandList.inc.h
+PathDiagnostic.o: DeclNodes.inc.h
+PathDiagnostic.o: DiagnosticCommonKinds.inc.h
+PathDiagnostic.o: StmtNodes.inc.h
+PathDiagnostic.po: AttrList.inc.h
+PathDiagnostic.po: Attrs.inc.h
+PathDiagnostic.po: CommentCommandList.inc.h
+PathDiagnostic.po: DeclNodes.inc.h
+PathDiagnostic.po: DiagnosticCommonKinds.inc.h
+PathDiagnostic.po: StmtNodes.inc.h
+PlistDiagnostics.o: DeclNodes.inc.h
+PlistDiagnostics.o: DiagnosticCommonKinds.inc.h
+PlistDiagnostics.o: StmtNodes.inc.h
+PlistDiagnostics.po: DeclNodes.inc.h
+PlistDiagnostics.po: DiagnosticCommonKinds.inc.h
+PlistDiagnostics.po: StmtNodes.inc.h
+ProgramState.o: AttrList.inc.h
+ProgramState.o: Attrs.inc.h
+ProgramState.o: CommentCommandList.inc.h
+ProgramState.o: DeclNodes.inc.h
+ProgramState.o: DiagnosticCommonKinds.inc.h
+ProgramState.o: StmtNodes.inc.h
+ProgramState.po: AttrList.inc.h
+ProgramState.po: Attrs.inc.h
+ProgramState.po: CommentCommandList.inc.h
+ProgramState.po: DeclNodes.inc.h
+ProgramState.po: DiagnosticCommonKinds.inc.h
+ProgramState.po: StmtNodes.inc.h
+RangeConstraintManager.o: CommentCommandList.inc.h
+RangeConstraintManager.o: DeclNodes.inc.h
+RangeConstraintManager.o: DiagnosticCommonKinds.inc.h
+RangeConstraintManager.o: StmtNodes.inc.h
+RangeConstraintManager.po: CommentCommandList.inc.h
+RangeConstraintManager.po: DeclNodes.inc.h
+RangeConstraintManager.po: DiagnosticCommonKinds.inc.h
+RangeConstraintManager.po: StmtNodes.inc.h
+RegionStore.o: AttrList.inc.h
+RegionStore.o: Attrs.inc.h
+RegionStore.o: CommentCommandList.inc.h
+RegionStore.o: DeclNodes.inc.h
+RegionStore.o: DiagnosticCommonKinds.inc.h
+RegionStore.o: StmtNodes.inc.h
+RegionStore.po: AttrList.inc.h
+RegionStore.po: Attrs.inc.h
+RegionStore.po: CommentCommandList.inc.h
+RegionStore.po: DeclNodes.inc.h
+RegionStore.po: DiagnosticCommonKinds.inc.h
+RegionStore.po: StmtNodes.inc.h
+SValBuilder.o: AttrList.inc.h
+SValBuilder.o: Attrs.inc.h
+SValBuilder.o: CommentCommandList.inc.h
+SValBuilder.o: DeclNodes.inc.h
+SValBuilder.o: DiagnosticCommonKinds.inc.h
+SValBuilder.o: StmtNodes.inc.h
+SValBuilder.po: AttrList.inc.h
+SValBuilder.po: Attrs.inc.h
+SValBuilder.po: CommentCommandList.inc.h
+SValBuilder.po: DeclNodes.inc.h
+SValBuilder.po: DiagnosticCommonKinds.inc.h
+SValBuilder.po: StmtNodes.inc.h
+SVals.o: CommentCommandList.inc.h
+SVals.o: DeclNodes.inc.h
+SVals.o: DiagnosticCommonKinds.inc.h
+SVals.o: StmtNodes.inc.h
+SVals.po: CommentCommandList.inc.h
+SVals.po: DeclNodes.inc.h
+SVals.po: DiagnosticCommonKinds.inc.h
+SVals.po: StmtNodes.inc.h
+SimpleConstraintManager.o: CommentCommandList.inc.h
+SimpleConstraintManager.o: DeclNodes.inc.h
+SimpleConstraintManager.o: DiagnosticCommonKinds.inc.h
+SimpleConstraintManager.o: StmtNodes.inc.h
+SimpleConstraintManager.po: CommentCommandList.inc.h
+SimpleConstraintManager.po: DeclNodes.inc.h
+SimpleConstraintManager.po: DiagnosticCommonKinds.inc.h
+SimpleConstraintManager.po: StmtNodes.inc.h
+SimpleSValBuilder.o: CommentCommandList.inc.h
+SimpleSValBuilder.o: DeclNodes.inc.h
+SimpleSValBuilder.o: DiagnosticCommonKinds.inc.h
+SimpleSValBuilder.o: StmtNodes.inc.h
+SimpleSValBuilder.po: CommentCommandList.inc.h
+SimpleSValBuilder.po: DeclNodes.inc.h
+SimpleSValBuilder.po: DiagnosticCommonKinds.inc.h
+SimpleSValBuilder.po: StmtNodes.inc.h
+Store.o: AttrList.inc.h
+Store.o: Attrs.inc.h
+Store.o: CommentCommandList.inc.h
+Store.o: DeclNodes.inc.h
+Store.o: DiagnosticCommonKinds.inc.h
+Store.o: StmtNodes.inc.h
+Store.po: AttrList.inc.h
+Store.po: Attrs.inc.h
+Store.po: CommentCommandList.inc.h
+Store.po: DeclNodes.inc.h
+Store.po: DiagnosticCommonKinds.inc.h
+Store.po: StmtNodes.inc.h
+SubEngine.o: CommentCommandList.inc.h
+SubEngine.o: DeclNodes.inc.h
+SubEngine.o: DiagnosticCommonKinds.inc.h
+SubEngine.o: StmtNodes.inc.h
+SubEngine.po: CommentCommandList.inc.h
+SubEngine.po: DeclNodes.inc.h
+SubEngine.po: DiagnosticCommonKinds.inc.h
+SubEngine.po: StmtNodes.inc.h
+SymbolManager.o: CommentCommandList.inc.h
+SymbolManager.o: DeclNodes.inc.h
+SymbolManager.o: DiagnosticCommonKinds.inc.h
+SymbolManager.o: StmtNodes.inc.h
+SymbolManager.po: CommentCommandList.inc.h
+SymbolManager.po: DeclNodes.inc.h
+SymbolManager.po: DiagnosticCommonKinds.inc.h
+SymbolManager.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend b/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend
new file mode 100644
index 0000000..77ea2dd
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend
@@ -0,0 +1,66 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisConsumer.o: AttrList.inc.h
+AnalysisConsumer.o: AttrVisitor.inc.h
+AnalysisConsumer.o: Attrs.inc.h
+AnalysisConsumer.o: CommentCommandList.inc.h
+AnalysisConsumer.o: DeclNodes.inc.h
+AnalysisConsumer.o: DiagnosticCommonKinds.inc.h
+AnalysisConsumer.o: StmtNodes.inc.h
+AnalysisConsumer.po: AttrList.inc.h
+AnalysisConsumer.po: AttrVisitor.inc.h
+AnalysisConsumer.po: Attrs.inc.h
+AnalysisConsumer.po: CommentCommandList.inc.h
+AnalysisConsumer.po: DeclNodes.inc.h
+AnalysisConsumer.po: DiagnosticCommonKinds.inc.h
+AnalysisConsumer.po: StmtNodes.inc.h
+CheckerRegistration.o: CommentCommandList.inc.h
+CheckerRegistration.o: DeclNodes.inc.h
+CheckerRegistration.o: DiagnosticCommonKinds.inc.h
+CheckerRegistration.o: DiagnosticFrontendKinds.inc.h
+CheckerRegistration.o: StmtNodes.inc.h
+CheckerRegistration.po: CommentCommandList.inc.h
+CheckerRegistration.po: DeclNodes.inc.h
+CheckerRegistration.po: DiagnosticCommonKinds.inc.h
+CheckerRegistration.po: DiagnosticFrontendKinds.inc.h
+CheckerRegistration.po: StmtNodes.inc.h
+FrontendActions.o: CommentCommandList.inc.h
+FrontendActions.o: DeclNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.o: StmtNodes.inc.h
+FrontendActions.po: CommentCommandList.inc.h
+FrontendActions.po: DeclNodes.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+FrontendActions.po: StmtNodes.inc.h
+ModelConsumer.o: DeclNodes.inc.h
+ModelConsumer.o: DiagnosticCommonKinds.inc.h
+ModelConsumer.po: DeclNodes.inc.h
+ModelConsumer.po: DiagnosticCommonKinds.inc.h
+ModelInjector.o: AttrList.inc.h
+ModelInjector.o: AttrParsedAttrList.inc.h
+ModelInjector.o: Attrs.inc.h
+ModelInjector.o: CommentCommandList.inc.h
+ModelInjector.o: DeclNodes.inc.h
+ModelInjector.o: DiagnosticCommonKinds.inc.h
+ModelInjector.o: StmtNodes.inc.h
+ModelInjector.po: AttrList.inc.h
+ModelInjector.po: AttrParsedAttrList.inc.h
+ModelInjector.po: Attrs.inc.h
+ModelInjector.po: CommentCommandList.inc.h
+ModelInjector.po: DeclNodes.inc.h
+ModelInjector.po: DiagnosticCommonKinds.inc.h
+ModelInjector.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldb/Makefile.depend b/lib/clang/liblldb/Makefile.depend
new file mode 100644
index 0000000..9e9f114
--- /dev/null
+++ b/lib/clang/liblldb/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lldb.o: AttrList.inc.h
+lldb.o: Attrs.inc.h
+lldb.o: CommentCommandList.inc.h
+lldb.o: DeclNodes.inc.h
+lldb.o: DiagnosticCommonKinds.inc.h
+lldb.o: StmtNodes.inc.h
+lldb.po: AttrList.inc.h
+lldb.po: Attrs.inc.h
+lldb.po: CommentCommandList.inc.h
+lldb.po: DeclNodes.inc.h
+lldb.po: DiagnosticCommonKinds.inc.h
+lldb.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbAPI/Makefile.depend b/lib/clang/liblldbAPI/Makefile.depend
new file mode 100644
index 0000000..8c55ae9
--- /dev/null
+++ b/lib/clang/liblldbAPI/Makefile.depend
@@ -0,0 +1,338 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SBAddress.o: CommentCommandList.inc.h
+SBAddress.o: DeclNodes.inc.h
+SBAddress.o: DiagnosticCommonKinds.inc.h
+SBAddress.o: StmtNodes.inc.h
+SBAddress.po: CommentCommandList.inc.h
+SBAddress.po: DeclNodes.inc.h
+SBAddress.po: DiagnosticCommonKinds.inc.h
+SBAddress.po: StmtNodes.inc.h
+SBBlock.o: DiagnosticCommonKinds.inc.h
+SBBlock.po: DiagnosticCommonKinds.inc.h
+SBBreakpoint.o: AttrList.inc.h
+SBBreakpoint.o: Attrs.inc.h
+SBBreakpoint.o: CommentCommandList.inc.h
+SBBreakpoint.o: DeclNodes.inc.h
+SBBreakpoint.o: DiagnosticCommonKinds.inc.h
+SBBreakpoint.o: StmtNodes.inc.h
+SBBreakpoint.po: AttrList.inc.h
+SBBreakpoint.po: Attrs.inc.h
+SBBreakpoint.po: CommentCommandList.inc.h
+SBBreakpoint.po: DeclNodes.inc.h
+SBBreakpoint.po: DiagnosticCommonKinds.inc.h
+SBBreakpoint.po: StmtNodes.inc.h
+SBBreakpointLocation.o: AttrList.inc.h
+SBBreakpointLocation.o: Attrs.inc.h
+SBBreakpointLocation.o: CommentCommandList.inc.h
+SBBreakpointLocation.o: DeclNodes.inc.h
+SBBreakpointLocation.o: DiagnosticCommonKinds.inc.h
+SBBreakpointLocation.o: StmtNodes.inc.h
+SBBreakpointLocation.po: AttrList.inc.h
+SBBreakpointLocation.po: Attrs.inc.h
+SBBreakpointLocation.po: CommentCommandList.inc.h
+SBBreakpointLocation.po: DeclNodes.inc.h
+SBBreakpointLocation.po: DiagnosticCommonKinds.inc.h
+SBBreakpointLocation.po: StmtNodes.inc.h
+SBCommandInterpreter.o: AttrList.inc.h
+SBCommandInterpreter.o: Attrs.inc.h
+SBCommandInterpreter.o: CommentCommandList.inc.h
+SBCommandInterpreter.o: DeclNodes.inc.h
+SBCommandInterpreter.o: DiagnosticCommonKinds.inc.h
+SBCommandInterpreter.o: StmtNodes.inc.h
+SBCommandInterpreter.po: AttrList.inc.h
+SBCommandInterpreter.po: Attrs.inc.h
+SBCommandInterpreter.po: CommentCommandList.inc.h
+SBCommandInterpreter.po: DeclNodes.inc.h
+SBCommandInterpreter.po: DiagnosticCommonKinds.inc.h
+SBCommandInterpreter.po: StmtNodes.inc.h
+SBCompileUnit.o: CommentCommandList.inc.h
+SBCompileUnit.o: DeclNodes.inc.h
+SBCompileUnit.o: DiagnosticCommonKinds.inc.h
+SBCompileUnit.o: StmtNodes.inc.h
+SBCompileUnit.po: CommentCommandList.inc.h
+SBCompileUnit.po: DeclNodes.inc.h
+SBCompileUnit.po: DiagnosticCommonKinds.inc.h
+SBCompileUnit.po: StmtNodes.inc.h
+SBDebugger.o: AttrList.inc.h
+SBDebugger.o: Attrs.inc.h
+SBDebugger.o: CommentCommandList.inc.h
+SBDebugger.o: DeclNodes.inc.h
+SBDebugger.o: DiagnosticCommonKinds.inc.h
+SBDebugger.o: StmtNodes.inc.h
+SBDebugger.po: AttrList.inc.h
+SBDebugger.po: Attrs.inc.h
+SBDebugger.po: CommentCommandList.inc.h
+SBDebugger.po: DeclNodes.inc.h
+SBDebugger.po: DiagnosticCommonKinds.inc.h
+SBDebugger.po: StmtNodes.inc.h
+SBEvent.o: AttrList.inc.h
+SBEvent.o: Attrs.inc.h
+SBEvent.o: CommentCommandList.inc.h
+SBEvent.o: DeclNodes.inc.h
+SBEvent.o: DiagnosticCommonKinds.inc.h
+SBEvent.o: StmtNodes.inc.h
+SBEvent.po: AttrList.inc.h
+SBEvent.po: Attrs.inc.h
+SBEvent.po: CommentCommandList.inc.h
+SBEvent.po: DeclNodes.inc.h
+SBEvent.po: DiagnosticCommonKinds.inc.h
+SBEvent.po: StmtNodes.inc.h
+SBExpressionOptions.o: DiagnosticCommonKinds.inc.h
+SBExpressionOptions.po: DiagnosticCommonKinds.inc.h
+SBFrame.o: DiagnosticCommonKinds.inc.h
+SBFrame.po: DiagnosticCommonKinds.inc.h
+SBFunction.o: CommentCommandList.inc.h
+SBFunction.o: DeclNodes.inc.h
+SBFunction.o: DiagnosticCommonKinds.inc.h
+SBFunction.o: StmtNodes.inc.h
+SBFunction.po: CommentCommandList.inc.h
+SBFunction.po: DeclNodes.inc.h
+SBFunction.po: DiagnosticCommonKinds.inc.h
+SBFunction.po: StmtNodes.inc.h
+SBInstruction.o: CommentCommandList.inc.h
+SBInstruction.o: DeclNodes.inc.h
+SBInstruction.o: DiagnosticCommonKinds.inc.h
+SBInstruction.o: StmtNodes.inc.h
+SBInstruction.po: CommentCommandList.inc.h
+SBInstruction.po: DeclNodes.inc.h
+SBInstruction.po: DiagnosticCommonKinds.inc.h
+SBInstruction.po: StmtNodes.inc.h
+SBInstructionList.o: CommentCommandList.inc.h
+SBInstructionList.o: DeclNodes.inc.h
+SBInstructionList.o: DiagnosticCommonKinds.inc.h
+SBInstructionList.o: StmtNodes.inc.h
+SBInstructionList.po: CommentCommandList.inc.h
+SBInstructionList.po: DeclNodes.inc.h
+SBInstructionList.po: DiagnosticCommonKinds.inc.h
+SBInstructionList.po: StmtNodes.inc.h
+SBListener.o: AttrList.inc.h
+SBListener.o: Attrs.inc.h
+SBListener.o: CommentCommandList.inc.h
+SBListener.o: DeclNodes.inc.h
+SBListener.o: DiagnosticCommonKinds.inc.h
+SBListener.o: StmtNodes.inc.h
+SBListener.po: AttrList.inc.h
+SBListener.po: Attrs.inc.h
+SBListener.po: CommentCommandList.inc.h
+SBListener.po: DeclNodes.inc.h
+SBListener.po: DiagnosticCommonKinds.inc.h
+SBListener.po: StmtNodes.inc.h
+SBModule.o: CommentCommandList.inc.h
+SBModule.o: DeclNodes.inc.h
+SBModule.o: DiagnosticCommonKinds.inc.h
+SBModule.o: StmtNodes.inc.h
+SBModule.po: CommentCommandList.inc.h
+SBModule.po: DeclNodes.inc.h
+SBModule.po: DiagnosticCommonKinds.inc.h
+SBModule.po: StmtNodes.inc.h
+SBModuleSpec.o: CommentCommandList.inc.h
+SBModuleSpec.o: DeclNodes.inc.h
+SBModuleSpec.o: DiagnosticCommonKinds.inc.h
+SBModuleSpec.o: StmtNodes.inc.h
+SBModuleSpec.po: CommentCommandList.inc.h
+SBModuleSpec.po: DeclNodes.inc.h
+SBModuleSpec.po: DiagnosticCommonKinds.inc.h
+SBModuleSpec.po: StmtNodes.inc.h
+SBPlatform.o: DiagnosticCommonKinds.inc.h
+SBPlatform.po: DiagnosticCommonKinds.inc.h
+SBProcess.o: AttrList.inc.h
+SBProcess.o: Attrs.inc.h
+SBProcess.o: CommentCommandList.inc.h
+SBProcess.o: DeclNodes.inc.h
+SBProcess.o: DiagnosticCommonKinds.inc.h
+SBProcess.o: StmtNodes.inc.h
+SBProcess.po: AttrList.inc.h
+SBProcess.po: Attrs.inc.h
+SBProcess.po: CommentCommandList.inc.h
+SBProcess.po: DeclNodes.inc.h
+SBProcess.po: DiagnosticCommonKinds.inc.h
+SBProcess.po: StmtNodes.inc.h
+SBQueue.o: DiagnosticCommonKinds.inc.h
+SBQueue.po: DiagnosticCommonKinds.inc.h
+SBQueueItem.o: DiagnosticCommonKinds.inc.h
+SBQueueItem.po: DiagnosticCommonKinds.inc.h
+SBSection.o: CommentCommandList.inc.h
+SBSection.o: DeclNodes.inc.h
+SBSection.o: DiagnosticCommonKinds.inc.h
+SBSection.o: StmtNodes.inc.h
+SBSection.po: CommentCommandList.inc.h
+SBSection.po: DeclNodes.inc.h
+SBSection.po: DiagnosticCommonKinds.inc.h
+SBSection.po: StmtNodes.inc.h
+SBSourceManager.o: AttrList.inc.h
+SBSourceManager.o: Attrs.inc.h
+SBSourceManager.o: CommentCommandList.inc.h
+SBSourceManager.o: DeclNodes.inc.h
+SBSourceManager.o: DiagnosticCommonKinds.inc.h
+SBSourceManager.o: StmtNodes.inc.h
+SBSourceManager.po: AttrList.inc.h
+SBSourceManager.po: Attrs.inc.h
+SBSourceManager.po: CommentCommandList.inc.h
+SBSourceManager.po: DeclNodes.inc.h
+SBSourceManager.po: DiagnosticCommonKinds.inc.h
+SBSourceManager.po: StmtNodes.inc.h
+SBSymbol.o: CommentCommandList.inc.h
+SBSymbol.o: DeclNodes.inc.h
+SBSymbol.o: DiagnosticCommonKinds.inc.h
+SBSymbol.o: StmtNodes.inc.h
+SBSymbol.po: CommentCommandList.inc.h
+SBSymbol.po: DeclNodes.inc.h
+SBSymbol.po: DiagnosticCommonKinds.inc.h
+SBSymbol.po: StmtNodes.inc.h
+SBSymbolContext.o: CommentCommandList.inc.h
+SBSymbolContext.o: DeclNodes.inc.h
+SBSymbolContext.o: DiagnosticCommonKinds.inc.h
+SBSymbolContext.o: StmtNodes.inc.h
+SBSymbolContext.po: CommentCommandList.inc.h
+SBSymbolContext.po: DeclNodes.inc.h
+SBSymbolContext.po: DiagnosticCommonKinds.inc.h
+SBSymbolContext.po: StmtNodes.inc.h
+SBTarget.o: AttrList.inc.h
+SBTarget.o: Attrs.inc.h
+SBTarget.o: CommentCommandList.inc.h
+SBTarget.o: DeclNodes.inc.h
+SBTarget.o: DiagnosticCommonKinds.inc.h
+SBTarget.o: StmtNodes.inc.h
+SBTarget.po: AttrList.inc.h
+SBTarget.po: Attrs.inc.h
+SBTarget.po: CommentCommandList.inc.h
+SBTarget.po: DeclNodes.inc.h
+SBTarget.po: DiagnosticCommonKinds.inc.h
+SBTarget.po: StmtNodes.inc.h
+SBThread.o: AttrList.inc.h
+SBThread.o: Attrs.inc.h
+SBThread.o: CommentCommandList.inc.h
+SBThread.o: DeclNodes.inc.h
+SBThread.o: DiagnosticCommonKinds.inc.h
+SBThread.o: StmtNodes.inc.h
+SBThread.po: AttrList.inc.h
+SBThread.po: Attrs.inc.h
+SBThread.po: CommentCommandList.inc.h
+SBThread.po: DeclNodes.inc.h
+SBThread.po: DiagnosticCommonKinds.inc.h
+SBThread.po: StmtNodes.inc.h
+SBThreadPlan.o: AttrList.inc.h
+SBThreadPlan.o: Attrs.inc.h
+SBThreadPlan.o: CommentCommandList.inc.h
+SBThreadPlan.o: DeclNodes.inc.h
+SBThreadPlan.o: DiagnosticCommonKinds.inc.h
+SBThreadPlan.o: StmtNodes.inc.h
+SBThreadPlan.po: AttrList.inc.h
+SBThreadPlan.po: Attrs.inc.h
+SBThreadPlan.po: CommentCommandList.inc.h
+SBThreadPlan.po: DeclNodes.inc.h
+SBThreadPlan.po: DiagnosticCommonKinds.inc.h
+SBThreadPlan.po: StmtNodes.inc.h
+SBType.o: CommentCommandList.inc.h
+SBType.o: DeclNodes.inc.h
+SBType.o: DiagnosticCommonKinds.inc.h
+SBType.o: StmtNodes.inc.h
+SBType.po: CommentCommandList.inc.h
+SBType.po: DeclNodes.inc.h
+SBType.po: DiagnosticCommonKinds.inc.h
+SBType.po: StmtNodes.inc.h
+SBTypeCategory.o: AttrList.inc.h
+SBTypeCategory.o: Attrs.inc.h
+SBTypeCategory.o: CommentCommandList.inc.h
+SBTypeCategory.o: DeclNodes.inc.h
+SBTypeCategory.o: DiagnosticCommonKinds.inc.h
+SBTypeCategory.o: StmtNodes.inc.h
+SBTypeCategory.po: AttrList.inc.h
+SBTypeCategory.po: Attrs.inc.h
+SBTypeCategory.po: CommentCommandList.inc.h
+SBTypeCategory.po: DeclNodes.inc.h
+SBTypeCategory.po: DiagnosticCommonKinds.inc.h
+SBTypeCategory.po: StmtNodes.inc.h
+SBTypeEnumMember.o: DiagnosticCommonKinds.inc.h
+SBTypeEnumMember.po: DiagnosticCommonKinds.inc.h
+SBTypeFilter.o: AttrList.inc.h
+SBTypeFilter.o: Attrs.inc.h
+SBTypeFilter.o: CommentCommandList.inc.h
+SBTypeFilter.o: DeclNodes.inc.h
+SBTypeFilter.o: DiagnosticCommonKinds.inc.h
+SBTypeFilter.o: StmtNodes.inc.h
+SBTypeFilter.po: AttrList.inc.h
+SBTypeFilter.po: Attrs.inc.h
+SBTypeFilter.po: CommentCommandList.inc.h
+SBTypeFilter.po: DeclNodes.inc.h
+SBTypeFilter.po: DiagnosticCommonKinds.inc.h
+SBTypeFilter.po: StmtNodes.inc.h
+SBTypeFormat.o: AttrList.inc.h
+SBTypeFormat.o: Attrs.inc.h
+SBTypeFormat.o: CommentCommandList.inc.h
+SBTypeFormat.o: DeclNodes.inc.h
+SBTypeFormat.o: DiagnosticCommonKinds.inc.h
+SBTypeFormat.o: StmtNodes.inc.h
+SBTypeFormat.po: AttrList.inc.h
+SBTypeFormat.po: Attrs.inc.h
+SBTypeFormat.po: CommentCommandList.inc.h
+SBTypeFormat.po: DeclNodes.inc.h
+SBTypeFormat.po: DiagnosticCommonKinds.inc.h
+SBTypeFormat.po: StmtNodes.inc.h
+SBTypeNameSpecifier.o: AttrList.inc.h
+SBTypeNameSpecifier.o: Attrs.inc.h
+SBTypeNameSpecifier.o: CommentCommandList.inc.h
+SBTypeNameSpecifier.o: DeclNodes.inc.h
+SBTypeNameSpecifier.o: DiagnosticCommonKinds.inc.h
+SBTypeNameSpecifier.o: StmtNodes.inc.h
+SBTypeNameSpecifier.po: AttrList.inc.h
+SBTypeNameSpecifier.po: Attrs.inc.h
+SBTypeNameSpecifier.po: CommentCommandList.inc.h
+SBTypeNameSpecifier.po: DeclNodes.inc.h
+SBTypeNameSpecifier.po: DiagnosticCommonKinds.inc.h
+SBTypeNameSpecifier.po: StmtNodes.inc.h
+SBTypeSummary.o: AttrList.inc.h
+SBTypeSummary.o: Attrs.inc.h
+SBTypeSummary.o: CommentCommandList.inc.h
+SBTypeSummary.o: DeclNodes.inc.h
+SBTypeSummary.o: DiagnosticCommonKinds.inc.h
+SBTypeSummary.o: StmtNodes.inc.h
+SBTypeSummary.po: AttrList.inc.h
+SBTypeSummary.po: Attrs.inc.h
+SBTypeSummary.po: CommentCommandList.inc.h
+SBTypeSummary.po: DeclNodes.inc.h
+SBTypeSummary.po: DiagnosticCommonKinds.inc.h
+SBTypeSummary.po: StmtNodes.inc.h
+SBTypeSynthetic.o: AttrList.inc.h
+SBTypeSynthetic.o: Attrs.inc.h
+SBTypeSynthetic.o: CommentCommandList.inc.h
+SBTypeSynthetic.o: DeclNodes.inc.h
+SBTypeSynthetic.o: DiagnosticCommonKinds.inc.h
+SBTypeSynthetic.o: StmtNodes.inc.h
+SBTypeSynthetic.po: AttrList.inc.h
+SBTypeSynthetic.po: Attrs.inc.h
+SBTypeSynthetic.po: CommentCommandList.inc.h
+SBTypeSynthetic.po: DeclNodes.inc.h
+SBTypeSynthetic.po: DiagnosticCommonKinds.inc.h
+SBTypeSynthetic.po: StmtNodes.inc.h
+SBUnixSignals.o: DiagnosticCommonKinds.inc.h
+SBUnixSignals.po: DiagnosticCommonKinds.inc.h
+SBValue.o: AttrList.inc.h
+SBValue.o: Attrs.inc.h
+SBValue.o: CommentCommandList.inc.h
+SBValue.o: DeclNodes.inc.h
+SBValue.o: DiagnosticCommonKinds.inc.h
+SBValue.o: StmtNodes.inc.h
+SBValue.po: AttrList.inc.h
+SBValue.po: Attrs.inc.h
+SBValue.po: CommentCommandList.inc.h
+SBValue.po: DeclNodes.inc.h
+SBValue.po: DiagnosticCommonKinds.inc.h
+SBValue.po: StmtNodes.inc.h
+SBWatchpoint.o: DiagnosticCommonKinds.inc.h
+SBWatchpoint.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbBreakpoint/Makefile.depend b/lib/clang/liblldbBreakpoint/Makefile.depend
new file mode 100644
index 0000000..12728ea
--- /dev/null
+++ b/lib/clang/liblldbBreakpoint/Makefile.depend
@@ -0,0 +1,88 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Breakpoint.o: CommentCommandList.inc.h
+Breakpoint.o: DeclNodes.inc.h
+Breakpoint.o: DiagnosticCommonKinds.inc.h
+Breakpoint.o: StmtNodes.inc.h
+Breakpoint.po: CommentCommandList.inc.h
+Breakpoint.po: DeclNodes.inc.h
+Breakpoint.po: DiagnosticCommonKinds.inc.h
+Breakpoint.po: StmtNodes.inc.h
+BreakpointIDList.o: DiagnosticCommonKinds.inc.h
+BreakpointIDList.po: DiagnosticCommonKinds.inc.h
+BreakpointList.o: DiagnosticCommonKinds.inc.h
+BreakpointList.po: DiagnosticCommonKinds.inc.h
+BreakpointLocation.o: AttrList.inc.h
+BreakpointLocation.o: Attrs.inc.h
+BreakpointLocation.o: CommentCommandList.inc.h
+BreakpointLocation.o: DeclNodes.inc.h
+BreakpointLocation.o: DiagnosticCommonKinds.inc.h
+BreakpointLocation.o: StmtNodes.inc.h
+BreakpointLocation.po: AttrList.inc.h
+BreakpointLocation.po: Attrs.inc.h
+BreakpointLocation.po: CommentCommandList.inc.h
+BreakpointLocation.po: DeclNodes.inc.h
+BreakpointLocation.po: DiagnosticCommonKinds.inc.h
+BreakpointLocation.po: StmtNodes.inc.h
+BreakpointLocationCollection.o: DiagnosticCommonKinds.inc.h
+BreakpointLocationCollection.po: DiagnosticCommonKinds.inc.h
+BreakpointLocationList.o: CommentCommandList.inc.h
+BreakpointLocationList.o: DeclNodes.inc.h
+BreakpointLocationList.o: DiagnosticCommonKinds.inc.h
+BreakpointLocationList.o: StmtNodes.inc.h
+BreakpointLocationList.po: CommentCommandList.inc.h
+BreakpointLocationList.po: DeclNodes.inc.h
+BreakpointLocationList.po: DiagnosticCommonKinds.inc.h
+BreakpointLocationList.po: StmtNodes.inc.h
+BreakpointOptions.o: DiagnosticCommonKinds.inc.h
+BreakpointOptions.po: DiagnosticCommonKinds.inc.h
+BreakpointResolver.o: DiagnosticCommonKinds.inc.h
+BreakpointResolver.po: DiagnosticCommonKinds.inc.h
+BreakpointResolverAddress.o: DiagnosticCommonKinds.inc.h
+BreakpointResolverAddress.po: DiagnosticCommonKinds.inc.h
+BreakpointResolverFileLine.o: CommentCommandList.inc.h
+BreakpointResolverFileLine.o: DeclNodes.inc.h
+BreakpointResolverFileLine.o: DiagnosticCommonKinds.inc.h
+BreakpointResolverFileLine.o: StmtNodes.inc.h
+BreakpointResolverFileLine.po: CommentCommandList.inc.h
+BreakpointResolverFileLine.po: DeclNodes.inc.h
+BreakpointResolverFileLine.po: DiagnosticCommonKinds.inc.h
+BreakpointResolverFileLine.po: StmtNodes.inc.h
+BreakpointResolverFileRegex.o: DiagnosticCommonKinds.inc.h
+BreakpointResolverFileRegex.po: DiagnosticCommonKinds.inc.h
+BreakpointResolverName.o: CommentCommandList.inc.h
+BreakpointResolverName.o: DeclNodes.inc.h
+BreakpointResolverName.o: DiagnosticCommonKinds.inc.h
+BreakpointResolverName.o: StmtNodes.inc.h
+BreakpointResolverName.po: CommentCommandList.inc.h
+BreakpointResolverName.po: DeclNodes.inc.h
+BreakpointResolverName.po: DiagnosticCommonKinds.inc.h
+BreakpointResolverName.po: StmtNodes.inc.h
+BreakpointSite.o: DiagnosticCommonKinds.inc.h
+BreakpointSite.po: DiagnosticCommonKinds.inc.h
+Watchpoint.o: CommentCommandList.inc.h
+Watchpoint.o: DeclNodes.inc.h
+Watchpoint.o: DiagnosticCommonKinds.inc.h
+Watchpoint.o: StmtNodes.inc.h
+Watchpoint.po: CommentCommandList.inc.h
+Watchpoint.po: DeclNodes.inc.h
+Watchpoint.po: DiagnosticCommonKinds.inc.h
+Watchpoint.po: StmtNodes.inc.h
+WatchpointList.o: DiagnosticCommonKinds.inc.h
+WatchpointList.po: DiagnosticCommonKinds.inc.h
+WatchpointOptions.o: DiagnosticCommonKinds.inc.h
+WatchpointOptions.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbCommands/Makefile.depend b/lib/clang/liblldbCommands/Makefile.depend
new file mode 100644
index 0000000..a854483
--- /dev/null
+++ b/lib/clang/liblldbCommands/Makefile.depend
@@ -0,0 +1,352 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+CommandCompletions.o: AttrList.inc.h
+CommandCompletions.o: Attrs.inc.h
+CommandCompletions.o: CommentCommandList.inc.h
+CommandCompletions.o: DeclNodes.inc.h
+CommandCompletions.o: DiagnosticCommonKinds.inc.h
+CommandCompletions.o: StmtNodes.inc.h
+CommandCompletions.po: AttrList.inc.h
+CommandCompletions.po: Attrs.inc.h
+CommandCompletions.po: CommentCommandList.inc.h
+CommandCompletions.po: DeclNodes.inc.h
+CommandCompletions.po: DiagnosticCommonKinds.inc.h
+CommandCompletions.po: StmtNodes.inc.h
+CommandObjectApropos.o: AttrList.inc.h
+CommandObjectApropos.o: Attrs.inc.h
+CommandObjectApropos.o: CommentCommandList.inc.h
+CommandObjectApropos.o: DeclNodes.inc.h
+CommandObjectApropos.o: DiagnosticCommonKinds.inc.h
+CommandObjectApropos.o: StmtNodes.inc.h
+CommandObjectApropos.po: AttrList.inc.h
+CommandObjectApropos.po: Attrs.inc.h
+CommandObjectApropos.po: CommentCommandList.inc.h
+CommandObjectApropos.po: DeclNodes.inc.h
+CommandObjectApropos.po: DiagnosticCommonKinds.inc.h
+CommandObjectApropos.po: StmtNodes.inc.h
+CommandObjectArgs.o: AttrList.inc.h
+CommandObjectArgs.o: Attrs.inc.h
+CommandObjectArgs.o: CommentCommandList.inc.h
+CommandObjectArgs.o: DeclNodes.inc.h
+CommandObjectArgs.o: DiagnosticCommonKinds.inc.h
+CommandObjectArgs.o: StmtNodes.inc.h
+CommandObjectArgs.po: AttrList.inc.h
+CommandObjectArgs.po: Attrs.inc.h
+CommandObjectArgs.po: CommentCommandList.inc.h
+CommandObjectArgs.po: DeclNodes.inc.h
+CommandObjectArgs.po: DiagnosticCommonKinds.inc.h
+CommandObjectArgs.po: StmtNodes.inc.h
+CommandObjectBreakpoint.o: AttrList.inc.h
+CommandObjectBreakpoint.o: Attrs.inc.h
+CommandObjectBreakpoint.o: CommentCommandList.inc.h
+CommandObjectBreakpoint.o: DeclNodes.inc.h
+CommandObjectBreakpoint.o: DiagnosticCommonKinds.inc.h
+CommandObjectBreakpoint.o: StmtNodes.inc.h
+CommandObjectBreakpoint.po: AttrList.inc.h
+CommandObjectBreakpoint.po: Attrs.inc.h
+CommandObjectBreakpoint.po: CommentCommandList.inc.h
+CommandObjectBreakpoint.po: DeclNodes.inc.h
+CommandObjectBreakpoint.po: DiagnosticCommonKinds.inc.h
+CommandObjectBreakpoint.po: StmtNodes.inc.h
+CommandObjectBreakpointCommand.o: AttrList.inc.h
+CommandObjectBreakpointCommand.o: Attrs.inc.h
+CommandObjectBreakpointCommand.o: CommentCommandList.inc.h
+CommandObjectBreakpointCommand.o: DeclNodes.inc.h
+CommandObjectBreakpointCommand.o: DiagnosticCommonKinds.inc.h
+CommandObjectBreakpointCommand.o: StmtNodes.inc.h
+CommandObjectBreakpointCommand.po: AttrList.inc.h
+CommandObjectBreakpointCommand.po: Attrs.inc.h
+CommandObjectBreakpointCommand.po: CommentCommandList.inc.h
+CommandObjectBreakpointCommand.po: DeclNodes.inc.h
+CommandObjectBreakpointCommand.po: DiagnosticCommonKinds.inc.h
+CommandObjectBreakpointCommand.po: StmtNodes.inc.h
+CommandObjectCommands.o: AttrList.inc.h
+CommandObjectCommands.o: Attrs.inc.h
+CommandObjectCommands.o: CommentCommandList.inc.h
+CommandObjectCommands.o: DeclNodes.inc.h
+CommandObjectCommands.o: DiagnosticCommonKinds.inc.h
+CommandObjectCommands.o: StmtNodes.inc.h
+CommandObjectCommands.po: AttrList.inc.h
+CommandObjectCommands.po: Attrs.inc.h
+CommandObjectCommands.po: CommentCommandList.inc.h
+CommandObjectCommands.po: DeclNodes.inc.h
+CommandObjectCommands.po: DiagnosticCommonKinds.inc.h
+CommandObjectCommands.po: StmtNodes.inc.h
+CommandObjectDisassemble.o: AttrList.inc.h
+CommandObjectDisassemble.o: Attrs.inc.h
+CommandObjectDisassemble.o: CommentCommandList.inc.h
+CommandObjectDisassemble.o: DeclNodes.inc.h
+CommandObjectDisassemble.o: DiagnosticCommonKinds.inc.h
+CommandObjectDisassemble.o: StmtNodes.inc.h
+CommandObjectDisassemble.po: AttrList.inc.h
+CommandObjectDisassemble.po: Attrs.inc.h
+CommandObjectDisassemble.po: CommentCommandList.inc.h
+CommandObjectDisassemble.po: DeclNodes.inc.h
+CommandObjectDisassemble.po: DiagnosticCommonKinds.inc.h
+CommandObjectDisassemble.po: StmtNodes.inc.h
+CommandObjectExpression.o: AttrList.inc.h
+CommandObjectExpression.o: Attrs.inc.h
+CommandObjectExpression.o: CommentCommandList.inc.h
+CommandObjectExpression.o: DeclNodes.inc.h
+CommandObjectExpression.o: DiagnosticCommonKinds.inc.h
+CommandObjectExpression.o: StmtNodes.inc.h
+CommandObjectExpression.po: AttrList.inc.h
+CommandObjectExpression.po: Attrs.inc.h
+CommandObjectExpression.po: CommentCommandList.inc.h
+CommandObjectExpression.po: DeclNodes.inc.h
+CommandObjectExpression.po: DiagnosticCommonKinds.inc.h
+CommandObjectExpression.po: StmtNodes.inc.h
+CommandObjectFrame.o: AttrList.inc.h
+CommandObjectFrame.o: Attrs.inc.h
+CommandObjectFrame.o: CommentCommandList.inc.h
+CommandObjectFrame.o: DeclNodes.inc.h
+CommandObjectFrame.o: DiagnosticCommonKinds.inc.h
+CommandObjectFrame.o: StmtNodes.inc.h
+CommandObjectFrame.po: AttrList.inc.h
+CommandObjectFrame.po: Attrs.inc.h
+CommandObjectFrame.po: CommentCommandList.inc.h
+CommandObjectFrame.po: DeclNodes.inc.h
+CommandObjectFrame.po: DiagnosticCommonKinds.inc.h
+CommandObjectFrame.po: StmtNodes.inc.h
+CommandObjectGUI.o: AttrList.inc.h
+CommandObjectGUI.o: Attrs.inc.h
+CommandObjectGUI.o: CommentCommandList.inc.h
+CommandObjectGUI.o: DeclNodes.inc.h
+CommandObjectGUI.o: DiagnosticCommonKinds.inc.h
+CommandObjectGUI.o: StmtNodes.inc.h
+CommandObjectGUI.po: AttrList.inc.h
+CommandObjectGUI.po: Attrs.inc.h
+CommandObjectGUI.po: CommentCommandList.inc.h
+CommandObjectGUI.po: DeclNodes.inc.h
+CommandObjectGUI.po: DiagnosticCommonKinds.inc.h
+CommandObjectGUI.po: StmtNodes.inc.h
+CommandObjectHelp.o: AttrList.inc.h
+CommandObjectHelp.o: Attrs.inc.h
+CommandObjectHelp.o: CommentCommandList.inc.h
+CommandObjectHelp.o: DeclNodes.inc.h
+CommandObjectHelp.o: DiagnosticCommonKinds.inc.h
+CommandObjectHelp.o: StmtNodes.inc.h
+CommandObjectHelp.po: AttrList.inc.h
+CommandObjectHelp.po: Attrs.inc.h
+CommandObjectHelp.po: CommentCommandList.inc.h
+CommandObjectHelp.po: DeclNodes.inc.h
+CommandObjectHelp.po: DiagnosticCommonKinds.inc.h
+CommandObjectHelp.po: StmtNodes.inc.h
+CommandObjectLog.o: AttrList.inc.h
+CommandObjectLog.o: Attrs.inc.h
+CommandObjectLog.o: CommentCommandList.inc.h
+CommandObjectLog.o: DeclNodes.inc.h
+CommandObjectLog.o: DiagnosticCommonKinds.inc.h
+CommandObjectLog.o: StmtNodes.inc.h
+CommandObjectLog.po: AttrList.inc.h
+CommandObjectLog.po: Attrs.inc.h
+CommandObjectLog.po: CommentCommandList.inc.h
+CommandObjectLog.po: DeclNodes.inc.h
+CommandObjectLog.po: DiagnosticCommonKinds.inc.h
+CommandObjectLog.po: StmtNodes.inc.h
+CommandObjectMemory.o: AttrList.inc.h
+CommandObjectMemory.o: Attrs.inc.h
+CommandObjectMemory.o: CommentCommandList.inc.h
+CommandObjectMemory.o: DeclNodes.inc.h
+CommandObjectMemory.o: DiagnosticCommonKinds.inc.h
+CommandObjectMemory.o: StmtNodes.inc.h
+CommandObjectMemory.po: AttrList.inc.h
+CommandObjectMemory.po: Attrs.inc.h
+CommandObjectMemory.po: CommentCommandList.inc.h
+CommandObjectMemory.po: DeclNodes.inc.h
+CommandObjectMemory.po: DiagnosticCommonKinds.inc.h
+CommandObjectMemory.po: StmtNodes.inc.h
+CommandObjectMultiword.o: AttrList.inc.h
+CommandObjectMultiword.o: Attrs.inc.h
+CommandObjectMultiword.o: CommentCommandList.inc.h
+CommandObjectMultiword.o: DeclNodes.inc.h
+CommandObjectMultiword.o: DiagnosticCommonKinds.inc.h
+CommandObjectMultiword.o: StmtNodes.inc.h
+CommandObjectMultiword.po: AttrList.inc.h
+CommandObjectMultiword.po: Attrs.inc.h
+CommandObjectMultiword.po: CommentCommandList.inc.h
+CommandObjectMultiword.po: DeclNodes.inc.h
+CommandObjectMultiword.po: DiagnosticCommonKinds.inc.h
+CommandObjectMultiword.po: StmtNodes.inc.h
+CommandObjectPlatform.o: AttrList.inc.h
+CommandObjectPlatform.o: Attrs.inc.h
+CommandObjectPlatform.o: CommentCommandList.inc.h
+CommandObjectPlatform.o: DeclNodes.inc.h
+CommandObjectPlatform.o: DiagnosticCommonKinds.inc.h
+CommandObjectPlatform.o: StmtNodes.inc.h
+CommandObjectPlatform.po: AttrList.inc.h
+CommandObjectPlatform.po: Attrs.inc.h
+CommandObjectPlatform.po: CommentCommandList.inc.h
+CommandObjectPlatform.po: DeclNodes.inc.h
+CommandObjectPlatform.po: DiagnosticCommonKinds.inc.h
+CommandObjectPlatform.po: StmtNodes.inc.h
+CommandObjectPlugin.o: AttrList.inc.h
+CommandObjectPlugin.o: Attrs.inc.h
+CommandObjectPlugin.o: CommentCommandList.inc.h
+CommandObjectPlugin.o: DeclNodes.inc.h
+CommandObjectPlugin.o: DiagnosticCommonKinds.inc.h
+CommandObjectPlugin.o: StmtNodes.inc.h
+CommandObjectPlugin.po: AttrList.inc.h
+CommandObjectPlugin.po: Attrs.inc.h
+CommandObjectPlugin.po: CommentCommandList.inc.h
+CommandObjectPlugin.po: DeclNodes.inc.h
+CommandObjectPlugin.po: DiagnosticCommonKinds.inc.h
+CommandObjectPlugin.po: StmtNodes.inc.h
+CommandObjectProcess.o: AttrList.inc.h
+CommandObjectProcess.o: Attrs.inc.h
+CommandObjectProcess.o: CommentCommandList.inc.h
+CommandObjectProcess.o: DeclNodes.inc.h
+CommandObjectProcess.o: DiagnosticCommonKinds.inc.h
+CommandObjectProcess.o: StmtNodes.inc.h
+CommandObjectProcess.po: AttrList.inc.h
+CommandObjectProcess.po: Attrs.inc.h
+CommandObjectProcess.po: CommentCommandList.inc.h
+CommandObjectProcess.po: DeclNodes.inc.h
+CommandObjectProcess.po: DiagnosticCommonKinds.inc.h
+CommandObjectProcess.po: StmtNodes.inc.h
+CommandObjectQuit.o: AttrList.inc.h
+CommandObjectQuit.o: Attrs.inc.h
+CommandObjectQuit.o: CommentCommandList.inc.h
+CommandObjectQuit.o: DeclNodes.inc.h
+CommandObjectQuit.o: DiagnosticCommonKinds.inc.h
+CommandObjectQuit.o: StmtNodes.inc.h
+CommandObjectQuit.po: AttrList.inc.h
+CommandObjectQuit.po: Attrs.inc.h
+CommandObjectQuit.po: CommentCommandList.inc.h
+CommandObjectQuit.po: DeclNodes.inc.h
+CommandObjectQuit.po: DiagnosticCommonKinds.inc.h
+CommandObjectQuit.po: StmtNodes.inc.h
+CommandObjectRegister.o: AttrList.inc.h
+CommandObjectRegister.o: Attrs.inc.h
+CommandObjectRegister.o: CommentCommandList.inc.h
+CommandObjectRegister.o: DeclNodes.inc.h
+CommandObjectRegister.o: DiagnosticCommonKinds.inc.h
+CommandObjectRegister.o: StmtNodes.inc.h
+CommandObjectRegister.po: AttrList.inc.h
+CommandObjectRegister.po: Attrs.inc.h
+CommandObjectRegister.po: CommentCommandList.inc.h
+CommandObjectRegister.po: DeclNodes.inc.h
+CommandObjectRegister.po: DiagnosticCommonKinds.inc.h
+CommandObjectRegister.po: StmtNodes.inc.h
+CommandObjectSettings.o: AttrList.inc.h
+CommandObjectSettings.o: Attrs.inc.h
+CommandObjectSettings.o: CommentCommandList.inc.h
+CommandObjectSettings.o: DeclNodes.inc.h
+CommandObjectSettings.o: DiagnosticCommonKinds.inc.h
+CommandObjectSettings.o: StmtNodes.inc.h
+CommandObjectSettings.po: AttrList.inc.h
+CommandObjectSettings.po: Attrs.inc.h
+CommandObjectSettings.po: CommentCommandList.inc.h
+CommandObjectSettings.po: DeclNodes.inc.h
+CommandObjectSettings.po: DiagnosticCommonKinds.inc.h
+CommandObjectSettings.po: StmtNodes.inc.h
+CommandObjectSource.o: AttrList.inc.h
+CommandObjectSource.o: Attrs.inc.h
+CommandObjectSource.o: CommentCommandList.inc.h
+CommandObjectSource.o: DeclNodes.inc.h
+CommandObjectSource.o: DiagnosticCommonKinds.inc.h
+CommandObjectSource.o: StmtNodes.inc.h
+CommandObjectSource.po: AttrList.inc.h
+CommandObjectSource.po: Attrs.inc.h
+CommandObjectSource.po: CommentCommandList.inc.h
+CommandObjectSource.po: DeclNodes.inc.h
+CommandObjectSource.po: DiagnosticCommonKinds.inc.h
+CommandObjectSource.po: StmtNodes.inc.h
+CommandObjectSyntax.o: AttrList.inc.h
+CommandObjectSyntax.o: Attrs.inc.h
+CommandObjectSyntax.o: CommentCommandList.inc.h
+CommandObjectSyntax.o: DeclNodes.inc.h
+CommandObjectSyntax.o: DiagnosticCommonKinds.inc.h
+CommandObjectSyntax.o: StmtNodes.inc.h
+CommandObjectSyntax.po: AttrList.inc.h
+CommandObjectSyntax.po: Attrs.inc.h
+CommandObjectSyntax.po: CommentCommandList.inc.h
+CommandObjectSyntax.po: DeclNodes.inc.h
+CommandObjectSyntax.po: DiagnosticCommonKinds.inc.h
+CommandObjectSyntax.po: StmtNodes.inc.h
+CommandObjectTarget.o: AttrList.inc.h
+CommandObjectTarget.o: Attrs.inc.h
+CommandObjectTarget.o: CommentCommandList.inc.h
+CommandObjectTarget.o: DeclNodes.inc.h
+CommandObjectTarget.o: DiagnosticCommonKinds.inc.h
+CommandObjectTarget.o: StmtNodes.inc.h
+CommandObjectTarget.po: AttrList.inc.h
+CommandObjectTarget.po: Attrs.inc.h
+CommandObjectTarget.po: CommentCommandList.inc.h
+CommandObjectTarget.po: DeclNodes.inc.h
+CommandObjectTarget.po: DiagnosticCommonKinds.inc.h
+CommandObjectTarget.po: StmtNodes.inc.h
+CommandObjectThread.o: AttrList.inc.h
+CommandObjectThread.o: Attrs.inc.h
+CommandObjectThread.o: CommentCommandList.inc.h
+CommandObjectThread.o: DeclNodes.inc.h
+CommandObjectThread.o: DiagnosticCommonKinds.inc.h
+CommandObjectThread.o: StmtNodes.inc.h
+CommandObjectThread.po: AttrList.inc.h
+CommandObjectThread.po: Attrs.inc.h
+CommandObjectThread.po: CommentCommandList.inc.h
+CommandObjectThread.po: DeclNodes.inc.h
+CommandObjectThread.po: DiagnosticCommonKinds.inc.h
+CommandObjectThread.po: StmtNodes.inc.h
+CommandObjectType.o: AttrList.inc.h
+CommandObjectType.o: Attrs.inc.h
+CommandObjectType.o: CommentCommandList.inc.h
+CommandObjectType.o: DeclNodes.inc.h
+CommandObjectType.o: DiagnosticCommonKinds.inc.h
+CommandObjectType.o: StmtNodes.inc.h
+CommandObjectType.po: AttrList.inc.h
+CommandObjectType.po: Attrs.inc.h
+CommandObjectType.po: CommentCommandList.inc.h
+CommandObjectType.po: DeclNodes.inc.h
+CommandObjectType.po: DiagnosticCommonKinds.inc.h
+CommandObjectType.po: StmtNodes.inc.h
+CommandObjectVersion.o: AttrList.inc.h
+CommandObjectVersion.o: Attrs.inc.h
+CommandObjectVersion.o: CommentCommandList.inc.h
+CommandObjectVersion.o: DeclNodes.inc.h
+CommandObjectVersion.o: DiagnosticCommonKinds.inc.h
+CommandObjectVersion.o: StmtNodes.inc.h
+CommandObjectVersion.po: AttrList.inc.h
+CommandObjectVersion.po: Attrs.inc.h
+CommandObjectVersion.po: CommentCommandList.inc.h
+CommandObjectVersion.po: DeclNodes.inc.h
+CommandObjectVersion.po: DiagnosticCommonKinds.inc.h
+CommandObjectVersion.po: StmtNodes.inc.h
+CommandObjectWatchpoint.o: AttrList.inc.h
+CommandObjectWatchpoint.o: Attrs.inc.h
+CommandObjectWatchpoint.o: CommentCommandList.inc.h
+CommandObjectWatchpoint.o: DeclNodes.inc.h
+CommandObjectWatchpoint.o: DiagnosticCommonKinds.inc.h
+CommandObjectWatchpoint.o: StmtNodes.inc.h
+CommandObjectWatchpoint.po: AttrList.inc.h
+CommandObjectWatchpoint.po: Attrs.inc.h
+CommandObjectWatchpoint.po: CommentCommandList.inc.h
+CommandObjectWatchpoint.po: DeclNodes.inc.h
+CommandObjectWatchpoint.po: DiagnosticCommonKinds.inc.h
+CommandObjectWatchpoint.po: StmtNodes.inc.h
+CommandObjectWatchpointCommand.o: AttrList.inc.h
+CommandObjectWatchpointCommand.o: Attrs.inc.h
+CommandObjectWatchpointCommand.o: CommentCommandList.inc.h
+CommandObjectWatchpointCommand.o: DeclNodes.inc.h
+CommandObjectWatchpointCommand.o: DiagnosticCommonKinds.inc.h
+CommandObjectWatchpointCommand.o: StmtNodes.inc.h
+CommandObjectWatchpointCommand.po: AttrList.inc.h
+CommandObjectWatchpointCommand.po: Attrs.inc.h
+CommandObjectWatchpointCommand.po: CommentCommandList.inc.h
+CommandObjectWatchpointCommand.po: DeclNodes.inc.h
+CommandObjectWatchpointCommand.po: DiagnosticCommonKinds.inc.h
+CommandObjectWatchpointCommand.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbCore/Makefile.depend b/lib/clang/liblldbCore/Makefile.depend
new file mode 100644
index 0000000..865dfa0
--- /dev/null
+++ b/lib/clang/liblldbCore/Makefile.depend
@@ -0,0 +1,289 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/libedit \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ lib/ncurses/panelw \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Address.o: CommentCommandList.inc.h
+Address.o: DeclNodes.inc.h
+Address.o: DiagnosticCommonKinds.inc.h
+Address.o: StmtNodes.inc.h
+Address.po: CommentCommandList.inc.h
+Address.po: DeclNodes.inc.h
+Address.po: DiagnosticCommonKinds.inc.h
+Address.po: StmtNodes.inc.h
+AddressRange.o: CommentCommandList.inc.h
+AddressRange.o: DeclNodes.inc.h
+AddressRange.o: DiagnosticCommonKinds.inc.h
+AddressRange.o: StmtNodes.inc.h
+AddressRange.po: CommentCommandList.inc.h
+AddressRange.po: DeclNodes.inc.h
+AddressRange.po: DiagnosticCommonKinds.inc.h
+AddressRange.po: StmtNodes.inc.h
+AddressResolver.o: DiagnosticCommonKinds.inc.h
+AddressResolver.po: DiagnosticCommonKinds.inc.h
+AddressResolverFileLine.o: DiagnosticCommonKinds.inc.h
+AddressResolverFileLine.po: DiagnosticCommonKinds.inc.h
+AddressResolverName.o: CommentCommandList.inc.h
+AddressResolverName.o: DeclNodes.inc.h
+AddressResolverName.o: DiagnosticCommonKinds.inc.h
+AddressResolverName.o: StmtNodes.inc.h
+AddressResolverName.po: CommentCommandList.inc.h
+AddressResolverName.po: DeclNodes.inc.h
+AddressResolverName.po: DiagnosticCommonKinds.inc.h
+AddressResolverName.po: StmtNodes.inc.h
+ArchSpec.o: DiagnosticCommonKinds.inc.h
+ArchSpec.po: DiagnosticCommonKinds.inc.h
+DataExtractor.o: CommentCommandList.inc.h
+DataExtractor.o: DeclNodes.inc.h
+DataExtractor.o: DiagnosticCommonKinds.inc.h
+DataExtractor.o: StmtNodes.inc.h
+DataExtractor.po: CommentCommandList.inc.h
+DataExtractor.po: DeclNodes.inc.h
+DataExtractor.po: DiagnosticCommonKinds.inc.h
+DataExtractor.po: StmtNodes.inc.h
+Debugger.o: AttrList.inc.h
+Debugger.o: Attrs.inc.h
+Debugger.o: CommentCommandList.inc.h
+Debugger.o: DeclNodes.inc.h
+Debugger.o: DiagnosticCommonKinds.inc.h
+Debugger.o: StmtNodes.inc.h
+Debugger.po: AttrList.inc.h
+Debugger.po: Attrs.inc.h
+Debugger.po: CommentCommandList.inc.h
+Debugger.po: DeclNodes.inc.h
+Debugger.po: DiagnosticCommonKinds.inc.h
+Debugger.po: StmtNodes.inc.h
+Disassembler.o: AttrList.inc.h
+Disassembler.o: Attrs.inc.h
+Disassembler.o: CommentCommandList.inc.h
+Disassembler.o: DeclNodes.inc.h
+Disassembler.o: DiagnosticCommonKinds.inc.h
+Disassembler.o: StmtNodes.inc.h
+Disassembler.po: AttrList.inc.h
+Disassembler.po: Attrs.inc.h
+Disassembler.po: CommentCommandList.inc.h
+Disassembler.po: DeclNodes.inc.h
+Disassembler.po: DiagnosticCommonKinds.inc.h
+Disassembler.po: StmtNodes.inc.h
+DynamicLoader.o: CommentCommandList.inc.h
+DynamicLoader.o: DeclNodes.inc.h
+DynamicLoader.o: DiagnosticCommonKinds.inc.h
+DynamicLoader.o: StmtNodes.inc.h
+DynamicLoader.po: CommentCommandList.inc.h
+DynamicLoader.po: DeclNodes.inc.h
+DynamicLoader.po: DiagnosticCommonKinds.inc.h
+DynamicLoader.po: StmtNodes.inc.h
+EmulateInstruction.o: DiagnosticCommonKinds.inc.h
+EmulateInstruction.po: DiagnosticCommonKinds.inc.h
+Event.o: DiagnosticCommonKinds.inc.h
+Event.po: DiagnosticCommonKinds.inc.h
+FileLineResolver.o: DiagnosticCommonKinds.inc.h
+FileLineResolver.po: DiagnosticCommonKinds.inc.h
+IOHandler.o: AttrList.inc.h
+IOHandler.o: Attrs.inc.h
+IOHandler.o: CommentCommandList.inc.h
+IOHandler.o: DeclNodes.inc.h
+IOHandler.o: DiagnosticCommonKinds.inc.h
+IOHandler.o: StmtNodes.inc.h
+IOHandler.po: AttrList.inc.h
+IOHandler.po: Attrs.inc.h
+IOHandler.po: CommentCommandList.inc.h
+IOHandler.po: DeclNodes.inc.h
+IOHandler.po: DiagnosticCommonKinds.inc.h
+IOHandler.po: StmtNodes.inc.h
+Log.o: AttrList.inc.h
+Log.o: Attrs.inc.h
+Log.o: CommentCommandList.inc.h
+Log.o: DeclNodes.inc.h
+Log.o: DiagnosticCommonKinds.inc.h
+Log.o: StmtNodes.inc.h
+Log.po: AttrList.inc.h
+Log.po: Attrs.inc.h
+Log.po: CommentCommandList.inc.h
+Log.po: DeclNodes.inc.h
+Log.po: DiagnosticCommonKinds.inc.h
+Log.po: StmtNodes.inc.h
+Mangled.o: DiagnosticCommonKinds.inc.h
+Mangled.po: DiagnosticCommonKinds.inc.h
+Module.o: AttrList.inc.h
+Module.o: Attrs.inc.h
+Module.o: CommentCommandList.inc.h
+Module.o: DeclNodes.inc.h
+Module.o: DiagnosticCommonKinds.inc.h
+Module.o: StmtNodes.inc.h
+Module.po: AttrList.inc.h
+Module.po: Attrs.inc.h
+Module.po: CommentCommandList.inc.h
+Module.po: DeclNodes.inc.h
+Module.po: DiagnosticCommonKinds.inc.h
+Module.po: StmtNodes.inc.h
+ModuleList.o: CommentCommandList.inc.h
+ModuleList.o: DeclNodes.inc.h
+ModuleList.o: DiagnosticCommonKinds.inc.h
+ModuleList.o: StmtNodes.inc.h
+ModuleList.po: CommentCommandList.inc.h
+ModuleList.po: DeclNodes.inc.h
+ModuleList.po: DiagnosticCommonKinds.inc.h
+ModuleList.po: StmtNodes.inc.h
+PluginManager.o: AttrList.inc.h
+PluginManager.o: Attrs.inc.h
+PluginManager.o: CommentCommandList.inc.h
+PluginManager.o: DeclNodes.inc.h
+PluginManager.o: DiagnosticCommonKinds.inc.h
+PluginManager.o: StmtNodes.inc.h
+PluginManager.po: AttrList.inc.h
+PluginManager.po: Attrs.inc.h
+PluginManager.po: CommentCommandList.inc.h
+PluginManager.po: DeclNodes.inc.h
+PluginManager.po: DiagnosticCommonKinds.inc.h
+PluginManager.po: StmtNodes.inc.h
+SearchFilter.o: CommentCommandList.inc.h
+SearchFilter.o: DeclNodes.inc.h
+SearchFilter.o: DiagnosticCommonKinds.inc.h
+SearchFilter.o: StmtNodes.inc.h
+SearchFilter.po: CommentCommandList.inc.h
+SearchFilter.po: DeclNodes.inc.h
+SearchFilter.po: DiagnosticCommonKinds.inc.h
+SearchFilter.po: StmtNodes.inc.h
+Section.o: CommentCommandList.inc.h
+Section.o: DeclNodes.inc.h
+Section.o: DiagnosticCommonKinds.inc.h
+Section.o: StmtNodes.inc.h
+Section.po: CommentCommandList.inc.h
+Section.po: DeclNodes.inc.h
+Section.po: DiagnosticCommonKinds.inc.h
+Section.po: StmtNodes.inc.h
+SourceManager.o: AttrList.inc.h
+SourceManager.o: Attrs.inc.h
+SourceManager.o: CommentCommandList.inc.h
+SourceManager.o: DeclNodes.inc.h
+SourceManager.o: DiagnosticCommonKinds.inc.h
+SourceManager.o: StmtNodes.inc.h
+SourceManager.po: AttrList.inc.h
+SourceManager.po: Attrs.inc.h
+SourceManager.po: CommentCommandList.inc.h
+SourceManager.po: DeclNodes.inc.h
+SourceManager.po: DiagnosticCommonKinds.inc.h
+SourceManager.po: StmtNodes.inc.h
+UserSettingsController.o: AttrList.inc.h
+UserSettingsController.o: Attrs.inc.h
+UserSettingsController.o: CommentCommandList.inc.h
+UserSettingsController.o: DeclNodes.inc.h
+UserSettingsController.o: DiagnosticCommonKinds.inc.h
+UserSettingsController.o: StmtNodes.inc.h
+UserSettingsController.po: AttrList.inc.h
+UserSettingsController.po: Attrs.inc.h
+UserSettingsController.po: CommentCommandList.inc.h
+UserSettingsController.po: DeclNodes.inc.h
+UserSettingsController.po: DiagnosticCommonKinds.inc.h
+UserSettingsController.po: StmtNodes.inc.h
+Value.o: CommentCommandList.inc.h
+Value.o: DeclNodes.inc.h
+Value.o: DiagnosticCommonKinds.inc.h
+Value.o: StmtNodes.inc.h
+Value.po: CommentCommandList.inc.h
+Value.po: DeclNodes.inc.h
+Value.po: DiagnosticCommonKinds.inc.h
+Value.po: StmtNodes.inc.h
+ValueObject.o: AttrList.inc.h
+ValueObject.o: Attrs.inc.h
+ValueObject.o: CommentCommandList.inc.h
+ValueObject.o: DeclNodes.inc.h
+ValueObject.o: DiagnosticCommonKinds.inc.h
+ValueObject.o: StmtNodes.inc.h
+ValueObject.po: AttrList.inc.h
+ValueObject.po: Attrs.inc.h
+ValueObject.po: CommentCommandList.inc.h
+ValueObject.po: DeclNodes.inc.h
+ValueObject.po: DiagnosticCommonKinds.inc.h
+ValueObject.po: StmtNodes.inc.h
+ValueObjectCast.o: CommentCommandList.inc.h
+ValueObjectCast.o: DeclNodes.inc.h
+ValueObjectCast.o: DiagnosticCommonKinds.inc.h
+ValueObjectCast.o: StmtNodes.inc.h
+ValueObjectCast.po: CommentCommandList.inc.h
+ValueObjectCast.po: DeclNodes.inc.h
+ValueObjectCast.po: DiagnosticCommonKinds.inc.h
+ValueObjectCast.po: StmtNodes.inc.h
+ValueObjectChild.o: CommentCommandList.inc.h
+ValueObjectChild.o: DeclNodes.inc.h
+ValueObjectChild.o: DiagnosticCommonKinds.inc.h
+ValueObjectChild.o: StmtNodes.inc.h
+ValueObjectChild.po: CommentCommandList.inc.h
+ValueObjectChild.po: DeclNodes.inc.h
+ValueObjectChild.po: DiagnosticCommonKinds.inc.h
+ValueObjectChild.po: StmtNodes.inc.h
+ValueObjectConstResult.o: CommentCommandList.inc.h
+ValueObjectConstResult.o: DeclNodes.inc.h
+ValueObjectConstResult.o: DiagnosticCommonKinds.inc.h
+ValueObjectConstResult.o: StmtNodes.inc.h
+ValueObjectConstResult.po: CommentCommandList.inc.h
+ValueObjectConstResult.po: DeclNodes.inc.h
+ValueObjectConstResult.po: DiagnosticCommonKinds.inc.h
+ValueObjectConstResult.po: StmtNodes.inc.h
+ValueObjectConstResultChild.o: CommentCommandList.inc.h
+ValueObjectConstResultChild.o: DeclNodes.inc.h
+ValueObjectConstResultChild.o: DiagnosticCommonKinds.inc.h
+ValueObjectConstResultChild.o: StmtNodes.inc.h
+ValueObjectConstResultChild.po: CommentCommandList.inc.h
+ValueObjectConstResultChild.po: DeclNodes.inc.h
+ValueObjectConstResultChild.po: DiagnosticCommonKinds.inc.h
+ValueObjectConstResultChild.po: StmtNodes.inc.h
+ValueObjectConstResultImpl.o: CommentCommandList.inc.h
+ValueObjectConstResultImpl.o: DeclNodes.inc.h
+ValueObjectConstResultImpl.o: DiagnosticCommonKinds.inc.h
+ValueObjectConstResultImpl.o: StmtNodes.inc.h
+ValueObjectConstResultImpl.po: CommentCommandList.inc.h
+ValueObjectConstResultImpl.po: DeclNodes.inc.h
+ValueObjectConstResultImpl.po: DiagnosticCommonKinds.inc.h
+ValueObjectConstResultImpl.po: StmtNodes.inc.h
+ValueObjectDynamicValue.o: CommentCommandList.inc.h
+ValueObjectDynamicValue.o: DeclNodes.inc.h
+ValueObjectDynamicValue.o: DiagnosticCommonKinds.inc.h
+ValueObjectDynamicValue.o: StmtNodes.inc.h
+ValueObjectDynamicValue.po: CommentCommandList.inc.h
+ValueObjectDynamicValue.po: DeclNodes.inc.h
+ValueObjectDynamicValue.po: DiagnosticCommonKinds.inc.h
+ValueObjectDynamicValue.po: StmtNodes.inc.h
+ValueObjectList.o: DiagnosticCommonKinds.inc.h
+ValueObjectList.po: DiagnosticCommonKinds.inc.h
+ValueObjectMemory.o: CommentCommandList.inc.h
+ValueObjectMemory.o: DeclNodes.inc.h
+ValueObjectMemory.o: DiagnosticCommonKinds.inc.h
+ValueObjectMemory.o: StmtNodes.inc.h
+ValueObjectMemory.po: CommentCommandList.inc.h
+ValueObjectMemory.po: DeclNodes.inc.h
+ValueObjectMemory.po: DiagnosticCommonKinds.inc.h
+ValueObjectMemory.po: StmtNodes.inc.h
+ValueObjectRegister.o: CommentCommandList.inc.h
+ValueObjectRegister.o: DeclNodes.inc.h
+ValueObjectRegister.o: DiagnosticCommonKinds.inc.h
+ValueObjectRegister.o: StmtNodes.inc.h
+ValueObjectRegister.po: CommentCommandList.inc.h
+ValueObjectRegister.po: DeclNodes.inc.h
+ValueObjectRegister.po: DiagnosticCommonKinds.inc.h
+ValueObjectRegister.po: StmtNodes.inc.h
+ValueObjectSyntheticFilter.o: DiagnosticCommonKinds.inc.h
+ValueObjectSyntheticFilter.po: DiagnosticCommonKinds.inc.h
+ValueObjectVariable.o: CommentCommandList.inc.h
+ValueObjectVariable.o: DeclNodes.inc.h
+ValueObjectVariable.o: DiagnosticCommonKinds.inc.h
+ValueObjectVariable.o: StmtNodes.inc.h
+ValueObjectVariable.po: CommentCommandList.inc.h
+ValueObjectVariable.po: DeclNodes.inc.h
+ValueObjectVariable.po: DiagnosticCommonKinds.inc.h
+ValueObjectVariable.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbDataFormatters/Makefile.depend b/lib/clang/liblldbDataFormatters/Makefile.depend
new file mode 100644
index 0000000..e35e5d7
--- /dev/null
+++ b/lib/clang/liblldbDataFormatters/Makefile.depend
@@ -0,0 +1,248 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+CF.o: CommentCommandList.inc.h
+CF.o: DeclNodes.inc.h
+CF.o: DiagnosticCommonKinds.inc.h
+CF.o: StmtNodes.inc.h
+CF.po: CommentCommandList.inc.h
+CF.po: DeclNodes.inc.h
+CF.po: DiagnosticCommonKinds.inc.h
+CF.po: StmtNodes.inc.h
+CXXFormatterFunctions.o: CommentCommandList.inc.h
+CXXFormatterFunctions.o: DeclNodes.inc.h
+CXXFormatterFunctions.o: DiagnosticCommonKinds.inc.h
+CXXFormatterFunctions.o: StmtNodes.inc.h
+CXXFormatterFunctions.po: CommentCommandList.inc.h
+CXXFormatterFunctions.po: DeclNodes.inc.h
+CXXFormatterFunctions.po: DiagnosticCommonKinds.inc.h
+CXXFormatterFunctions.po: StmtNodes.inc.h
+Cocoa.o: CommentCommandList.inc.h
+Cocoa.o: DeclNodes.inc.h
+Cocoa.o: DiagnosticCommonKinds.inc.h
+Cocoa.o: StmtNodes.inc.h
+Cocoa.po: CommentCommandList.inc.h
+Cocoa.po: DeclNodes.inc.h
+Cocoa.po: DiagnosticCommonKinds.inc.h
+Cocoa.po: StmtNodes.inc.h
+DataVisualization.o: AttrList.inc.h
+DataVisualization.o: Attrs.inc.h
+DataVisualization.o: CommentCommandList.inc.h
+DataVisualization.o: DeclNodes.inc.h
+DataVisualization.o: DiagnosticCommonKinds.inc.h
+DataVisualization.o: StmtNodes.inc.h
+DataVisualization.po: AttrList.inc.h
+DataVisualization.po: Attrs.inc.h
+DataVisualization.po: CommentCommandList.inc.h
+DataVisualization.po: DeclNodes.inc.h
+DataVisualization.po: DiagnosticCommonKinds.inc.h
+DataVisualization.po: StmtNodes.inc.h
+FormatCache.o: DiagnosticCommonKinds.inc.h
+FormatCache.po: DiagnosticCommonKinds.inc.h
+FormatClasses.o: DiagnosticCommonKinds.inc.h
+FormatClasses.po: DiagnosticCommonKinds.inc.h
+FormatManager.o: AttrList.inc.h
+FormatManager.o: Attrs.inc.h
+FormatManager.o: CommentCommandList.inc.h
+FormatManager.o: DeclNodes.inc.h
+FormatManager.o: DiagnosticCommonKinds.inc.h
+FormatManager.o: StmtNodes.inc.h
+FormatManager.po: AttrList.inc.h
+FormatManager.po: Attrs.inc.h
+FormatManager.po: CommentCommandList.inc.h
+FormatManager.po: DeclNodes.inc.h
+FormatManager.po: DiagnosticCommonKinds.inc.h
+FormatManager.po: StmtNodes.inc.h
+LibCxx.o: AttrList.inc.h
+LibCxx.o: Attrs.inc.h
+LibCxx.o: CommentCommandList.inc.h
+LibCxx.o: DeclNodes.inc.h
+LibCxx.o: DiagnosticCommonKinds.inc.h
+LibCxx.o: StmtNodes.inc.h
+LibCxx.po: AttrList.inc.h
+LibCxx.po: Attrs.inc.h
+LibCxx.po: CommentCommandList.inc.h
+LibCxx.po: DeclNodes.inc.h
+LibCxx.po: DiagnosticCommonKinds.inc.h
+LibCxx.po: StmtNodes.inc.h
+LibCxxInitializerList.o: CommentCommandList.inc.h
+LibCxxInitializerList.o: DeclNodes.inc.h
+LibCxxInitializerList.o: DiagnosticCommonKinds.inc.h
+LibCxxInitializerList.o: StmtNodes.inc.h
+LibCxxInitializerList.po: CommentCommandList.inc.h
+LibCxxInitializerList.po: DeclNodes.inc.h
+LibCxxInitializerList.po: DiagnosticCommonKinds.inc.h
+LibCxxInitializerList.po: StmtNodes.inc.h
+LibCxxList.o: CommentCommandList.inc.h
+LibCxxList.o: DeclNodes.inc.h
+LibCxxList.o: DiagnosticCommonKinds.inc.h
+LibCxxList.o: StmtNodes.inc.h
+LibCxxList.po: CommentCommandList.inc.h
+LibCxxList.po: DeclNodes.inc.h
+LibCxxList.po: DiagnosticCommonKinds.inc.h
+LibCxxList.po: StmtNodes.inc.h
+LibCxxMap.o: CommentCommandList.inc.h
+LibCxxMap.o: DeclNodes.inc.h
+LibCxxMap.o: DiagnosticCommonKinds.inc.h
+LibCxxMap.o: StmtNodes.inc.h
+LibCxxMap.po: CommentCommandList.inc.h
+LibCxxMap.po: DeclNodes.inc.h
+LibCxxMap.po: DiagnosticCommonKinds.inc.h
+LibCxxMap.po: StmtNodes.inc.h
+LibCxxUnorderedMap.o: CommentCommandList.inc.h
+LibCxxUnorderedMap.o: DeclNodes.inc.h
+LibCxxUnorderedMap.o: DiagnosticCommonKinds.inc.h
+LibCxxUnorderedMap.o: StmtNodes.inc.h
+LibCxxUnorderedMap.po: CommentCommandList.inc.h
+LibCxxUnorderedMap.po: DeclNodes.inc.h
+LibCxxUnorderedMap.po: DiagnosticCommonKinds.inc.h
+LibCxxUnorderedMap.po: StmtNodes.inc.h
+LibCxxVector.o: CommentCommandList.inc.h
+LibCxxVector.o: DeclNodes.inc.h
+LibCxxVector.o: DiagnosticCommonKinds.inc.h
+LibCxxVector.o: StmtNodes.inc.h
+LibCxxVector.po: CommentCommandList.inc.h
+LibCxxVector.po: DeclNodes.inc.h
+LibCxxVector.po: DiagnosticCommonKinds.inc.h
+LibCxxVector.po: StmtNodes.inc.h
+LibStdcpp.o: CommentCommandList.inc.h
+LibStdcpp.o: DeclNodes.inc.h
+LibStdcpp.o: DiagnosticCommonKinds.inc.h
+LibStdcpp.o: StmtNodes.inc.h
+LibStdcpp.po: CommentCommandList.inc.h
+LibStdcpp.po: DeclNodes.inc.h
+LibStdcpp.po: DiagnosticCommonKinds.inc.h
+LibStdcpp.po: StmtNodes.inc.h
+NSArray.o: CommentCommandList.inc.h
+NSArray.o: DeclNodes.inc.h
+NSArray.o: DiagnosticCommonKinds.inc.h
+NSArray.o: StmtNodes.inc.h
+NSArray.po: CommentCommandList.inc.h
+NSArray.po: DeclNodes.inc.h
+NSArray.po: DiagnosticCommonKinds.inc.h
+NSArray.po: StmtNodes.inc.h
+NSDictionary.o: AttrList.inc.h
+NSDictionary.o: Attrs.inc.h
+NSDictionary.o: CommentCommandList.inc.h
+NSDictionary.o: DeclNodes.inc.h
+NSDictionary.o: DiagnosticCommonKinds.inc.h
+NSDictionary.o: StmtNodes.inc.h
+NSDictionary.po: AttrList.inc.h
+NSDictionary.po: Attrs.inc.h
+NSDictionary.po: CommentCommandList.inc.h
+NSDictionary.po: DeclNodes.inc.h
+NSDictionary.po: DiagnosticCommonKinds.inc.h
+NSDictionary.po: StmtNodes.inc.h
+NSIndexPath.o: CommentCommandList.inc.h
+NSIndexPath.o: DeclNodes.inc.h
+NSIndexPath.o: DiagnosticCommonKinds.inc.h
+NSIndexPath.o: StmtNodes.inc.h
+NSIndexPath.po: CommentCommandList.inc.h
+NSIndexPath.po: DeclNodes.inc.h
+NSIndexPath.po: DiagnosticCommonKinds.inc.h
+NSIndexPath.po: StmtNodes.inc.h
+NSSet.o: CommentCommandList.inc.h
+NSSet.o: DeclNodes.inc.h
+NSSet.o: DiagnosticCommonKinds.inc.h
+NSSet.o: StmtNodes.inc.h
+NSSet.po: CommentCommandList.inc.h
+NSSet.po: DeclNodes.inc.h
+NSSet.po: DiagnosticCommonKinds.inc.h
+NSSet.po: StmtNodes.inc.h
+StringPrinter.o: AttrList.inc.h
+StringPrinter.o: Attrs.inc.h
+StringPrinter.o: CommentCommandList.inc.h
+StringPrinter.o: DeclNodes.inc.h
+StringPrinter.o: DiagnosticCommonKinds.inc.h
+StringPrinter.o: StmtNodes.inc.h
+StringPrinter.po: AttrList.inc.h
+StringPrinter.po: Attrs.inc.h
+StringPrinter.po: CommentCommandList.inc.h
+StringPrinter.po: DeclNodes.inc.h
+StringPrinter.po: DiagnosticCommonKinds.inc.h
+StringPrinter.po: StmtNodes.inc.h
+TypeCategory.o: AttrList.inc.h
+TypeCategory.o: Attrs.inc.h
+TypeCategory.o: CommentCommandList.inc.h
+TypeCategory.o: DeclNodes.inc.h
+TypeCategory.o: DiagnosticCommonKinds.inc.h
+TypeCategory.o: StmtNodes.inc.h
+TypeCategory.po: AttrList.inc.h
+TypeCategory.po: Attrs.inc.h
+TypeCategory.po: CommentCommandList.inc.h
+TypeCategory.po: DeclNodes.inc.h
+TypeCategory.po: DiagnosticCommonKinds.inc.h
+TypeCategory.po: StmtNodes.inc.h
+TypeCategoryMap.o: AttrList.inc.h
+TypeCategoryMap.o: Attrs.inc.h
+TypeCategoryMap.o: CommentCommandList.inc.h
+TypeCategoryMap.o: DeclNodes.inc.h
+TypeCategoryMap.o: DiagnosticCommonKinds.inc.h
+TypeCategoryMap.o: StmtNodes.inc.h
+TypeCategoryMap.po: AttrList.inc.h
+TypeCategoryMap.po: Attrs.inc.h
+TypeCategoryMap.po: CommentCommandList.inc.h
+TypeCategoryMap.po: DeclNodes.inc.h
+TypeCategoryMap.po: DiagnosticCommonKinds.inc.h
+TypeCategoryMap.po: StmtNodes.inc.h
+TypeFormat.o: AttrList.inc.h
+TypeFormat.o: Attrs.inc.h
+TypeFormat.o: CommentCommandList.inc.h
+TypeFormat.o: DeclNodes.inc.h
+TypeFormat.o: DiagnosticCommonKinds.inc.h
+TypeFormat.o: StmtNodes.inc.h
+TypeFormat.po: AttrList.inc.h
+TypeFormat.po: Attrs.inc.h
+TypeFormat.po: CommentCommandList.inc.h
+TypeFormat.po: DeclNodes.inc.h
+TypeFormat.po: DiagnosticCommonKinds.inc.h
+TypeFormat.po: StmtNodes.inc.h
+TypeSummary.o: AttrList.inc.h
+TypeSummary.o: Attrs.inc.h
+TypeSummary.o: CommentCommandList.inc.h
+TypeSummary.o: DeclNodes.inc.h
+TypeSummary.o: DiagnosticCommonKinds.inc.h
+TypeSummary.o: StmtNodes.inc.h
+TypeSummary.po: AttrList.inc.h
+TypeSummary.po: Attrs.inc.h
+TypeSummary.po: CommentCommandList.inc.h
+TypeSummary.po: DeclNodes.inc.h
+TypeSummary.po: DiagnosticCommonKinds.inc.h
+TypeSummary.po: StmtNodes.inc.h
+TypeSynthetic.o: AttrList.inc.h
+TypeSynthetic.o: Attrs.inc.h
+TypeSynthetic.o: CommentCommandList.inc.h
+TypeSynthetic.o: DeclNodes.inc.h
+TypeSynthetic.o: DiagnosticCommonKinds.inc.h
+TypeSynthetic.o: StmtNodes.inc.h
+TypeSynthetic.po: AttrList.inc.h
+TypeSynthetic.po: Attrs.inc.h
+TypeSynthetic.po: CommentCommandList.inc.h
+TypeSynthetic.po: DeclNodes.inc.h
+TypeSynthetic.po: DiagnosticCommonKinds.inc.h
+TypeSynthetic.po: StmtNodes.inc.h
+ValueObjectPrinter.o: AttrList.inc.h
+ValueObjectPrinter.o: Attrs.inc.h
+ValueObjectPrinter.o: CommentCommandList.inc.h
+ValueObjectPrinter.o: DeclNodes.inc.h
+ValueObjectPrinter.o: DiagnosticCommonKinds.inc.h
+ValueObjectPrinter.o: StmtNodes.inc.h
+ValueObjectPrinter.po: AttrList.inc.h
+ValueObjectPrinter.po: Attrs.inc.h
+ValueObjectPrinter.po: CommentCommandList.inc.h
+ValueObjectPrinter.po: DeclNodes.inc.h
+ValueObjectPrinter.po: DiagnosticCommonKinds.inc.h
+ValueObjectPrinter.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbExpression/Makefile.depend b/lib/clang/liblldbExpression/Makefile.depend
new file mode 100644
index 0000000..e7aa336
--- /dev/null
+++ b/lib/clang/liblldbExpression/Makefile.depend
@@ -0,0 +1,195 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ASTDumper.o: AttrList.inc.h
+ASTDumper.o: Attrs.inc.h
+ASTDumper.o: DeclNodes.inc.h
+ASTDumper.o: DiagnosticCommonKinds.inc.h
+ASTDumper.o: StmtNodes.inc.h
+ASTDumper.po: AttrList.inc.h
+ASTDumper.po: Attrs.inc.h
+ASTDumper.po: DeclNodes.inc.h
+ASTDumper.po: DiagnosticCommonKinds.inc.h
+ASTDumper.po: StmtNodes.inc.h
+ASTResultSynthesizer.o: AttrList.inc.h
+ASTResultSynthesizer.o: AttrParsedAttrList.inc.h
+ASTResultSynthesizer.o: Attrs.inc.h
+ASTResultSynthesizer.o: CommentCommandList.inc.h
+ASTResultSynthesizer.o: DeclNodes.inc.h
+ASTResultSynthesizer.o: DiagnosticCommonKinds.inc.h
+ASTResultSynthesizer.o: DiagnosticSemaKinds.inc.h
+ASTResultSynthesizer.o: StmtNodes.inc.h
+ASTResultSynthesizer.po: AttrList.inc.h
+ASTResultSynthesizer.po: AttrParsedAttrList.inc.h
+ASTResultSynthesizer.po: Attrs.inc.h
+ASTResultSynthesizer.po: CommentCommandList.inc.h
+ASTResultSynthesizer.po: DeclNodes.inc.h
+ASTResultSynthesizer.po: DiagnosticCommonKinds.inc.h
+ASTResultSynthesizer.po: DiagnosticSemaKinds.inc.h
+ASTResultSynthesizer.po: StmtNodes.inc.h
+ASTStructExtractor.o: AttrList.inc.h
+ASTStructExtractor.o: AttrParsedAttrList.inc.h
+ASTStructExtractor.o: Attrs.inc.h
+ASTStructExtractor.o: CommentCommandList.inc.h
+ASTStructExtractor.o: DeclNodes.inc.h
+ASTStructExtractor.o: DiagnosticCommonKinds.inc.h
+ASTStructExtractor.o: StmtNodes.inc.h
+ASTStructExtractor.po: AttrList.inc.h
+ASTStructExtractor.po: AttrParsedAttrList.inc.h
+ASTStructExtractor.po: Attrs.inc.h
+ASTStructExtractor.po: CommentCommandList.inc.h
+ASTStructExtractor.po: DeclNodes.inc.h
+ASTStructExtractor.po: DiagnosticCommonKinds.inc.h
+ASTStructExtractor.po: StmtNodes.inc.h
+ClangASTSource.o: AttrList.inc.h
+ClangASTSource.o: Attrs.inc.h
+ClangASTSource.o: CommentCommandList.inc.h
+ClangASTSource.o: DeclNodes.inc.h
+ClangASTSource.o: DiagnosticCommonKinds.inc.h
+ClangASTSource.o: StmtNodes.inc.h
+ClangASTSource.po: AttrList.inc.h
+ClangASTSource.po: Attrs.inc.h
+ClangASTSource.po: CommentCommandList.inc.h
+ClangASTSource.po: DeclNodes.inc.h
+ClangASTSource.po: DiagnosticCommonKinds.inc.h
+ClangASTSource.po: StmtNodes.inc.h
+ClangExpressionDeclMap.o: AttrList.inc.h
+ClangExpressionDeclMap.o: Attrs.inc.h
+ClangExpressionDeclMap.o: CommentCommandList.inc.h
+ClangExpressionDeclMap.o: DeclNodes.inc.h
+ClangExpressionDeclMap.o: DiagnosticCommonKinds.inc.h
+ClangExpressionDeclMap.o: StmtNodes.inc.h
+ClangExpressionDeclMap.po: AttrList.inc.h
+ClangExpressionDeclMap.po: Attrs.inc.h
+ClangExpressionDeclMap.po: CommentCommandList.inc.h
+ClangExpressionDeclMap.po: DeclNodes.inc.h
+ClangExpressionDeclMap.po: DiagnosticCommonKinds.inc.h
+ClangExpressionDeclMap.po: StmtNodes.inc.h
+ClangExpressionParser.o: AttrList.inc.h
+ClangExpressionParser.o: Attrs.inc.h
+ClangExpressionParser.o: CommentCommandList.inc.h
+ClangExpressionParser.o: DeclNodes.inc.h
+ClangExpressionParser.o: DiagnosticCommonKinds.inc.h
+ClangExpressionParser.o: DiagnosticFrontendKinds.inc.h
+ClangExpressionParser.o: StmtNodes.inc.h
+ClangExpressionParser.po: AttrList.inc.h
+ClangExpressionParser.po: Attrs.inc.h
+ClangExpressionParser.po: CommentCommandList.inc.h
+ClangExpressionParser.po: DeclNodes.inc.h
+ClangExpressionParser.po: DiagnosticCommonKinds.inc.h
+ClangExpressionParser.po: DiagnosticFrontendKinds.inc.h
+ClangExpressionParser.po: StmtNodes.inc.h
+ClangExpressionVariable.o: CommentCommandList.inc.h
+ClangExpressionVariable.o: DeclNodes.inc.h
+ClangExpressionVariable.o: DiagnosticCommonKinds.inc.h
+ClangExpressionVariable.o: StmtNodes.inc.h
+ClangExpressionVariable.po: CommentCommandList.inc.h
+ClangExpressionVariable.po: DeclNodes.inc.h
+ClangExpressionVariable.po: DiagnosticCommonKinds.inc.h
+ClangExpressionVariable.po: StmtNodes.inc.h
+ClangFunction.o: AttrList.inc.h
+ClangFunction.o: Attrs.inc.h
+ClangFunction.o: CommentCommandList.inc.h
+ClangFunction.o: DeclNodes.inc.h
+ClangFunction.o: DiagnosticCommonKinds.inc.h
+ClangFunction.o: StmtNodes.inc.h
+ClangFunction.po: AttrList.inc.h
+ClangFunction.po: Attrs.inc.h
+ClangFunction.po: CommentCommandList.inc.h
+ClangFunction.po: DeclNodes.inc.h
+ClangFunction.po: DiagnosticCommonKinds.inc.h
+ClangFunction.po: StmtNodes.inc.h
+ClangModulesDeclVendor.o: AttrList.inc.h
+ClangModulesDeclVendor.o: AttrParsedAttrList.inc.h
+ClangModulesDeclVendor.o: Attrs.inc.h
+ClangModulesDeclVendor.o: CommentCommandList.inc.h
+ClangModulesDeclVendor.o: DeclNodes.inc.h
+ClangModulesDeclVendor.o: DiagnosticCommonKinds.inc.h
+ClangModulesDeclVendor.o: StmtNodes.inc.h
+ClangModulesDeclVendor.po: AttrList.inc.h
+ClangModulesDeclVendor.po: AttrParsedAttrList.inc.h
+ClangModulesDeclVendor.po: Attrs.inc.h
+ClangModulesDeclVendor.po: CommentCommandList.inc.h
+ClangModulesDeclVendor.po: DeclNodes.inc.h
+ClangModulesDeclVendor.po: DiagnosticCommonKinds.inc.h
+ClangModulesDeclVendor.po: StmtNodes.inc.h
+ClangPersistentVariables.o: DiagnosticCommonKinds.inc.h
+ClangPersistentVariables.po: DiagnosticCommonKinds.inc.h
+ClangUserExpression.o: AttrList.inc.h
+ClangUserExpression.o: Attrs.inc.h
+ClangUserExpression.o: CommentCommandList.inc.h
+ClangUserExpression.o: DeclNodes.inc.h
+ClangUserExpression.o: DiagnosticCommonKinds.inc.h
+ClangUserExpression.o: StmtNodes.inc.h
+ClangUserExpression.po: AttrList.inc.h
+ClangUserExpression.po: Attrs.inc.h
+ClangUserExpression.po: CommentCommandList.inc.h
+ClangUserExpression.po: DeclNodes.inc.h
+ClangUserExpression.po: DiagnosticCommonKinds.inc.h
+ClangUserExpression.po: StmtNodes.inc.h
+ClangUtilityFunction.o: CommentCommandList.inc.h
+ClangUtilityFunction.o: DeclNodes.inc.h
+ClangUtilityFunction.o: DiagnosticCommonKinds.inc.h
+ClangUtilityFunction.o: StmtNodes.inc.h
+ClangUtilityFunction.po: CommentCommandList.inc.h
+ClangUtilityFunction.po: DeclNodes.inc.h
+ClangUtilityFunction.po: DiagnosticCommonKinds.inc.h
+ClangUtilityFunction.po: StmtNodes.inc.h
+DWARFExpression.o: DeclNodes.inc.h
+DWARFExpression.o: DiagnosticCommonKinds.inc.h
+DWARFExpression.po: DeclNodes.inc.h
+DWARFExpression.po: DiagnosticCommonKinds.inc.h
+ExpressionSourceCode.o: DiagnosticCommonKinds.inc.h
+ExpressionSourceCode.po: DiagnosticCommonKinds.inc.h
+IRDynamicChecks.o: DiagnosticCommonKinds.inc.h
+IRDynamicChecks.po: DiagnosticCommonKinds.inc.h
+IRExecutionUnit.o: AttrList.inc.h
+IRExecutionUnit.o: Attrs.inc.h
+IRExecutionUnit.o: CommentCommandList.inc.h
+IRExecutionUnit.o: DeclNodes.inc.h
+IRExecutionUnit.o: DiagnosticCommonKinds.inc.h
+IRExecutionUnit.o: StmtNodes.inc.h
+IRExecutionUnit.po: AttrList.inc.h
+IRExecutionUnit.po: Attrs.inc.h
+IRExecutionUnit.po: CommentCommandList.inc.h
+IRExecutionUnit.po: DeclNodes.inc.h
+IRExecutionUnit.po: DiagnosticCommonKinds.inc.h
+IRExecutionUnit.po: StmtNodes.inc.h
+IRForTarget.o: CommentCommandList.inc.h
+IRForTarget.o: DeclNodes.inc.h
+IRForTarget.o: DiagnosticCommonKinds.inc.h
+IRForTarget.o: Intrinsics.inc.h
+IRForTarget.o: StmtNodes.inc.h
+IRForTarget.po: CommentCommandList.inc.h
+IRForTarget.po: DeclNodes.inc.h
+IRForTarget.po: DiagnosticCommonKinds.inc.h
+IRForTarget.po: Intrinsics.inc.h
+IRForTarget.po: StmtNodes.inc.h
+IRInterpreter.o: DiagnosticCommonKinds.inc.h
+IRInterpreter.o: Intrinsics.inc.h
+IRInterpreter.po: DiagnosticCommonKinds.inc.h
+IRInterpreter.po: Intrinsics.inc.h
+IRMemoryMap.o: DiagnosticCommonKinds.inc.h
+IRMemoryMap.po: DiagnosticCommonKinds.inc.h
+Materializer.o: CommentCommandList.inc.h
+Materializer.o: DeclNodes.inc.h
+Materializer.o: DiagnosticCommonKinds.inc.h
+Materializer.o: StmtNodes.inc.h
+Materializer.po: CommentCommandList.inc.h
+Materializer.po: DeclNodes.inc.h
+Materializer.po: DiagnosticCommonKinds.inc.h
+Materializer.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbHostCommon/Makefile.depend b/lib/clang/liblldbHostCommon/Makefile.depend
new file mode 100644
index 0000000..4ad7db2
--- /dev/null
+++ b/lib/clang/liblldbHostCommon/Makefile.depend
@@ -0,0 +1,46 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libc++ \
+ lib/libedit \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Host.o: AttrList.inc.h
+Host.o: Attrs.inc.h
+Host.o: CommentCommandList.inc.h
+Host.o: DeclNodes.inc.h
+Host.o: DiagnosticCommonKinds.inc.h
+Host.o: StmtNodes.inc.h
+Host.po: AttrList.inc.h
+Host.po: Attrs.inc.h
+Host.po: CommentCommandList.inc.h
+Host.po: DeclNodes.inc.h
+Host.po: DiagnosticCommonKinds.inc.h
+Host.po: StmtNodes.inc.h
+MonitoringProcessLauncher.o: CommentCommandList.inc.h
+MonitoringProcessLauncher.o: DeclNodes.inc.h
+MonitoringProcessLauncher.o: DiagnosticCommonKinds.inc.h
+MonitoringProcessLauncher.o: StmtNodes.inc.h
+MonitoringProcessLauncher.po: CommentCommandList.inc.h
+MonitoringProcessLauncher.po: DeclNodes.inc.h
+MonitoringProcessLauncher.po: DiagnosticCommonKinds.inc.h
+MonitoringProcessLauncher.po: StmtNodes.inc.h
+Symbols.o: CommentCommandList.inc.h
+Symbols.o: DeclNodes.inc.h
+Symbols.o: DiagnosticCommonKinds.inc.h
+Symbols.o: StmtNodes.inc.h
+Symbols.po: CommentCommandList.inc.h
+Symbols.po: DeclNodes.inc.h
+Symbols.po: DiagnosticCommonKinds.inc.h
+Symbols.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbHostFreeBSD/Makefile.depend b/lib/clang/liblldbHostFreeBSD/Makefile.depend
new file mode 100644
index 0000000..5bd9586
--- /dev/null
+++ b/lib/clang/liblldbHostFreeBSD/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/libexecinfo \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Host.o: CommentCommandList.inc.h
+Host.o: DeclNodes.inc.h
+Host.o: DiagnosticCommonKinds.inc.h
+Host.o: StmtNodes.inc.h
+Host.po: CommentCommandList.inc.h
+Host.po: DeclNodes.inc.h
+Host.po: DiagnosticCommonKinds.inc.h
+Host.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbHostPOSIX/Makefile.depend b/lib/clang/liblldbHostPOSIX/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/liblldbHostPOSIX/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/liblldbInterpreter/Makefile.depend b/lib/clang/liblldbInterpreter/Makefile.depend
new file mode 100644
index 0000000..528ca90
--- /dev/null
+++ b/lib/clang/liblldbInterpreter/Makefile.depend
@@ -0,0 +1,233 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/libedit \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Args.o: AttrList.inc.h
+Args.o: Attrs.inc.h
+Args.o: CommentCommandList.inc.h
+Args.o: DeclNodes.inc.h
+Args.o: DiagnosticCommonKinds.inc.h
+Args.o: StmtNodes.inc.h
+Args.po: AttrList.inc.h
+Args.po: Attrs.inc.h
+Args.po: CommentCommandList.inc.h
+Args.po: DeclNodes.inc.h
+Args.po: DiagnosticCommonKinds.inc.h
+Args.po: StmtNodes.inc.h
+CommandInterpreter.o: AttrList.inc.h
+CommandInterpreter.o: Attrs.inc.h
+CommandInterpreter.o: CommentCommandList.inc.h
+CommandInterpreter.o: DeclNodes.inc.h
+CommandInterpreter.o: DiagnosticCommonKinds.inc.h
+CommandInterpreter.o: StmtNodes.inc.h
+CommandInterpreter.po: AttrList.inc.h
+CommandInterpreter.po: Attrs.inc.h
+CommandInterpreter.po: CommentCommandList.inc.h
+CommandInterpreter.po: DeclNodes.inc.h
+CommandInterpreter.po: DiagnosticCommonKinds.inc.h
+CommandInterpreter.po: StmtNodes.inc.h
+CommandObject.o: AttrList.inc.h
+CommandObject.o: Attrs.inc.h
+CommandObject.o: CommentCommandList.inc.h
+CommandObject.o: DeclNodes.inc.h
+CommandObject.o: DiagnosticCommonKinds.inc.h
+CommandObject.o: StmtNodes.inc.h
+CommandObject.po: AttrList.inc.h
+CommandObject.po: Attrs.inc.h
+CommandObject.po: CommentCommandList.inc.h
+CommandObject.po: DeclNodes.inc.h
+CommandObject.po: DiagnosticCommonKinds.inc.h
+CommandObject.po: StmtNodes.inc.h
+CommandObjectRegexCommand.o: AttrList.inc.h
+CommandObjectRegexCommand.o: Attrs.inc.h
+CommandObjectRegexCommand.o: CommentCommandList.inc.h
+CommandObjectRegexCommand.o: DeclNodes.inc.h
+CommandObjectRegexCommand.o: DiagnosticCommonKinds.inc.h
+CommandObjectRegexCommand.o: StmtNodes.inc.h
+CommandObjectRegexCommand.po: AttrList.inc.h
+CommandObjectRegexCommand.po: Attrs.inc.h
+CommandObjectRegexCommand.po: CommentCommandList.inc.h
+CommandObjectRegexCommand.po: DeclNodes.inc.h
+CommandObjectRegexCommand.po: DiagnosticCommonKinds.inc.h
+CommandObjectRegexCommand.po: StmtNodes.inc.h
+CommandObjectScript.o: AttrList.inc.h
+CommandObjectScript.o: Attrs.inc.h
+CommandObjectScript.o: CommentCommandList.inc.h
+CommandObjectScript.o: DeclNodes.inc.h
+CommandObjectScript.o: DiagnosticCommonKinds.inc.h
+CommandObjectScript.o: StmtNodes.inc.h
+CommandObjectScript.po: AttrList.inc.h
+CommandObjectScript.po: Attrs.inc.h
+CommandObjectScript.po: CommentCommandList.inc.h
+CommandObjectScript.po: DeclNodes.inc.h
+CommandObjectScript.po: DiagnosticCommonKinds.inc.h
+CommandObjectScript.po: StmtNodes.inc.h
+CommandOptionValidators.o: AttrList.inc.h
+CommandOptionValidators.o: Attrs.inc.h
+CommandOptionValidators.o: CommentCommandList.inc.h
+CommandOptionValidators.o: DeclNodes.inc.h
+CommandOptionValidators.o: DiagnosticCommonKinds.inc.h
+CommandOptionValidators.o: StmtNodes.inc.h
+CommandOptionValidators.po: AttrList.inc.h
+CommandOptionValidators.po: Attrs.inc.h
+CommandOptionValidators.po: CommentCommandList.inc.h
+CommandOptionValidators.po: DeclNodes.inc.h
+CommandOptionValidators.po: DiagnosticCommonKinds.inc.h
+CommandOptionValidators.po: StmtNodes.inc.h
+OptionGroupFormat.o: AttrList.inc.h
+OptionGroupFormat.o: Attrs.inc.h
+OptionGroupFormat.o: CommentCommandList.inc.h
+OptionGroupFormat.o: DeclNodes.inc.h
+OptionGroupFormat.o: DiagnosticCommonKinds.inc.h
+OptionGroupFormat.o: StmtNodes.inc.h
+OptionGroupFormat.po: AttrList.inc.h
+OptionGroupFormat.po: Attrs.inc.h
+OptionGroupFormat.po: CommentCommandList.inc.h
+OptionGroupFormat.po: DeclNodes.inc.h
+OptionGroupFormat.po: DiagnosticCommonKinds.inc.h
+OptionGroupFormat.po: StmtNodes.inc.h
+OptionGroupPlatform.o: AttrList.inc.h
+OptionGroupPlatform.o: Attrs.inc.h
+OptionGroupPlatform.o: CommentCommandList.inc.h
+OptionGroupPlatform.o: DeclNodes.inc.h
+OptionGroupPlatform.o: DiagnosticCommonKinds.inc.h
+OptionGroupPlatform.o: StmtNodes.inc.h
+OptionGroupPlatform.po: AttrList.inc.h
+OptionGroupPlatform.po: Attrs.inc.h
+OptionGroupPlatform.po: CommentCommandList.inc.h
+OptionGroupPlatform.po: DeclNodes.inc.h
+OptionGroupPlatform.po: DiagnosticCommonKinds.inc.h
+OptionGroupPlatform.po: StmtNodes.inc.h
+OptionGroupValueObjectDisplay.o: AttrList.inc.h
+OptionGroupValueObjectDisplay.o: Attrs.inc.h
+OptionGroupValueObjectDisplay.o: CommentCommandList.inc.h
+OptionGroupValueObjectDisplay.o: DeclNodes.inc.h
+OptionGroupValueObjectDisplay.o: DiagnosticCommonKinds.inc.h
+OptionGroupValueObjectDisplay.o: StmtNodes.inc.h
+OptionGroupValueObjectDisplay.po: AttrList.inc.h
+OptionGroupValueObjectDisplay.po: Attrs.inc.h
+OptionGroupValueObjectDisplay.po: CommentCommandList.inc.h
+OptionGroupValueObjectDisplay.po: DeclNodes.inc.h
+OptionGroupValueObjectDisplay.po: DiagnosticCommonKinds.inc.h
+OptionGroupValueObjectDisplay.po: StmtNodes.inc.h
+OptionGroupVariable.o: AttrList.inc.h
+OptionGroupVariable.o: Attrs.inc.h
+OptionGroupVariable.o: CommentCommandList.inc.h
+OptionGroupVariable.o: DeclNodes.inc.h
+OptionGroupVariable.o: DiagnosticCommonKinds.inc.h
+OptionGroupVariable.o: StmtNodes.inc.h
+OptionGroupVariable.po: AttrList.inc.h
+OptionGroupVariable.po: Attrs.inc.h
+OptionGroupVariable.po: CommentCommandList.inc.h
+OptionGroupVariable.po: DeclNodes.inc.h
+OptionGroupVariable.po: DiagnosticCommonKinds.inc.h
+OptionGroupVariable.po: StmtNodes.inc.h
+OptionValueArch.o: AttrList.inc.h
+OptionValueArch.o: Attrs.inc.h
+OptionValueArch.o: CommentCommandList.inc.h
+OptionValueArch.o: DeclNodes.inc.h
+OptionValueArch.o: DiagnosticCommonKinds.inc.h
+OptionValueArch.o: StmtNodes.inc.h
+OptionValueArch.po: AttrList.inc.h
+OptionValueArch.po: Attrs.inc.h
+OptionValueArch.po: CommentCommandList.inc.h
+OptionValueArch.po: DeclNodes.inc.h
+OptionValueArch.po: DiagnosticCommonKinds.inc.h
+OptionValueArch.po: StmtNodes.inc.h
+OptionValueDictionary.o: AttrList.inc.h
+OptionValueDictionary.o: Attrs.inc.h
+OptionValueDictionary.o: CommentCommandList.inc.h
+OptionValueDictionary.o: DeclNodes.inc.h
+OptionValueDictionary.o: DiagnosticCommonKinds.inc.h
+OptionValueDictionary.o: StmtNodes.inc.h
+OptionValueDictionary.po: AttrList.inc.h
+OptionValueDictionary.po: Attrs.inc.h
+OptionValueDictionary.po: CommentCommandList.inc.h
+OptionValueDictionary.po: DeclNodes.inc.h
+OptionValueDictionary.po: DiagnosticCommonKinds.inc.h
+OptionValueDictionary.po: StmtNodes.inc.h
+OptionValueFileSpec.o: AttrList.inc.h
+OptionValueFileSpec.o: Attrs.inc.h
+OptionValueFileSpec.o: CommentCommandList.inc.h
+OptionValueFileSpec.o: DeclNodes.inc.h
+OptionValueFileSpec.o: DiagnosticCommonKinds.inc.h
+OptionValueFileSpec.o: StmtNodes.inc.h
+OptionValueFileSpec.po: AttrList.inc.h
+OptionValueFileSpec.po: Attrs.inc.h
+OptionValueFileSpec.po: CommentCommandList.inc.h
+OptionValueFileSpec.po: DeclNodes.inc.h
+OptionValueFileSpec.po: DiagnosticCommonKinds.inc.h
+OptionValueFileSpec.po: StmtNodes.inc.h
+OptionValueFormat.o: AttrList.inc.h
+OptionValueFormat.o: Attrs.inc.h
+OptionValueFormat.o: CommentCommandList.inc.h
+OptionValueFormat.o: DeclNodes.inc.h
+OptionValueFormat.o: DiagnosticCommonKinds.inc.h
+OptionValueFormat.o: StmtNodes.inc.h
+OptionValueFormat.po: AttrList.inc.h
+OptionValueFormat.po: Attrs.inc.h
+OptionValueFormat.po: CommentCommandList.inc.h
+OptionValueFormat.po: DeclNodes.inc.h
+OptionValueFormat.po: DiagnosticCommonKinds.inc.h
+OptionValueFormat.po: StmtNodes.inc.h
+OptionValueUUID.o: AttrList.inc.h
+OptionValueUUID.o: Attrs.inc.h
+OptionValueUUID.o: CommentCommandList.inc.h
+OptionValueUUID.o: DeclNodes.inc.h
+OptionValueUUID.o: DiagnosticCommonKinds.inc.h
+OptionValueUUID.o: StmtNodes.inc.h
+OptionValueUUID.po: AttrList.inc.h
+OptionValueUUID.po: Attrs.inc.h
+OptionValueUUID.po: CommentCommandList.inc.h
+OptionValueUUID.po: DeclNodes.inc.h
+OptionValueUUID.po: DiagnosticCommonKinds.inc.h
+OptionValueUUID.po: StmtNodes.inc.h
+Options.o: AttrList.inc.h
+Options.o: Attrs.inc.h
+Options.o: CommentCommandList.inc.h
+Options.o: DeclNodes.inc.h
+Options.o: DiagnosticCommonKinds.inc.h
+Options.o: StmtNodes.inc.h
+Options.po: AttrList.inc.h
+Options.po: Attrs.inc.h
+Options.po: CommentCommandList.inc.h
+Options.po: DeclNodes.inc.h
+Options.po: DiagnosticCommonKinds.inc.h
+Options.po: StmtNodes.inc.h
+Property.o: AttrList.inc.h
+Property.o: Attrs.inc.h
+Property.o: CommentCommandList.inc.h
+Property.o: DeclNodes.inc.h
+Property.o: DiagnosticCommonKinds.inc.h
+Property.o: StmtNodes.inc.h
+Property.po: AttrList.inc.h
+Property.po: Attrs.inc.h
+Property.po: CommentCommandList.inc.h
+Property.po: DeclNodes.inc.h
+Property.po: DiagnosticCommonKinds.inc.h
+Property.po: StmtNodes.inc.h
+ScriptInterpreterNone.o: AttrList.inc.h
+ScriptInterpreterNone.o: Attrs.inc.h
+ScriptInterpreterNone.o: CommentCommandList.inc.h
+ScriptInterpreterNone.o: DeclNodes.inc.h
+ScriptInterpreterNone.o: DiagnosticCommonKinds.inc.h
+ScriptInterpreterNone.o: StmtNodes.inc.h
+ScriptInterpreterNone.po: AttrList.inc.h
+ScriptInterpreterNone.po: Attrs.inc.h
+ScriptInterpreterNone.po: CommentCommandList.inc.h
+ScriptInterpreterNone.po: DeclNodes.inc.h
+ScriptInterpreterNone.po: DiagnosticCommonKinds.inc.h
+ScriptInterpreterNone.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginABISysV_ppc/Makefile.depend b/lib/clang/liblldbPluginABISysV_ppc/Makefile.depend
new file mode 100644
index 0000000..99d245e
--- /dev/null
+++ b/lib/clang/liblldbPluginABISysV_ppc/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ABISysV_ppc.o: CommentCommandList.inc.h
+ABISysV_ppc.o: DeclNodes.inc.h
+ABISysV_ppc.o: DiagnosticCommonKinds.inc.h
+ABISysV_ppc.o: StmtNodes.inc.h
+ABISysV_ppc.po: CommentCommandList.inc.h
+ABISysV_ppc.po: DeclNodes.inc.h
+ABISysV_ppc.po: DiagnosticCommonKinds.inc.h
+ABISysV_ppc.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginABISysV_ppc64/Makefile.depend b/lib/clang/liblldbPluginABISysV_ppc64/Makefile.depend
new file mode 100644
index 0000000..7b45794
--- /dev/null
+++ b/lib/clang/liblldbPluginABISysV_ppc64/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ABISysV_ppc64.o: CommentCommandList.inc.h
+ABISysV_ppc64.o: DeclNodes.inc.h
+ABISysV_ppc64.o: DiagnosticCommonKinds.inc.h
+ABISysV_ppc64.o: StmtNodes.inc.h
+ABISysV_ppc64.po: CommentCommandList.inc.h
+ABISysV_ppc64.po: DeclNodes.inc.h
+ABISysV_ppc64.po: DiagnosticCommonKinds.inc.h
+ABISysV_ppc64.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginABISysV_x86_64/Makefile.depend b/lib/clang/liblldbPluginABISysV_x86_64/Makefile.depend
new file mode 100644
index 0000000..219b76f
--- /dev/null
+++ b/lib/clang/liblldbPluginABISysV_x86_64/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ABISysV_x86_64.o: CommentCommandList.inc.h
+ABISysV_x86_64.o: DeclNodes.inc.h
+ABISysV_x86_64.o: DiagnosticCommonKinds.inc.h
+ABISysV_x86_64.o: StmtNodes.inc.h
+ABISysV_x86_64.po: CommentCommandList.inc.h
+ABISysV_x86_64.po: DeclNodes.inc.h
+ABISysV_x86_64.po: DiagnosticCommonKinds.inc.h
+ABISysV_x86_64.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginCXXItaniumABI/Makefile.depend b/lib/clang/liblldbPluginCXXItaniumABI/Makefile.depend
new file mode 100644
index 0000000..2307823
--- /dev/null
+++ b/lib/clang/liblldbPluginCXXItaniumABI/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ItaniumABILanguageRuntime.o: CommentCommandList.inc.h
+ItaniumABILanguageRuntime.o: DeclNodes.inc.h
+ItaniumABILanguageRuntime.o: DiagnosticCommonKinds.inc.h
+ItaniumABILanguageRuntime.o: StmtNodes.inc.h
+ItaniumABILanguageRuntime.po: CommentCommandList.inc.h
+ItaniumABILanguageRuntime.po: DeclNodes.inc.h
+ItaniumABILanguageRuntime.po: DiagnosticCommonKinds.inc.h
+ItaniumABILanguageRuntime.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginDisassemblerLLVM/Makefile.depend b/lib/clang/liblldbPluginDisassemblerLLVM/Makefile.depend
new file mode 100644
index 0000000..7e043ab
--- /dev/null
+++ b/lib/clang/liblldbPluginDisassemblerLLVM/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DisassemblerLLVMC.o: CommentCommandList.inc.h
+DisassemblerLLVMC.o: DeclNodes.inc.h
+DisassemblerLLVMC.o: DiagnosticCommonKinds.inc.h
+DisassemblerLLVMC.o: StmtNodes.inc.h
+DisassemblerLLVMC.po: CommentCommandList.inc.h
+DisassemblerLLVMC.po: DeclNodes.inc.h
+DisassemblerLLVMC.po: DiagnosticCommonKinds.inc.h
+DisassemblerLLVMC.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginDynamicLoaderPosixDYLD/Makefile.depend b/lib/clang/liblldbPluginDynamicLoaderPosixDYLD/Makefile.depend
new file mode 100644
index 0000000..1f641be
--- /dev/null
+++ b/lib/clang/liblldbPluginDynamicLoaderPosixDYLD/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AuxVector.o: DiagnosticCommonKinds.inc.h
+AuxVector.po: DiagnosticCommonKinds.inc.h
+DYLDRendezvous.o: CommentCommandList.inc.h
+DYLDRendezvous.o: DeclNodes.inc.h
+DYLDRendezvous.o: DiagnosticCommonKinds.inc.h
+DYLDRendezvous.o: StmtNodes.inc.h
+DYLDRendezvous.po: CommentCommandList.inc.h
+DYLDRendezvous.po: DeclNodes.inc.h
+DYLDRendezvous.po: DiagnosticCommonKinds.inc.h
+DYLDRendezvous.po: StmtNodes.inc.h
+DynamicLoaderPOSIXDYLD.o: CommentCommandList.inc.h
+DynamicLoaderPOSIXDYLD.o: DeclNodes.inc.h
+DynamicLoaderPOSIXDYLD.o: DiagnosticCommonKinds.inc.h
+DynamicLoaderPOSIXDYLD.o: StmtNodes.inc.h
+DynamicLoaderPOSIXDYLD.po: CommentCommandList.inc.h
+DynamicLoaderPOSIXDYLD.po: DeclNodes.inc.h
+DynamicLoaderPOSIXDYLD.po: DiagnosticCommonKinds.inc.h
+DynamicLoaderPOSIXDYLD.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginDynamicLoaderStatic/Makefile.depend b/lib/clang/liblldbPluginDynamicLoaderStatic/Makefile.depend
new file mode 100644
index 0000000..74529c2
--- /dev/null
+++ b/lib/clang/liblldbPluginDynamicLoaderStatic/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DynamicLoaderStatic.o: CommentCommandList.inc.h
+DynamicLoaderStatic.o: DeclNodes.inc.h
+DynamicLoaderStatic.o: DiagnosticCommonKinds.inc.h
+DynamicLoaderStatic.o: StmtNodes.inc.h
+DynamicLoaderStatic.po: CommentCommandList.inc.h
+DynamicLoaderStatic.po: DeclNodes.inc.h
+DynamicLoaderStatic.po: DiagnosticCommonKinds.inc.h
+DynamicLoaderStatic.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginInstructionARM/Makefile.depend b/lib/clang/liblldbPluginInstructionARM/Makefile.depend
new file mode 100644
index 0000000..264ede1
--- /dev/null
+++ b/lib/clang/liblldbPluginInstructionARM/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/liblldbPluginInstructionARM64/Makefile.depend b/lib/clang/liblldbPluginInstructionARM64/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/liblldbPluginInstructionARM64/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/liblldbPluginInstrumentationRuntimeAddressSanitizer/Makefile.depend b/lib/clang/liblldbPluginInstrumentationRuntimeAddressSanitizer/Makefile.depend
new file mode 100644
index 0000000..12b075f
--- /dev/null
+++ b/lib/clang/liblldbPluginInstrumentationRuntimeAddressSanitizer/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AddressSanitizerRuntime.o: AttrList.inc.h
+AddressSanitizerRuntime.o: Attrs.inc.h
+AddressSanitizerRuntime.o: CommentCommandList.inc.h
+AddressSanitizerRuntime.o: DeclNodes.inc.h
+AddressSanitizerRuntime.o: DiagnosticCommonKinds.inc.h
+AddressSanitizerRuntime.o: StmtNodes.inc.h
+AddressSanitizerRuntime.po: AttrList.inc.h
+AddressSanitizerRuntime.po: Attrs.inc.h
+AddressSanitizerRuntime.po: CommentCommandList.inc.h
+AddressSanitizerRuntime.po: DeclNodes.inc.h
+AddressSanitizerRuntime.po: DiagnosticCommonKinds.inc.h
+AddressSanitizerRuntime.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginJITLoaderGDB/Makefile.depend b/lib/clang/liblldbPluginJITLoaderGDB/Makefile.depend
new file mode 100644
index 0000000..fafe676
--- /dev/null
+++ b/lib/clang/liblldbPluginJITLoaderGDB/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+JITLoaderGDB.o: CommentCommandList.inc.h
+JITLoaderGDB.o: DeclNodes.inc.h
+JITLoaderGDB.o: DiagnosticCommonKinds.inc.h
+JITLoaderGDB.o: StmtNodes.inc.h
+JITLoaderGDB.po: CommentCommandList.inc.h
+JITLoaderGDB.po: DeclNodes.inc.h
+JITLoaderGDB.po: DiagnosticCommonKinds.inc.h
+JITLoaderGDB.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginMemoryHistoryASan/Makefile.depend b/lib/clang/liblldbPluginMemoryHistoryASan/Makefile.depend
new file mode 100644
index 0000000..19db265
--- /dev/null
+++ b/lib/clang/liblldbPluginMemoryHistoryASan/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MemoryHistoryASan.o: CommentCommandList.inc.h
+MemoryHistoryASan.o: DeclNodes.inc.h
+MemoryHistoryASan.o: DiagnosticCommonKinds.inc.h
+MemoryHistoryASan.o: StmtNodes.inc.h
+MemoryHistoryASan.po: CommentCommandList.inc.h
+MemoryHistoryASan.po: DeclNodes.inc.h
+MemoryHistoryASan.po: DiagnosticCommonKinds.inc.h
+MemoryHistoryASan.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginObjectContainerBSDArchive/Makefile.depend b/lib/clang/liblldbPluginObjectContainerBSDArchive/Makefile.depend
new file mode 100644
index 0000000..0f05ea5
--- /dev/null
+++ b/lib/clang/liblldbPluginObjectContainerBSDArchive/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ObjectContainerBSDArchive.o: CommentCommandList.inc.h
+ObjectContainerBSDArchive.o: DeclNodes.inc.h
+ObjectContainerBSDArchive.o: DiagnosticCommonKinds.inc.h
+ObjectContainerBSDArchive.o: StmtNodes.inc.h
+ObjectContainerBSDArchive.po: CommentCommandList.inc.h
+ObjectContainerBSDArchive.po: DeclNodes.inc.h
+ObjectContainerBSDArchive.po: DiagnosticCommonKinds.inc.h
+ObjectContainerBSDArchive.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginObjectFileELF/Makefile.depend b/lib/clang/liblldbPluginObjectFileELF/Makefile.depend
new file mode 100644
index 0000000..6690c9f
--- /dev/null
+++ b/lib/clang/liblldbPluginObjectFileELF/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ObjectFileELF.o: CommentCommandList.inc.h
+ObjectFileELF.o: DeclNodes.inc.h
+ObjectFileELF.o: DiagnosticCommonKinds.inc.h
+ObjectFileELF.o: StmtNodes.inc.h
+ObjectFileELF.po: CommentCommandList.inc.h
+ObjectFileELF.po: DeclNodes.inc.h
+ObjectFileELF.po: DiagnosticCommonKinds.inc.h
+ObjectFileELF.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginObjectFileJIT/Makefile.depend b/lib/clang/liblldbPluginObjectFileJIT/Makefile.depend
new file mode 100644
index 0000000..d5e55b1
--- /dev/null
+++ b/lib/clang/liblldbPluginObjectFileJIT/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ObjectFileJIT.o: AttrList.inc.h
+ObjectFileJIT.o: Attrs.inc.h
+ObjectFileJIT.o: CommentCommandList.inc.h
+ObjectFileJIT.o: DeclNodes.inc.h
+ObjectFileJIT.o: DiagnosticCommonKinds.inc.h
+ObjectFileJIT.o: StmtNodes.inc.h
+ObjectFileJIT.po: AttrList.inc.h
+ObjectFileJIT.po: Attrs.inc.h
+ObjectFileJIT.po: CommentCommandList.inc.h
+ObjectFileJIT.po: DeclNodes.inc.h
+ObjectFileJIT.po: DiagnosticCommonKinds.inc.h
+ObjectFileJIT.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginPlatformFreeBSD/Makefile.depend b/lib/clang/liblldbPluginPlatformFreeBSD/Makefile.depend
new file mode 100644
index 0000000..e4c467b
--- /dev/null
+++ b/lib/clang/liblldbPluginPlatformFreeBSD/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PlatformFreeBSD.o: AttrList.inc.h
+PlatformFreeBSD.o: Attrs.inc.h
+PlatformFreeBSD.o: CommentCommandList.inc.h
+PlatformFreeBSD.o: DeclNodes.inc.h
+PlatformFreeBSD.o: DiagnosticCommonKinds.inc.h
+PlatformFreeBSD.o: StmtNodes.inc.h
+PlatformFreeBSD.po: AttrList.inc.h
+PlatformFreeBSD.po: Attrs.inc.h
+PlatformFreeBSD.po: CommentCommandList.inc.h
+PlatformFreeBSD.po: DeclNodes.inc.h
+PlatformFreeBSD.po: DiagnosticCommonKinds.inc.h
+PlatformFreeBSD.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginPlatformGDB/Makefile.depend b/lib/clang/liblldbPluginPlatformGDB/Makefile.depend
new file mode 100644
index 0000000..114af26
--- /dev/null
+++ b/lib/clang/liblldbPluginPlatformGDB/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PlatformRemoteGDBServer.o: AttrList.inc.h
+PlatformRemoteGDBServer.o: Attrs.inc.h
+PlatformRemoteGDBServer.o: CommentCommandList.inc.h
+PlatformRemoteGDBServer.o: DeclNodes.inc.h
+PlatformRemoteGDBServer.o: DiagnosticCommonKinds.inc.h
+PlatformRemoteGDBServer.o: StmtNodes.inc.h
+PlatformRemoteGDBServer.po: AttrList.inc.h
+PlatformRemoteGDBServer.po: Attrs.inc.h
+PlatformRemoteGDBServer.po: CommentCommandList.inc.h
+PlatformRemoteGDBServer.po: DeclNodes.inc.h
+PlatformRemoteGDBServer.po: DiagnosticCommonKinds.inc.h
+PlatformRemoteGDBServer.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginProcessElfCore/Makefile.depend b/lib/clang/liblldbPluginProcessElfCore/Makefile.depend
new file mode 100644
index 0000000..3714330
--- /dev/null
+++ b/lib/clang/liblldbPluginProcessElfCore/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ProcessElfCore.o: CommentCommandList.inc.h
+ProcessElfCore.o: DeclNodes.inc.h
+ProcessElfCore.o: DiagnosticCommonKinds.inc.h
+ProcessElfCore.o: StmtNodes.inc.h
+ProcessElfCore.po: CommentCommandList.inc.h
+ProcessElfCore.po: DeclNodes.inc.h
+ProcessElfCore.po: DiagnosticCommonKinds.inc.h
+ProcessElfCore.po: StmtNodes.inc.h
+ThreadElfCore.o: DiagnosticCommonKinds.inc.h
+ThreadElfCore.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginProcessFreeBSD/Makefile.depend b/lib/clang/liblldbPluginProcessFreeBSD/Makefile.depend
new file mode 100644
index 0000000..4b79ea4
--- /dev/null
+++ b/lib/clang/liblldbPluginProcessFreeBSD/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+FreeBSDThread.o: DiagnosticCommonKinds.inc.h
+FreeBSDThread.po: DiagnosticCommonKinds.inc.h
+ProcessFreeBSD.o: DiagnosticCommonKinds.inc.h
+ProcessFreeBSD.po: DiagnosticCommonKinds.inc.h
+ProcessMonitor.o: DiagnosticCommonKinds.inc.h
+ProcessMonitor.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginProcessGDBRemote/Makefile.depend b/lib/clang/liblldbPluginProcessGDBRemote/Makefile.depend
new file mode 100644
index 0000000..a8571b4
--- /dev/null
+++ b/lib/clang/liblldbPluginProcessGDBRemote/Makefile.depend
@@ -0,0 +1,50 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+GDBRemoteCommunication.o: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunication.po: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunicationClient.o: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunicationClient.po: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunicationServer.o: AttrList.inc.h
+GDBRemoteCommunicationServer.o: Attrs.inc.h
+GDBRemoteCommunicationServer.o: CommentCommandList.inc.h
+GDBRemoteCommunicationServer.o: DeclNodes.inc.h
+GDBRemoteCommunicationServer.o: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunicationServer.o: StmtNodes.inc.h
+GDBRemoteCommunicationServer.po: AttrList.inc.h
+GDBRemoteCommunicationServer.po: Attrs.inc.h
+GDBRemoteCommunicationServer.po: CommentCommandList.inc.h
+GDBRemoteCommunicationServer.po: DeclNodes.inc.h
+GDBRemoteCommunicationServer.po: DiagnosticCommonKinds.inc.h
+GDBRemoteCommunicationServer.po: StmtNodes.inc.h
+GDBRemoteRegisterContext.o: DiagnosticCommonKinds.inc.h
+GDBRemoteRegisterContext.po: DiagnosticCommonKinds.inc.h
+ProcessGDBRemote.o: AttrList.inc.h
+ProcessGDBRemote.o: Attrs.inc.h
+ProcessGDBRemote.o: CommentCommandList.inc.h
+ProcessGDBRemote.o: DeclNodes.inc.h
+ProcessGDBRemote.o: DiagnosticCommonKinds.inc.h
+ProcessGDBRemote.o: StmtNodes.inc.h
+ProcessGDBRemote.po: AttrList.inc.h
+ProcessGDBRemote.po: Attrs.inc.h
+ProcessGDBRemote.po: CommentCommandList.inc.h
+ProcessGDBRemote.po: DeclNodes.inc.h
+ProcessGDBRemote.po: DiagnosticCommonKinds.inc.h
+ProcessGDBRemote.po: StmtNodes.inc.h
+ProcessGDBRemoteLog.o: DiagnosticCommonKinds.inc.h
+ProcessGDBRemoteLog.po: DiagnosticCommonKinds.inc.h
+ThreadGDBRemote.o: DiagnosticCommonKinds.inc.h
+ThreadGDBRemote.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginProcessPOSIX/Makefile.depend b/lib/clang/liblldbPluginProcessPOSIX/Makefile.depend
new file mode 100644
index 0000000..6a083b8
--- /dev/null
+++ b/lib/clang/liblldbPluginProcessPOSIX/Makefile.depend
@@ -0,0 +1,48 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+POSIXStopInfo.o: DiagnosticCommonKinds.inc.h
+POSIXStopInfo.po: DiagnosticCommonKinds.inc.h
+POSIXThread.o: AttrList.inc.h
+POSIXThread.o: Attrs.inc.h
+POSIXThread.o: CommentCommandList.inc.h
+POSIXThread.o: DeclNodes.inc.h
+POSIXThread.o: DiagnosticCommonKinds.inc.h
+POSIXThread.o: StmtNodes.inc.h
+POSIXThread.po: AttrList.inc.h
+POSIXThread.po: Attrs.inc.h
+POSIXThread.po: CommentCommandList.inc.h
+POSIXThread.po: DeclNodes.inc.h
+POSIXThread.po: DiagnosticCommonKinds.inc.h
+POSIXThread.po: StmtNodes.inc.h
+ProcessPOSIX.o: CommentCommandList.inc.h
+ProcessPOSIX.o: DeclNodes.inc.h
+ProcessPOSIX.o: DiagnosticCommonKinds.inc.h
+ProcessPOSIX.o: StmtNodes.inc.h
+ProcessPOSIX.po: CommentCommandList.inc.h
+ProcessPOSIX.po: DeclNodes.inc.h
+ProcessPOSIX.po: DiagnosticCommonKinds.inc.h
+ProcessPOSIX.po: StmtNodes.inc.h
+ProcessPOSIXLog.o: DiagnosticCommonKinds.inc.h
+ProcessPOSIXLog.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_arm64.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_arm64.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_mips64.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_mips64.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_powerpc.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_powerpc.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_x86.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIXProcessMonitor_x86.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginProcessUtility/Makefile.depend b/lib/clang/liblldbPluginProcessUtility/Makefile.depend
new file mode 100644
index 0000000..e9bd3c9
--- /dev/null
+++ b/lib/clang/liblldbPluginProcessUtility/Makefile.depend
@@ -0,0 +1,90 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DynamicRegisterInfo.o: AttrList.inc.h
+DynamicRegisterInfo.o: Attrs.inc.h
+DynamicRegisterInfo.o: CommentCommandList.inc.h
+DynamicRegisterInfo.o: DeclNodes.inc.h
+DynamicRegisterInfo.o: DiagnosticCommonKinds.inc.h
+DynamicRegisterInfo.o: StmtNodes.inc.h
+DynamicRegisterInfo.po: AttrList.inc.h
+DynamicRegisterInfo.po: Attrs.inc.h
+DynamicRegisterInfo.po: CommentCommandList.inc.h
+DynamicRegisterInfo.po: DeclNodes.inc.h
+DynamicRegisterInfo.po: DiagnosticCommonKinds.inc.h
+DynamicRegisterInfo.po: StmtNodes.inc.h
+HistoryThread.o: DiagnosticCommonKinds.inc.h
+HistoryThread.po: DiagnosticCommonKinds.inc.h
+HistoryUnwind.o: DiagnosticCommonKinds.inc.h
+HistoryUnwind.po: DiagnosticCommonKinds.inc.h
+InferiorCallPOSIX.o: CommentCommandList.inc.h
+InferiorCallPOSIX.o: DeclNodes.inc.h
+InferiorCallPOSIX.o: DiagnosticCommonKinds.inc.h
+InferiorCallPOSIX.o: StmtNodes.inc.h
+InferiorCallPOSIX.po: CommentCommandList.inc.h
+InferiorCallPOSIX.po: DeclNodes.inc.h
+InferiorCallPOSIX.po: DiagnosticCommonKinds.inc.h
+InferiorCallPOSIX.po: StmtNodes.inc.h
+RegisterContextDummy.o: CommentCommandList.inc.h
+RegisterContextDummy.o: DeclNodes.inc.h
+RegisterContextDummy.o: DiagnosticCommonKinds.inc.h
+RegisterContextDummy.o: StmtNodes.inc.h
+RegisterContextDummy.po: CommentCommandList.inc.h
+RegisterContextDummy.po: DeclNodes.inc.h
+RegisterContextDummy.po: DiagnosticCommonKinds.inc.h
+RegisterContextDummy.po: StmtNodes.inc.h
+RegisterContextHistory.o: CommentCommandList.inc.h
+RegisterContextHistory.o: DeclNodes.inc.h
+RegisterContextHistory.o: DiagnosticCommonKinds.inc.h
+RegisterContextHistory.o: StmtNodes.inc.h
+RegisterContextHistory.po: CommentCommandList.inc.h
+RegisterContextHistory.po: DeclNodes.inc.h
+RegisterContextHistory.po: DiagnosticCommonKinds.inc.h
+RegisterContextHistory.po: StmtNodes.inc.h
+RegisterContextLLDB.o: CommentCommandList.inc.h
+RegisterContextLLDB.o: DeclNodes.inc.h
+RegisterContextLLDB.o: DiagnosticCommonKinds.inc.h
+RegisterContextLLDB.o: StmtNodes.inc.h
+RegisterContextLLDB.po: CommentCommandList.inc.h
+RegisterContextLLDB.po: DeclNodes.inc.h
+RegisterContextLLDB.po: DiagnosticCommonKinds.inc.h
+RegisterContextLLDB.po: StmtNodes.inc.h
+RegisterContextMemory.o: DiagnosticCommonKinds.inc.h
+RegisterContextMemory.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_arm64.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_arm64.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_mips64.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_mips64.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_powerpc.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_powerpc.po: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_x86.o: DiagnosticCommonKinds.inc.h
+RegisterContextPOSIX_x86.po: DiagnosticCommonKinds.inc.h
+RegisterContextThreadMemory.o: DiagnosticCommonKinds.inc.h
+RegisterContextThreadMemory.po: DiagnosticCommonKinds.inc.h
+StopInfoMachException.o: DiagnosticCommonKinds.inc.h
+StopInfoMachException.po: DiagnosticCommonKinds.inc.h
+ThreadMemory.o: DiagnosticCommonKinds.inc.h
+ThreadMemory.po: DiagnosticCommonKinds.inc.h
+UnwindLLDB.o: CommentCommandList.inc.h
+UnwindLLDB.o: DeclNodes.inc.h
+UnwindLLDB.o: DiagnosticCommonKinds.inc.h
+UnwindLLDB.o: StmtNodes.inc.h
+UnwindLLDB.po: CommentCommandList.inc.h
+UnwindLLDB.po: DeclNodes.inc.h
+UnwindLLDB.po: DiagnosticCommonKinds.inc.h
+UnwindLLDB.po: StmtNodes.inc.h
+UnwindMacOSXFrameBackchain.o: DiagnosticCommonKinds.inc.h
+UnwindMacOSXFrameBackchain.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginSymbolFileDWARF/Makefile.depend b/lib/clang/liblldbPluginSymbolFileDWARF/Makefile.depend
new file mode 100644
index 0000000..bd5227d
--- /dev/null
+++ b/lib/clang/liblldbPluginSymbolFileDWARF/Makefile.depend
@@ -0,0 +1,199 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DWARFAbbreviationDeclaration.o: CommentCommandList.inc.h
+DWARFAbbreviationDeclaration.o: DeclNodes.inc.h
+DWARFAbbreviationDeclaration.o: DiagnosticCommonKinds.inc.h
+DWARFAbbreviationDeclaration.o: StmtNodes.inc.h
+DWARFAbbreviationDeclaration.po: CommentCommandList.inc.h
+DWARFAbbreviationDeclaration.po: DeclNodes.inc.h
+DWARFAbbreviationDeclaration.po: DiagnosticCommonKinds.inc.h
+DWARFAbbreviationDeclaration.po: StmtNodes.inc.h
+DWARFCompileUnit.o: CommentCommandList.inc.h
+DWARFCompileUnit.o: DeclNodes.inc.h
+DWARFCompileUnit.o: DiagnosticCommonKinds.inc.h
+DWARFCompileUnit.o: StmtNodes.inc.h
+DWARFCompileUnit.po: CommentCommandList.inc.h
+DWARFCompileUnit.po: DeclNodes.inc.h
+DWARFCompileUnit.po: DiagnosticCommonKinds.inc.h
+DWARFCompileUnit.po: StmtNodes.inc.h
+DWARFDIECollection.o: CommentCommandList.inc.h
+DWARFDIECollection.o: DeclNodes.inc.h
+DWARFDIECollection.o: DiagnosticCommonKinds.inc.h
+DWARFDIECollection.o: StmtNodes.inc.h
+DWARFDIECollection.po: CommentCommandList.inc.h
+DWARFDIECollection.po: DeclNodes.inc.h
+DWARFDIECollection.po: DiagnosticCommonKinds.inc.h
+DWARFDIECollection.po: StmtNodes.inc.h
+DWARFDebugAbbrev.o: CommentCommandList.inc.h
+DWARFDebugAbbrev.o: DeclNodes.inc.h
+DWARFDebugAbbrev.o: DiagnosticCommonKinds.inc.h
+DWARFDebugAbbrev.o: StmtNodes.inc.h
+DWARFDebugAbbrev.po: CommentCommandList.inc.h
+DWARFDebugAbbrev.po: DeclNodes.inc.h
+DWARFDebugAbbrev.po: DiagnosticCommonKinds.inc.h
+DWARFDebugAbbrev.po: StmtNodes.inc.h
+DWARFDebugArangeSet.o: CommentCommandList.inc.h
+DWARFDebugArangeSet.o: DeclNodes.inc.h
+DWARFDebugArangeSet.o: DiagnosticCommonKinds.inc.h
+DWARFDebugArangeSet.o: StmtNodes.inc.h
+DWARFDebugArangeSet.po: CommentCommandList.inc.h
+DWARFDebugArangeSet.po: DeclNodes.inc.h
+DWARFDebugArangeSet.po: DiagnosticCommonKinds.inc.h
+DWARFDebugArangeSet.po: StmtNodes.inc.h
+DWARFDebugAranges.o: CommentCommandList.inc.h
+DWARFDebugAranges.o: DeclNodes.inc.h
+DWARFDebugAranges.o: DiagnosticCommonKinds.inc.h
+DWARFDebugAranges.o: StmtNodes.inc.h
+DWARFDebugAranges.po: CommentCommandList.inc.h
+DWARFDebugAranges.po: DeclNodes.inc.h
+DWARFDebugAranges.po: DiagnosticCommonKinds.inc.h
+DWARFDebugAranges.po: StmtNodes.inc.h
+DWARFDebugInfo.o: CommentCommandList.inc.h
+DWARFDebugInfo.o: DeclNodes.inc.h
+DWARFDebugInfo.o: DiagnosticCommonKinds.inc.h
+DWARFDebugInfo.o: StmtNodes.inc.h
+DWARFDebugInfo.po: CommentCommandList.inc.h
+DWARFDebugInfo.po: DeclNodes.inc.h
+DWARFDebugInfo.po: DiagnosticCommonKinds.inc.h
+DWARFDebugInfo.po: StmtNodes.inc.h
+DWARFDebugInfoEntry.o: CommentCommandList.inc.h
+DWARFDebugInfoEntry.o: DeclNodes.inc.h
+DWARFDebugInfoEntry.o: DiagnosticCommonKinds.inc.h
+DWARFDebugInfoEntry.o: StmtNodes.inc.h
+DWARFDebugInfoEntry.po: CommentCommandList.inc.h
+DWARFDebugInfoEntry.po: DeclNodes.inc.h
+DWARFDebugInfoEntry.po: DiagnosticCommonKinds.inc.h
+DWARFDebugInfoEntry.po: StmtNodes.inc.h
+DWARFDebugLine.o: CommentCommandList.inc.h
+DWARFDebugLine.o: DeclNodes.inc.h
+DWARFDebugLine.o: DiagnosticCommonKinds.inc.h
+DWARFDebugLine.o: StmtNodes.inc.h
+DWARFDebugLine.po: CommentCommandList.inc.h
+DWARFDebugLine.po: DeclNodes.inc.h
+DWARFDebugLine.po: DiagnosticCommonKinds.inc.h
+DWARFDebugLine.po: StmtNodes.inc.h
+DWARFDebugMacinfo.o: CommentCommandList.inc.h
+DWARFDebugMacinfo.o: DeclNodes.inc.h
+DWARFDebugMacinfo.o: DiagnosticCommonKinds.inc.h
+DWARFDebugMacinfo.o: StmtNodes.inc.h
+DWARFDebugMacinfo.po: CommentCommandList.inc.h
+DWARFDebugMacinfo.po: DeclNodes.inc.h
+DWARFDebugMacinfo.po: DiagnosticCommonKinds.inc.h
+DWARFDebugMacinfo.po: StmtNodes.inc.h
+DWARFDebugMacinfoEntry.o: CommentCommandList.inc.h
+DWARFDebugMacinfoEntry.o: DeclNodes.inc.h
+DWARFDebugMacinfoEntry.o: DiagnosticCommonKinds.inc.h
+DWARFDebugMacinfoEntry.o: StmtNodes.inc.h
+DWARFDebugMacinfoEntry.po: CommentCommandList.inc.h
+DWARFDebugMacinfoEntry.po: DeclNodes.inc.h
+DWARFDebugMacinfoEntry.po: DiagnosticCommonKinds.inc.h
+DWARFDebugMacinfoEntry.po: StmtNodes.inc.h
+DWARFDebugPubnames.o: CommentCommandList.inc.h
+DWARFDebugPubnames.o: DeclNodes.inc.h
+DWARFDebugPubnames.o: DiagnosticCommonKinds.inc.h
+DWARFDebugPubnames.o: StmtNodes.inc.h
+DWARFDebugPubnames.po: CommentCommandList.inc.h
+DWARFDebugPubnames.po: DeclNodes.inc.h
+DWARFDebugPubnames.po: DiagnosticCommonKinds.inc.h
+DWARFDebugPubnames.po: StmtNodes.inc.h
+DWARFDebugPubnamesSet.o: CommentCommandList.inc.h
+DWARFDebugPubnamesSet.o: DeclNodes.inc.h
+DWARFDebugPubnamesSet.o: DiagnosticCommonKinds.inc.h
+DWARFDebugPubnamesSet.o: StmtNodes.inc.h
+DWARFDebugPubnamesSet.po: CommentCommandList.inc.h
+DWARFDebugPubnamesSet.po: DeclNodes.inc.h
+DWARFDebugPubnamesSet.po: DiagnosticCommonKinds.inc.h
+DWARFDebugPubnamesSet.po: StmtNodes.inc.h
+DWARFDebugRanges.o: CommentCommandList.inc.h
+DWARFDebugRanges.o: DeclNodes.inc.h
+DWARFDebugRanges.o: DiagnosticCommonKinds.inc.h
+DWARFDebugRanges.o: StmtNodes.inc.h
+DWARFDebugRanges.po: CommentCommandList.inc.h
+DWARFDebugRanges.po: DeclNodes.inc.h
+DWARFDebugRanges.po: DiagnosticCommonKinds.inc.h
+DWARFDebugRanges.po: StmtNodes.inc.h
+DWARFFormValue.o: CommentCommandList.inc.h
+DWARFFormValue.o: DeclNodes.inc.h
+DWARFFormValue.o: DiagnosticCommonKinds.inc.h
+DWARFFormValue.o: StmtNodes.inc.h
+DWARFFormValue.po: CommentCommandList.inc.h
+DWARFFormValue.po: DeclNodes.inc.h
+DWARFFormValue.po: DiagnosticCommonKinds.inc.h
+DWARFFormValue.po: StmtNodes.inc.h
+DWARFLocationDescription.o: CommentCommandList.inc.h
+DWARFLocationDescription.o: DeclNodes.inc.h
+DWARFLocationDescription.o: DiagnosticCommonKinds.inc.h
+DWARFLocationDescription.o: StmtNodes.inc.h
+DWARFLocationDescription.po: CommentCommandList.inc.h
+DWARFLocationDescription.po: DeclNodes.inc.h
+DWARFLocationDescription.po: DiagnosticCommonKinds.inc.h
+DWARFLocationDescription.po: StmtNodes.inc.h
+DWARFLocationList.o: CommentCommandList.inc.h
+DWARFLocationList.o: DeclNodes.inc.h
+DWARFLocationList.o: DiagnosticCommonKinds.inc.h
+DWARFLocationList.o: StmtNodes.inc.h
+DWARFLocationList.po: CommentCommandList.inc.h
+DWARFLocationList.po: DeclNodes.inc.h
+DWARFLocationList.po: DiagnosticCommonKinds.inc.h
+DWARFLocationList.po: StmtNodes.inc.h
+LogChannelDWARF.o: CommentCommandList.inc.h
+LogChannelDWARF.o: DeclNodes.inc.h
+LogChannelDWARF.o: DiagnosticCommonKinds.inc.h
+LogChannelDWARF.o: StmtNodes.inc.h
+LogChannelDWARF.po: CommentCommandList.inc.h
+LogChannelDWARF.po: DeclNodes.inc.h
+LogChannelDWARF.po: DiagnosticCommonKinds.inc.h
+LogChannelDWARF.po: StmtNodes.inc.h
+NameToDIE.o: CommentCommandList.inc.h
+NameToDIE.o: DeclNodes.inc.h
+NameToDIE.o: DiagnosticCommonKinds.inc.h
+NameToDIE.o: StmtNodes.inc.h
+NameToDIE.po: CommentCommandList.inc.h
+NameToDIE.po: DeclNodes.inc.h
+NameToDIE.po: DiagnosticCommonKinds.inc.h
+NameToDIE.po: StmtNodes.inc.h
+SymbolFileDWARF.o: AttrList.inc.h
+SymbolFileDWARF.o: AttrParsedAttrList.inc.h
+SymbolFileDWARF.o: Attrs.inc.h
+SymbolFileDWARF.o: CommentCommandList.inc.h
+SymbolFileDWARF.o: DeclNodes.inc.h
+SymbolFileDWARF.o: DiagnosticCommonKinds.inc.h
+SymbolFileDWARF.o: StmtNodes.inc.h
+SymbolFileDWARF.po: AttrList.inc.h
+SymbolFileDWARF.po: AttrParsedAttrList.inc.h
+SymbolFileDWARF.po: Attrs.inc.h
+SymbolFileDWARF.po: CommentCommandList.inc.h
+SymbolFileDWARF.po: DeclNodes.inc.h
+SymbolFileDWARF.po: DiagnosticCommonKinds.inc.h
+SymbolFileDWARF.po: StmtNodes.inc.h
+SymbolFileDWARFDebugMap.o: CommentCommandList.inc.h
+SymbolFileDWARFDebugMap.o: DeclNodes.inc.h
+SymbolFileDWARFDebugMap.o: DiagnosticCommonKinds.inc.h
+SymbolFileDWARFDebugMap.o: StmtNodes.inc.h
+SymbolFileDWARFDebugMap.po: CommentCommandList.inc.h
+SymbolFileDWARFDebugMap.po: DeclNodes.inc.h
+SymbolFileDWARFDebugMap.po: DiagnosticCommonKinds.inc.h
+SymbolFileDWARFDebugMap.po: StmtNodes.inc.h
+UniqueDWARFASTType.o: CommentCommandList.inc.h
+UniqueDWARFASTType.o: DeclNodes.inc.h
+UniqueDWARFASTType.o: DiagnosticCommonKinds.inc.h
+UniqueDWARFASTType.o: StmtNodes.inc.h
+UniqueDWARFASTType.po: CommentCommandList.inc.h
+UniqueDWARFASTType.po: DeclNodes.inc.h
+UniqueDWARFASTType.po: DiagnosticCommonKinds.inc.h
+UniqueDWARFASTType.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginSymbolFileSymtab/Makefile.depend b/lib/clang/liblldbPluginSymbolFileSymtab/Makefile.depend
new file mode 100644
index 0000000..f23a43d
--- /dev/null
+++ b/lib/clang/liblldbPluginSymbolFileSymtab/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SymbolFileSymtab.o: CommentCommandList.inc.h
+SymbolFileSymtab.o: DeclNodes.inc.h
+SymbolFileSymtab.o: DiagnosticCommonKinds.inc.h
+SymbolFileSymtab.o: StmtNodes.inc.h
+SymbolFileSymtab.po: CommentCommandList.inc.h
+SymbolFileSymtab.po: DeclNodes.inc.h
+SymbolFileSymtab.po: DiagnosticCommonKinds.inc.h
+SymbolFileSymtab.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginSymbolVendorELF/Makefile.depend b/lib/clang/liblldbPluginSymbolVendorELF/Makefile.depend
new file mode 100644
index 0000000..9871a5f
--- /dev/null
+++ b/lib/clang/liblldbPluginSymbolVendorELF/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SymbolVendorELF.o: CommentCommandList.inc.h
+SymbolVendorELF.o: DeclNodes.inc.h
+SymbolVendorELF.o: DiagnosticCommonKinds.inc.h
+SymbolVendorELF.o: StmtNodes.inc.h
+SymbolVendorELF.po: CommentCommandList.inc.h
+SymbolVendorELF.po: DeclNodes.inc.h
+SymbolVendorELF.po: DiagnosticCommonKinds.inc.h
+SymbolVendorELF.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginUnwindAssemblyInstEmulation/Makefile.depend b/lib/clang/liblldbPluginUnwindAssemblyInstEmulation/Makefile.depend
new file mode 100644
index 0000000..b8b6989
--- /dev/null
+++ b/lib/clang/liblldbPluginUnwindAssemblyInstEmulation/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+UnwindAssemblyInstEmulation.o: DiagnosticCommonKinds.inc.h
+UnwindAssemblyInstEmulation.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbPluginUnwindAssemblyX86/Makefile.depend b/lib/clang/liblldbPluginUnwindAssemblyX86/Makefile.depend
new file mode 100644
index 0000000..d01a053
--- /dev/null
+++ b/lib/clang/liblldbPluginUnwindAssemblyX86/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+UnwindAssembly-x86.o: DiagnosticCommonKinds.inc.h
+UnwindAssembly-x86.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbSymbol/Makefile.depend b/lib/clang/liblldbSymbol/Makefile.depend
new file mode 100644
index 0000000..486a3ae
--- /dev/null
+++ b/lib/clang/liblldbSymbol/Makefile.depend
@@ -0,0 +1,208 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Block.o: CommentCommandList.inc.h
+Block.o: DeclNodes.inc.h
+Block.o: DiagnosticCommonKinds.inc.h
+Block.o: StmtNodes.inc.h
+Block.po: CommentCommandList.inc.h
+Block.po: DeclNodes.inc.h
+Block.po: DiagnosticCommonKinds.inc.h
+Block.po: StmtNodes.inc.h
+ClangASTContext.o: AttrList.inc.h
+ClangASTContext.o: Attrs.inc.h
+ClangASTContext.o: CommentCommandList.inc.h
+ClangASTContext.o: DeclNodes.inc.h
+ClangASTContext.o: DiagnosticCommonKinds.inc.h
+ClangASTContext.o: StmtNodes.inc.h
+ClangASTContext.po: AttrList.inc.h
+ClangASTContext.po: Attrs.inc.h
+ClangASTContext.po: CommentCommandList.inc.h
+ClangASTContext.po: DeclNodes.inc.h
+ClangASTContext.po: DiagnosticCommonKinds.inc.h
+ClangASTContext.po: StmtNodes.inc.h
+ClangASTImporter.o: AttrList.inc.h
+ClangASTImporter.o: Attrs.inc.h
+ClangASTImporter.o: CommentCommandList.inc.h
+ClangASTImporter.o: DeclNodes.inc.h
+ClangASTImporter.o: DiagnosticCommonKinds.inc.h
+ClangASTImporter.o: StmtNodes.inc.h
+ClangASTImporter.po: AttrList.inc.h
+ClangASTImporter.po: Attrs.inc.h
+ClangASTImporter.po: CommentCommandList.inc.h
+ClangASTImporter.po: DeclNodes.inc.h
+ClangASTImporter.po: DiagnosticCommonKinds.inc.h
+ClangASTImporter.po: StmtNodes.inc.h
+ClangASTType.o: AttrList.inc.h
+ClangASTType.o: Attrs.inc.h
+ClangASTType.o: CommentCommandList.inc.h
+ClangASTType.o: DeclNodes.inc.h
+ClangASTType.o: DiagnosticCommonKinds.inc.h
+ClangASTType.o: StmtNodes.inc.h
+ClangASTType.po: AttrList.inc.h
+ClangASTType.po: Attrs.inc.h
+ClangASTType.po: CommentCommandList.inc.h
+ClangASTType.po: DeclNodes.inc.h
+ClangASTType.po: DiagnosticCommonKinds.inc.h
+ClangASTType.po: StmtNodes.inc.h
+ClangExternalASTSourceCallbacks.o: DeclNodes.inc.h
+ClangExternalASTSourceCallbacks.o: DiagnosticCommonKinds.inc.h
+ClangExternalASTSourceCallbacks.po: DeclNodes.inc.h
+ClangExternalASTSourceCallbacks.po: DiagnosticCommonKinds.inc.h
+ClangExternalASTSourceCommon.o: DeclNodes.inc.h
+ClangExternalASTSourceCommon.o: DiagnosticCommonKinds.inc.h
+ClangExternalASTSourceCommon.po: DeclNodes.inc.h
+ClangExternalASTSourceCommon.po: DiagnosticCommonKinds.inc.h
+ClangNamespaceDecl.o: DeclNodes.inc.h
+ClangNamespaceDecl.o: DiagnosticCommonKinds.inc.h
+ClangNamespaceDecl.po: DeclNodes.inc.h
+ClangNamespaceDecl.po: DiagnosticCommonKinds.inc.h
+CompactUnwindInfo.o: CommentCommandList.inc.h
+CompactUnwindInfo.o: DeclNodes.inc.h
+CompactUnwindInfo.o: DiagnosticCommonKinds.inc.h
+CompactUnwindInfo.o: StmtNodes.inc.h
+CompactUnwindInfo.po: CommentCommandList.inc.h
+CompactUnwindInfo.po: DeclNodes.inc.h
+CompactUnwindInfo.po: DiagnosticCommonKinds.inc.h
+CompactUnwindInfo.po: StmtNodes.inc.h
+CompileUnit.o: CommentCommandList.inc.h
+CompileUnit.o: DeclNodes.inc.h
+CompileUnit.o: DiagnosticCommonKinds.inc.h
+CompileUnit.o: StmtNodes.inc.h
+CompileUnit.po: CommentCommandList.inc.h
+CompileUnit.po: DeclNodes.inc.h
+CompileUnit.po: DiagnosticCommonKinds.inc.h
+CompileUnit.po: StmtNodes.inc.h
+DWARFCallFrameInfo.o: CommentCommandList.inc.h
+DWARFCallFrameInfo.o: DeclNodes.inc.h
+DWARFCallFrameInfo.o: DiagnosticCommonKinds.inc.h
+DWARFCallFrameInfo.o: StmtNodes.inc.h
+DWARFCallFrameInfo.po: CommentCommandList.inc.h
+DWARFCallFrameInfo.po: DeclNodes.inc.h
+DWARFCallFrameInfo.po: DiagnosticCommonKinds.inc.h
+DWARFCallFrameInfo.po: StmtNodes.inc.h
+FuncUnwinders.o: DiagnosticCommonKinds.inc.h
+FuncUnwinders.po: DiagnosticCommonKinds.inc.h
+Function.o: CommentCommandList.inc.h
+Function.o: DeclNodes.inc.h
+Function.o: DiagnosticCommonKinds.inc.h
+Function.o: StmtNodes.inc.h
+Function.po: CommentCommandList.inc.h
+Function.po: DeclNodes.inc.h
+Function.po: DiagnosticCommonKinds.inc.h
+Function.po: StmtNodes.inc.h
+LineEntry.o: DiagnosticCommonKinds.inc.h
+LineEntry.po: DiagnosticCommonKinds.inc.h
+LineTable.o: CommentCommandList.inc.h
+LineTable.o: DeclNodes.inc.h
+LineTable.o: DiagnosticCommonKinds.inc.h
+LineTable.o: StmtNodes.inc.h
+LineTable.po: CommentCommandList.inc.h
+LineTable.po: DeclNodes.inc.h
+LineTable.po: DiagnosticCommonKinds.inc.h
+LineTable.po: StmtNodes.inc.h
+ObjectFile.o: CommentCommandList.inc.h
+ObjectFile.o: DeclNodes.inc.h
+ObjectFile.o: DiagnosticCommonKinds.inc.h
+ObjectFile.o: StmtNodes.inc.h
+ObjectFile.po: CommentCommandList.inc.h
+ObjectFile.po: DeclNodes.inc.h
+ObjectFile.po: DiagnosticCommonKinds.inc.h
+ObjectFile.po: StmtNodes.inc.h
+Symbol.o: CommentCommandList.inc.h
+Symbol.o: DeclNodes.inc.h
+Symbol.o: DiagnosticCommonKinds.inc.h
+Symbol.o: StmtNodes.inc.h
+Symbol.po: CommentCommandList.inc.h
+Symbol.po: DeclNodes.inc.h
+Symbol.po: DiagnosticCommonKinds.inc.h
+Symbol.po: StmtNodes.inc.h
+SymbolContext.o: CommentCommandList.inc.h
+SymbolContext.o: DeclNodes.inc.h
+SymbolContext.o: DiagnosticCommonKinds.inc.h
+SymbolContext.o: StmtNodes.inc.h
+SymbolContext.po: CommentCommandList.inc.h
+SymbolContext.po: DeclNodes.inc.h
+SymbolContext.po: DiagnosticCommonKinds.inc.h
+SymbolContext.po: StmtNodes.inc.h
+SymbolFile.o: CommentCommandList.inc.h
+SymbolFile.o: DeclNodes.inc.h
+SymbolFile.o: DiagnosticCommonKinds.inc.h
+SymbolFile.o: StmtNodes.inc.h
+SymbolFile.po: CommentCommandList.inc.h
+SymbolFile.po: DeclNodes.inc.h
+SymbolFile.po: DiagnosticCommonKinds.inc.h
+SymbolFile.po: StmtNodes.inc.h
+SymbolVendor.o: CommentCommandList.inc.h
+SymbolVendor.o: DeclNodes.inc.h
+SymbolVendor.o: DiagnosticCommonKinds.inc.h
+SymbolVendor.o: StmtNodes.inc.h
+SymbolVendor.po: CommentCommandList.inc.h
+SymbolVendor.po: DeclNodes.inc.h
+SymbolVendor.po: DiagnosticCommonKinds.inc.h
+SymbolVendor.po: StmtNodes.inc.h
+Symtab.o: CommentCommandList.inc.h
+Symtab.o: DeclNodes.inc.h
+Symtab.o: DiagnosticCommonKinds.inc.h
+Symtab.o: StmtNodes.inc.h
+Symtab.po: CommentCommandList.inc.h
+Symtab.po: DeclNodes.inc.h
+Symtab.po: DiagnosticCommonKinds.inc.h
+Symtab.po: StmtNodes.inc.h
+Type.o: CommentCommandList.inc.h
+Type.o: DeclNodes.inc.h
+Type.o: DiagnosticCommonKinds.inc.h
+Type.o: StmtNodes.inc.h
+Type.po: CommentCommandList.inc.h
+Type.po: DeclNodes.inc.h
+Type.po: DiagnosticCommonKinds.inc.h
+Type.po: StmtNodes.inc.h
+TypeList.o: AttrList.inc.h
+TypeList.o: Attrs.inc.h
+TypeList.o: CommentCommandList.inc.h
+TypeList.o: DeclNodes.inc.h
+TypeList.o: DiagnosticCommonKinds.inc.h
+TypeList.o: StmtNodes.inc.h
+TypeList.po: AttrList.inc.h
+TypeList.po: Attrs.inc.h
+TypeList.po: CommentCommandList.inc.h
+TypeList.po: DeclNodes.inc.h
+TypeList.po: DiagnosticCommonKinds.inc.h
+TypeList.po: StmtNodes.inc.h
+UnwindPlan.o: DiagnosticCommonKinds.inc.h
+UnwindPlan.po: DiagnosticCommonKinds.inc.h
+UnwindTable.o: CommentCommandList.inc.h
+UnwindTable.o: DeclNodes.inc.h
+UnwindTable.o: DiagnosticCommonKinds.inc.h
+UnwindTable.o: StmtNodes.inc.h
+UnwindTable.po: CommentCommandList.inc.h
+UnwindTable.po: DeclNodes.inc.h
+UnwindTable.po: DiagnosticCommonKinds.inc.h
+UnwindTable.po: StmtNodes.inc.h
+Variable.o: CommentCommandList.inc.h
+Variable.o: DeclNodes.inc.h
+Variable.o: DiagnosticCommonKinds.inc.h
+Variable.o: StmtNodes.inc.h
+Variable.po: CommentCommandList.inc.h
+Variable.po: DeclNodes.inc.h
+Variable.po: DiagnosticCommonKinds.inc.h
+Variable.po: StmtNodes.inc.h
+VariableList.o: DiagnosticCommonKinds.inc.h
+VariableList.po: DiagnosticCommonKinds.inc.h
+VerifyDecl.o: DeclNodes.inc.h
+VerifyDecl.o: DiagnosticCommonKinds.inc.h
+VerifyDecl.po: DeclNodes.inc.h
+VerifyDecl.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/liblldbTarget/Makefile.depend b/lib/clang/liblldbTarget/Makefile.depend
new file mode 100644
index 0000000..e9ffeed
--- /dev/null
+++ b/lib/clang/liblldbTarget/Makefile.depend
@@ -0,0 +1,224 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ABI.o: DiagnosticCommonKinds.inc.h
+ABI.po: DiagnosticCommonKinds.inc.h
+CPPLanguageRuntime.o: DiagnosticCommonKinds.inc.h
+CPPLanguageRuntime.po: DiagnosticCommonKinds.inc.h
+ExecutionContext.o: DiagnosticCommonKinds.inc.h
+ExecutionContext.po: DiagnosticCommonKinds.inc.h
+InstrumentationRuntime.o: DiagnosticCommonKinds.inc.h
+InstrumentationRuntime.po: DiagnosticCommonKinds.inc.h
+InstrumentationRuntimeStopInfo.o: DiagnosticCommonKinds.inc.h
+InstrumentationRuntimeStopInfo.po: DiagnosticCommonKinds.inc.h
+JITLoader.o: DiagnosticCommonKinds.inc.h
+JITLoader.po: DiagnosticCommonKinds.inc.h
+LanguageRuntime.o: DiagnosticCommonKinds.inc.h
+LanguageRuntime.po: DiagnosticCommonKinds.inc.h
+Memory.o: DiagnosticCommonKinds.inc.h
+Memory.po: DiagnosticCommonKinds.inc.h
+ObjCLanguageRuntime.o: CommentCommandList.inc.h
+ObjCLanguageRuntime.o: DeclNodes.inc.h
+ObjCLanguageRuntime.o: DiagnosticCommonKinds.inc.h
+ObjCLanguageRuntime.o: StmtNodes.inc.h
+ObjCLanguageRuntime.po: CommentCommandList.inc.h
+ObjCLanguageRuntime.po: DeclNodes.inc.h
+ObjCLanguageRuntime.po: DiagnosticCommonKinds.inc.h
+ObjCLanguageRuntime.po: StmtNodes.inc.h
+Platform.o: DiagnosticCommonKinds.inc.h
+Platform.po: DiagnosticCommonKinds.inc.h
+Process.o: AttrList.inc.h
+Process.o: Attrs.inc.h
+Process.o: CommentCommandList.inc.h
+Process.o: DeclNodes.inc.h
+Process.o: DiagnosticCommonKinds.inc.h
+Process.o: StmtNodes.inc.h
+Process.po: AttrList.inc.h
+Process.po: Attrs.inc.h
+Process.po: CommentCommandList.inc.h
+Process.po: DeclNodes.inc.h
+Process.po: DiagnosticCommonKinds.inc.h
+Process.po: StmtNodes.inc.h
+ProcessLaunchInfo.o: AttrList.inc.h
+ProcessLaunchInfo.o: Attrs.inc.h
+ProcessLaunchInfo.o: CommentCommandList.inc.h
+ProcessLaunchInfo.o: DeclNodes.inc.h
+ProcessLaunchInfo.o: DiagnosticCommonKinds.inc.h
+ProcessLaunchInfo.o: StmtNodes.inc.h
+ProcessLaunchInfo.po: AttrList.inc.h
+ProcessLaunchInfo.po: Attrs.inc.h
+ProcessLaunchInfo.po: CommentCommandList.inc.h
+ProcessLaunchInfo.po: DeclNodes.inc.h
+ProcessLaunchInfo.po: DiagnosticCommonKinds.inc.h
+ProcessLaunchInfo.po: StmtNodes.inc.h
+Queue.o: DiagnosticCommonKinds.inc.h
+Queue.po: DiagnosticCommonKinds.inc.h
+QueueItem.o: DiagnosticCommonKinds.inc.h
+QueueItem.po: DiagnosticCommonKinds.inc.h
+QueueList.o: DiagnosticCommonKinds.inc.h
+QueueList.po: DiagnosticCommonKinds.inc.h
+RegisterContext.o: DiagnosticCommonKinds.inc.h
+RegisterContext.po: DiagnosticCommonKinds.inc.h
+SectionLoadList.o: CommentCommandList.inc.h
+SectionLoadList.o: DeclNodes.inc.h
+SectionLoadList.o: DiagnosticCommonKinds.inc.h
+SectionLoadList.o: StmtNodes.inc.h
+SectionLoadList.po: CommentCommandList.inc.h
+SectionLoadList.po: DeclNodes.inc.h
+SectionLoadList.po: DiagnosticCommonKinds.inc.h
+SectionLoadList.po: StmtNodes.inc.h
+StackFrame.o: AttrList.inc.h
+StackFrame.o: Attrs.inc.h
+StackFrame.o: CommentCommandList.inc.h
+StackFrame.o: DeclNodes.inc.h
+StackFrame.o: DiagnosticCommonKinds.inc.h
+StackFrame.o: StmtNodes.inc.h
+StackFrame.po: AttrList.inc.h
+StackFrame.po: Attrs.inc.h
+StackFrame.po: CommentCommandList.inc.h
+StackFrame.po: DeclNodes.inc.h
+StackFrame.po: DiagnosticCommonKinds.inc.h
+StackFrame.po: StmtNodes.inc.h
+StackFrameList.o: DiagnosticCommonKinds.inc.h
+StackFrameList.po: DiagnosticCommonKinds.inc.h
+StackID.o: DiagnosticCommonKinds.inc.h
+StackID.po: DiagnosticCommonKinds.inc.h
+StopInfo.o: AttrList.inc.h
+StopInfo.o: Attrs.inc.h
+StopInfo.o: CommentCommandList.inc.h
+StopInfo.o: DeclNodes.inc.h
+StopInfo.o: DiagnosticCommonKinds.inc.h
+StopInfo.o: StmtNodes.inc.h
+StopInfo.po: AttrList.inc.h
+StopInfo.po: Attrs.inc.h
+StopInfo.po: CommentCommandList.inc.h
+StopInfo.po: DeclNodes.inc.h
+StopInfo.po: DiagnosticCommonKinds.inc.h
+StopInfo.po: StmtNodes.inc.h
+SystemRuntime.o: DiagnosticCommonKinds.inc.h
+SystemRuntime.po: DiagnosticCommonKinds.inc.h
+Target.o: AttrList.inc.h
+Target.o: Attrs.inc.h
+Target.o: CommentCommandList.inc.h
+Target.o: DeclNodes.inc.h
+Target.o: DiagnosticCommonKinds.inc.h
+Target.o: StmtNodes.inc.h
+Target.po: AttrList.inc.h
+Target.po: Attrs.inc.h
+Target.po: CommentCommandList.inc.h
+Target.po: DeclNodes.inc.h
+Target.po: DiagnosticCommonKinds.inc.h
+Target.po: StmtNodes.inc.h
+TargetList.o: AttrList.inc.h
+TargetList.o: Attrs.inc.h
+TargetList.o: CommentCommandList.inc.h
+TargetList.o: DeclNodes.inc.h
+TargetList.o: DiagnosticCommonKinds.inc.h
+TargetList.o: StmtNodes.inc.h
+TargetList.po: AttrList.inc.h
+TargetList.po: Attrs.inc.h
+TargetList.po: CommentCommandList.inc.h
+TargetList.po: DeclNodes.inc.h
+TargetList.po: DiagnosticCommonKinds.inc.h
+TargetList.po: StmtNodes.inc.h
+Thread.o: AttrList.inc.h
+Thread.o: Attrs.inc.h
+Thread.o: CommentCommandList.inc.h
+Thread.o: DeclNodes.inc.h
+Thread.o: DiagnosticCommonKinds.inc.h
+Thread.o: StmtNodes.inc.h
+Thread.po: AttrList.inc.h
+Thread.po: Attrs.inc.h
+Thread.po: CommentCommandList.inc.h
+Thread.po: DeclNodes.inc.h
+Thread.po: DiagnosticCommonKinds.inc.h
+Thread.po: StmtNodes.inc.h
+ThreadList.o: DiagnosticCommonKinds.inc.h
+ThreadList.po: DiagnosticCommonKinds.inc.h
+ThreadPlan.o: AttrList.inc.h
+ThreadPlan.o: Attrs.inc.h
+ThreadPlan.o: CommentCommandList.inc.h
+ThreadPlan.o: DeclNodes.inc.h
+ThreadPlan.o: DiagnosticCommonKinds.inc.h
+ThreadPlan.o: StmtNodes.inc.h
+ThreadPlan.po: AttrList.inc.h
+ThreadPlan.po: Attrs.inc.h
+ThreadPlan.po: CommentCommandList.inc.h
+ThreadPlan.po: DeclNodes.inc.h
+ThreadPlan.po: DiagnosticCommonKinds.inc.h
+ThreadPlan.po: StmtNodes.inc.h
+ThreadPlanBase.o: DiagnosticCommonKinds.inc.h
+ThreadPlanBase.po: DiagnosticCommonKinds.inc.h
+ThreadPlanCallFunction.o: CommentCommandList.inc.h
+ThreadPlanCallFunction.o: DeclNodes.inc.h
+ThreadPlanCallFunction.o: DiagnosticCommonKinds.inc.h
+ThreadPlanCallFunction.o: StmtNodes.inc.h
+ThreadPlanCallFunction.po: CommentCommandList.inc.h
+ThreadPlanCallFunction.po: DeclNodes.inc.h
+ThreadPlanCallFunction.po: DiagnosticCommonKinds.inc.h
+ThreadPlanCallFunction.po: StmtNodes.inc.h
+ThreadPlanCallUserExpression.o: DiagnosticCommonKinds.inc.h
+ThreadPlanCallUserExpression.po: DiagnosticCommonKinds.inc.h
+ThreadPlanPython.o: AttrList.inc.h
+ThreadPlanPython.o: Attrs.inc.h
+ThreadPlanPython.o: CommentCommandList.inc.h
+ThreadPlanPython.o: DeclNodes.inc.h
+ThreadPlanPython.o: DiagnosticCommonKinds.inc.h
+ThreadPlanPython.o: StmtNodes.inc.h
+ThreadPlanPython.po: AttrList.inc.h
+ThreadPlanPython.po: Attrs.inc.h
+ThreadPlanPython.po: CommentCommandList.inc.h
+ThreadPlanPython.po: DeclNodes.inc.h
+ThreadPlanPython.po: DiagnosticCommonKinds.inc.h
+ThreadPlanPython.po: StmtNodes.inc.h
+ThreadPlanRunToAddress.o: DiagnosticCommonKinds.inc.h
+ThreadPlanRunToAddress.po: DiagnosticCommonKinds.inc.h
+ThreadPlanShouldStopHere.o: DiagnosticCommonKinds.inc.h
+ThreadPlanShouldStopHere.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepInRange.o: CommentCommandList.inc.h
+ThreadPlanStepInRange.o: DeclNodes.inc.h
+ThreadPlanStepInRange.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepInRange.o: StmtNodes.inc.h
+ThreadPlanStepInRange.po: CommentCommandList.inc.h
+ThreadPlanStepInRange.po: DeclNodes.inc.h
+ThreadPlanStepInRange.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepInRange.po: StmtNodes.inc.h
+ThreadPlanStepInstruction.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepInstruction.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOut.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOut.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOverBreakpoint.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOverBreakpoint.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOverRange.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepOverRange.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepRange.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepRange.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepThrough.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepThrough.po: DiagnosticCommonKinds.inc.h
+ThreadPlanStepUntil.o: DiagnosticCommonKinds.inc.h
+ThreadPlanStepUntil.po: DiagnosticCommonKinds.inc.h
+ThreadPlanTracer.o: AttrList.inc.h
+ThreadPlanTracer.o: Attrs.inc.h
+ThreadPlanTracer.o: CommentCommandList.inc.h
+ThreadPlanTracer.o: DeclNodes.inc.h
+ThreadPlanTracer.o: DiagnosticCommonKinds.inc.h
+ThreadPlanTracer.o: StmtNodes.inc.h
+ThreadPlanTracer.po: AttrList.inc.h
+ThreadPlanTracer.po: Attrs.inc.h
+ThreadPlanTracer.po: CommentCommandList.inc.h
+ThreadPlanTracer.po: DeclNodes.inc.h
+ThreadPlanTracer.po: DiagnosticCommonKinds.inc.h
+ThreadPlanTracer.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/liblldbUtility/Makefile.depend b/lib/clang/liblldbUtility/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/liblldbUtility/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmaarch64asmparser/Makefile.depend b/lib/clang/libllvmaarch64asmparser/Makefile.depend
new file mode 100644
index 0000000..745dfbc
--- /dev/null
+++ b/lib/clang/libllvmaarch64asmparser/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64AsmParser.o: AArch64GenAsmMatcher.inc.h
+AArch64AsmParser.o: AArch64GenInstrInfo.inc.h
+AArch64AsmParser.o: AArch64GenRegisterInfo.inc.h
+AArch64AsmParser.o: AArch64GenSubtargetInfo.inc.h
+AArch64AsmParser.po: AArch64GenAsmMatcher.inc.h
+AArch64AsmParser.po: AArch64GenInstrInfo.inc.h
+AArch64AsmParser.po: AArch64GenRegisterInfo.inc.h
+AArch64AsmParser.po: AArch64GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmaarch64codegen/Makefile.depend b/lib/clang/libllvmaarch64codegen/Makefile.depend
new file mode 100644
index 0000000..e6dc7bf
--- /dev/null
+++ b/lib/clang/libllvmaarch64codegen/Makefile.depend
@@ -0,0 +1,204 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64A53Fix835769.o: AArch64GenInstrInfo.inc.h
+AArch64A53Fix835769.o: AArch64GenRegisterInfo.inc.h
+AArch64A53Fix835769.o: AArch64GenSubtargetInfo.inc.h
+AArch64A53Fix835769.po: AArch64GenInstrInfo.inc.h
+AArch64A53Fix835769.po: AArch64GenRegisterInfo.inc.h
+AArch64A53Fix835769.po: AArch64GenSubtargetInfo.inc.h
+AArch64A57FPLoadBalancing.o: AArch64GenInstrInfo.inc.h
+AArch64A57FPLoadBalancing.o: AArch64GenRegisterInfo.inc.h
+AArch64A57FPLoadBalancing.o: AArch64GenSubtargetInfo.inc.h
+AArch64A57FPLoadBalancing.po: AArch64GenInstrInfo.inc.h
+AArch64A57FPLoadBalancing.po: AArch64GenRegisterInfo.inc.h
+AArch64A57FPLoadBalancing.po: AArch64GenSubtargetInfo.inc.h
+AArch64AddressTypePromotion.o: AArch64GenInstrInfo.inc.h
+AArch64AddressTypePromotion.o: AArch64GenRegisterInfo.inc.h
+AArch64AddressTypePromotion.o: AArch64GenSubtargetInfo.inc.h
+AArch64AddressTypePromotion.po: AArch64GenInstrInfo.inc.h
+AArch64AddressTypePromotion.po: AArch64GenRegisterInfo.inc.h
+AArch64AddressTypePromotion.po: AArch64GenSubtargetInfo.inc.h
+AArch64AdvSIMDScalarPass.o: AArch64GenInstrInfo.inc.h
+AArch64AdvSIMDScalarPass.o: AArch64GenRegisterInfo.inc.h
+AArch64AdvSIMDScalarPass.o: AArch64GenSubtargetInfo.inc.h
+AArch64AdvSIMDScalarPass.po: AArch64GenInstrInfo.inc.h
+AArch64AdvSIMDScalarPass.po: AArch64GenRegisterInfo.inc.h
+AArch64AdvSIMDScalarPass.po: AArch64GenSubtargetInfo.inc.h
+AArch64AsmPrinter.o: AArch64GenInstrInfo.inc.h
+AArch64AsmPrinter.o: AArch64GenMCPseudoLowering.inc.h
+AArch64AsmPrinter.o: AArch64GenRegisterInfo.inc.h
+AArch64AsmPrinter.o: AArch64GenSubtargetInfo.inc.h
+AArch64AsmPrinter.po: AArch64GenInstrInfo.inc.h
+AArch64AsmPrinter.po: AArch64GenMCPseudoLowering.inc.h
+AArch64AsmPrinter.po: AArch64GenRegisterInfo.inc.h
+AArch64AsmPrinter.po: AArch64GenSubtargetInfo.inc.h
+AArch64BranchRelaxation.o: AArch64GenInstrInfo.inc.h
+AArch64BranchRelaxation.o: AArch64GenRegisterInfo.inc.h
+AArch64BranchRelaxation.o: AArch64GenSubtargetInfo.inc.h
+AArch64BranchRelaxation.po: AArch64GenInstrInfo.inc.h
+AArch64BranchRelaxation.po: AArch64GenRegisterInfo.inc.h
+AArch64BranchRelaxation.po: AArch64GenSubtargetInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.o: AArch64GenInstrInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.o: AArch64GenRegisterInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.o: AArch64GenSubtargetInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.po: AArch64GenInstrInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.po: AArch64GenRegisterInfo.inc.h
+AArch64CleanupLocalDynamicTLSPass.po: AArch64GenSubtargetInfo.inc.h
+AArch64CollectLOH.o: AArch64GenInstrInfo.inc.h
+AArch64CollectLOH.o: AArch64GenRegisterInfo.inc.h
+AArch64CollectLOH.o: AArch64GenSubtargetInfo.inc.h
+AArch64CollectLOH.po: AArch64GenInstrInfo.inc.h
+AArch64CollectLOH.po: AArch64GenRegisterInfo.inc.h
+AArch64CollectLOH.po: AArch64GenSubtargetInfo.inc.h
+AArch64ConditionOptimizer.o: AArch64GenInstrInfo.inc.h
+AArch64ConditionOptimizer.o: AArch64GenRegisterInfo.inc.h
+AArch64ConditionOptimizer.o: AArch64GenSubtargetInfo.inc.h
+AArch64ConditionOptimizer.po: AArch64GenInstrInfo.inc.h
+AArch64ConditionOptimizer.po: AArch64GenRegisterInfo.inc.h
+AArch64ConditionOptimizer.po: AArch64GenSubtargetInfo.inc.h
+AArch64ConditionalCompares.o: AArch64GenInstrInfo.inc.h
+AArch64ConditionalCompares.o: AArch64GenRegisterInfo.inc.h
+AArch64ConditionalCompares.o: AArch64GenSubtargetInfo.inc.h
+AArch64ConditionalCompares.po: AArch64GenInstrInfo.inc.h
+AArch64ConditionalCompares.po: AArch64GenRegisterInfo.inc.h
+AArch64ConditionalCompares.po: AArch64GenSubtargetInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.o: AArch64GenInstrInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.o: AArch64GenRegisterInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.o: AArch64GenSubtargetInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.po: AArch64GenInstrInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.po: AArch64GenRegisterInfo.inc.h
+AArch64DeadRegisterDefinitionsPass.po: AArch64GenSubtargetInfo.inc.h
+AArch64ExpandPseudoInsts.o: AArch64GenInstrInfo.inc.h
+AArch64ExpandPseudoInsts.o: AArch64GenRegisterInfo.inc.h
+AArch64ExpandPseudoInsts.o: AArch64GenSubtargetInfo.inc.h
+AArch64ExpandPseudoInsts.po: AArch64GenInstrInfo.inc.h
+AArch64ExpandPseudoInsts.po: AArch64GenRegisterInfo.inc.h
+AArch64ExpandPseudoInsts.po: AArch64GenSubtargetInfo.inc.h
+AArch64FastISel.o: AArch64GenCallingConv.inc.h
+AArch64FastISel.o: AArch64GenFastISel.inc.h
+AArch64FastISel.o: AArch64GenInstrInfo.inc.h
+AArch64FastISel.o: AArch64GenRegisterInfo.inc.h
+AArch64FastISel.o: AArch64GenSubtargetInfo.inc.h
+AArch64FastISel.o: Intrinsics.inc.h
+AArch64FastISel.po: AArch64GenCallingConv.inc.h
+AArch64FastISel.po: AArch64GenFastISel.inc.h
+AArch64FastISel.po: AArch64GenInstrInfo.inc.h
+AArch64FastISel.po: AArch64GenRegisterInfo.inc.h
+AArch64FastISel.po: AArch64GenSubtargetInfo.inc.h
+AArch64FastISel.po: Intrinsics.inc.h
+AArch64FrameLowering.o: AArch64GenInstrInfo.inc.h
+AArch64FrameLowering.o: AArch64GenRegisterInfo.inc.h
+AArch64FrameLowering.o: AArch64GenSubtargetInfo.inc.h
+AArch64FrameLowering.po: AArch64GenInstrInfo.inc.h
+AArch64FrameLowering.po: AArch64GenRegisterInfo.inc.h
+AArch64FrameLowering.po: AArch64GenSubtargetInfo.inc.h
+AArch64ISelDAGToDAG.o: AArch64GenDAGISel.inc.h
+AArch64ISelDAGToDAG.o: AArch64GenInstrInfo.inc.h
+AArch64ISelDAGToDAG.o: AArch64GenRegisterInfo.inc.h
+AArch64ISelDAGToDAG.o: AArch64GenSubtargetInfo.inc.h
+AArch64ISelDAGToDAG.o: Intrinsics.inc.h
+AArch64ISelDAGToDAG.po: AArch64GenDAGISel.inc.h
+AArch64ISelDAGToDAG.po: AArch64GenInstrInfo.inc.h
+AArch64ISelDAGToDAG.po: AArch64GenRegisterInfo.inc.h
+AArch64ISelDAGToDAG.po: AArch64GenSubtargetInfo.inc.h
+AArch64ISelDAGToDAG.po: Intrinsics.inc.h
+AArch64ISelLowering.o: AArch64GenCallingConv.inc.h
+AArch64ISelLowering.o: AArch64GenInstrInfo.inc.h
+AArch64ISelLowering.o: AArch64GenRegisterInfo.inc.h
+AArch64ISelLowering.o: AArch64GenSubtargetInfo.inc.h
+AArch64ISelLowering.o: Intrinsics.inc.h
+AArch64ISelLowering.po: AArch64GenCallingConv.inc.h
+AArch64ISelLowering.po: AArch64GenInstrInfo.inc.h
+AArch64ISelLowering.po: AArch64GenRegisterInfo.inc.h
+AArch64ISelLowering.po: AArch64GenSubtargetInfo.inc.h
+AArch64ISelLowering.po: Intrinsics.inc.h
+AArch64InstrInfo.o: AArch64GenInstrInfo.inc.h
+AArch64InstrInfo.o: AArch64GenRegisterInfo.inc.h
+AArch64InstrInfo.o: AArch64GenSubtargetInfo.inc.h
+AArch64InstrInfo.po: AArch64GenInstrInfo.inc.h
+AArch64InstrInfo.po: AArch64GenRegisterInfo.inc.h
+AArch64InstrInfo.po: AArch64GenSubtargetInfo.inc.h
+AArch64LoadStoreOptimizer.o: AArch64GenInstrInfo.inc.h
+AArch64LoadStoreOptimizer.o: AArch64GenRegisterInfo.inc.h
+AArch64LoadStoreOptimizer.o: AArch64GenSubtargetInfo.inc.h
+AArch64LoadStoreOptimizer.po: AArch64GenInstrInfo.inc.h
+AArch64LoadStoreOptimizer.po: AArch64GenRegisterInfo.inc.h
+AArch64LoadStoreOptimizer.po: AArch64GenSubtargetInfo.inc.h
+AArch64MCInstLower.o: AArch64GenInstrInfo.inc.h
+AArch64MCInstLower.o: AArch64GenRegisterInfo.inc.h
+AArch64MCInstLower.o: AArch64GenSubtargetInfo.inc.h
+AArch64MCInstLower.po: AArch64GenInstrInfo.inc.h
+AArch64MCInstLower.po: AArch64GenRegisterInfo.inc.h
+AArch64MCInstLower.po: AArch64GenSubtargetInfo.inc.h
+AArch64PBQPRegAlloc.o: AArch64GenInstrInfo.inc.h
+AArch64PBQPRegAlloc.o: AArch64GenRegisterInfo.inc.h
+AArch64PBQPRegAlloc.o: AArch64GenSubtargetInfo.inc.h
+AArch64PBQPRegAlloc.po: AArch64GenInstrInfo.inc.h
+AArch64PBQPRegAlloc.po: AArch64GenRegisterInfo.inc.h
+AArch64PBQPRegAlloc.po: AArch64GenSubtargetInfo.inc.h
+AArch64PromoteConstant.o: AArch64GenInstrInfo.inc.h
+AArch64PromoteConstant.o: AArch64GenRegisterInfo.inc.h
+AArch64PromoteConstant.o: AArch64GenSubtargetInfo.inc.h
+AArch64PromoteConstant.o: Intrinsics.inc.h
+AArch64PromoteConstant.po: AArch64GenInstrInfo.inc.h
+AArch64PromoteConstant.po: AArch64GenRegisterInfo.inc.h
+AArch64PromoteConstant.po: AArch64GenSubtargetInfo.inc.h
+AArch64PromoteConstant.po: Intrinsics.inc.h
+AArch64RegisterInfo.o: AArch64GenInstrInfo.inc.h
+AArch64RegisterInfo.o: AArch64GenRegisterInfo.inc.h
+AArch64RegisterInfo.o: AArch64GenSubtargetInfo.inc.h
+AArch64RegisterInfo.po: AArch64GenInstrInfo.inc.h
+AArch64RegisterInfo.po: AArch64GenRegisterInfo.inc.h
+AArch64RegisterInfo.po: AArch64GenSubtargetInfo.inc.h
+AArch64SelectionDAGInfo.o: AArch64GenInstrInfo.inc.h
+AArch64SelectionDAGInfo.o: AArch64GenRegisterInfo.inc.h
+AArch64SelectionDAGInfo.o: AArch64GenSubtargetInfo.inc.h
+AArch64SelectionDAGInfo.po: AArch64GenInstrInfo.inc.h
+AArch64SelectionDAGInfo.po: AArch64GenRegisterInfo.inc.h
+AArch64SelectionDAGInfo.po: AArch64GenSubtargetInfo.inc.h
+AArch64StorePairSuppress.o: AArch64GenInstrInfo.inc.h
+AArch64StorePairSuppress.o: AArch64GenRegisterInfo.inc.h
+AArch64StorePairSuppress.o: AArch64GenSubtargetInfo.inc.h
+AArch64StorePairSuppress.po: AArch64GenInstrInfo.inc.h
+AArch64StorePairSuppress.po: AArch64GenRegisterInfo.inc.h
+AArch64StorePairSuppress.po: AArch64GenSubtargetInfo.inc.h
+AArch64Subtarget.o: AArch64GenInstrInfo.inc.h
+AArch64Subtarget.o: AArch64GenRegisterInfo.inc.h
+AArch64Subtarget.o: AArch64GenSubtargetInfo.inc.h
+AArch64Subtarget.po: AArch64GenInstrInfo.inc.h
+AArch64Subtarget.po: AArch64GenRegisterInfo.inc.h
+AArch64Subtarget.po: AArch64GenSubtargetInfo.inc.h
+AArch64TargetMachine.o: AArch64GenInstrInfo.inc.h
+AArch64TargetMachine.o: AArch64GenRegisterInfo.inc.h
+AArch64TargetMachine.o: AArch64GenSubtargetInfo.inc.h
+AArch64TargetMachine.po: AArch64GenInstrInfo.inc.h
+AArch64TargetMachine.po: AArch64GenRegisterInfo.inc.h
+AArch64TargetMachine.po: AArch64GenSubtargetInfo.inc.h
+AArch64TargetObjectFile.o: AArch64GenInstrInfo.inc.h
+AArch64TargetObjectFile.o: AArch64GenRegisterInfo.inc.h
+AArch64TargetObjectFile.o: AArch64GenSubtargetInfo.inc.h
+AArch64TargetObjectFile.po: AArch64GenInstrInfo.inc.h
+AArch64TargetObjectFile.po: AArch64GenRegisterInfo.inc.h
+AArch64TargetObjectFile.po: AArch64GenSubtargetInfo.inc.h
+AArch64TargetTransformInfo.o: AArch64GenInstrInfo.inc.h
+AArch64TargetTransformInfo.o: AArch64GenRegisterInfo.inc.h
+AArch64TargetTransformInfo.o: AArch64GenSubtargetInfo.inc.h
+AArch64TargetTransformInfo.o: Intrinsics.inc.h
+AArch64TargetTransformInfo.po: AArch64GenInstrInfo.inc.h
+AArch64TargetTransformInfo.po: AArch64GenRegisterInfo.inc.h
+AArch64TargetTransformInfo.po: AArch64GenSubtargetInfo.inc.h
+AArch64TargetTransformInfo.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmaarch64desc/Makefile.depend b/lib/clang/libllvmaarch64desc/Makefile.depend
new file mode 100644
index 0000000..b21faa8
--- /dev/null
+++ b/lib/clang/libllvmaarch64desc/Makefile.depend
@@ -0,0 +1,48 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64AsmBackend.o: AArch64GenInstrInfo.inc.h
+AArch64AsmBackend.o: AArch64GenRegisterInfo.inc.h
+AArch64AsmBackend.o: AArch64GenSubtargetInfo.inc.h
+AArch64AsmBackend.po: AArch64GenInstrInfo.inc.h
+AArch64AsmBackend.po: AArch64GenRegisterInfo.inc.h
+AArch64AsmBackend.po: AArch64GenSubtargetInfo.inc.h
+AArch64ELFObjectWriter.o: AArch64GenInstrInfo.inc.h
+AArch64ELFObjectWriter.o: AArch64GenRegisterInfo.inc.h
+AArch64ELFObjectWriter.o: AArch64GenSubtargetInfo.inc.h
+AArch64ELFObjectWriter.po: AArch64GenInstrInfo.inc.h
+AArch64ELFObjectWriter.po: AArch64GenRegisterInfo.inc.h
+AArch64ELFObjectWriter.po: AArch64GenSubtargetInfo.inc.h
+AArch64MCCodeEmitter.o: AArch64GenInstrInfo.inc.h
+AArch64MCCodeEmitter.o: AArch64GenMCCodeEmitter.inc.h
+AArch64MCCodeEmitter.o: AArch64GenRegisterInfo.inc.h
+AArch64MCCodeEmitter.o: AArch64GenSubtargetInfo.inc.h
+AArch64MCCodeEmitter.po: AArch64GenInstrInfo.inc.h
+AArch64MCCodeEmitter.po: AArch64GenMCCodeEmitter.inc.h
+AArch64MCCodeEmitter.po: AArch64GenRegisterInfo.inc.h
+AArch64MCCodeEmitter.po: AArch64GenSubtargetInfo.inc.h
+AArch64MCTargetDesc.o: AArch64GenInstrInfo.inc.h
+AArch64MCTargetDesc.o: AArch64GenRegisterInfo.inc.h
+AArch64MCTargetDesc.o: AArch64GenSubtargetInfo.inc.h
+AArch64MCTargetDesc.po: AArch64GenInstrInfo.inc.h
+AArch64MCTargetDesc.po: AArch64GenRegisterInfo.inc.h
+AArch64MCTargetDesc.po: AArch64GenSubtargetInfo.inc.h
+AArch64MachObjectWriter.o: AArch64GenInstrInfo.inc.h
+AArch64MachObjectWriter.o: AArch64GenRegisterInfo.inc.h
+AArch64MachObjectWriter.o: AArch64GenSubtargetInfo.inc.h
+AArch64MachObjectWriter.po: AArch64GenInstrInfo.inc.h
+AArch64MachObjectWriter.po: AArch64GenRegisterInfo.inc.h
+AArch64MachObjectWriter.po: AArch64GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmaarch64disassembler/Makefile.depend b/lib/clang/libllvmaarch64disassembler/Makefile.depend
new file mode 100644
index 0000000..7c5f0d9
--- /dev/null
+++ b/lib/clang/libllvmaarch64disassembler/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64Disassembler.o: AArch64GenDisassemblerTables.inc.h
+AArch64Disassembler.o: AArch64GenInstrInfo.inc.h
+AArch64Disassembler.o: AArch64GenRegisterInfo.inc.h
+AArch64Disassembler.o: AArch64GenSubtargetInfo.inc.h
+AArch64Disassembler.po: AArch64GenDisassemblerTables.inc.h
+AArch64Disassembler.po: AArch64GenInstrInfo.inc.h
+AArch64Disassembler.po: AArch64GenRegisterInfo.inc.h
+AArch64Disassembler.po: AArch64GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmaarch64info/Makefile.depend b/lib/clang/libllvmaarch64info/Makefile.depend
new file mode 100644
index 0000000..385072f
--- /dev/null
+++ b/lib/clang/libllvmaarch64info/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmaarch64instprinter/Makefile.depend b/lib/clang/libllvmaarch64instprinter/Makefile.depend
new file mode 100644
index 0000000..56c8d39
--- /dev/null
+++ b/lib/clang/libllvmaarch64instprinter/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64InstPrinter.o: AArch64GenAsmWriter.inc.h
+AArch64InstPrinter.o: AArch64GenAsmWriter1.inc.h
+AArch64InstPrinter.o: AArch64GenInstrInfo.inc.h
+AArch64InstPrinter.o: AArch64GenRegisterInfo.inc.h
+AArch64InstPrinter.o: AArch64GenSubtargetInfo.inc.h
+AArch64InstPrinter.po: AArch64GenAsmWriter.inc.h
+AArch64InstPrinter.po: AArch64GenAsmWriter1.inc.h
+AArch64InstPrinter.po: AArch64GenInstrInfo.inc.h
+AArch64InstPrinter.po: AArch64GenRegisterInfo.inc.h
+AArch64InstPrinter.po: AArch64GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmaarch64utils/Makefile.depend b/lib/clang/libllvmaarch64utils/Makefile.depend
new file mode 100644
index 0000000..c7f43d4
--- /dev/null
+++ b/lib/clang/libllvmaarch64utils/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AArch64BaseInfo.o: AArch64GenInstrInfo.inc.h
+AArch64BaseInfo.o: AArch64GenRegisterInfo.inc.h
+AArch64BaseInfo.o: AArch64GenSubtargetInfo.inc.h
+AArch64BaseInfo.po: AArch64GenInstrInfo.inc.h
+AArch64BaseInfo.po: AArch64GenRegisterInfo.inc.h
+AArch64BaseInfo.po: AArch64GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmanalysis/Makefile.depend b/lib/clang/libllvmanalysis/Makefile.depend
new file mode 100644
index 0000000..274e6ed
--- /dev/null
+++ b/lib/clang/libllvmanalysis/Makefile.depend
@@ -0,0 +1,58 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AliasAnalysis.o: Intrinsics.inc.h
+AliasAnalysis.po: Intrinsics.inc.h
+AliasSetTracker.o: Intrinsics.inc.h
+AliasSetTracker.po: Intrinsics.inc.h
+AssumptionCache.o: Intrinsics.inc.h
+AssumptionCache.po: Intrinsics.inc.h
+BasicAliasAnalysis.o: Intrinsics.inc.h
+BasicAliasAnalysis.po: Intrinsics.inc.h
+CFLAliasAnalysis.o: Intrinsics.inc.h
+CFLAliasAnalysis.po: Intrinsics.inc.h
+CodeMetrics.o: Intrinsics.inc.h
+CodeMetrics.po: Intrinsics.inc.h
+ConstantFolding.o: Intrinsics.inc.h
+ConstantFolding.po: Intrinsics.inc.h
+CostModel.o: Intrinsics.inc.h
+CostModel.po: Intrinsics.inc.h
+FunctionTargetTransformInfo.o: Intrinsics.inc.h
+FunctionTargetTransformInfo.po: Intrinsics.inc.h
+InstCount.o: Intrinsics.inc.h
+InstCount.po: Intrinsics.inc.h
+InstructionSimplify.o: Intrinsics.inc.h
+InstructionSimplify.po: Intrinsics.inc.h
+LazyCallGraph.o: Intrinsics.inc.h
+LazyCallGraph.po: Intrinsics.inc.h
+LazyValueInfo.o: Intrinsics.inc.h
+LazyValueInfo.po: Intrinsics.inc.h
+Lint.o: Intrinsics.inc.h
+Lint.po: Intrinsics.inc.h
+Loads.o: Intrinsics.inc.h
+Loads.po: Intrinsics.inc.h
+MemoryBuiltins.o: Intrinsics.inc.h
+MemoryBuiltins.po: Intrinsics.inc.h
+MemoryDependenceAnalysis.o: Intrinsics.inc.h
+MemoryDependenceAnalysis.po: Intrinsics.inc.h
+PtrUseVisitor.o: Intrinsics.inc.h
+PtrUseVisitor.po: Intrinsics.inc.h
+ScalarEvolutionExpander.o: Intrinsics.inc.h
+ScalarEvolutionExpander.po: Intrinsics.inc.h
+TargetTransformInfo.o: Intrinsics.inc.h
+TargetTransformInfo.po: Intrinsics.inc.h
+ValueTracking.o: Intrinsics.inc.h
+ValueTracking.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmarmasmparser/Makefile.depend b/lib/clang/libllvmarmasmparser/Makefile.depend
new file mode 100644
index 0000000..6fa25b5
--- /dev/null
+++ b/lib/clang/libllvmarmasmparser/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMAsmParser.o: ARMGenAsmMatcher.inc.h
+ARMAsmParser.o: ARMGenInstrInfo.inc.h
+ARMAsmParser.o: ARMGenRegisterInfo.inc.h
+ARMAsmParser.o: ARMGenSubtargetInfo.inc.h
+ARMAsmParser.po: ARMGenAsmMatcher.inc.h
+ARMAsmParser.po: ARMGenInstrInfo.inc.h
+ARMAsmParser.po: ARMGenRegisterInfo.inc.h
+ARMAsmParser.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmcodegen/Makefile.depend b/lib/clang/libllvmarmcodegen/Makefile.depend
new file mode 100644
index 0000000..deda9fb
--- /dev/null
+++ b/lib/clang/libllvmarmcodegen/Makefile.depend
@@ -0,0 +1,214 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+A15SDOptimizer.o: ARMGenInstrInfo.inc.h
+A15SDOptimizer.o: ARMGenRegisterInfo.inc.h
+A15SDOptimizer.o: ARMGenSubtargetInfo.inc.h
+A15SDOptimizer.po: ARMGenInstrInfo.inc.h
+A15SDOptimizer.po: ARMGenRegisterInfo.inc.h
+A15SDOptimizer.po: ARMGenSubtargetInfo.inc.h
+ARMAsmPrinter.o: ARMGenInstrInfo.inc.h
+ARMAsmPrinter.o: ARMGenMCPseudoLowering.inc.h
+ARMAsmPrinter.o: ARMGenRegisterInfo.inc.h
+ARMAsmPrinter.o: ARMGenSubtargetInfo.inc.h
+ARMAsmPrinter.po: ARMGenInstrInfo.inc.h
+ARMAsmPrinter.po: ARMGenMCPseudoLowering.inc.h
+ARMAsmPrinter.po: ARMGenRegisterInfo.inc.h
+ARMAsmPrinter.po: ARMGenSubtargetInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenInstrInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenRegisterInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenSubtargetInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenInstrInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenRegisterInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenSubtargetInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenInstrInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenRegisterInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenSubtargetInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenInstrInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenRegisterInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenSubtargetInfo.inc.h
+ARMConstantIslandPass.o: ARMGenInstrInfo.inc.h
+ARMConstantIslandPass.o: ARMGenRegisterInfo.inc.h
+ARMConstantIslandPass.o: ARMGenSubtargetInfo.inc.h
+ARMConstantIslandPass.po: ARMGenInstrInfo.inc.h
+ARMConstantIslandPass.po: ARMGenRegisterInfo.inc.h
+ARMConstantIslandPass.po: ARMGenSubtargetInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenInstrInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenRegisterInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenSubtargetInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenInstrInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenRegisterInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenSubtargetInfo.inc.h
+ARMFastISel.o: ARMGenCallingConv.inc.h
+ARMFastISel.o: ARMGenFastISel.inc.h
+ARMFastISel.o: ARMGenInstrInfo.inc.h
+ARMFastISel.o: ARMGenRegisterInfo.inc.h
+ARMFastISel.o: ARMGenSubtargetInfo.inc.h
+ARMFastISel.o: Intrinsics.inc.h
+ARMFastISel.po: ARMGenCallingConv.inc.h
+ARMFastISel.po: ARMGenFastISel.inc.h
+ARMFastISel.po: ARMGenInstrInfo.inc.h
+ARMFastISel.po: ARMGenRegisterInfo.inc.h
+ARMFastISel.po: ARMGenSubtargetInfo.inc.h
+ARMFastISel.po: Intrinsics.inc.h
+ARMFrameLowering.o: ARMGenInstrInfo.inc.h
+ARMFrameLowering.o: ARMGenRegisterInfo.inc.h
+ARMFrameLowering.o: ARMGenSubtargetInfo.inc.h
+ARMFrameLowering.po: ARMGenInstrInfo.inc.h
+ARMFrameLowering.po: ARMGenRegisterInfo.inc.h
+ARMFrameLowering.po: ARMGenSubtargetInfo.inc.h
+ARMHazardRecognizer.o: ARMGenInstrInfo.inc.h
+ARMHazardRecognizer.o: ARMGenRegisterInfo.inc.h
+ARMHazardRecognizer.o: ARMGenSubtargetInfo.inc.h
+ARMHazardRecognizer.po: ARMGenInstrInfo.inc.h
+ARMHazardRecognizer.po: ARMGenRegisterInfo.inc.h
+ARMHazardRecognizer.po: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenDAGISel.inc.h
+ARMISelDAGToDAG.o: ARMGenInstrInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenRegisterInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.o: Intrinsics.inc.h
+ARMISelDAGToDAG.po: ARMGenDAGISel.inc.h
+ARMISelDAGToDAG.po: ARMGenInstrInfo.inc.h
+ARMISelDAGToDAG.po: ARMGenRegisterInfo.inc.h
+ARMISelDAGToDAG.po: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.po: Intrinsics.inc.h
+ARMISelLowering.o: ARMGenCallingConv.inc.h
+ARMISelLowering.o: ARMGenInstrInfo.inc.h
+ARMISelLowering.o: ARMGenRegisterInfo.inc.h
+ARMISelLowering.o: ARMGenSubtargetInfo.inc.h
+ARMISelLowering.o: Intrinsics.inc.h
+ARMISelLowering.po: ARMGenCallingConv.inc.h
+ARMISelLowering.po: ARMGenInstrInfo.inc.h
+ARMISelLowering.po: ARMGenRegisterInfo.inc.h
+ARMISelLowering.po: ARMGenSubtargetInfo.inc.h
+ARMISelLowering.po: Intrinsics.inc.h
+ARMInstrInfo.o: ARMGenInstrInfo.inc.h
+ARMInstrInfo.o: ARMGenRegisterInfo.inc.h
+ARMInstrInfo.o: ARMGenSubtargetInfo.inc.h
+ARMInstrInfo.po: ARMGenInstrInfo.inc.h
+ARMInstrInfo.po: ARMGenRegisterInfo.inc.h
+ARMInstrInfo.po: ARMGenSubtargetInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenInstrInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenRegisterInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenSubtargetInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenInstrInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenRegisterInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenSubtargetInfo.inc.h
+ARMMCInstLower.o: ARMGenInstrInfo.inc.h
+ARMMCInstLower.o: ARMGenRegisterInfo.inc.h
+ARMMCInstLower.o: ARMGenSubtargetInfo.inc.h
+ARMMCInstLower.po: ARMGenInstrInfo.inc.h
+ARMMCInstLower.po: ARMGenRegisterInfo.inc.h
+ARMMCInstLower.po: ARMGenSubtargetInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenInstrInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenRegisterInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenSubtargetInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenInstrInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenRegisterInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenSubtargetInfo.inc.h
+ARMOptimizeBarriersPass.o: ARMGenInstrInfo.inc.h
+ARMOptimizeBarriersPass.o: ARMGenRegisterInfo.inc.h
+ARMOptimizeBarriersPass.o: ARMGenSubtargetInfo.inc.h
+ARMOptimizeBarriersPass.po: ARMGenInstrInfo.inc.h
+ARMOptimizeBarriersPass.po: ARMGenRegisterInfo.inc.h
+ARMOptimizeBarriersPass.po: ARMGenSubtargetInfo.inc.h
+ARMRegisterInfo.o: ARMGenInstrInfo.inc.h
+ARMRegisterInfo.o: ARMGenRegisterInfo.inc.h
+ARMRegisterInfo.o: ARMGenSubtargetInfo.inc.h
+ARMRegisterInfo.po: ARMGenInstrInfo.inc.h
+ARMRegisterInfo.po: ARMGenRegisterInfo.inc.h
+ARMRegisterInfo.po: ARMGenSubtargetInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenInstrInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenRegisterInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenSubtargetInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenInstrInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenRegisterInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenSubtargetInfo.inc.h
+ARMSubtarget.o: ARMGenInstrInfo.inc.h
+ARMSubtarget.o: ARMGenRegisterInfo.inc.h
+ARMSubtarget.o: ARMGenSubtargetInfo.inc.h
+ARMSubtarget.po: ARMGenInstrInfo.inc.h
+ARMSubtarget.po: ARMGenRegisterInfo.inc.h
+ARMSubtarget.po: ARMGenSubtargetInfo.inc.h
+ARMTargetMachine.o: ARMGenInstrInfo.inc.h
+ARMTargetMachine.o: ARMGenRegisterInfo.inc.h
+ARMTargetMachine.o: ARMGenSubtargetInfo.inc.h
+ARMTargetMachine.po: ARMGenInstrInfo.inc.h
+ARMTargetMachine.po: ARMGenRegisterInfo.inc.h
+ARMTargetMachine.po: ARMGenSubtargetInfo.inc.h
+ARMTargetObjectFile.o: ARMGenInstrInfo.inc.h
+ARMTargetObjectFile.o: ARMGenRegisterInfo.inc.h
+ARMTargetObjectFile.o: ARMGenSubtargetInfo.inc.h
+ARMTargetObjectFile.po: ARMGenInstrInfo.inc.h
+ARMTargetObjectFile.po: ARMGenRegisterInfo.inc.h
+ARMTargetObjectFile.po: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenInstrInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenRegisterInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.o: Intrinsics.inc.h
+ARMTargetTransformInfo.po: ARMGenInstrInfo.inc.h
+ARMTargetTransformInfo.po: ARMGenRegisterInfo.inc.h
+ARMTargetTransformInfo.po: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.po: Intrinsics.inc.h
+MLxExpansionPass.o: ARMGenInstrInfo.inc.h
+MLxExpansionPass.o: ARMGenRegisterInfo.inc.h
+MLxExpansionPass.o: ARMGenSubtargetInfo.inc.h
+MLxExpansionPass.po: ARMGenInstrInfo.inc.h
+MLxExpansionPass.po: ARMGenRegisterInfo.inc.h
+MLxExpansionPass.po: ARMGenSubtargetInfo.inc.h
+Thumb1FrameLowering.o: ARMGenInstrInfo.inc.h
+Thumb1FrameLowering.o: ARMGenRegisterInfo.inc.h
+Thumb1FrameLowering.o: ARMGenSubtargetInfo.inc.h
+Thumb1FrameLowering.po: ARMGenInstrInfo.inc.h
+Thumb1FrameLowering.po: ARMGenRegisterInfo.inc.h
+Thumb1FrameLowering.po: ARMGenSubtargetInfo.inc.h
+Thumb1InstrInfo.o: ARMGenInstrInfo.inc.h
+Thumb1InstrInfo.o: ARMGenRegisterInfo.inc.h
+Thumb1InstrInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb1InstrInfo.po: ARMGenInstrInfo.inc.h
+Thumb1InstrInfo.po: ARMGenRegisterInfo.inc.h
+Thumb1InstrInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenInstrInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenRegisterInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenInstrInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenRegisterInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenInstrInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenRegisterInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenSubtargetInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenInstrInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenRegisterInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenSubtargetInfo.inc.h
+Thumb2InstrInfo.o: ARMGenInstrInfo.inc.h
+Thumb2InstrInfo.o: ARMGenRegisterInfo.inc.h
+Thumb2InstrInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb2InstrInfo.po: ARMGenInstrInfo.inc.h
+Thumb2InstrInfo.po: ARMGenRegisterInfo.inc.h
+Thumb2InstrInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenInstrInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenRegisterInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenInstrInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenRegisterInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2SizeReduction.o: ARMGenInstrInfo.inc.h
+Thumb2SizeReduction.o: ARMGenRegisterInfo.inc.h
+Thumb2SizeReduction.o: ARMGenSubtargetInfo.inc.h
+Thumb2SizeReduction.po: ARMGenInstrInfo.inc.h
+Thumb2SizeReduction.po: ARMGenRegisterInfo.inc.h
+Thumb2SizeReduction.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmdesc/Makefile.depend b/lib/clang/libllvmarmdesc/Makefile.depend
new file mode 100644
index 0000000..1d70a65
--- /dev/null
+++ b/lib/clang/libllvmarmdesc/Makefile.depend
@@ -0,0 +1,66 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMAsmBackend.o: ARMGenInstrInfo.inc.h
+ARMAsmBackend.o: ARMGenRegisterInfo.inc.h
+ARMAsmBackend.o: ARMGenSubtargetInfo.inc.h
+ARMAsmBackend.po: ARMGenInstrInfo.inc.h
+ARMAsmBackend.po: ARMGenRegisterInfo.inc.h
+ARMAsmBackend.po: ARMGenSubtargetInfo.inc.h
+ARMELFObjectWriter.o: ARMGenInstrInfo.inc.h
+ARMELFObjectWriter.o: ARMGenRegisterInfo.inc.h
+ARMELFObjectWriter.o: ARMGenSubtargetInfo.inc.h
+ARMELFObjectWriter.po: ARMGenInstrInfo.inc.h
+ARMELFObjectWriter.po: ARMGenRegisterInfo.inc.h
+ARMELFObjectWriter.po: ARMGenSubtargetInfo.inc.h
+ARMELFStreamer.o: ARMGenInstrInfo.inc.h
+ARMELFStreamer.o: ARMGenRegisterInfo.inc.h
+ARMELFStreamer.o: ARMGenSubtargetInfo.inc.h
+ARMELFStreamer.po: ARMGenInstrInfo.inc.h
+ARMELFStreamer.po: ARMGenRegisterInfo.inc.h
+ARMELFStreamer.po: ARMGenSubtargetInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenInstrInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenMCCodeEmitter.inc.h
+ARMMCCodeEmitter.o: ARMGenRegisterInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenSubtargetInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenInstrInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenMCCodeEmitter.inc.h
+ARMMCCodeEmitter.po: ARMGenRegisterInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenSubtargetInfo.inc.h
+ARMMCTargetDesc.o: ARMGenInstrInfo.inc.h
+ARMMCTargetDesc.o: ARMGenRegisterInfo.inc.h
+ARMMCTargetDesc.o: ARMGenSubtargetInfo.inc.h
+ARMMCTargetDesc.po: ARMGenInstrInfo.inc.h
+ARMMCTargetDesc.po: ARMGenRegisterInfo.inc.h
+ARMMCTargetDesc.po: ARMGenSubtargetInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenInstrInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenRegisterInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenSubtargetInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenInstrInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenRegisterInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenSubtargetInfo.inc.h
+ARMMachObjectWriter.o: ARMGenInstrInfo.inc.h
+ARMMachObjectWriter.o: ARMGenRegisterInfo.inc.h
+ARMMachObjectWriter.o: ARMGenSubtargetInfo.inc.h
+ARMMachObjectWriter.po: ARMGenInstrInfo.inc.h
+ARMMachObjectWriter.po: ARMGenRegisterInfo.inc.h
+ARMMachObjectWriter.po: ARMGenSubtargetInfo.inc.h
+ARMWinCOFFStreamer.o: ARMGenInstrInfo.inc.h
+ARMWinCOFFStreamer.o: ARMGenRegisterInfo.inc.h
+ARMWinCOFFStreamer.o: ARMGenSubtargetInfo.inc.h
+ARMWinCOFFStreamer.po: ARMGenInstrInfo.inc.h
+ARMWinCOFFStreamer.po: ARMGenRegisterInfo.inc.h
+ARMWinCOFFStreamer.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmdisassembler/Makefile.depend b/lib/clang/libllvmarmdisassembler/Makefile.depend
new file mode 100644
index 0000000..59787f1
--- /dev/null
+++ b/lib/clang/libllvmarmdisassembler/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMDisassembler.o: ARMGenDisassemblerTables.inc.h
+ARMDisassembler.o: ARMGenInstrInfo.inc.h
+ARMDisassembler.o: ARMGenRegisterInfo.inc.h
+ARMDisassembler.o: ARMGenSubtargetInfo.inc.h
+ARMDisassembler.po: ARMGenDisassemblerTables.inc.h
+ARMDisassembler.po: ARMGenInstrInfo.inc.h
+ARMDisassembler.po: ARMGenRegisterInfo.inc.h
+ARMDisassembler.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarminfo/Makefile.depend b/lib/clang/libllvmarminfo/Makefile.depend
new file mode 100644
index 0000000..eb09777
--- /dev/null
+++ b/lib/clang/libllvmarminfo/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMTargetInfo.o: ARMGenInstrInfo.inc.h
+ARMTargetInfo.o: ARMGenRegisterInfo.inc.h
+ARMTargetInfo.o: ARMGenSubtargetInfo.inc.h
+ARMTargetInfo.po: ARMGenInstrInfo.inc.h
+ARMTargetInfo.po: ARMGenRegisterInfo.inc.h
+ARMTargetInfo.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarminstprinter/Makefile.depend b/lib/clang/libllvmarminstprinter/Makefile.depend
new file mode 100644
index 0000000..ba60d06
--- /dev/null
+++ b/lib/clang/libllvmarminstprinter/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMInstPrinter.o: ARMGenAsmWriter.inc.h
+ARMInstPrinter.o: ARMGenInstrInfo.inc.h
+ARMInstPrinter.o: ARMGenRegisterInfo.inc.h
+ARMInstPrinter.o: ARMGenSubtargetInfo.inc.h
+ARMInstPrinter.po: ARMGenAsmWriter.inc.h
+ARMInstPrinter.po: ARMGenInstrInfo.inc.h
+ARMInstPrinter.po: ARMGenRegisterInfo.inc.h
+ARMInstPrinter.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmasmparser/Makefile.depend b/lib/clang/libllvmasmparser/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmasmparser/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmasmprinter/Makefile.depend b/lib/clang/libllvmasmprinter/Makefile.depend
new file mode 100644
index 0000000..ed98ab4
--- /dev/null
+++ b/lib/clang/libllvmasmprinter/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ErlangGCPrinter.o: Intrinsics.inc.h
+ErlangGCPrinter.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmbitreader/Makefile.depend b/lib/clang/libllvmbitreader/Makefile.depend
new file mode 100644
index 0000000..387067c
--- /dev/null
+++ b/lib/clang/libllvmbitreader/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BitcodeReader.o: Intrinsics.inc.h
+BitcodeReader.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmbitwriter/Makefile.depend b/lib/clang/libllvmbitwriter/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmbitwriter/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmcodegen/Makefile.depend b/lib/clang/libllvmcodegen/Makefile.depend
new file mode 100644
index 0000000..98484cb
--- /dev/null
+++ b/lib/clang/libllvmcodegen/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Analysis.o: Intrinsics.inc.h
+Analysis.po: Intrinsics.inc.h
+AtomicExpandPass.o: Intrinsics.inc.h
+AtomicExpandPass.po: Intrinsics.inc.h
+BasicTargetTransformInfo.o: Intrinsics.inc.h
+BasicTargetTransformInfo.po: Intrinsics.inc.h
+CodeGenPrepare.o: Intrinsics.inc.h
+CodeGenPrepare.po: Intrinsics.inc.h
+DwarfEHPrepare.o: Intrinsics.inc.h
+DwarfEHPrepare.po: Intrinsics.inc.h
+GCStrategy.o: Intrinsics.inc.h
+GCStrategy.po: Intrinsics.inc.h
+GlobalMerge.o: Intrinsics.inc.h
+GlobalMerge.po: Intrinsics.inc.h
+IntrinsicLowering.o: Intrinsics.inc.h
+IntrinsicLowering.po: Intrinsics.inc.h
+LocalStackSlotAllocation.o: Intrinsics.inc.h
+LocalStackSlotAllocation.po: Intrinsics.inc.h
+ShadowStackGC.o: Intrinsics.inc.h
+ShadowStackGC.po: Intrinsics.inc.h
+SjLjEHPrepare.o: Intrinsics.inc.h
+SjLjEHPrepare.po: Intrinsics.inc.h
+StackProtector.o: Intrinsics.inc.h
+StackProtector.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmcore/Makefile.depend b/lib/clang/libllvmcore/Makefile.depend
new file mode 100644
index 0000000..212908d
--- /dev/null
+++ b/lib/clang/libllvmcore/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AsmWriter.o: Intrinsics.inc.h
+AsmWriter.po: Intrinsics.inc.h
+AutoUpgrade.o: Intrinsics.inc.h
+AutoUpgrade.po: Intrinsics.inc.h
+BasicBlock.o: Intrinsics.inc.h
+BasicBlock.po: Intrinsics.inc.h
+ConstantFold.o: Intrinsics.inc.h
+ConstantFold.po: Intrinsics.inc.h
+Core.o: Intrinsics.inc.h
+Core.po: Intrinsics.inc.h
+DIBuilder.o: Intrinsics.inc.h
+DIBuilder.po: Intrinsics.inc.h
+DebugInfo.o: Intrinsics.inc.h
+DebugInfo.po: Intrinsics.inc.h
+Function.o: Intrinsics.inc.h
+Function.po: Intrinsics.inc.h
+IRBuilder.o: Intrinsics.inc.h
+IRBuilder.po: Intrinsics.inc.h
+IntrinsicInst.o: Intrinsics.inc.h
+IntrinsicInst.po: Intrinsics.inc.h
+Statepoint.o: Intrinsics.inc.h
+Statepoint.po: Intrinsics.inc.h
+Verifier.o: Intrinsics.inc.h
+Verifier.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmexecutionengine/Makefile.depend b/lib/clang/libllvmexecutionengine/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmexecutionengine/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvminstcombine/Makefile.depend b/lib/clang/libllvminstcombine/Makefile.depend
new file mode 100644
index 0000000..d2df3e5
--- /dev/null
+++ b/lib/clang/libllvminstcombine/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+InstCombineAddSub.o: Intrinsics.inc.h
+InstCombineAddSub.po: Intrinsics.inc.h
+InstCombineAndOrXor.o: Intrinsics.inc.h
+InstCombineAndOrXor.po: Intrinsics.inc.h
+InstCombineCalls.o: Intrinsics.inc.h
+InstCombineCalls.po: Intrinsics.inc.h
+InstCombineCasts.o: Intrinsics.inc.h
+InstCombineCasts.po: Intrinsics.inc.h
+InstCombineCompares.o: Intrinsics.inc.h
+InstCombineCompares.po: Intrinsics.inc.h
+InstCombineLoadStoreAlloca.o: Intrinsics.inc.h
+InstCombineLoadStoreAlloca.po: Intrinsics.inc.h
+InstCombineMulDivRem.o: Intrinsics.inc.h
+InstCombineMulDivRem.po: Intrinsics.inc.h
+InstCombinePHI.o: Intrinsics.inc.h
+InstCombinePHI.po: Intrinsics.inc.h
+InstCombineSelect.o: Intrinsics.inc.h
+InstCombineSelect.po: Intrinsics.inc.h
+InstCombineShifts.o: Intrinsics.inc.h
+InstCombineShifts.po: Intrinsics.inc.h
+InstCombineSimplifyDemanded.o: Intrinsics.inc.h
+InstCombineSimplifyDemanded.po: Intrinsics.inc.h
+InstCombineVectorOps.o: Intrinsics.inc.h
+InstCombineVectorOps.po: Intrinsics.inc.h
+InstructionCombining.o: Intrinsics.inc.h
+InstructionCombining.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvminstrumentation/Makefile.depend b/lib/clang/libllvminstrumentation/Makefile.depend
new file mode 100644
index 0000000..625288d
--- /dev/null
+++ b/lib/clang/libllvminstrumentation/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AddressSanitizer.o: Intrinsics.inc.h
+AddressSanitizer.po: Intrinsics.inc.h
+BoundsChecking.o: Intrinsics.inc.h
+BoundsChecking.po: Intrinsics.inc.h
+DataFlowSanitizer.o: Intrinsics.inc.h
+DataFlowSanitizer.po: Intrinsics.inc.h
+GCOVProfiling.o: Intrinsics.inc.h
+GCOVProfiling.po: Intrinsics.inc.h
+InstrProfiling.o: Intrinsics.inc.h
+InstrProfiling.po: Intrinsics.inc.h
+MemorySanitizer.o: Intrinsics.inc.h
+MemorySanitizer.po: Intrinsics.inc.h
+ThreadSanitizer.o: Intrinsics.inc.h
+ThreadSanitizer.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvminterpreter/Makefile.depend b/lib/clang/libllvminterpreter/Makefile.depend
new file mode 100644
index 0000000..4fc7d45
--- /dev/null
+++ b/lib/clang/libllvminterpreter/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Execution.o: Intrinsics.inc.h
+Execution.po: Intrinsics.inc.h
+ExternalFunctions.o: Intrinsics.inc.h
+ExternalFunctions.po: Intrinsics.inc.h
+Interpreter.o: Intrinsics.inc.h
+Interpreter.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmipa/Makefile.depend b/lib/clang/libllvmipa/Makefile.depend
new file mode 100644
index 0000000..cc9dba5
--- /dev/null
+++ b/lib/clang/libllvmipa/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+CallGraph.o: Intrinsics.inc.h
+CallGraph.po: Intrinsics.inc.h
+CallGraphSCCPass.o: Intrinsics.inc.h
+CallGraphSCCPass.po: Intrinsics.inc.h
+GlobalsModRef.o: Intrinsics.inc.h
+GlobalsModRef.po: Intrinsics.inc.h
+InlineCost.o: Intrinsics.inc.h
+InlineCost.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmipo/Makefile.depend b/lib/clang/libllvmipo/Makefile.depend
new file mode 100644
index 0000000..39715a7
--- /dev/null
+++ b/lib/clang/libllvmipo/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DeadArgumentElimination.o: Intrinsics.inc.h
+DeadArgumentElimination.po: Intrinsics.inc.h
+FunctionAttrs.o: Intrinsics.inc.h
+FunctionAttrs.po: Intrinsics.inc.h
+GlobalOpt.o: Intrinsics.inc.h
+GlobalOpt.po: Intrinsics.inc.h
+InlineAlways.o: Intrinsics.inc.h
+InlineAlways.po: Intrinsics.inc.h
+InlineSimple.o: Intrinsics.inc.h
+InlineSimple.po: Intrinsics.inc.h
+Inliner.o: Intrinsics.inc.h
+Inliner.po: Intrinsics.inc.h
+PruneEH.o: Intrinsics.inc.h
+PruneEH.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmirreader/Makefile.depend b/lib/clang/libllvmirreader/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmirreader/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmlinker/Makefile.depend b/lib/clang/libllvmlinker/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmlinker/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmc/Makefile.depend b/lib/clang/libllvmmc/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmmc/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcdisassembler/Makefile.depend b/lib/clang/libllvmmcdisassembler/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmmcdisassembler/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcjit/Makefile.depend b/lib/clang/libllvmmcjit/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmmcjit/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcparser/Makefile.depend b/lib/clang/libllvmmcparser/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmmcparser/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmipsasmparser/Makefile.depend b/lib/clang/libllvmmipsasmparser/Makefile.depend
new file mode 100644
index 0000000..541f726
--- /dev/null
+++ b/lib/clang/libllvmmipsasmparser/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsAsmParser.o: MipsGenAsmMatcher.inc.h
+MipsAsmParser.o: MipsGenInstrInfo.inc.h
+MipsAsmParser.o: MipsGenRegisterInfo.inc.h
+MipsAsmParser.o: MipsGenSubtargetInfo.inc.h
+MipsAsmParser.po: MipsGenAsmMatcher.inc.h
+MipsAsmParser.po: MipsGenInstrInfo.inc.h
+MipsAsmParser.po: MipsGenRegisterInfo.inc.h
+MipsAsmParser.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipscodegen/Makefile.depend b/lib/clang/libllvmmipscodegen/Makefile.depend
new file mode 100644
index 0000000..a4cd81a
--- /dev/null
+++ b/lib/clang/libllvmmipscodegen/Makefile.depend
@@ -0,0 +1,238 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Mips16FrameLowering.o: MipsGenInstrInfo.inc.h
+Mips16FrameLowering.o: MipsGenRegisterInfo.inc.h
+Mips16FrameLowering.o: MipsGenSubtargetInfo.inc.h
+Mips16FrameLowering.po: MipsGenInstrInfo.inc.h
+Mips16FrameLowering.po: MipsGenRegisterInfo.inc.h
+Mips16FrameLowering.po: MipsGenSubtargetInfo.inc.h
+Mips16HardFloat.o: MipsGenInstrInfo.inc.h
+Mips16HardFloat.o: MipsGenRegisterInfo.inc.h
+Mips16HardFloat.o: MipsGenSubtargetInfo.inc.h
+Mips16HardFloat.po: MipsGenInstrInfo.inc.h
+Mips16HardFloat.po: MipsGenRegisterInfo.inc.h
+Mips16HardFloat.po: MipsGenSubtargetInfo.inc.h
+Mips16ISelDAGToDAG.o: Intrinsics.inc.h
+Mips16ISelDAGToDAG.o: MipsGenDAGISel.inc.h
+Mips16ISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+Mips16ISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+Mips16ISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+Mips16ISelDAGToDAG.po: Intrinsics.inc.h
+Mips16ISelDAGToDAG.po: MipsGenDAGISel.inc.h
+Mips16ISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+Mips16ISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+Mips16ISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+Mips16ISelLowering.o: MipsGenInstrInfo.inc.h
+Mips16ISelLowering.o: MipsGenRegisterInfo.inc.h
+Mips16ISelLowering.o: MipsGenSubtargetInfo.inc.h
+Mips16ISelLowering.po: MipsGenInstrInfo.inc.h
+Mips16ISelLowering.po: MipsGenRegisterInfo.inc.h
+Mips16ISelLowering.po: MipsGenSubtargetInfo.inc.h
+Mips16InstrInfo.o: MipsGenInstrInfo.inc.h
+Mips16InstrInfo.o: MipsGenRegisterInfo.inc.h
+Mips16InstrInfo.o: MipsGenSubtargetInfo.inc.h
+Mips16InstrInfo.po: MipsGenInstrInfo.inc.h
+Mips16InstrInfo.po: MipsGenRegisterInfo.inc.h
+Mips16InstrInfo.po: MipsGenSubtargetInfo.inc.h
+Mips16RegisterInfo.o: MipsGenInstrInfo.inc.h
+Mips16RegisterInfo.o: MipsGenRegisterInfo.inc.h
+Mips16RegisterInfo.o: MipsGenSubtargetInfo.inc.h
+Mips16RegisterInfo.po: MipsGenInstrInfo.inc.h
+Mips16RegisterInfo.po: MipsGenRegisterInfo.inc.h
+Mips16RegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenInstrInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenRegisterInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenSubtargetInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenInstrInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenRegisterInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenSubtargetInfo.inc.h
+MipsAsmPrinter.o: MipsGenInstrInfo.inc.h
+MipsAsmPrinter.o: MipsGenMCPseudoLowering.inc.h
+MipsAsmPrinter.o: MipsGenRegisterInfo.inc.h
+MipsAsmPrinter.o: MipsGenSubtargetInfo.inc.h
+MipsAsmPrinter.po: MipsGenInstrInfo.inc.h
+MipsAsmPrinter.po: MipsGenMCPseudoLowering.inc.h
+MipsAsmPrinter.po: MipsGenRegisterInfo.inc.h
+MipsAsmPrinter.po: MipsGenSubtargetInfo.inc.h
+MipsCCState.o: MipsGenInstrInfo.inc.h
+MipsCCState.o: MipsGenRegisterInfo.inc.h
+MipsCCState.o: MipsGenSubtargetInfo.inc.h
+MipsCCState.po: MipsGenInstrInfo.inc.h
+MipsCCState.po: MipsGenRegisterInfo.inc.h
+MipsCCState.po: MipsGenSubtargetInfo.inc.h
+MipsConstantIslandPass.o: MipsGenInstrInfo.inc.h
+MipsConstantIslandPass.o: MipsGenRegisterInfo.inc.h
+MipsConstantIslandPass.o: MipsGenSubtargetInfo.inc.h
+MipsConstantIslandPass.po: MipsGenInstrInfo.inc.h
+MipsConstantIslandPass.po: MipsGenRegisterInfo.inc.h
+MipsConstantIslandPass.po: MipsGenSubtargetInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenInstrInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenRegisterInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenSubtargetInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenInstrInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenRegisterInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenSubtargetInfo.inc.h
+MipsFastISel.o: Intrinsics.inc.h
+MipsFastISel.o: MipsGenCallingConv.inc.h
+MipsFastISel.o: MipsGenFastISel.inc.h
+MipsFastISel.o: MipsGenInstrInfo.inc.h
+MipsFastISel.o: MipsGenRegisterInfo.inc.h
+MipsFastISel.o: MipsGenSubtargetInfo.inc.h
+MipsFastISel.po: Intrinsics.inc.h
+MipsFastISel.po: MipsGenCallingConv.inc.h
+MipsFastISel.po: MipsGenFastISel.inc.h
+MipsFastISel.po: MipsGenInstrInfo.inc.h
+MipsFastISel.po: MipsGenRegisterInfo.inc.h
+MipsFastISel.po: MipsGenSubtargetInfo.inc.h
+MipsFrameLowering.o: MipsGenInstrInfo.inc.h
+MipsFrameLowering.o: MipsGenRegisterInfo.inc.h
+MipsFrameLowering.o: MipsGenSubtargetInfo.inc.h
+MipsFrameLowering.po: MipsGenInstrInfo.inc.h
+MipsFrameLowering.po: MipsGenRegisterInfo.inc.h
+MipsFrameLowering.po: MipsGenSubtargetInfo.inc.h
+MipsISelDAGToDAG.o: Intrinsics.inc.h
+MipsISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsISelDAGToDAG.po: Intrinsics.inc.h
+MipsISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsISelLowering.o: MipsGenCallingConv.inc.h
+MipsISelLowering.o: MipsGenInstrInfo.inc.h
+MipsISelLowering.o: MipsGenRegisterInfo.inc.h
+MipsISelLowering.o: MipsGenSubtargetInfo.inc.h
+MipsISelLowering.po: MipsGenCallingConv.inc.h
+MipsISelLowering.po: MipsGenInstrInfo.inc.h
+MipsISelLowering.po: MipsGenRegisterInfo.inc.h
+MipsISelLowering.po: MipsGenSubtargetInfo.inc.h
+MipsInstrInfo.o: MipsGenInstrInfo.inc.h
+MipsInstrInfo.o: MipsGenRegisterInfo.inc.h
+MipsInstrInfo.o: MipsGenSubtargetInfo.inc.h
+MipsInstrInfo.po: MipsGenInstrInfo.inc.h
+MipsInstrInfo.po: MipsGenRegisterInfo.inc.h
+MipsInstrInfo.po: MipsGenSubtargetInfo.inc.h
+MipsLongBranch.o: MipsGenInstrInfo.inc.h
+MipsLongBranch.o: MipsGenRegisterInfo.inc.h
+MipsLongBranch.o: MipsGenSubtargetInfo.inc.h
+MipsLongBranch.po: MipsGenInstrInfo.inc.h
+MipsLongBranch.po: MipsGenRegisterInfo.inc.h
+MipsLongBranch.po: MipsGenSubtargetInfo.inc.h
+MipsMCInstLower.o: MipsGenInstrInfo.inc.h
+MipsMCInstLower.o: MipsGenRegisterInfo.inc.h
+MipsMCInstLower.o: MipsGenSubtargetInfo.inc.h
+MipsMCInstLower.po: MipsGenInstrInfo.inc.h
+MipsMCInstLower.po: MipsGenRegisterInfo.inc.h
+MipsMCInstLower.po: MipsGenSubtargetInfo.inc.h
+MipsMachineFunction.o: MipsGenInstrInfo.inc.h
+MipsMachineFunction.o: MipsGenRegisterInfo.inc.h
+MipsMachineFunction.o: MipsGenSubtargetInfo.inc.h
+MipsMachineFunction.po: MipsGenInstrInfo.inc.h
+MipsMachineFunction.po: MipsGenRegisterInfo.inc.h
+MipsMachineFunction.po: MipsGenSubtargetInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsOptimizePICCall.o: MipsGenInstrInfo.inc.h
+MipsOptimizePICCall.o: MipsGenRegisterInfo.inc.h
+MipsOptimizePICCall.o: MipsGenSubtargetInfo.inc.h
+MipsOptimizePICCall.po: MipsGenInstrInfo.inc.h
+MipsOptimizePICCall.po: MipsGenRegisterInfo.inc.h
+MipsOptimizePICCall.po: MipsGenSubtargetInfo.inc.h
+MipsOs16.o: MipsGenInstrInfo.inc.h
+MipsOs16.o: MipsGenRegisterInfo.inc.h
+MipsOs16.o: MipsGenSubtargetInfo.inc.h
+MipsOs16.po: MipsGenInstrInfo.inc.h
+MipsOs16.po: MipsGenRegisterInfo.inc.h
+MipsOs16.po: MipsGenSubtargetInfo.inc.h
+MipsRegisterInfo.o: MipsGenInstrInfo.inc.h
+MipsRegisterInfo.o: MipsGenRegisterInfo.inc.h
+MipsRegisterInfo.o: MipsGenSubtargetInfo.inc.h
+MipsRegisterInfo.po: MipsGenInstrInfo.inc.h
+MipsRegisterInfo.po: MipsGenRegisterInfo.inc.h
+MipsRegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSEFrameLowering.o: MipsGenInstrInfo.inc.h
+MipsSEFrameLowering.o: MipsGenRegisterInfo.inc.h
+MipsSEFrameLowering.o: MipsGenSubtargetInfo.inc.h
+MipsSEFrameLowering.po: MipsGenInstrInfo.inc.h
+MipsSEFrameLowering.po: MipsGenRegisterInfo.inc.h
+MipsSEFrameLowering.po: MipsGenSubtargetInfo.inc.h
+MipsSEISelDAGToDAG.o: Intrinsics.inc.h
+MipsSEISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsSEISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsSEISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsSEISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsSEISelDAGToDAG.po: Intrinsics.inc.h
+MipsSEISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsSEISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsSEISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsSEISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsSEISelLowering.o: Intrinsics.inc.h
+MipsSEISelLowering.o: MipsGenInstrInfo.inc.h
+MipsSEISelLowering.o: MipsGenRegisterInfo.inc.h
+MipsSEISelLowering.o: MipsGenSubtargetInfo.inc.h
+MipsSEISelLowering.po: Intrinsics.inc.h
+MipsSEISelLowering.po: MipsGenInstrInfo.inc.h
+MipsSEISelLowering.po: MipsGenRegisterInfo.inc.h
+MipsSEISelLowering.po: MipsGenSubtargetInfo.inc.h
+MipsSEInstrInfo.o: MipsGenInstrInfo.inc.h
+MipsSEInstrInfo.o: MipsGenRegisterInfo.inc.h
+MipsSEInstrInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSEInstrInfo.po: MipsGenInstrInfo.inc.h
+MipsSEInstrInfo.po: MipsGenRegisterInfo.inc.h
+MipsSEInstrInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSERegisterInfo.o: MipsGenInstrInfo.inc.h
+MipsSERegisterInfo.o: MipsGenRegisterInfo.inc.h
+MipsSERegisterInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSERegisterInfo.po: MipsGenInstrInfo.inc.h
+MipsSERegisterInfo.po: MipsGenRegisterInfo.inc.h
+MipsSERegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenInstrInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenRegisterInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenInstrInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenRegisterInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSubtarget.o: MipsGenInstrInfo.inc.h
+MipsSubtarget.o: MipsGenRegisterInfo.inc.h
+MipsSubtarget.o: MipsGenSubtargetInfo.inc.h
+MipsSubtarget.po: MipsGenInstrInfo.inc.h
+MipsSubtarget.po: MipsGenRegisterInfo.inc.h
+MipsSubtarget.po: MipsGenSubtargetInfo.inc.h
+MipsTargetMachine.o: Intrinsics.inc.h
+MipsTargetMachine.o: MipsGenDAGISel.inc.h
+MipsTargetMachine.o: MipsGenInstrInfo.inc.h
+MipsTargetMachine.o: MipsGenRegisterInfo.inc.h
+MipsTargetMachine.o: MipsGenSubtargetInfo.inc.h
+MipsTargetMachine.po: Intrinsics.inc.h
+MipsTargetMachine.po: MipsGenDAGISel.inc.h
+MipsTargetMachine.po: MipsGenInstrInfo.inc.h
+MipsTargetMachine.po: MipsGenRegisterInfo.inc.h
+MipsTargetMachine.po: MipsGenSubtargetInfo.inc.h
+MipsTargetObjectFile.o: MipsGenInstrInfo.inc.h
+MipsTargetObjectFile.o: MipsGenRegisterInfo.inc.h
+MipsTargetObjectFile.o: MipsGenSubtargetInfo.inc.h
+MipsTargetObjectFile.po: MipsGenInstrInfo.inc.h
+MipsTargetObjectFile.po: MipsGenRegisterInfo.inc.h
+MipsTargetObjectFile.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsdesc/Makefile.depend b/lib/clang/libllvmmipsdesc/Makefile.depend
new file mode 100644
index 0000000..ccc26d1
--- /dev/null
+++ b/lib/clang/libllvmmipsdesc/Makefile.depend
@@ -0,0 +1,72 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsABIInfo.o: MipsGenInstrInfo.inc.h
+MipsABIInfo.o: MipsGenRegisterInfo.inc.h
+MipsABIInfo.o: MipsGenSubtargetInfo.inc.h
+MipsABIInfo.po: MipsGenInstrInfo.inc.h
+MipsABIInfo.po: MipsGenRegisterInfo.inc.h
+MipsABIInfo.po: MipsGenSubtargetInfo.inc.h
+MipsAsmBackend.o: MipsGenInstrInfo.inc.h
+MipsAsmBackend.o: MipsGenRegisterInfo.inc.h
+MipsAsmBackend.o: MipsGenSubtargetInfo.inc.h
+MipsAsmBackend.po: MipsGenInstrInfo.inc.h
+MipsAsmBackend.po: MipsGenRegisterInfo.inc.h
+MipsAsmBackend.po: MipsGenSubtargetInfo.inc.h
+MipsELFObjectWriter.o: MipsGenInstrInfo.inc.h
+MipsELFObjectWriter.o: MipsGenRegisterInfo.inc.h
+MipsELFObjectWriter.o: MipsGenSubtargetInfo.inc.h
+MipsELFObjectWriter.po: MipsGenInstrInfo.inc.h
+MipsELFObjectWriter.po: MipsGenRegisterInfo.inc.h
+MipsELFObjectWriter.po: MipsGenSubtargetInfo.inc.h
+MipsELFStreamer.o: MipsGenInstrInfo.inc.h
+MipsELFStreamer.o: MipsGenRegisterInfo.inc.h
+MipsELFStreamer.o: MipsGenSubtargetInfo.inc.h
+MipsELFStreamer.po: MipsGenInstrInfo.inc.h
+MipsELFStreamer.po: MipsGenRegisterInfo.inc.h
+MipsELFStreamer.po: MipsGenSubtargetInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenInstrInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenMCCodeEmitter.inc.h
+MipsMCCodeEmitter.o: MipsGenRegisterInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenSubtargetInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenInstrInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenMCCodeEmitter.inc.h
+MipsMCCodeEmitter.po: MipsGenRegisterInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenSubtargetInfo.inc.h
+MipsMCTargetDesc.o: MipsGenInstrInfo.inc.h
+MipsMCTargetDesc.o: MipsGenRegisterInfo.inc.h
+MipsMCTargetDesc.o: MipsGenSubtargetInfo.inc.h
+MipsMCTargetDesc.po: MipsGenInstrInfo.inc.h
+MipsMCTargetDesc.po: MipsGenRegisterInfo.inc.h
+MipsMCTargetDesc.po: MipsGenSubtargetInfo.inc.h
+MipsNaClELFStreamer.o: MipsGenInstrInfo.inc.h
+MipsNaClELFStreamer.o: MipsGenRegisterInfo.inc.h
+MipsNaClELFStreamer.o: MipsGenSubtargetInfo.inc.h
+MipsNaClELFStreamer.po: MipsGenInstrInfo.inc.h
+MipsNaClELFStreamer.po: MipsGenRegisterInfo.inc.h
+MipsNaClELFStreamer.po: MipsGenSubtargetInfo.inc.h
+MipsOptionRecord.o: MipsGenInstrInfo.inc.h
+MipsOptionRecord.o: MipsGenRegisterInfo.inc.h
+MipsOptionRecord.o: MipsGenSubtargetInfo.inc.h
+MipsOptionRecord.po: MipsGenInstrInfo.inc.h
+MipsOptionRecord.po: MipsGenRegisterInfo.inc.h
+MipsOptionRecord.po: MipsGenSubtargetInfo.inc.h
+MipsTargetStreamer.o: MipsGenInstrInfo.inc.h
+MipsTargetStreamer.o: MipsGenRegisterInfo.inc.h
+MipsTargetStreamer.o: MipsGenSubtargetInfo.inc.h
+MipsTargetStreamer.po: MipsGenInstrInfo.inc.h
+MipsTargetStreamer.po: MipsGenRegisterInfo.inc.h
+MipsTargetStreamer.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsdisassembler/Makefile.depend b/lib/clang/libllvmmipsdisassembler/Makefile.depend
new file mode 100644
index 0000000..5e10f87
--- /dev/null
+++ b/lib/clang/libllvmmipsdisassembler/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsDisassembler.o: MipsGenDisassemblerTables.inc.h
+MipsDisassembler.o: MipsGenInstrInfo.inc.h
+MipsDisassembler.o: MipsGenRegisterInfo.inc.h
+MipsDisassembler.o: MipsGenSubtargetInfo.inc.h
+MipsDisassembler.po: MipsGenDisassemblerTables.inc.h
+MipsDisassembler.po: MipsGenInstrInfo.inc.h
+MipsDisassembler.po: MipsGenRegisterInfo.inc.h
+MipsDisassembler.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsinfo/Makefile.depend b/lib/clang/libllvmmipsinfo/Makefile.depend
new file mode 100644
index 0000000..04d7394
--- /dev/null
+++ b/lib/clang/libllvmmipsinfo/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsTargetInfo.o: MipsGenInstrInfo.inc.h
+MipsTargetInfo.o: MipsGenRegisterInfo.inc.h
+MipsTargetInfo.o: MipsGenSubtargetInfo.inc.h
+MipsTargetInfo.po: MipsGenInstrInfo.inc.h
+MipsTargetInfo.po: MipsGenRegisterInfo.inc.h
+MipsTargetInfo.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsinstprinter/Makefile.depend b/lib/clang/libllvmmipsinstprinter/Makefile.depend
new file mode 100644
index 0000000..2426018
--- /dev/null
+++ b/lib/clang/libllvmmipsinstprinter/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsInstPrinter.o: MipsGenAsmWriter.inc.h
+MipsInstPrinter.o: MipsGenInstrInfo.inc.h
+MipsInstPrinter.o: MipsGenRegisterInfo.inc.h
+MipsInstPrinter.o: MipsGenSubtargetInfo.inc.h
+MipsInstPrinter.po: MipsGenAsmWriter.inc.h
+MipsInstPrinter.po: MipsGenInstrInfo.inc.h
+MipsInstPrinter.po: MipsGenRegisterInfo.inc.h
+MipsInstPrinter.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmobjcarcopts/Makefile.depend b/lib/clang/libllvmobjcarcopts/Makefile.depend
new file mode 100644
index 0000000..dc5c465
--- /dev/null
+++ b/lib/clang/libllvmobjcarcopts/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ObjCARCUtil.o: Intrinsics.inc.h
+ObjCARCUtil.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmobject/Makefile.depend b/lib/clang/libllvmobject/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmobject/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmoption/Makefile.depend b/lib/clang/libllvmoption/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmoption/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmpowerpcasmparser/Makefile.depend b/lib/clang/libllvmpowerpcasmparser/Makefile.depend
new file mode 100644
index 0000000..6a84c65
--- /dev/null
+++ b/lib/clang/libllvmpowerpcasmparser/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmParser.o: PPCGenAsmMatcher.inc.h
+PPCAsmParser.o: PPCGenInstrInfo.inc.h
+PPCAsmParser.o: PPCGenRegisterInfo.inc.h
+PPCAsmParser.o: PPCGenSubtargetInfo.inc.h
+PPCAsmParser.po: PPCGenAsmMatcher.inc.h
+PPCAsmParser.po: PPCGenInstrInfo.inc.h
+PPCAsmParser.po: PPCGenRegisterInfo.inc.h
+PPCAsmParser.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpccodegen/Makefile.depend b/lib/clang/libllvmpowerpccodegen/Makefile.depend
new file mode 100644
index 0000000..d7ad295
--- /dev/null
+++ b/lib/clang/libllvmpowerpccodegen/Makefile.depend
@@ -0,0 +1,124 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmPrinter.o: PPCGenInstrInfo.inc.h
+PPCAsmPrinter.o: PPCGenRegisterInfo.inc.h
+PPCAsmPrinter.o: PPCGenSubtargetInfo.inc.h
+PPCAsmPrinter.po: PPCGenInstrInfo.inc.h
+PPCAsmPrinter.po: PPCGenRegisterInfo.inc.h
+PPCAsmPrinter.po: PPCGenSubtargetInfo.inc.h
+PPCBranchSelector.o: PPCGenInstrInfo.inc.h
+PPCBranchSelector.o: PPCGenRegisterInfo.inc.h
+PPCBranchSelector.o: PPCGenSubtargetInfo.inc.h
+PPCBranchSelector.po: PPCGenInstrInfo.inc.h
+PPCBranchSelector.po: PPCGenRegisterInfo.inc.h
+PPCBranchSelector.po: PPCGenSubtargetInfo.inc.h
+PPCCTRLoops.o: Intrinsics.inc.h
+PPCCTRLoops.o: PPCGenInstrInfo.inc.h
+PPCCTRLoops.o: PPCGenRegisterInfo.inc.h
+PPCCTRLoops.o: PPCGenSubtargetInfo.inc.h
+PPCCTRLoops.po: Intrinsics.inc.h
+PPCCTRLoops.po: PPCGenInstrInfo.inc.h
+PPCCTRLoops.po: PPCGenRegisterInfo.inc.h
+PPCCTRLoops.po: PPCGenSubtargetInfo.inc.h
+PPCFastISel.o: Intrinsics.inc.h
+PPCFastISel.o: PPCGenCallingConv.inc.h
+PPCFastISel.o: PPCGenFastISel.inc.h
+PPCFastISel.o: PPCGenInstrInfo.inc.h
+PPCFastISel.o: PPCGenRegisterInfo.inc.h
+PPCFastISel.o: PPCGenSubtargetInfo.inc.h
+PPCFastISel.po: Intrinsics.inc.h
+PPCFastISel.po: PPCGenCallingConv.inc.h
+PPCFastISel.po: PPCGenFastISel.inc.h
+PPCFastISel.po: PPCGenInstrInfo.inc.h
+PPCFastISel.po: PPCGenRegisterInfo.inc.h
+PPCFastISel.po: PPCGenSubtargetInfo.inc.h
+PPCFrameLowering.o: PPCGenInstrInfo.inc.h
+PPCFrameLowering.o: PPCGenRegisterInfo.inc.h
+PPCFrameLowering.o: PPCGenSubtargetInfo.inc.h
+PPCFrameLowering.po: PPCGenInstrInfo.inc.h
+PPCFrameLowering.po: PPCGenRegisterInfo.inc.h
+PPCFrameLowering.po: PPCGenSubtargetInfo.inc.h
+PPCHazardRecognizers.o: PPCGenInstrInfo.inc.h
+PPCHazardRecognizers.o: PPCGenRegisterInfo.inc.h
+PPCHazardRecognizers.o: PPCGenSubtargetInfo.inc.h
+PPCHazardRecognizers.po: PPCGenInstrInfo.inc.h
+PPCHazardRecognizers.po: PPCGenRegisterInfo.inc.h
+PPCHazardRecognizers.po: PPCGenSubtargetInfo.inc.h
+PPCISelDAGToDAG.o: Intrinsics.inc.h
+PPCISelDAGToDAG.o: PPCGenDAGISel.inc.h
+PPCISelDAGToDAG.o: PPCGenInstrInfo.inc.h
+PPCISelDAGToDAG.o: PPCGenRegisterInfo.inc.h
+PPCISelDAGToDAG.o: PPCGenSubtargetInfo.inc.h
+PPCISelDAGToDAG.po: Intrinsics.inc.h
+PPCISelDAGToDAG.po: PPCGenDAGISel.inc.h
+PPCISelDAGToDAG.po: PPCGenInstrInfo.inc.h
+PPCISelDAGToDAG.po: PPCGenRegisterInfo.inc.h
+PPCISelDAGToDAG.po: PPCGenSubtargetInfo.inc.h
+PPCISelLowering.o: Intrinsics.inc.h
+PPCISelLowering.o: PPCGenCallingConv.inc.h
+PPCISelLowering.o: PPCGenInstrInfo.inc.h
+PPCISelLowering.o: PPCGenRegisterInfo.inc.h
+PPCISelLowering.o: PPCGenSubtargetInfo.inc.h
+PPCISelLowering.po: Intrinsics.inc.h
+PPCISelLowering.po: PPCGenCallingConv.inc.h
+PPCISelLowering.po: PPCGenInstrInfo.inc.h
+PPCISelLowering.po: PPCGenRegisterInfo.inc.h
+PPCISelLowering.po: PPCGenSubtargetInfo.inc.h
+PPCInstrInfo.o: PPCGenInstrInfo.inc.h
+PPCInstrInfo.o: PPCGenRegisterInfo.inc.h
+PPCInstrInfo.o: PPCGenSubtargetInfo.inc.h
+PPCInstrInfo.po: PPCGenInstrInfo.inc.h
+PPCInstrInfo.po: PPCGenRegisterInfo.inc.h
+PPCInstrInfo.po: PPCGenSubtargetInfo.inc.h
+PPCMCInstLower.o: PPCGenInstrInfo.inc.h
+PPCMCInstLower.o: PPCGenRegisterInfo.inc.h
+PPCMCInstLower.o: PPCGenSubtargetInfo.inc.h
+PPCMCInstLower.po: PPCGenInstrInfo.inc.h
+PPCMCInstLower.po: PPCGenRegisterInfo.inc.h
+PPCMCInstLower.po: PPCGenSubtargetInfo.inc.h
+PPCRegisterInfo.o: PPCGenInstrInfo.inc.h
+PPCRegisterInfo.o: PPCGenRegisterInfo.inc.h
+PPCRegisterInfo.o: PPCGenSubtargetInfo.inc.h
+PPCRegisterInfo.po: PPCGenInstrInfo.inc.h
+PPCRegisterInfo.po: PPCGenRegisterInfo.inc.h
+PPCRegisterInfo.po: PPCGenSubtargetInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenInstrInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenRegisterInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenSubtargetInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenInstrInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenRegisterInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenSubtargetInfo.inc.h
+PPCSubtarget.o: PPCGenInstrInfo.inc.h
+PPCSubtarget.o: PPCGenRegisterInfo.inc.h
+PPCSubtarget.o: PPCGenSubtargetInfo.inc.h
+PPCSubtarget.po: PPCGenInstrInfo.inc.h
+PPCSubtarget.po: PPCGenRegisterInfo.inc.h
+PPCSubtarget.po: PPCGenSubtargetInfo.inc.h
+PPCTargetMachine.o: PPCGenInstrInfo.inc.h
+PPCTargetMachine.o: PPCGenRegisterInfo.inc.h
+PPCTargetMachine.o: PPCGenSubtargetInfo.inc.h
+PPCTargetMachine.po: PPCGenInstrInfo.inc.h
+PPCTargetMachine.po: PPCGenRegisterInfo.inc.h
+PPCTargetMachine.po: PPCGenSubtargetInfo.inc.h
+PPCTargetTransformInfo.o: Intrinsics.inc.h
+PPCTargetTransformInfo.o: PPCGenInstrInfo.inc.h
+PPCTargetTransformInfo.o: PPCGenRegisterInfo.inc.h
+PPCTargetTransformInfo.o: PPCGenSubtargetInfo.inc.h
+PPCTargetTransformInfo.po: Intrinsics.inc.h
+PPCTargetTransformInfo.po: PPCGenInstrInfo.inc.h
+PPCTargetTransformInfo.po: PPCGenRegisterInfo.inc.h
+PPCTargetTransformInfo.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcdesc/Makefile.depend b/lib/clang/libllvmpowerpcdesc/Makefile.depend
new file mode 100644
index 0000000..cb4da9d
--- /dev/null
+++ b/lib/clang/libllvmpowerpcdesc/Makefile.depend
@@ -0,0 +1,48 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmBackend.o: PPCGenInstrInfo.inc.h
+PPCAsmBackend.o: PPCGenRegisterInfo.inc.h
+PPCAsmBackend.o: PPCGenSubtargetInfo.inc.h
+PPCAsmBackend.po: PPCGenInstrInfo.inc.h
+PPCAsmBackend.po: PPCGenRegisterInfo.inc.h
+PPCAsmBackend.po: PPCGenSubtargetInfo.inc.h
+PPCELFObjectWriter.o: PPCGenInstrInfo.inc.h
+PPCELFObjectWriter.o: PPCGenRegisterInfo.inc.h
+PPCELFObjectWriter.o: PPCGenSubtargetInfo.inc.h
+PPCELFObjectWriter.po: PPCGenInstrInfo.inc.h
+PPCELFObjectWriter.po: PPCGenRegisterInfo.inc.h
+PPCELFObjectWriter.po: PPCGenSubtargetInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenInstrInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenMCCodeEmitter.inc.h
+PPCMCCodeEmitter.o: PPCGenRegisterInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenSubtargetInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenInstrInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenMCCodeEmitter.inc.h
+PPCMCCodeEmitter.po: PPCGenRegisterInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenSubtargetInfo.inc.h
+PPCMCTargetDesc.o: PPCGenInstrInfo.inc.h
+PPCMCTargetDesc.o: PPCGenRegisterInfo.inc.h
+PPCMCTargetDesc.o: PPCGenSubtargetInfo.inc.h
+PPCMCTargetDesc.po: PPCGenInstrInfo.inc.h
+PPCMCTargetDesc.po: PPCGenRegisterInfo.inc.h
+PPCMCTargetDesc.po: PPCGenSubtargetInfo.inc.h
+PPCMachObjectWriter.o: PPCGenInstrInfo.inc.h
+PPCMachObjectWriter.o: PPCGenRegisterInfo.inc.h
+PPCMachObjectWriter.o: PPCGenSubtargetInfo.inc.h
+PPCMachObjectWriter.po: PPCGenInstrInfo.inc.h
+PPCMachObjectWriter.po: PPCGenRegisterInfo.inc.h
+PPCMachObjectWriter.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcdisassembler/Makefile.depend b/lib/clang/libllvmpowerpcdisassembler/Makefile.depend
new file mode 100644
index 0000000..ae1219e
--- /dev/null
+++ b/lib/clang/libllvmpowerpcdisassembler/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCDisassembler.o: PPCGenDisassemblerTables.inc.h
+PPCDisassembler.o: PPCGenInstrInfo.inc.h
+PPCDisassembler.o: PPCGenRegisterInfo.inc.h
+PPCDisassembler.o: PPCGenSubtargetInfo.inc.h
+PPCDisassembler.po: PPCGenDisassemblerTables.inc.h
+PPCDisassembler.po: PPCGenInstrInfo.inc.h
+PPCDisassembler.po: PPCGenRegisterInfo.inc.h
+PPCDisassembler.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcinfo/Makefile.depend b/lib/clang/libllvmpowerpcinfo/Makefile.depend
new file mode 100644
index 0000000..2b87d9d
--- /dev/null
+++ b/lib/clang/libllvmpowerpcinfo/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PowerPCTargetInfo.o: PPCGenInstrInfo.inc.h
+PowerPCTargetInfo.o: PPCGenRegisterInfo.inc.h
+PowerPCTargetInfo.o: PPCGenSubtargetInfo.inc.h
+PowerPCTargetInfo.po: PPCGenInstrInfo.inc.h
+PowerPCTargetInfo.po: PPCGenRegisterInfo.inc.h
+PowerPCTargetInfo.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcinstprinter/Makefile.depend b/lib/clang/libllvmpowerpcinstprinter/Makefile.depend
new file mode 100644
index 0000000..9ddadfa
--- /dev/null
+++ b/lib/clang/libllvmpowerpcinstprinter/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCInstPrinter.o: PPCGenAsmWriter.inc.h
+PPCInstPrinter.o: PPCGenInstrInfo.inc.h
+PPCInstPrinter.o: PPCGenRegisterInfo.inc.h
+PPCInstPrinter.o: PPCGenSubtargetInfo.inc.h
+PPCInstPrinter.po: PPCGenAsmWriter.inc.h
+PPCInstPrinter.po: PPCGenInstrInfo.inc.h
+PPCInstPrinter.po: PPCGenRegisterInfo.inc.h
+PPCInstPrinter.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmprofiledata/Makefile.depend b/lib/clang/libllvmprofiledata/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmprofiledata/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmruntimedyld/Makefile.depend b/lib/clang/libllvmruntimedyld/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmruntimedyld/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmscalaropts/Makefile.depend b/lib/clang/libllvmscalaropts/Makefile.depend
new file mode 100644
index 0000000..c33d392
--- /dev/null
+++ b/lib/clang/libllvmscalaropts/Makefile.depend
@@ -0,0 +1,74 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ADCE.o: Intrinsics.inc.h
+ADCE.po: Intrinsics.inc.h
+AlignmentFromAssumptions.o: Intrinsics.inc.h
+AlignmentFromAssumptions.po: Intrinsics.inc.h
+ConstantHoisting.o: Intrinsics.inc.h
+ConstantHoisting.po: Intrinsics.inc.h
+DeadStoreElimination.o: Intrinsics.inc.h
+DeadStoreElimination.po: Intrinsics.inc.h
+EarlyCSE.o: Intrinsics.inc.h
+EarlyCSE.po: Intrinsics.inc.h
+GVN.o: Intrinsics.inc.h
+GVN.po: Intrinsics.inc.h
+IndVarSimplify.o: Intrinsics.inc.h
+IndVarSimplify.po: Intrinsics.inc.h
+JumpThreading.o: Intrinsics.inc.h
+JumpThreading.po: Intrinsics.inc.h
+LICM.o: Intrinsics.inc.h
+LICM.po: Intrinsics.inc.h
+LoopIdiomRecognize.o: Intrinsics.inc.h
+LoopIdiomRecognize.po: Intrinsics.inc.h
+LoopRerollPass.o: Intrinsics.inc.h
+LoopRerollPass.po: Intrinsics.inc.h
+LoopRotation.o: Intrinsics.inc.h
+LoopRotation.po: Intrinsics.inc.h
+LoopStrengthReduce.o: Intrinsics.inc.h
+LoopStrengthReduce.po: Intrinsics.inc.h
+LoopUnrollPass.o: Intrinsics.inc.h
+LoopUnrollPass.po: Intrinsics.inc.h
+LoopUnswitch.o: Intrinsics.inc.h
+LoopUnswitch.po: Intrinsics.inc.h
+LowerAtomic.o: Intrinsics.inc.h
+LowerAtomic.po: Intrinsics.inc.h
+MemCpyOptimizer.o: Intrinsics.inc.h
+MemCpyOptimizer.po: Intrinsics.inc.h
+MergedLoadStoreMotion.o: Intrinsics.inc.h
+MergedLoadStoreMotion.po: Intrinsics.inc.h
+PartiallyInlineLibCalls.o: Intrinsics.inc.h
+PartiallyInlineLibCalls.po: Intrinsics.inc.h
+Reassociate.o: Intrinsics.inc.h
+Reassociate.po: Intrinsics.inc.h
+SCCP.o: Intrinsics.inc.h
+SCCP.po: Intrinsics.inc.h
+SROA.o: Intrinsics.inc.h
+SROA.po: Intrinsics.inc.h
+ScalarReplAggregates.o: Intrinsics.inc.h
+ScalarReplAggregates.po: Intrinsics.inc.h
+Scalarizer.o: Intrinsics.inc.h
+Scalarizer.po: Intrinsics.inc.h
+SeparateConstOffsetFromGEP.o: Intrinsics.inc.h
+SeparateConstOffsetFromGEP.po: Intrinsics.inc.h
+SimplifyCFGPass.o: Intrinsics.inc.h
+SimplifyCFGPass.po: Intrinsics.inc.h
+Sink.o: Intrinsics.inc.h
+Sink.po: Intrinsics.inc.h
+StructurizeCFG.o: Intrinsics.inc.h
+StructurizeCFG.po: Intrinsics.inc.h
+TailRecursionElimination.o: Intrinsics.inc.h
+TailRecursionElimination.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmselectiondag/Makefile.depend b/lib/clang/libllvmselectiondag/Makefile.depend
new file mode 100644
index 0000000..9dbab9a
--- /dev/null
+++ b/lib/clang/libllvmselectiondag/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+FastISel.o: Intrinsics.inc.h
+FastISel.po: Intrinsics.inc.h
+FunctionLoweringInfo.o: Intrinsics.inc.h
+FunctionLoweringInfo.po: Intrinsics.inc.h
+SelectionDAG.o: Intrinsics.inc.h
+SelectionDAG.po: Intrinsics.inc.h
+SelectionDAGBuilder.o: Intrinsics.inc.h
+SelectionDAGBuilder.po: Intrinsics.inc.h
+SelectionDAGDumper.o: Intrinsics.inc.h
+SelectionDAGDumper.po: Intrinsics.inc.h
+SelectionDAGISel.o: Intrinsics.inc.h
+SelectionDAGISel.po: Intrinsics.inc.h
+StatepointLowering.o: Intrinsics.inc.h
+StatepointLowering.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcasmparser/Makefile.depend b/lib/clang/libllvmsparcasmparser/Makefile.depend
new file mode 100644
index 0000000..256ccd8
--- /dev/null
+++ b/lib/clang/libllvmsparcasmparser/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcAsmParser.o: SparcGenAsmMatcher.inc.h
+SparcAsmParser.o: SparcGenInstrInfo.inc.h
+SparcAsmParser.o: SparcGenRegisterInfo.inc.h
+SparcAsmParser.o: SparcGenSubtargetInfo.inc.h
+SparcAsmParser.po: SparcGenAsmMatcher.inc.h
+SparcAsmParser.po: SparcGenInstrInfo.inc.h
+SparcAsmParser.po: SparcGenRegisterInfo.inc.h
+SparcAsmParser.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparccodegen/Makefile.depend b/lib/clang/libllvmsparccodegen/Makefile.depend
new file mode 100644
index 0000000..64226f6
--- /dev/null
+++ b/lib/clang/libllvmsparccodegen/Makefile.depend
@@ -0,0 +1,82 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DelaySlotFiller.o: SparcGenInstrInfo.inc.h
+DelaySlotFiller.o: SparcGenRegisterInfo.inc.h
+DelaySlotFiller.o: SparcGenSubtargetInfo.inc.h
+DelaySlotFiller.po: SparcGenInstrInfo.inc.h
+DelaySlotFiller.po: SparcGenRegisterInfo.inc.h
+DelaySlotFiller.po: SparcGenSubtargetInfo.inc.h
+SparcAsmPrinter.o: SparcGenInstrInfo.inc.h
+SparcAsmPrinter.o: SparcGenRegisterInfo.inc.h
+SparcAsmPrinter.o: SparcGenSubtargetInfo.inc.h
+SparcAsmPrinter.po: SparcGenInstrInfo.inc.h
+SparcAsmPrinter.po: SparcGenRegisterInfo.inc.h
+SparcAsmPrinter.po: SparcGenSubtargetInfo.inc.h
+SparcFrameLowering.o: SparcGenInstrInfo.inc.h
+SparcFrameLowering.o: SparcGenRegisterInfo.inc.h
+SparcFrameLowering.o: SparcGenSubtargetInfo.inc.h
+SparcFrameLowering.po: SparcGenInstrInfo.inc.h
+SparcFrameLowering.po: SparcGenRegisterInfo.inc.h
+SparcFrameLowering.po: SparcGenSubtargetInfo.inc.h
+SparcISelDAGToDAG.o: Intrinsics.inc.h
+SparcISelDAGToDAG.o: SparcGenDAGISel.inc.h
+SparcISelDAGToDAG.o: SparcGenInstrInfo.inc.h
+SparcISelDAGToDAG.o: SparcGenRegisterInfo.inc.h
+SparcISelDAGToDAG.o: SparcGenSubtargetInfo.inc.h
+SparcISelDAGToDAG.po: Intrinsics.inc.h
+SparcISelDAGToDAG.po: SparcGenDAGISel.inc.h
+SparcISelDAGToDAG.po: SparcGenInstrInfo.inc.h
+SparcISelDAGToDAG.po: SparcGenRegisterInfo.inc.h
+SparcISelDAGToDAG.po: SparcGenSubtargetInfo.inc.h
+SparcISelLowering.o: SparcGenCallingConv.inc.h
+SparcISelLowering.o: SparcGenInstrInfo.inc.h
+SparcISelLowering.o: SparcGenRegisterInfo.inc.h
+SparcISelLowering.o: SparcGenSubtargetInfo.inc.h
+SparcISelLowering.po: SparcGenCallingConv.inc.h
+SparcISelLowering.po: SparcGenInstrInfo.inc.h
+SparcISelLowering.po: SparcGenRegisterInfo.inc.h
+SparcISelLowering.po: SparcGenSubtargetInfo.inc.h
+SparcInstrInfo.o: SparcGenInstrInfo.inc.h
+SparcInstrInfo.o: SparcGenRegisterInfo.inc.h
+SparcInstrInfo.o: SparcGenSubtargetInfo.inc.h
+SparcInstrInfo.po: SparcGenInstrInfo.inc.h
+SparcInstrInfo.po: SparcGenRegisterInfo.inc.h
+SparcInstrInfo.po: SparcGenSubtargetInfo.inc.h
+SparcMCInstLower.o: SparcGenInstrInfo.inc.h
+SparcMCInstLower.o: SparcGenRegisterInfo.inc.h
+SparcMCInstLower.o: SparcGenSubtargetInfo.inc.h
+SparcMCInstLower.po: SparcGenInstrInfo.inc.h
+SparcMCInstLower.po: SparcGenRegisterInfo.inc.h
+SparcMCInstLower.po: SparcGenSubtargetInfo.inc.h
+SparcRegisterInfo.o: SparcGenInstrInfo.inc.h
+SparcRegisterInfo.o: SparcGenRegisterInfo.inc.h
+SparcRegisterInfo.o: SparcGenSubtargetInfo.inc.h
+SparcRegisterInfo.po: SparcGenInstrInfo.inc.h
+SparcRegisterInfo.po: SparcGenRegisterInfo.inc.h
+SparcRegisterInfo.po: SparcGenSubtargetInfo.inc.h
+SparcSubtarget.o: SparcGenInstrInfo.inc.h
+SparcSubtarget.o: SparcGenRegisterInfo.inc.h
+SparcSubtarget.o: SparcGenSubtargetInfo.inc.h
+SparcSubtarget.po: SparcGenInstrInfo.inc.h
+SparcSubtarget.po: SparcGenRegisterInfo.inc.h
+SparcSubtarget.po: SparcGenSubtargetInfo.inc.h
+SparcTargetMachine.o: SparcGenInstrInfo.inc.h
+SparcTargetMachine.o: SparcGenRegisterInfo.inc.h
+SparcTargetMachine.o: SparcGenSubtargetInfo.inc.h
+SparcTargetMachine.po: SparcGenInstrInfo.inc.h
+SparcTargetMachine.po: SparcGenRegisterInfo.inc.h
+SparcTargetMachine.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcdesc/Makefile.depend b/lib/clang/libllvmsparcdesc/Makefile.depend
new file mode 100644
index 0000000..5b5db5f
--- /dev/null
+++ b/lib/clang/libllvmsparcdesc/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcAsmBackend.o: SparcGenInstrInfo.inc.h
+SparcAsmBackend.o: SparcGenRegisterInfo.inc.h
+SparcAsmBackend.o: SparcGenSubtargetInfo.inc.h
+SparcAsmBackend.po: SparcGenInstrInfo.inc.h
+SparcAsmBackend.po: SparcGenRegisterInfo.inc.h
+SparcAsmBackend.po: SparcGenSubtargetInfo.inc.h
+SparcELFObjectWriter.o: SparcGenInstrInfo.inc.h
+SparcELFObjectWriter.o: SparcGenRegisterInfo.inc.h
+SparcELFObjectWriter.o: SparcGenSubtargetInfo.inc.h
+SparcELFObjectWriter.po: SparcGenInstrInfo.inc.h
+SparcELFObjectWriter.po: SparcGenRegisterInfo.inc.h
+SparcELFObjectWriter.po: SparcGenSubtargetInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenInstrInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenMCCodeEmitter.inc.h
+SparcMCCodeEmitter.o: SparcGenRegisterInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenSubtargetInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenInstrInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenMCCodeEmitter.inc.h
+SparcMCCodeEmitter.po: SparcGenRegisterInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenSubtargetInfo.inc.h
+SparcMCTargetDesc.o: SparcGenInstrInfo.inc.h
+SparcMCTargetDesc.o: SparcGenRegisterInfo.inc.h
+SparcMCTargetDesc.o: SparcGenSubtargetInfo.inc.h
+SparcMCTargetDesc.po: SparcGenInstrInfo.inc.h
+SparcMCTargetDesc.po: SparcGenRegisterInfo.inc.h
+SparcMCTargetDesc.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcdisassembler/Makefile.depend b/lib/clang/libllvmsparcdisassembler/Makefile.depend
new file mode 100644
index 0000000..213789e
--- /dev/null
+++ b/lib/clang/libllvmsparcdisassembler/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcDisassembler.o: SparcGenDisassemblerTables.inc.h
+SparcDisassembler.o: SparcGenInstrInfo.inc.h
+SparcDisassembler.o: SparcGenRegisterInfo.inc.h
+SparcDisassembler.o: SparcGenSubtargetInfo.inc.h
+SparcDisassembler.po: SparcGenDisassemblerTables.inc.h
+SparcDisassembler.po: SparcGenInstrInfo.inc.h
+SparcDisassembler.po: SparcGenRegisterInfo.inc.h
+SparcDisassembler.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcinfo/Makefile.depend b/lib/clang/libllvmsparcinfo/Makefile.depend
new file mode 100644
index 0000000..ac56ca5
--- /dev/null
+++ b/lib/clang/libllvmsparcinfo/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcTargetInfo.o: SparcGenInstrInfo.inc.h
+SparcTargetInfo.o: SparcGenRegisterInfo.inc.h
+SparcTargetInfo.o: SparcGenSubtargetInfo.inc.h
+SparcTargetInfo.po: SparcGenInstrInfo.inc.h
+SparcTargetInfo.po: SparcGenRegisterInfo.inc.h
+SparcTargetInfo.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcinstprinter/Makefile.depend b/lib/clang/libllvmsparcinstprinter/Makefile.depend
new file mode 100644
index 0000000..6571fb4
--- /dev/null
+++ b/lib/clang/libllvmsparcinstprinter/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcInstPrinter.o: SparcGenAsmWriter.inc.h
+SparcInstPrinter.o: SparcGenInstrInfo.inc.h
+SparcInstPrinter.o: SparcGenRegisterInfo.inc.h
+SparcInstPrinter.o: SparcGenSubtargetInfo.inc.h
+SparcInstPrinter.po: SparcGenAsmWriter.inc.h
+SparcInstPrinter.po: SparcGenInstrInfo.inc.h
+SparcInstPrinter.po: SparcGenRegisterInfo.inc.h
+SparcInstPrinter.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsupport/Makefile.depend b/lib/clang/libllvmsupport/Makefile.depend
new file mode 100644
index 0000000..424f5a8
--- /dev/null
+++ b/lib/clang/libllvmsupport/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/libexecinfo \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtablegen/Makefile.depend b/lib/clang/libllvmtablegen/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmtablegen/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtarget/Makefile.depend b/lib/clang/libllvmtarget/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmtarget/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtransformutils/Makefile.depend b/lib/clang/libllvmtransformutils/Makefile.depend
new file mode 100644
index 0000000..f3a7d48
--- /dev/null
+++ b/lib/clang/libllvmtransformutils/Makefile.depend
@@ -0,0 +1,46 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BasicBlockUtils.o: Intrinsics.inc.h
+BasicBlockUtils.po: Intrinsics.inc.h
+BuildLibCalls.o: Intrinsics.inc.h
+BuildLibCalls.po: Intrinsics.inc.h
+CloneFunction.o: Intrinsics.inc.h
+CloneFunction.po: Intrinsics.inc.h
+CodeExtractor.o: Intrinsics.inc.h
+CodeExtractor.po: Intrinsics.inc.h
+GlobalStatus.o: Intrinsics.inc.h
+GlobalStatus.po: Intrinsics.inc.h
+InlineFunction.o: Intrinsics.inc.h
+InlineFunction.po: Intrinsics.inc.h
+IntegerDivision.o: Intrinsics.inc.h
+IntegerDivision.po: Intrinsics.inc.h
+Local.o: Intrinsics.inc.h
+Local.po: Intrinsics.inc.h
+LoopSimplify.o: Intrinsics.inc.h
+LoopSimplify.po: Intrinsics.inc.h
+LowerExpectIntrinsic.o: Intrinsics.inc.h
+LowerExpectIntrinsic.po: Intrinsics.inc.h
+PromoteMemoryToRegister.o: Intrinsics.inc.h
+PromoteMemoryToRegister.po: Intrinsics.inc.h
+SSAUpdater.o: Intrinsics.inc.h
+SSAUpdater.po: Intrinsics.inc.h
+SimplifyCFG.o: Intrinsics.inc.h
+SimplifyCFG.po: Intrinsics.inc.h
+SimplifyIndVar.o: Intrinsics.inc.h
+SimplifyIndVar.po: Intrinsics.inc.h
+SimplifyLibCalls.o: Intrinsics.inc.h
+SimplifyLibCalls.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmvectorize/Makefile.depend b/lib/clang/libllvmvectorize/Makefile.depend
new file mode 100644
index 0000000..daeb031
--- /dev/null
+++ b/lib/clang/libllvmvectorize/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BBVectorize.o: Intrinsics.inc.h
+BBVectorize.po: Intrinsics.inc.h
+LoopVectorize.o: Intrinsics.inc.h
+LoopVectorize.po: Intrinsics.inc.h
+SLPVectorizer.o: Intrinsics.inc.h
+SLPVectorizer.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmx86asmparser/Makefile.depend b/lib/clang/libllvmx86asmparser/Makefile.depend
new file mode 100644
index 0000000..d4b04c6
--- /dev/null
+++ b/lib/clang/libllvmx86asmparser/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmInstrumentation.o: X86GenInstrInfo.inc.h
+X86AsmInstrumentation.o: X86GenRegisterInfo.inc.h
+X86AsmInstrumentation.o: X86GenSubtargetInfo.inc.h
+X86AsmInstrumentation.po: X86GenInstrInfo.inc.h
+X86AsmInstrumentation.po: X86GenRegisterInfo.inc.h
+X86AsmInstrumentation.po: X86GenSubtargetInfo.inc.h
+X86AsmParser.o: X86GenAsmMatcher.inc.h
+X86AsmParser.o: X86GenInstrInfo.inc.h
+X86AsmParser.o: X86GenRegisterInfo.inc.h
+X86AsmParser.o: X86GenSubtargetInfo.inc.h
+X86AsmParser.po: X86GenAsmMatcher.inc.h
+X86AsmParser.po: X86GenInstrInfo.inc.h
+X86AsmParser.po: X86GenRegisterInfo.inc.h
+X86AsmParser.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86codegen/Makefile.depend b/lib/clang/libllvmx86codegen/Makefile.depend
new file mode 100644
index 0000000..889d747
--- /dev/null
+++ b/lib/clang/libllvmx86codegen/Makefile.depend
@@ -0,0 +1,136 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmPrinter.o: X86GenInstrInfo.inc.h
+X86AsmPrinter.o: X86GenRegisterInfo.inc.h
+X86AsmPrinter.o: X86GenSubtargetInfo.inc.h
+X86AsmPrinter.po: X86GenInstrInfo.inc.h
+X86AsmPrinter.po: X86GenRegisterInfo.inc.h
+X86AsmPrinter.po: X86GenSubtargetInfo.inc.h
+X86CallFrameOptimization.o: X86GenInstrInfo.inc.h
+X86CallFrameOptimization.o: X86GenRegisterInfo.inc.h
+X86CallFrameOptimization.o: X86GenSubtargetInfo.inc.h
+X86CallFrameOptimization.po: X86GenInstrInfo.inc.h
+X86CallFrameOptimization.po: X86GenRegisterInfo.inc.h
+X86CallFrameOptimization.po: X86GenSubtargetInfo.inc.h
+X86FastISel.o: Intrinsics.inc.h
+X86FastISel.o: X86GenCallingConv.inc.h
+X86FastISel.o: X86GenFastISel.inc.h
+X86FastISel.o: X86GenInstrInfo.inc.h
+X86FastISel.o: X86GenRegisterInfo.inc.h
+X86FastISel.o: X86GenSubtargetInfo.inc.h
+X86FastISel.po: Intrinsics.inc.h
+X86FastISel.po: X86GenCallingConv.inc.h
+X86FastISel.po: X86GenFastISel.inc.h
+X86FastISel.po: X86GenInstrInfo.inc.h
+X86FastISel.po: X86GenRegisterInfo.inc.h
+X86FastISel.po: X86GenSubtargetInfo.inc.h
+X86FixupLEAs.o: X86GenInstrInfo.inc.h
+X86FixupLEAs.o: X86GenRegisterInfo.inc.h
+X86FixupLEAs.o: X86GenSubtargetInfo.inc.h
+X86FixupLEAs.po: X86GenInstrInfo.inc.h
+X86FixupLEAs.po: X86GenRegisterInfo.inc.h
+X86FixupLEAs.po: X86GenSubtargetInfo.inc.h
+X86FloatingPoint.o: X86GenInstrInfo.inc.h
+X86FloatingPoint.o: X86GenRegisterInfo.inc.h
+X86FloatingPoint.o: X86GenSubtargetInfo.inc.h
+X86FloatingPoint.po: X86GenInstrInfo.inc.h
+X86FloatingPoint.po: X86GenRegisterInfo.inc.h
+X86FloatingPoint.po: X86GenSubtargetInfo.inc.h
+X86FrameLowering.o: X86GenInstrInfo.inc.h
+X86FrameLowering.o: X86GenRegisterInfo.inc.h
+X86FrameLowering.o: X86GenSubtargetInfo.inc.h
+X86FrameLowering.po: X86GenInstrInfo.inc.h
+X86FrameLowering.po: X86GenRegisterInfo.inc.h
+X86FrameLowering.po: X86GenSubtargetInfo.inc.h
+X86ISelDAGToDAG.o: Intrinsics.inc.h
+X86ISelDAGToDAG.o: X86GenDAGISel.inc.h
+X86ISelDAGToDAG.o: X86GenInstrInfo.inc.h
+X86ISelDAGToDAG.o: X86GenRegisterInfo.inc.h
+X86ISelDAGToDAG.o: X86GenSubtargetInfo.inc.h
+X86ISelDAGToDAG.po: Intrinsics.inc.h
+X86ISelDAGToDAG.po: X86GenDAGISel.inc.h
+X86ISelDAGToDAG.po: X86GenInstrInfo.inc.h
+X86ISelDAGToDAG.po: X86GenRegisterInfo.inc.h
+X86ISelDAGToDAG.po: X86GenSubtargetInfo.inc.h
+X86ISelLowering.o: Intrinsics.inc.h
+X86ISelLowering.o: X86GenCallingConv.inc.h
+X86ISelLowering.o: X86GenInstrInfo.inc.h
+X86ISelLowering.o: X86GenRegisterInfo.inc.h
+X86ISelLowering.o: X86GenSubtargetInfo.inc.h
+X86ISelLowering.po: Intrinsics.inc.h
+X86ISelLowering.po: X86GenCallingConv.inc.h
+X86ISelLowering.po: X86GenInstrInfo.inc.h
+X86ISelLowering.po: X86GenRegisterInfo.inc.h
+X86ISelLowering.po: X86GenSubtargetInfo.inc.h
+X86InstrInfo.o: X86GenInstrInfo.inc.h
+X86InstrInfo.o: X86GenRegisterInfo.inc.h
+X86InstrInfo.o: X86GenSubtargetInfo.inc.h
+X86InstrInfo.po: X86GenInstrInfo.inc.h
+X86InstrInfo.po: X86GenRegisterInfo.inc.h
+X86InstrInfo.po: X86GenSubtargetInfo.inc.h
+X86MCInstLower.o: X86GenInstrInfo.inc.h
+X86MCInstLower.o: X86GenRegisterInfo.inc.h
+X86MCInstLower.o: X86GenSubtargetInfo.inc.h
+X86MCInstLower.po: X86GenInstrInfo.inc.h
+X86MCInstLower.po: X86GenRegisterInfo.inc.h
+X86MCInstLower.po: X86GenSubtargetInfo.inc.h
+X86MachineFunctionInfo.o: X86GenRegisterInfo.inc.h
+X86MachineFunctionInfo.po: X86GenRegisterInfo.inc.h
+X86PadShortFunction.o: X86GenInstrInfo.inc.h
+X86PadShortFunction.o: X86GenRegisterInfo.inc.h
+X86PadShortFunction.o: X86GenSubtargetInfo.inc.h
+X86PadShortFunction.po: X86GenInstrInfo.inc.h
+X86PadShortFunction.po: X86GenRegisterInfo.inc.h
+X86PadShortFunction.po: X86GenSubtargetInfo.inc.h
+X86RegisterInfo.o: X86GenInstrInfo.inc.h
+X86RegisterInfo.o: X86GenRegisterInfo.inc.h
+X86RegisterInfo.o: X86GenSubtargetInfo.inc.h
+X86RegisterInfo.po: X86GenInstrInfo.inc.h
+X86RegisterInfo.po: X86GenRegisterInfo.inc.h
+X86RegisterInfo.po: X86GenSubtargetInfo.inc.h
+X86SelectionDAGInfo.o: X86GenInstrInfo.inc.h
+X86SelectionDAGInfo.o: X86GenRegisterInfo.inc.h
+X86SelectionDAGInfo.o: X86GenSubtargetInfo.inc.h
+X86SelectionDAGInfo.po: X86GenInstrInfo.inc.h
+X86SelectionDAGInfo.po: X86GenRegisterInfo.inc.h
+X86SelectionDAGInfo.po: X86GenSubtargetInfo.inc.h
+X86Subtarget.o: X86GenInstrInfo.inc.h
+X86Subtarget.o: X86GenRegisterInfo.inc.h
+X86Subtarget.o: X86GenSubtargetInfo.inc.h
+X86Subtarget.po: X86GenInstrInfo.inc.h
+X86Subtarget.po: X86GenRegisterInfo.inc.h
+X86Subtarget.po: X86GenSubtargetInfo.inc.h
+X86TargetMachine.o: X86GenInstrInfo.inc.h
+X86TargetMachine.o: X86GenRegisterInfo.inc.h
+X86TargetMachine.o: X86GenSubtargetInfo.inc.h
+X86TargetMachine.po: X86GenInstrInfo.inc.h
+X86TargetMachine.po: X86GenRegisterInfo.inc.h
+X86TargetMachine.po: X86GenSubtargetInfo.inc.h
+X86TargetTransformInfo.o: Intrinsics.inc.h
+X86TargetTransformInfo.o: X86GenInstrInfo.inc.h
+X86TargetTransformInfo.o: X86GenRegisterInfo.inc.h
+X86TargetTransformInfo.o: X86GenSubtargetInfo.inc.h
+X86TargetTransformInfo.po: Intrinsics.inc.h
+X86TargetTransformInfo.po: X86GenInstrInfo.inc.h
+X86TargetTransformInfo.po: X86GenRegisterInfo.inc.h
+X86TargetTransformInfo.po: X86GenSubtargetInfo.inc.h
+X86VZeroUpper.o: X86GenInstrInfo.inc.h
+X86VZeroUpper.o: X86GenRegisterInfo.inc.h
+X86VZeroUpper.o: X86GenSubtargetInfo.inc.h
+X86VZeroUpper.po: X86GenInstrInfo.inc.h
+X86VZeroUpper.po: X86GenRegisterInfo.inc.h
+X86VZeroUpper.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86desc/Makefile.depend b/lib/clang/libllvmx86desc/Makefile.depend
new file mode 100644
index 0000000..b68230d
--- /dev/null
+++ b/lib/clang/libllvmx86desc/Makefile.depend
@@ -0,0 +1,70 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmBackend.o: X86GenInstrInfo.inc.h
+X86AsmBackend.o: X86GenRegisterInfo.inc.h
+X86AsmBackend.o: X86GenSubtargetInfo.inc.h
+X86AsmBackend.po: X86GenInstrInfo.inc.h
+X86AsmBackend.po: X86GenRegisterInfo.inc.h
+X86AsmBackend.po: X86GenSubtargetInfo.inc.h
+X86ELFObjectWriter.o: X86GenInstrInfo.inc.h
+X86ELFObjectWriter.o: X86GenRegisterInfo.inc.h
+X86ELFObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86ELFObjectWriter.po: X86GenInstrInfo.inc.h
+X86ELFObjectWriter.po: X86GenRegisterInfo.inc.h
+X86ELFObjectWriter.po: X86GenSubtargetInfo.inc.h
+X86ELFRelocationInfo.o: X86GenInstrInfo.inc.h
+X86ELFRelocationInfo.o: X86GenRegisterInfo.inc.h
+X86ELFRelocationInfo.o: X86GenSubtargetInfo.inc.h
+X86ELFRelocationInfo.po: X86GenInstrInfo.inc.h
+X86ELFRelocationInfo.po: X86GenRegisterInfo.inc.h
+X86ELFRelocationInfo.po: X86GenSubtargetInfo.inc.h
+X86MCCodeEmitter.o: X86GenInstrInfo.inc.h
+X86MCCodeEmitter.o: X86GenRegisterInfo.inc.h
+X86MCCodeEmitter.o: X86GenSubtargetInfo.inc.h
+X86MCCodeEmitter.po: X86GenInstrInfo.inc.h
+X86MCCodeEmitter.po: X86GenRegisterInfo.inc.h
+X86MCCodeEmitter.po: X86GenSubtargetInfo.inc.h
+X86MCTargetDesc.o: X86GenInstrInfo.inc.h
+X86MCTargetDesc.o: X86GenRegisterInfo.inc.h
+X86MCTargetDesc.o: X86GenSubtargetInfo.inc.h
+X86MCTargetDesc.po: X86GenInstrInfo.inc.h
+X86MCTargetDesc.po: X86GenRegisterInfo.inc.h
+X86MCTargetDesc.po: X86GenSubtargetInfo.inc.h
+X86MachORelocationInfo.o: X86GenInstrInfo.inc.h
+X86MachORelocationInfo.o: X86GenRegisterInfo.inc.h
+X86MachORelocationInfo.o: X86GenSubtargetInfo.inc.h
+X86MachORelocationInfo.po: X86GenInstrInfo.inc.h
+X86MachORelocationInfo.po: X86GenRegisterInfo.inc.h
+X86MachORelocationInfo.po: X86GenSubtargetInfo.inc.h
+X86MachObjectWriter.o: X86GenInstrInfo.inc.h
+X86MachObjectWriter.o: X86GenRegisterInfo.inc.h
+X86MachObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86MachObjectWriter.po: X86GenInstrInfo.inc.h
+X86MachObjectWriter.po: X86GenRegisterInfo.inc.h
+X86MachObjectWriter.po: X86GenSubtargetInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenInstrInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenRegisterInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenInstrInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenRegisterInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenSubtargetInfo.inc.h
+X86WinCOFFStreamer.o: X86GenInstrInfo.inc.h
+X86WinCOFFStreamer.o: X86GenRegisterInfo.inc.h
+X86WinCOFFStreamer.o: X86GenSubtargetInfo.inc.h
+X86WinCOFFStreamer.po: X86GenInstrInfo.inc.h
+X86WinCOFFStreamer.po: X86GenRegisterInfo.inc.h
+X86WinCOFFStreamer.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86disassembler/Makefile.depend b/lib/clang/libllvmx86disassembler/Makefile.depend
new file mode 100644
index 0000000..e463379
--- /dev/null
+++ b/lib/clang/libllvmx86disassembler/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86Disassembler.o: X86GenInstrInfo.inc.h
+X86Disassembler.o: X86GenRegisterInfo.inc.h
+X86Disassembler.o: X86GenSubtargetInfo.inc.h
+X86Disassembler.po: X86GenInstrInfo.inc.h
+X86Disassembler.po: X86GenRegisterInfo.inc.h
+X86Disassembler.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86info/Makefile.depend b/lib/clang/libllvmx86info/Makefile.depend
new file mode 100644
index 0000000..511a4d1
--- /dev/null
+++ b/lib/clang/libllvmx86info/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86TargetInfo.o: X86GenInstrInfo.inc.h
+X86TargetInfo.o: X86GenRegisterInfo.inc.h
+X86TargetInfo.o: X86GenSubtargetInfo.inc.h
+X86TargetInfo.po: X86GenInstrInfo.inc.h
+X86TargetInfo.po: X86GenRegisterInfo.inc.h
+X86TargetInfo.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86instprinter/Makefile.depend b/lib/clang/libllvmx86instprinter/Makefile.depend
new file mode 100644
index 0000000..dfc7c0f
--- /dev/null
+++ b/lib/clang/libllvmx86instprinter/Makefile.depend
@@ -0,0 +1,38 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86ATTInstPrinter.o: X86GenAsmWriter.inc.h
+X86ATTInstPrinter.o: X86GenInstrInfo.inc.h
+X86ATTInstPrinter.o: X86GenRegisterInfo.inc.h
+X86ATTInstPrinter.o: X86GenSubtargetInfo.inc.h
+X86ATTInstPrinter.po: X86GenAsmWriter.inc.h
+X86ATTInstPrinter.po: X86GenInstrInfo.inc.h
+X86ATTInstPrinter.po: X86GenRegisterInfo.inc.h
+X86ATTInstPrinter.po: X86GenSubtargetInfo.inc.h
+X86InstComments.o: X86GenInstrInfo.inc.h
+X86InstComments.o: X86GenRegisterInfo.inc.h
+X86InstComments.o: X86GenSubtargetInfo.inc.h
+X86InstComments.po: X86GenInstrInfo.inc.h
+X86InstComments.po: X86GenRegisterInfo.inc.h
+X86InstComments.po: X86GenSubtargetInfo.inc.h
+X86IntelInstPrinter.o: X86GenAsmWriter1.inc.h
+X86IntelInstPrinter.o: X86GenInstrInfo.inc.h
+X86IntelInstPrinter.o: X86GenRegisterInfo.inc.h
+X86IntelInstPrinter.o: X86GenSubtargetInfo.inc.h
+X86IntelInstPrinter.po: X86GenAsmWriter1.inc.h
+X86IntelInstPrinter.po: X86GenInstrInfo.inc.h
+X86IntelInstPrinter.po: X86GenRegisterInfo.inc.h
+X86IntelInstPrinter.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86utils/Makefile.depend b/lib/clang/libllvmx86utils/Makefile.depend
new file mode 100644
index 0000000..3e7f3f5
--- /dev/null
+++ b/lib/clang/libllvmx86utils/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/Makefile.inc b/lib/csu/Makefile.inc
index 95d5c5e..ff77f66 100644
--- a/lib/csu/Makefile.inc
+++ b/lib/csu/Makefile.inc
@@ -7,3 +7,8 @@ SED_FIX_NOTE = -i "" -e '/\.note\.tag/s/progbits/note/'
NO_WMISSING_VARIABLE_DECLARATIONS=
.include "../Makefile.inc"
+
+.if ${MK_STAGING} == "yes" && ${.TARGETS:Nall} == ""
+FILES?= ${OBJS}
+FILESDIR?= ${LIBDIR}
+.endif
diff --git a/lib/csu/amd64/Makefile.depend b/lib/csu/amd64/Makefile.depend
new file mode 100644
index 0000000..79506ce
--- /dev/null
+++ b/lib/csu/amd64/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/arm/Makefile.depend b/lib/csu/arm/Makefile.depend
new file mode 100644
index 0000000..e8d7c61
--- /dev/null
+++ b/lib/csu/arm/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/i386/Makefile.depend b/lib/csu/i386/Makefile.depend
new file mode 100644
index 0000000..76d719e
--- /dev/null
+++ b/lib/csu/i386/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/mips/Makefile.depend b/lib/csu/mips/Makefile.depend
new file mode 100644
index 0000000..e8d7c61
--- /dev/null
+++ b/lib/csu/mips/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/powerpc/Makefile.depend b/lib/csu/powerpc/Makefile.depend
new file mode 100644
index 0000000..e8d7c61
--- /dev/null
+++ b/lib/csu/powerpc/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/powerpc64/Makefile.depend b/lib/csu/powerpc64/Makefile.depend
new file mode 100644
index 0000000..e8d7c61
--- /dev/null
+++ b/lib/csu/powerpc64/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/sparc64/Makefile.depend b/lib/csu/sparc64/Makefile.depend
new file mode 100644
index 0000000..e8d7c61
--- /dev/null
+++ b/lib/csu/sparc64/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/libalias/Makefile.depend b/lib/libalias/libalias/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libalias/libalias/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/cuseeme/Makefile.depend b/lib/libalias/modules/cuseeme/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/cuseeme/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/dummy/Makefile.depend b/lib/libalias/modules/dummy/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/dummy/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/ftp/Makefile.depend b/lib/libalias/modules/ftp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/ftp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/irc/Makefile.depend b/lib/libalias/modules/irc/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/irc/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/nbt/Makefile.depend b/lib/libalias/modules/nbt/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/nbt/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/pptp/Makefile.depend b/lib/libalias/modules/pptp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/pptp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/skinny/Makefile.depend b/lib/libalias/modules/skinny/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/skinny/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/smedia/Makefile.depend b/lib/libalias/modules/smedia/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/lib/libalias/modules/smedia/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libarchive/Makefile.depend b/lib/libarchive/Makefile.depend
new file mode 100644
index 0000000..b254993
--- /dev/null
+++ b/lib/libarchive/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libauditd/Makefile.depend b/lib/libauditd/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libauditd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbegemot/Makefile.depend b/lib/libbegemot/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libbegemot/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libblocksruntime/Makefile.depend b/lib/libblocksruntime/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libblocksruntime/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbluetooth/Makefile.depend b/lib/libbluetooth/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libbluetooth/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbsm/Makefile.depend b/lib/libbsm/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libbsm/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbsnmp/libbsnmp/Makefile.depend b/lib/libbsnmp/libbsnmp/Makefile.depend
new file mode 100644
index 0000000..5781764
--- /dev/null
+++ b/lib/libbsnmp/libbsnmp/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbz2/Makefile.depend b/lib/libbz2/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libbz2/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libc++/Makefile b/lib/libc++/Makefile
index c254ef3..469ee47 100644
--- a/lib/libc++/Makefile
+++ b/lib/libc++/Makefile
@@ -208,4 +208,8 @@ afterinstall:
${.OBJDIR}/libstdc++.a
.endif
+# avoid cyclic dependency
+CFLAGS+= -I${LIBCXXRTDIR}
+GENDIRDEPS_FILTER= N*/libcxxrt
+
.include <bsd.lib.mk>
diff --git a/lib/libc++/Makefile.depend b/lib/libc++/Makefile.depend
new file mode 100644
index 0000000..cb81639
--- /dev/null
+++ b/lib/libc++/Makefile.depend
@@ -0,0 +1,37 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cxxrt_auxhelper.o: cxxrt_auxhelper.cc
+cxxrt_auxhelper.po: cxxrt_auxhelper.cc
+cxxrt_dynamic_cast.o: cxxrt_dynamic_cast.cc
+cxxrt_dynamic_cast.po: cxxrt_dynamic_cast.cc
+cxxrt_exception.o: cxxrt_exception.cc
+cxxrt_exception.po: cxxrt_exception.cc
+cxxrt_guard.o: cxxrt_guard.cc
+cxxrt_guard.po: cxxrt_guard.cc
+cxxrt_libelftc_dem_gnu3.o: cxxrt_libelftc_dem_gnu3.c
+cxxrt_libelftc_dem_gnu3.po: cxxrt_libelftc_dem_gnu3.c
+cxxrt_memory.o: cxxrt_memory.cc
+cxxrt_memory.po: cxxrt_memory.cc
+cxxrt_stdexcept.o: cxxrt_stdexcept.cc
+cxxrt_stdexcept.po: cxxrt_stdexcept.cc
+cxxrt_terminate.o: cxxrt_terminate.cc
+cxxrt_terminate.po: cxxrt_terminate.cc
+cxxrt_typeinfo.o: cxxrt_typeinfo.cc
+cxxrt_typeinfo.po: cxxrt_typeinfo.cc
+.endif
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index 93ab138..b6d3f9f 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -163,6 +163,24 @@ SUBDIR+= tests
.include <bsd.lib.mk>
+.if !defined(_SKIP_BUILD)
+# We need libutil.h, get it directly to avoid
+# recording a build dependency
+CFLAGS+= -I${.CURDIR:H}/libutil
+# Same issue with libm
+MSUN_ARCH_SUBDIR != ${MAKE} -B -C ${.CURDIR:H}/msun -V ARCH_SUBDIR
+# unfortunately msun/src contains both private and public headers
+CFLAGS+= -I${.CURDIR:H}/msun/${MSUN_ARCH_SUBDIR}
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+CFLAGS+= -I${.CURDIR:H}/msun/x86
+.endif
+CFLAGS+= -I${.CURDIR:H}/msun/src
+# and we do not want to record a dependency on msun
+.if ${.MAKE.LEVEL} > 0
+GENDIRDEPS_FILTER+= N${RELDIR:H}/msun
+.endif
+.endif
+
# Disable warnings in contributed sources.
CWARNFLAGS:= ${.IMPSRC:Ngdtoa_*.c:C/^.+$/${CWARNFLAGS}/:C/^$/-w/}
# XXX For now, we don't allow libc to be compiled with
diff --git a/lib/libc/Makefile.depend b/lib/libc/Makefile.depend
new file mode 100644
index 0000000..05b44c8
--- /dev/null
+++ b/lib/libc/Makefile.depend
@@ -0,0 +1,168 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ lib/${CSU_DIR} \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cancelpoints_sem.So: cancelpoints_sem.c
+cancelpoints_sem.o: cancelpoints_sem.c
+cancelpoints_sem.po: cancelpoints_sem.c
+cancelpoints_sem_new.So: cancelpoints_sem_new.c
+cancelpoints_sem_new.o: cancelpoints_sem_new.c
+cancelpoints_sem_new.po: cancelpoints_sem_new.c
+crypt_clnt.So: crypt.h
+crypt_clnt.So: crypt_clnt.c
+crypt_clnt.o: crypt.h
+crypt_clnt.o: crypt_clnt.c
+crypt_clnt.po: crypt.h
+crypt_clnt.po: crypt_clnt.c
+crypt_xdr.So: crypt.h
+crypt_xdr.So: crypt_xdr.c
+crypt_xdr.o: crypt.h
+crypt_xdr.o: crypt_xdr.c
+crypt_xdr.po: crypt.h
+crypt_xdr.po: crypt_xdr.c
+gdtoa_dmisc.So: gdtoa_dmisc.c
+gdtoa_dmisc.o: gdtoa_dmisc.c
+gdtoa_dmisc.po: gdtoa_dmisc.c
+gdtoa_dtoa.So: gdtoa_dtoa.c
+gdtoa_dtoa.o: gdtoa_dtoa.c
+gdtoa_dtoa.po: gdtoa_dtoa.c
+gdtoa_gdtoa.So: gdtoa_gdtoa.c
+gdtoa_gdtoa.o: gdtoa_gdtoa.c
+gdtoa_gdtoa.po: gdtoa_gdtoa.c
+gdtoa_gethex.So: gdtoa_gethex.c
+gdtoa_gethex.o: gdtoa_gethex.c
+gdtoa_gethex.po: gdtoa_gethex.c
+gdtoa_gmisc.So: gdtoa_gmisc.c
+gdtoa_gmisc.o: gdtoa_gmisc.c
+gdtoa_gmisc.po: gdtoa_gmisc.c
+gdtoa_hd_init.So: gdtoa_hd_init.c
+gdtoa_hd_init.o: gdtoa_hd_init.c
+gdtoa_hd_init.po: gdtoa_hd_init.c
+gdtoa_hexnan.So: gdtoa_hexnan.c
+gdtoa_hexnan.o: gdtoa_hexnan.c
+gdtoa_hexnan.po: gdtoa_hexnan.c
+gdtoa_misc.So: gdtoa_misc.c
+gdtoa_misc.o: gdtoa_misc.c
+gdtoa_misc.po: gdtoa_misc.c
+gdtoa_smisc.So: gdtoa_smisc.c
+gdtoa_smisc.o: gdtoa_smisc.c
+gdtoa_smisc.po: gdtoa_smisc.c
+gdtoa_strtod.So: gdtoa_strtod.c
+gdtoa_strtod.o: gdtoa_strtod.c
+gdtoa_strtod.po: gdtoa_strtod.c
+gdtoa_strtodg.So: gdtoa_strtodg.c
+gdtoa_strtodg.o: gdtoa_strtodg.c
+gdtoa_strtodg.po: gdtoa_strtodg.c
+gdtoa_strtof.So: gdtoa_strtof.c
+gdtoa_strtof.o: gdtoa_strtof.c
+gdtoa_strtof.po: gdtoa_strtof.c
+gdtoa_strtord.So: gdtoa_strtord.c
+gdtoa_strtord.o: gdtoa_strtord.c
+gdtoa_strtord.po: gdtoa_strtord.c
+gdtoa_strtorx.So: gdtoa_strtorx.c
+gdtoa_strtorx.o: gdtoa_strtorx.c
+gdtoa_strtorx.po: gdtoa_strtorx.c
+gdtoa_sum.So: gdtoa_sum.c
+gdtoa_sum.o: gdtoa_sum.c
+gdtoa_sum.po: gdtoa_sum.c
+gdtoa_ulp.So: gdtoa_ulp.c
+gdtoa_ulp.o: gdtoa_ulp.c
+gdtoa_ulp.po: gdtoa_ulp.c
+jemalloc_arena.So: jemalloc_arena.c
+jemalloc_arena.o: jemalloc_arena.c
+jemalloc_arena.po: jemalloc_arena.c
+jemalloc_atomic.So: jemalloc_atomic.c
+jemalloc_atomic.o: jemalloc_atomic.c
+jemalloc_atomic.po: jemalloc_atomic.c
+jemalloc_base.So: jemalloc_base.c
+jemalloc_base.o: jemalloc_base.c
+jemalloc_base.po: jemalloc_base.c
+jemalloc_bitmap.So: jemalloc_bitmap.c
+jemalloc_bitmap.o: jemalloc_bitmap.c
+jemalloc_bitmap.po: jemalloc_bitmap.c
+jemalloc_chunk.So: jemalloc_chunk.c
+jemalloc_chunk.o: jemalloc_chunk.c
+jemalloc_chunk.po: jemalloc_chunk.c
+jemalloc_chunk_dss.So: jemalloc_chunk_dss.c
+jemalloc_chunk_dss.o: jemalloc_chunk_dss.c
+jemalloc_chunk_dss.po: jemalloc_chunk_dss.c
+jemalloc_chunk_mmap.So: jemalloc_chunk_mmap.c
+jemalloc_chunk_mmap.o: jemalloc_chunk_mmap.c
+jemalloc_chunk_mmap.po: jemalloc_chunk_mmap.c
+jemalloc_ckh.So: jemalloc_ckh.c
+jemalloc_ckh.o: jemalloc_ckh.c
+jemalloc_ckh.po: jemalloc_ckh.c
+jemalloc_ctl.So: jemalloc_ctl.c
+jemalloc_ctl.o: jemalloc_ctl.c
+jemalloc_ctl.po: jemalloc_ctl.c
+jemalloc_extent.So: jemalloc_extent.c
+jemalloc_extent.o: jemalloc_extent.c
+jemalloc_extent.po: jemalloc_extent.c
+jemalloc_hash.So: jemalloc_hash.c
+jemalloc_hash.o: jemalloc_hash.c
+jemalloc_hash.po: jemalloc_hash.c
+jemalloc_huge.So: jemalloc_huge.c
+jemalloc_huge.o: jemalloc_huge.c
+jemalloc_huge.po: jemalloc_huge.c
+jemalloc_jemalloc.So: jemalloc_jemalloc.c
+jemalloc_jemalloc.o: jemalloc_jemalloc.c
+jemalloc_jemalloc.po: jemalloc_jemalloc.c
+jemalloc_mb.So: jemalloc_mb.c
+jemalloc_mb.o: jemalloc_mb.c
+jemalloc_mb.po: jemalloc_mb.c
+jemalloc_mutex.So: jemalloc_mutex.c
+jemalloc_mutex.o: jemalloc_mutex.c
+jemalloc_mutex.po: jemalloc_mutex.c
+jemalloc_prof.So: jemalloc_prof.c
+jemalloc_prof.o: jemalloc_prof.c
+jemalloc_prof.po: jemalloc_prof.c
+jemalloc_quarantine.So: jemalloc_quarantine.c
+jemalloc_quarantine.o: jemalloc_quarantine.c
+jemalloc_quarantine.po: jemalloc_quarantine.c
+jemalloc_rtree.So: jemalloc_rtree.c
+jemalloc_rtree.o: jemalloc_rtree.c
+jemalloc_rtree.po: jemalloc_rtree.c
+jemalloc_stats.So: jemalloc_stats.c
+jemalloc_stats.o: jemalloc_stats.c
+jemalloc_stats.po: jemalloc_stats.c
+jemalloc_tcache.So: jemalloc_tcache.c
+jemalloc_tcache.o: jemalloc_tcache.c
+jemalloc_tcache.po: jemalloc_tcache.c
+jemalloc_tsd.So: jemalloc_tsd.c
+jemalloc_tsd.o: jemalloc_tsd.c
+jemalloc_tsd.po: jemalloc_tsd.c
+jemalloc_util.So: jemalloc_util.c
+jemalloc_util.o: jemalloc_util.c
+jemalloc_util.po: jemalloc_util.c
+nslexer.So: nslexer.c
+nslexer.So: nsparser.h
+nslexer.o: nslexer.c
+nslexer.o: nsparser.h
+nslexer.po: nslexer.c
+nslexer.po: nsparser.h
+nsparser.So: nsparser.c
+nsparser.o: nsparser.c
+nsparser.po: nsparser.c
+subr_acl_nfs4.So: subr_acl_nfs4.c
+subr_acl_nfs4.o: subr_acl_nfs4.c
+subr_acl_nfs4.po: subr_acl_nfs4.c
+yp_xdr.So: yp.h
+yp_xdr.So: yp_xdr.c
+yp_xdr.o: yp.h
+yp_xdr.o: yp_xdr.c
+yp_xdr.po: yp.h
+yp_xdr.po: yp_xdr.c
+.endif
diff --git a/lib/libc/arm/aeabi/Makefile.inc b/lib/libc/arm/aeabi/Makefile.inc
index fa0ec8e..612e47f 100644
--- a/lib/libc/arm/aeabi/Makefile.inc
+++ b/lib/libc/arm/aeabi/Makefile.inc
@@ -27,13 +27,5 @@ SRCS+= aeabi_memcmp.S \
aeabi_memmove.S \
aeabi_memset.S
-# Mark the functions as hidden so they are not available outside of libc.
-CFLAGS.aeabi_memcmp.S= -DVISIBILITY_HIDDEN
-CFLAGS.aeabi_memcpy.S= -DVISIBILITY_HIDDEN
-CFLAGS.aeabi_memmove.S= -DVISIBILITY_HIDDEN
-CFLAGS.aeabi_memset.S= -DVISIBILITY_HIDDEN
-CFLAGS+= ${CFLAGS.${.IMPSRC:T}}
-
-
SYM_MAPS+=${LIBC_SRCTOP}/arm/aeabi/Symbol.map
diff --git a/lib/libc/arm/aeabi/Symbol.map b/lib/libc/arm/aeabi/Symbol.map
index 164d3e7..1aff929 100644
--- a/lib/libc/arm/aeabi/Symbol.map
+++ b/lib/libc/arm/aeabi/Symbol.map
@@ -52,4 +52,21 @@ FBSDprivate_1.0 {
__aeabi_i2d;
__aeabi_i2f;
+
+
+ __aeabi_memclr;
+ __aeabi_memclr4;
+ __aeabi_memclr8;
+ __aeabi_memcmp;
+ __aeabi_memcmp4;
+ __aeabi_memcmp8;
+ __aeabi_memcpy;
+ __aeabi_memcpy4;
+ __aeabi_memcpy8;
+ __aeabi_memmove;
+ __aeabi_memmove4;
+ __aeabi_memmove8;
+ __aeabi_memset;
+ __aeabi_memset4;
+ __aeabi_memset8;
};
diff --git a/lib/libc/net/sctp_bindx.3 b/lib/libc/net/sctp_bindx.3
index 263cb63..96d63cd 100644
--- a/lib/libc/net/sctp_bindx.3
+++ b/lib/libc/net/sctp_bindx.3
@@ -28,7 +28,7 @@
.\" From: @(#)send.2 8.2 (Berkeley) 2/21/94
.\" $FreeBSD$
.\"
-.Dd December 15, 2006
+.Dd June 14, 2015
.Dt SCTP_BINDX 3
.Os
.Sh NAME
@@ -71,7 +71,7 @@ must be one of the following values.
This value indicates that the listed address(es) need to
be added to the endpoint.
.Pp
-.Dv SCTP_BINDX_DEL_ADDR
+.Dv SCTP_BINDX_REM_ADDR
This value indicates that the listed address(es) need to
be removed from the endpoint.
.Pp
diff --git a/lib/libc/resolv/res_comp.c b/lib/libc/resolv/res_comp.c
index 539d974..279ea23 100644
--- a/lib/libc/resolv/res_comp.c
+++ b/lib/libc/resolv/res_comp.c
@@ -147,12 +147,12 @@ dn_skipname(const u_char *ptr, const u_char *eom) {
|| ((c) >= 0x61 && (c) <= 0x7a))
#define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
-#define borderchar(c) (alphachar(c) || digitchar(c))
#ifdef RES_ENFORCE_RFC1034
-#define middlechar(c) (borderchar(c) || hyphenchar(c))
+#define borderchar(c) (alphachar(c) || digitchar(c))
#else
-#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c))
+#define borderchar(c) (alphachar(c) || digitchar(c) || underscorechar(c))
#endif
+#define middlechar(c) (borderchar(c) || hyphenchar(c))
#define domainchar(c) ((c) > 0x20 && (c) < 0x7f)
int
diff --git a/lib/libc/sys/stack_protector.c b/lib/libc/sys/stack_protector.c
index ed7d635..cd5f166 100644
--- a/lib/libc/sys/stack_protector.c
+++ b/lib/libc/sys/stack_protector.c
@@ -41,8 +41,8 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
#include "libc_private.h"
-extern int __sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp,
- void *newp, size_t newlen);
+extern int __sysctl(const int *name, u_int namelen, void *oldp,
+ size_t *oldlenp, void *newp, size_t newlen);
long __stack_chk_guard[8] = {0, 0, 0, 0, 0, 0, 0, 0};
static void __guard_setup(void) __attribute__((__constructor__, __used__));
@@ -54,7 +54,7 @@ void __chk_fail(void);
static void
__guard_setup(void)
{
- int mib[2];
+ static const int mib[2] = { CTL_KERN, KERN_ARND };
size_t len;
int error;
@@ -65,12 +65,9 @@ __guard_setup(void)
if (error == 0 && __stack_chk_guard[0] != 0)
return;
- mib[0] = CTL_KERN;
- mib[1] = KERN_ARND;
-
len = sizeof(__stack_chk_guard);
- if (__sysctl(mib, 2, __stack_chk_guard, &len, NULL, 0) == -1 ||
- len != sizeof(__stack_chk_guard)) {
+ if (__sysctl(mib, nitems(mib), __stack_chk_guard, &len, NULL, 0) ==
+ -1 || len != sizeof(__stack_chk_guard)) {
/* If sysctl was unsuccessful, use the "terminator canary". */
((unsigned char *)(void *)__stack_chk_guard)[0] = 0;
((unsigned char *)(void *)__stack_chk_guard)[1] = 0;
diff --git a/lib/libc_nonshared/Makefile.depend b/lib/libc_nonshared/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/lib/libc_nonshared/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcalendar/Makefile.depend b/lib/libcalendar/Makefile.depend
new file mode 100644
index 0000000..3699b06
--- /dev/null
+++ b/lib/libcalendar/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcam/Makefile.depend b/lib/libcam/Makefile.depend
new file mode 100644
index 0000000..114b842
--- /dev/null
+++ b/lib/libcam/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcapsicum/Makefile.depend b/lib/libcapsicum/Makefile.depend
new file mode 100644
index 0000000..5016551
--- /dev/null
+++ b/lib/libcapsicum/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnv \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcom_err/Makefile.depend b/lib/libcom_err/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libcom_err/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcompat/Makefile.depend b/lib/libcompat/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/lib/libcompat/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcompiler_rt/Makefile.depend b/lib/libcompiler_rt/Makefile.depend
new file mode 100644
index 0000000..79506ce
--- /dev/null
+++ b/lib/libcompiler_rt/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcrypt/Makefile.depend b/lib/libcrypt/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libcrypt/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcrypt/tests/Makefile.depend b/lib/libcrypt/tests/Makefile.depend
new file mode 100644
index 0000000..d0caca1
--- /dev/null
+++ b/lib/libcrypt/tests/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcuse/Makefile.depend b/lib/libcuse/Makefile.depend
new file mode 100644
index 0000000..441e1ee
--- /dev/null
+++ b/lib/libcuse/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcxxrt/Makefile.depend b/lib/libcxxrt/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libcxxrt/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcxxrt/Makefile.depend.host b/lib/libcxxrt/Makefile.depend.host
new file mode 100644
index 0000000..9f46a2f
--- /dev/null
+++ b/lib/libcxxrt/Makefile.depend.host
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/clang/clang \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdevinfo/Makefile.depend b/lib/libdevinfo/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libdevinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdevstat/Makefile.depend b/lib/libdevstat/Makefile.depend
new file mode 100644
index 0000000..96ad505
--- /dev/null
+++ b/lib/libdevstat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdpv/Makefile.depend b/lib/libdpv/Makefile.depend
new file mode 100644
index 0000000..6f24a33
--- /dev/null
+++ b/lib/libdpv/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libfigpar \
+ lib/libutil \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdwarf/Makefile.depend b/lib/libdwarf/Makefile.depend
new file mode 100644
index 0000000..36075d5
--- /dev/null
+++ b/lib/libdwarf/Makefile.depend
@@ -0,0 +1,53 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dwarf_funcs.So: dwarf_funcs.c
+dwarf_funcs.o: dwarf_funcs.c
+dwarf_funcs.po: dwarf_funcs.c
+dwarf_pro_funcs.So: dwarf_pro_funcs.c
+dwarf_pro_funcs.o: dwarf_pro_funcs.c
+dwarf_pro_funcs.po: dwarf_pro_funcs.c
+dwarf_pro_pubnames.So: dwarf_pro_pubnames.c
+dwarf_pro_pubnames.o: dwarf_pro_pubnames.c
+dwarf_pro_pubnames.po: dwarf_pro_pubnames.c
+dwarf_pro_types.So: dwarf_pro_types.c
+dwarf_pro_types.o: dwarf_pro_types.c
+dwarf_pro_types.po: dwarf_pro_types.c
+dwarf_pro_vars.So: dwarf_pro_vars.c
+dwarf_pro_vars.o: dwarf_pro_vars.c
+dwarf_pro_vars.po: dwarf_pro_vars.c
+dwarf_pro_weaks.So: dwarf_pro_weaks.c
+dwarf_pro_weaks.o: dwarf_pro_weaks.c
+dwarf_pro_weaks.po: dwarf_pro_weaks.c
+dwarf_pubnames.So: dwarf_pubnames.c
+dwarf_pubnames.o: dwarf_pubnames.c
+dwarf_pubnames.po: dwarf_pubnames.c
+dwarf_pubtypes.So: dwarf_pubtypes.c
+dwarf_pubtypes.o: dwarf_pubtypes.c
+dwarf_pubtypes.po: dwarf_pubtypes.c
+dwarf_types.So: dwarf_types.c
+dwarf_types.o: dwarf_types.c
+dwarf_types.po: dwarf_types.c
+dwarf_vars.So: dwarf_vars.c
+dwarf_vars.o: dwarf_vars.c
+dwarf_vars.po: dwarf_vars.c
+dwarf_weaks.So: dwarf_weaks.c
+dwarf_weaks.o: dwarf_weaks.c
+dwarf_weaks.po: dwarf_weaks.c
+.endif
diff --git a/lib/libedit/Makefile.depend b/lib/libedit/Makefile.depend
new file mode 100644
index 0000000..3c91e80
--- /dev/null
+++ b/lib/libedit/Makefile.depend
@@ -0,0 +1,65 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+editline.So: common.h
+editline.So: editline.c
+editline.So: emacs.h
+editline.So: fcns.c
+editline.So: fcns.h
+editline.So: help.c
+editline.So: help.h
+editline.So: vi.h
+editline.o: common.h
+editline.o: editline.c
+editline.o: emacs.h
+editline.o: fcns.c
+editline.o: fcns.h
+editline.o: help.c
+editline.o: help.h
+editline.o: vi.h
+editline.po: common.h
+editline.po: editline.c
+editline.po: emacs.h
+editline.po: fcns.c
+editline.po: fcns.h
+editline.po: help.c
+editline.po: help.h
+editline.po: vi.h
+historyn.So: historyn.c
+historyn.o: historyn.c
+historyn.po: historyn.c
+readline.So: common.h
+readline.So: emacs.h
+readline.So: fcns.h
+readline.So: help.h
+readline.So: vi.h
+readline.o: common.h
+readline.o: emacs.h
+readline.o: fcns.h
+readline.o: help.h
+readline.o: vi.h
+readline.po: common.h
+readline.po: emacs.h
+readline.po: fcns.h
+readline.po: help.h
+readline.po: vi.h
+tokenizern.So: tokenizern.c
+tokenizern.o: tokenizern.c
+tokenizern.po: tokenizern.c
+.endif
diff --git a/lib/libedit/edit/readline/Makefile.depend b/lib/libedit/edit/readline/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/lib/libedit/edit/readline/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libelf/Makefile.depend b/lib/libelf/Makefile.depend
new file mode 100644
index 0000000..cc4f1d2
--- /dev/null
+++ b/lib/libelf/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+libelf_convert.So: libelf_convert.c
+libelf_convert.o: libelf_convert.c
+libelf_convert.po: libelf_convert.c
+libelf_fsize.So: libelf_fsize.c
+libelf_fsize.o: libelf_fsize.c
+libelf_fsize.po: libelf_fsize.c
+libelf_msize.So: libelf_msize.c
+libelf_msize.o: libelf_msize.c
+libelf_msize.po: libelf_msize.c
+.endif
diff --git a/lib/libelftc/Makefile.depend b/lib/libelftc/Makefile.depend
new file mode 100644
index 0000000..422dbea
--- /dev/null
+++ b/lib/libelftc/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libelf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libevent/Makefile.depend b/lib/libevent/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/lib/libevent/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libexecinfo/Makefile.depend b/lib/libexecinfo/Makefile.depend
new file mode 100644
index 0000000..5bc9039
--- /dev/null
+++ b/lib/libexecinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libexpat/Makefile.depend b/lib/libexpat/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libexpat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libfetch/Makefile.depend b/lib/libfetch/Makefile.depend
new file mode 100644
index 0000000..4bcc4bf
--- /dev/null
+++ b/lib/libfetch/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ftp.So: ftperr.h
+ftp.o: ftperr.h
+ftp.po: ftperr.h
+http.So: httperr.h
+http.o: httperr.h
+http.po: httperr.h
+.endif
diff --git a/lib/libfigpar/Makefile.depend b/lib/libfigpar/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libfigpar/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgeom/Makefile.depend b/lib/libgeom/Makefile.depend
new file mode 100644
index 0000000..9af4728
--- /dev/null
+++ b/lib/libgeom/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libsbuf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgpib/Makefile.depend b/lib/libgpib/Makefile.depend
new file mode 100644
index 0000000..4370d1e
--- /dev/null
+++ b/lib/libgpib/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgpio/Makefile.depend b/lib/libgpio/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libgpio/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgssapi/Makefile.depend b/lib/libgssapi/Makefile.depend
new file mode 100644
index 0000000..7602ef9
--- /dev/null
+++ b/lib/libgssapi/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/gssapi \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/BIG5/Makefile.depend b/lib/libiconv_modules/BIG5/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/BIG5/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/DECHanyu/Makefile.depend b/lib/libiconv_modules/DECHanyu/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/DECHanyu/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/EUC/Makefile.depend b/lib/libiconv_modules/EUC/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/EUC/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/EUCTW/Makefile.depend b/lib/libiconv_modules/EUCTW/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/EUCTW/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/GBK2K/Makefile.depend b/lib/libiconv_modules/GBK2K/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/GBK2K/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/HZ/Makefile.depend b/lib/libiconv_modules/HZ/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/HZ/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/ISO2022/Makefile.depend b/lib/libiconv_modules/ISO2022/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/ISO2022/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/JOHAB/Makefile.depend b/lib/libiconv_modules/JOHAB/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/JOHAB/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/MSKanji/Makefile.depend b/lib/libiconv_modules/MSKanji/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/MSKanji/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UES/Makefile.depend b/lib/libiconv_modules/UES/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/UES/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF1632/Makefile.depend b/lib/libiconv_modules/UTF1632/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/UTF1632/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF7/Makefile.depend b/lib/libiconv_modules/UTF7/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/UTF7/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF8/Makefile.depend b/lib/libiconv_modules/UTF8/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/UTF8/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/VIQR/Makefile.depend b/lib/libiconv_modules/VIQR/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/VIQR/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/ZW/Makefile.depend b/lib/libiconv_modules/ZW/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/ZW/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/iconv_none/Makefile.depend b/lib/libiconv_modules/iconv_none/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/iconv_none/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/iconv_std/Makefile.depend b/lib/libiconv_modules/iconv_std/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/iconv_std/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_646/Makefile.depend b/lib/libiconv_modules/mapper_646/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_646/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_none/Makefile.depend b/lib/libiconv_modules/mapper_none/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_none/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_parallel/Makefile.depend b/lib/libiconv_modules/mapper_parallel/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_parallel/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_serial/Makefile.depend b/lib/libiconv_modules/mapper_serial/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_serial/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_std/Makefile.depend b/lib/libiconv_modules/mapper_std/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_std/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_zone/Makefile.depend b/lib/libiconv_modules/mapper_zone/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libiconv_modules/mapper_zone/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libipsec/Makefile.depend b/lib/libipsec/Makefile.depend
new file mode 100644
index 0000000..d1ba46b
--- /dev/null
+++ b/lib/libipsec/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+policy_parse.So: policy_parse.c
+policy_parse.o: policy_parse.c
+policy_parse.po: policy_parse.c
+policy_token.So: policy_token.c
+policy_token.So: y.tab.h
+policy_token.o: policy_token.c
+policy_token.o: y.tab.h
+policy_token.po: policy_token.c
+policy_token.po: y.tab.h
+.endif
diff --git a/lib/libjail/Makefile.depend b/lib/libjail/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libjail/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libkiconv/Makefile.depend b/lib/libkiconv/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libkiconv/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libkvm/Makefile.depend b/lib/libkvm/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libkvm/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libldns/Makefile.depend b/lib/libldns/Makefile.depend
new file mode 100644
index 0000000..f35aa11
--- /dev/null
+++ b/lib/libldns/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/liblzma/Makefile.depend b/lib/liblzma/Makefile.depend
new file mode 100644
index 0000000..18b76e5
--- /dev/null
+++ b/lib/liblzma/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/include.host \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmagic/Makefile.depend b/lib/libmagic/Makefile.depend
new file mode 100644
index 0000000..3842c54
--- /dev/null
+++ b/lib/libmagic/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmagic/config.h b/lib/libmagic/config.h
index 47f3347..956b040 100644
--- a/lib/libmagic/config.h
+++ b/lib/libmagic/config.h
@@ -75,6 +75,9 @@
/* Define to 1 if you have the `getpagesize' function. */
#define HAVE_GETPAGESIZE 1
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
/* Define to 1 if the system has the type `intptr_t'. */
#define HAVE_INTPTR_T 1
@@ -93,6 +96,9 @@
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
+/* Define to 1 if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#define HAVE_MBRTOWC 1
@@ -122,6 +128,12 @@
/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Have sig_t type */
+#define HAVE_SIG_T 1
+
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
@@ -278,7 +290,7 @@
#define PACKAGE_NAME "file"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "file 5.22"
+#define PACKAGE_STRING "file 5.23"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "file"
@@ -287,7 +299,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
-#define PACKAGE_VERSION "5.22"
+#define PACKAGE_VERSION "5.23"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
@@ -318,7 +330,7 @@
/* Version number of package */
-#define VERSION "5.22"
+#define VERSION "5.23"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/lib/libmd/Makefile.depend b/lib/libmd/Makefile.depend
new file mode 100644
index 0000000..c145c03
--- /dev/null
+++ b/lib/libmd/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+md4hl.So: md4hl.c
+md4hl.o: md4hl.c
+md4hl.po: md4hl.c
+md5hl.So: md5hl.c
+md5hl.o: md5hl.c
+md5hl.po: md5hl.c
+rmd160hl.So: rmd160hl.c
+rmd160hl.o: rmd160hl.c
+rmd160hl.po: rmd160hl.c
+sha0hl.So: sha0hl.c
+sha0hl.o: sha0hl.c
+sha0hl.po: sha0hl.c
+sha1hl.So: sha1hl.c
+sha1hl.o: sha1hl.c
+sha1hl.po: sha1hl.c
+sha256hl.So: sha256hl.c
+sha256hl.o: sha256hl.c
+sha256hl.po: sha256hl.c
+sha512hl.So: sha512hl.c
+sha512hl.o: sha512hl.c
+sha512hl.po: sha512hl.c
+.endif
diff --git a/lib/libmd/Makefile.depend.host b/lib/libmd/Makefile.depend.host
new file mode 100644
index 0000000..771b816
--- /dev/null
+++ b/lib/libmd/Makefile.depend.host
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/ld \
+ gnu/usr.bin/binutils/nm \
+ usr.bin/xinstall \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+md4hl.So: md4hl.c
+md4hl.o: md4hl.c
+md4hl.po: md4hl.c
+md5hl.So: md5hl.c
+md5hl.o: md5hl.c
+md5hl.po: md5hl.c
+rmd160hl.So: rmd160hl.c
+rmd160hl.o: rmd160hl.c
+rmd160hl.po: rmd160hl.c
+sha0hl.So: sha0hl.c
+sha0hl.o: sha0hl.c
+sha0hl.po: sha0hl.c
+sha1hl.So: sha1hl.c
+sha1hl.o: sha1hl.c
+sha1hl.po: sha1hl.c
+sha256hl.So: sha256hl.c
+sha256hl.o: sha256hl.c
+sha256hl.po: sha256hl.c
+sha512hl.So: sha512hl.c
+sha512hl.o: sha512hl.c
+sha512hl.po: sha512hl.c
+.endif
diff --git a/lib/libmemstat/Makefile.depend b/lib/libmemstat/Makefile.depend
new file mode 100644
index 0000000..96ad505
--- /dev/null
+++ b/lib/libmemstat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmilter/Makefile.depend b/lib/libmilter/Makefile.depend
new file mode 100644
index 0000000..17c2027
--- /dev/null
+++ b/lib/libmilter/Makefile.depend
@@ -0,0 +1,59 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+comm.So: sm_os.h
+comm.o: sm_os.h
+comm.po: sm_os.h
+engine.So: sm_os.h
+engine.o: sm_os.h
+engine.po: sm_os.h
+errstring.So: sm_os.h
+errstring.o: sm_os.h
+errstring.po: sm_os.h
+handler.So: sm_os.h
+handler.o: sm_os.h
+handler.po: sm_os.h
+listener.So: sm_os.h
+listener.o: sm_os.h
+listener.po: sm_os.h
+main.So: sm_os.h
+main.o: sm_os.h
+main.po: sm_os.h
+monitor.So: sm_os.h
+monitor.o: sm_os.h
+monitor.po: sm_os.h
+signal.So: sm_os.h
+signal.o: sm_os.h
+signal.po: sm_os.h
+sm_gethost.So: sm_os.h
+sm_gethost.o: sm_os.h
+sm_gethost.po: sm_os.h
+smfi.So: sm_os.h
+smfi.o: sm_os.h
+smfi.po: sm_os.h
+strl.So: sm_os.h
+strl.o: sm_os.h
+strl.po: sm_os.h
+worker.So: sm_os.h
+worker.o: sm_os.h
+worker.po: sm_os.h
+.endif
diff --git a/lib/libmp/Makefile.depend b/lib/libmp/Makefile.depend
new file mode 100644
index 0000000..5781764
--- /dev/null
+++ b/lib/libmp/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmt/Makefile.depend b/lib/libmt/Makefile.depend
new file mode 100644
index 0000000..9af4728
--- /dev/null
+++ b/lib/libmt/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libsbuf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnetbsd/Makefile.depend b/lib/libnetbsd/Makefile.depend
new file mode 100644
index 0000000..cf2961c
--- /dev/null
+++ b/lib/libnetbsd/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnetgraph/Makefile.depend b/lib/libnetgraph/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libnetgraph/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libngatm/Makefile.depend b/lib/libngatm/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libngatm/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnv/Makefile.depend b/lib/libnv/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libnv/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libohash/Makefile.depend b/lib/libohash/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/lib/libohash/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libopie/Makefile.depend b/lib/libopie/Makefile.depend
new file mode 100644
index 0000000..4ed0db2
--- /dev/null
+++ b/lib/libopie/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/Makefile b/lib/libpam/Makefile
index 088e8a0..5c3a2ae 100644
--- a/lib/libpam/Makefile
+++ b/lib/libpam/Makefile
@@ -26,6 +26,6 @@
# The modules must be built first, because they are built into the
# static version of libpam.
-SUBDIR+= modules libpam
+SUBDIR+= modules libpam static_modules
.include <bsd.subdir.mk>
diff --git a/lib/libpam/libpam/Makefile b/lib/libpam/libpam/Makefile
index a681a82..c8f13c4 100644
--- a/lib/libpam/libpam/Makefile
+++ b/lib/libpam/libpam/Makefile
@@ -172,33 +172,12 @@ HEADERS= security/openpam.h \
ADD_HEADERS= security/pam_mod_misc.h
-#
-# Static modules
-#
-# We build static versions of all modules and of openpam_static.o,
-# then link them all together into openpam_static_modules.o. None of
-# the modules export any symbols, but they store structures with
-# pointers to their service functions in a linker set which the code
-# in openpam_static.c traverses to locate the individual modules.
-#
-MODULE_DIR= ../modules
-.include "${.CURDIR}/${MODULE_DIR}/modules.inc"
-STATIC_MODULES= ${MODULES:C/.*/${MODULE_DIR}\/&\/lib&.a/}
-STATICOBJS+= openpam_static_modules.o
-CLEANFILES+= openpam_static.o \
- openpam_static_modules.o
-
-openpam_static_modules.o: openpam_static.o ${STATIC_MODULES}
- ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
-
-# We can't put openpam_static.c in SRCS, but we still want to scan it
-# for dependencies.
-DPSRCS= openpam_static.c
-
# Headers
INCS= ${HEADERS} ${ADD_HEADERS}
INCSDIR= ${INCLUDEDIR}/security
+.include <src.opts.mk>
+
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
diff --git a/lib/libpam/libpam/Makefile.depend b/lib/libpam/libpam/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libpam/libpam/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_chroot/Makefile.depend b/lib/libpam/modules/pam_chroot/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_chroot/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_deny/Makefile.depend b/lib/libpam/modules/pam_deny/Makefile.depend
new file mode 100644
index 0000000..1078f33
--- /dev/null
+++ b/lib/libpam/modules/pam_deny/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_echo/Makefile.depend b/lib/libpam/modules/pam_echo/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_echo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_exec/Makefile.depend b/lib/libpam/modules/pam_exec/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_exec/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ftpusers/Makefile.depend b/lib/libpam/modules/pam_ftpusers/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_ftpusers/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_group/Makefile.depend b/lib/libpam/modules/pam_group/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_group/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_guest/Makefile.depend b/lib/libpam/modules/pam_guest/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_guest/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_krb5/Makefile.depend b/lib/libpam/modules/pam_krb5/Makefile.depend
new file mode 100644
index 0000000..2cde78f
--- /dev/null
+++ b/lib/libpam/modules/pam_krb5/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ksu/Makefile.depend b/lib/libpam/modules/pam_ksu/Makefile.depend
new file mode 100644
index 0000000..d360572
--- /dev/null
+++ b/lib/libpam/modules/pam_ksu/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_lastlog/Makefile.depend b/lib/libpam/modules/pam_lastlog/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_lastlog/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_login_access/Makefile.depend b/lib/libpam/modules/pam_login_access/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_login_access/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_nologin/Makefile.depend b/lib/libpam/modules/pam_nologin/Makefile.depend
new file mode 100644
index 0000000..8f9750f
--- /dev/null
+++ b/lib/libpam/modules/pam_nologin/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_opie/Makefile.depend b/lib/libpam/modules/pam_opie/Makefile.depend
new file mode 100644
index 0000000..62a9408
--- /dev/null
+++ b/lib/libpam/modules/pam_opie/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libopie \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_opieaccess/Makefile.depend b/lib/libpam/modules/pam_opieaccess/Makefile.depend
new file mode 100644
index 0000000..cbfda79
--- /dev/null
+++ b/lib/libpam/modules/pam_opieaccess/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libopie \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_passwdqc/Makefile.depend b/lib/libpam/modules/pam_passwdqc/Makefile.depend
new file mode 100644
index 0000000..e82ea24
--- /dev/null
+++ b/lib/libpam/modules/pam_passwdqc/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_permit/Makefile.depend b/lib/libpam/modules/pam_permit/Makefile.depend
new file mode 100644
index 0000000..1078f33
--- /dev/null
+++ b/lib/libpam/modules/pam_permit/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_radius/Makefile.depend b/lib/libpam/modules/pam_radius/Makefile.depend
new file mode 100644
index 0000000..f8940bf
--- /dev/null
+++ b/lib/libpam/modules/pam_radius/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libradius \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_rhosts/Makefile.depend b/lib/libpam/modules/pam_rhosts/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_rhosts/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_rootok/Makefile.depend b/lib/libpam/modules/pam_rootok/Makefile.depend
new file mode 100644
index 0000000..1078f33
--- /dev/null
+++ b/lib/libpam/modules/pam_rootok/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_securetty/Makefile.depend b/lib/libpam/modules/pam_securetty/Makefile.depend
new file mode 100644
index 0000000..8e09560
--- /dev/null
+++ b/lib/libpam/modules/pam_securetty/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_self/Makefile.depend b/lib/libpam/modules/pam_self/Makefile.depend
new file mode 100644
index 0000000..1078f33
--- /dev/null
+++ b/lib/libpam/modules/pam_self/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ssh/Makefile.depend b/lib/libpam/modules/pam_ssh/Makefile.depend
new file mode 100644
index 0000000..08fb149
--- /dev/null
+++ b/lib/libpam/modules/pam_ssh/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_tacplus/Makefile.depend b/lib/libpam/modules/pam_tacplus/Makefile.depend
new file mode 100644
index 0000000..98723a0
--- /dev/null
+++ b/lib/libpam/modules/pam_tacplus/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libtacplus \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_unix/Makefile.depend b/lib/libpam/modules/pam_unix/Makefile.depend
new file mode 100644
index 0000000..0876f5f
--- /dev/null
+++ b/lib/libpam/modules/pam_unix/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libypclnt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/static_modules/Makefile b/lib/libpam/static_modules/Makefile
new file mode 100644
index 0000000..429e660
--- /dev/null
+++ b/lib/libpam/static_modules/Makefile
@@ -0,0 +1,71 @@
+#-
+# Copyright (c) 1998-2015 Juniper Networks, Inc.
+# All rights reserved.
+# Copyright (c) 2002 Networks Associates Technology, Inc.
+# All rights reserved.
+#
+# Portions of this software was developed for the FreeBSD Project by
+# ThinkSec AS and NAI Labs, the Security Research Division of Network
+# Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+# ("CBOSS"), as part of the DARPA CHATS research program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+OPENPAM= ${.CURDIR:H:H:H}/contrib/openpam
+.PATH: ${OPENPAM}/lib
+.PATH: ${OPENPAM}/lib/libpam
+
+all:
+
+SRCS = openpam_static.c
+
+MAN=
+
+#
+# Static modules
+#
+# We build static versions of all modules and of openpam_static.o,
+# then link them all together into openpam_static_modules.o. None of
+# the modules export any symbols, but they store structures with
+# pointers to their service functions in a linker set which the code
+# in openpam_static.c traverses to locate the individual modules.
+#
+MODULE_DIR= ../modules
+.include "${.CURDIR}/${MODULE_DIR}/modules.inc"
+STATIC_MODULES= ${MODULES:C/.*/${MODULE_DIR}\/&\/lib&.a/}
+STATICOBJS+= openpam_static_modules.o
+CLEANFILES+= openpam_static.o \
+ openpam_static_modules.o
+
+.include <bsd.prog.mk>
+
+.if empty(_SKIP_BUILD)
+openpam_static_modules.o: openpam_static.o ${STATIC_MODULES}
+ ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
+
+all: ${STATICOBJS}
+.endif
diff --git a/lib/libpam/static_modules/Makefile.depend b/lib/libpam/static_modules/Makefile.depend
new file mode 100644
index 0000000..373bac4
--- /dev/null
+++ b/lib/libpam/static_modules/Makefile.depend
@@ -0,0 +1,38 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libpam/libpam \
+ lib/libpam/modules/pam_chroot \
+ lib/libpam/modules/pam_deny \
+ lib/libpam/modules/pam_echo \
+ lib/libpam/modules/pam_exec \
+ lib/libpam/modules/pam_ftpusers \
+ lib/libpam/modules/pam_group \
+ lib/libpam/modules/pam_guest \
+ lib/libpam/modules/pam_krb5 \
+ lib/libpam/modules/pam_ksu \
+ lib/libpam/modules/pam_lastlog \
+ lib/libpam/modules/pam_login_access \
+ lib/libpam/modules/pam_nologin \
+ lib/libpam/modules/pam_opie \
+ lib/libpam/modules/pam_opieaccess \
+ lib/libpam/modules/pam_passwdqc \
+ lib/libpam/modules/pam_permit \
+ lib/libpam/modules/pam_radius \
+ lib/libpam/modules/pam_rhosts \
+ lib/libpam/modules/pam_rootok \
+ lib/libpam/modules/pam_securetty \
+ lib/libpam/modules/pam_self \
+ lib/libpam/modules/pam_ssh \
+ lib/libpam/modules/pam_tacplus \
+ lib/libpam/modules/pam_unix \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpcap/Makefile.depend b/lib/libpcap/Makefile.depend
new file mode 100644
index 0000000..7426299
--- /dev/null
+++ b/lib/libpcap/Makefile.depend
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+grammar.So: grammar.c
+grammar.o: grammar.c
+grammar.po: grammar.c
+pcap.So: version.h
+pcap.o: version.h
+pcap.po: version.h
+scanner.So: scanner.c
+scanner.So: tokdefs.h
+scanner.o: scanner.c
+scanner.o: tokdefs.h
+scanner.po: scanner.c
+scanner.po: tokdefs.h
+version.So: version.c
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/lib/libpmc/Makefile.depend b/lib/libpmc/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libpmc/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c
index d9d7902..9305618 100644
--- a/lib/libpmc/libpmc.c
+++ b/lib/libpmc/libpmc.c
@@ -268,6 +268,16 @@ static const struct pmc_event_descr westmereuc_event_table[] =
__PMC_EV_ALIAS_WESTMEREUC()
};
+static const struct pmc_event_descr cortex_a8_event_table[] =
+{
+ __PMC_EV_ALIAS_ARMV7_CORTEX_A8()
+};
+
+static const struct pmc_event_descr cortex_a9_event_table[] =
+{
+ __PMC_EV_ALIAS_ARMV7_CORTEX_A9()
+};
+
static const struct pmc_event_descr cortex_a53_event_table[] =
{
__PMC_EV_ALIAS_ARMV8_CORTEX_A53()
@@ -308,7 +318,8 @@ PMC_MDEP_TABLE(p4, P4, PMC_CLASS_SOFT, PMC_CLASS_TSC);
PMC_MDEP_TABLE(p5, P5, PMC_CLASS_SOFT, PMC_CLASS_TSC);
PMC_MDEP_TABLE(p6, P6, PMC_CLASS_SOFT, PMC_CLASS_TSC);
PMC_MDEP_TABLE(xscale, XSCALE, PMC_CLASS_SOFT, PMC_CLASS_XSCALE);
-PMC_MDEP_TABLE(armv7, ARMV7, PMC_CLASS_SOFT, PMC_CLASS_ARMV7);
+PMC_MDEP_TABLE(cortex_a8, ARMV7, PMC_CLASS_SOFT, PMC_CLASS_ARMV7);
+PMC_MDEP_TABLE(cortex_a9, ARMV7, PMC_CLASS_SOFT, PMC_CLASS_ARMV7);
PMC_MDEP_TABLE(cortex_a53, ARMV8, PMC_CLASS_SOFT, PMC_CLASS_ARMV8);
PMC_MDEP_TABLE(cortex_a57, ARMV8, PMC_CLASS_SOFT, PMC_CLASS_ARMV8);
PMC_MDEP_TABLE(mips24k, MIPS24K, PMC_CLASS_SOFT, PMC_CLASS_MIPS24K);
@@ -377,7 +388,8 @@ PMC_CLASS_TABLE_DESC(tsc, TSC, tsc, tsc);
#if defined(__XSCALE__)
PMC_CLASS_TABLE_DESC(xscale, XSCALE, xscale, xscale);
#endif
-PMC_CLASS_TABLE_DESC(armv7, ARMV7, armv7, armv7);
+PMC_CLASS_TABLE_DESC(cortex_a8, ARMV7, cortex_a9, armv7);
+PMC_CLASS_TABLE_DESC(cortex_a9, ARMV7, cortex_a9, armv7);
#endif
#if defined(__aarch64__)
PMC_CLASS_TABLE_DESC(cortex_a53, ARMV8, cortex_a53, arm64);
@@ -2436,12 +2448,20 @@ xscale_allocate_pmc(enum pmc_event pe, char *ctrspec __unused,
}
#endif
-static struct pmc_event_alias armv7_aliases[] = {
+static struct pmc_event_alias cortex_a8_aliases[] = {
EV_ALIAS("dc-misses", "L1_DCACHE_REFILL"),
EV_ALIAS("ic-misses", "L1_ICACHE_REFILL"),
EV_ALIAS("instructions", "INSTR_EXECUTED"),
EV_ALIAS(NULL, NULL)
};
+
+static struct pmc_event_alias cortex_a9_aliases[] = {
+ EV_ALIAS("dc-misses", "L1_DCACHE_REFILL"),
+ EV_ALIAS("ic-misses", "L1_ICACHE_REFILL"),
+ EV_ALIAS("instructions", "INSTR_EXECUTED"),
+ EV_ALIAS(NULL, NULL)
+};
+
static int
armv7_allocate_pmc(enum pmc_event pe, char *ctrspec __unused,
struct pmc_op_pmcallocate *pmc_config __unused)
@@ -2981,8 +3001,17 @@ pmc_event_names_of_class(enum pmc_class cl, const char ***eventnames,
count = PMC_EVENT_TABLE_SIZE(xscale);
break;
case PMC_CLASS_ARMV7:
- ev = armv7_event_table;
- count = PMC_EVENT_TABLE_SIZE(armv7);
+ switch (cpu_info.pm_cputype) {
+ default:
+ case PMC_CPU_ARMV7_CORTEX_A8:
+ ev = cortex_a8_event_table;
+ count = PMC_EVENT_TABLE_SIZE(cortex_a8);
+ break;
+ case PMC_CPU_ARMV7_CORTEX_A9:
+ ev = cortex_a9_event_table;
+ count = PMC_EVENT_TABLE_SIZE(cortex_a9);
+ break;
+ }
break;
case PMC_CLASS_ARMV8:
switch (cpu_info.pm_cputype) {
@@ -3289,9 +3318,13 @@ pmc_init(void)
pmc_class_table[n] = &xscale_class_table_descr;
break;
#endif
- case PMC_CPU_ARMV7:
- PMC_MDEP_INIT(armv7);
- pmc_class_table[n] = &armv7_class_table_descr;
+ case PMC_CPU_ARMV7_CORTEX_A8:
+ PMC_MDEP_INIT(cortex_a8);
+ pmc_class_table[n] = &cortex_a8_class_table_descr;
+ break;
+ case PMC_CPU_ARMV7_CORTEX_A9:
+ PMC_MDEP_INIT(cortex_a9);
+ pmc_class_table[n] = &cortex_a9_class_table_descr;
break;
#endif
#if defined(__aarch64__)
@@ -3515,8 +3548,18 @@ _pmc_name_of_event(enum pmc_event pe, enum pmc_cputype cpu)
ev = xscale_event_table;
evfence = xscale_event_table + PMC_EVENT_TABLE_SIZE(xscale);
} else if (pe >= PMC_EV_ARMV7_FIRST && pe <= PMC_EV_ARMV7_LAST) {
- ev = armv7_event_table;
- evfence = armv7_event_table + PMC_EVENT_TABLE_SIZE(armv7);
+ switch (cpu) {
+ case PMC_CPU_ARMV7_CORTEX_A8:
+ ev = cortex_a8_event_table;
+ evfence = cortex_a8_event_table + PMC_EVENT_TABLE_SIZE(cortex_a8);
+ break;
+ case PMC_CPU_ARMV7_CORTEX_A9:
+ ev = cortex_a9_event_table;
+ evfence = cortex_a9_event_table + PMC_EVENT_TABLE_SIZE(cortex_a9);
+ break;
+ default: /* Unknown CPU type. */
+ break;
+ }
} else if (pe >= PMC_EV_ARMV8_FIRST && pe <= PMC_EV_ARMV8_LAST) {
switch (cpu) {
case PMC_CPU_ARMV8_CORTEX_A53:
diff --git a/lib/libproc/Makefile b/lib/libproc/Makefile
index 8c4f484..3feddb5 100644
--- a/lib/libproc/Makefile
+++ b/lib/libproc/Makefile
@@ -14,6 +14,9 @@ SRCS= proc_bkpt.c \
INCS= libproc.h
CFLAGS+= -I${.CURDIR}
+# avoid cyclic dependency
+CFLAGS+= -I${.CURDIR:H}/librtld_db
+GENDIRDEPS_FILTER+= Nlib/librtld_db
.if ${MK_CXX} == "no"
CFLAGS+= -DNO_CXA_DEMANGLE
diff --git a/lib/libproc/Makefile.depend b/lib/libproc/Makefile.depend
new file mode 100644
index 0000000..feb045f
--- /dev/null
+++ b/lib/libproc/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libprocstat/Makefile.depend b/lib/libprocstat/Makefile.depend
new file mode 100644
index 0000000..11ffd8d
--- /dev/null
+++ b/lib/libprocstat/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat/zfs \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libprocstat/zfs/Makefile.depend b/lib/libprocstat/zfs/Makefile.depend
new file mode 100644
index 0000000..fd3b785
--- /dev/null
+++ b/lib/libprocstat/zfs/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libkvm \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libradius/Makefile.depend b/lib/libradius/Makefile.depend
new file mode 100644
index 0000000..5d73f97
--- /dev/null
+++ b/lib/libradius/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librpcsec_gss/Makefile.depend b/lib/librpcsec_gss/Makefile.depend
new file mode 100644
index 0000000..b376142
--- /dev/null
+++ b/lib/librpcsec_gss/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librpcsvc/Makefile.depend b/lib/librpcsvc/Makefile.depend
new file mode 100644
index 0000000..e431374
--- /dev/null
+++ b/lib/librpcsvc/Makefile.depend
@@ -0,0 +1,63 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+klm_prot_xdr.So: klm_prot_xdr.c
+klm_prot_xdr.o: klm_prot_xdr.c
+klm_prot_xdr.po: klm_prot_xdr.c
+mount_xdr.So: mount_xdr.c
+mount_xdr.o: mount_xdr.c
+mount_xdr.po: mount_xdr.c
+nfs_prot_xdr.So: nfs_prot_xdr.c
+nfs_prot_xdr.o: nfs_prot_xdr.c
+nfs_prot_xdr.po: nfs_prot_xdr.c
+nlm_prot_xdr.So: nlm_prot_xdr.c
+nlm_prot_xdr.o: nlm_prot_xdr.c
+nlm_prot_xdr.po: nlm_prot_xdr.c
+rex_xdr.So: rex_xdr.c
+rex_xdr.o: rex_xdr.c
+rex_xdr.po: rex_xdr.c
+rnusers_xdr.So: rnusers_xdr.c
+rnusers_xdr.o: rnusers_xdr.c
+rnusers_xdr.po: rnusers_xdr.c
+rquota_xdr.So: rquota_xdr.c
+rquota_xdr.o: rquota_xdr.c
+rquota_xdr.po: rquota_xdr.c
+rstat_xdr.So: rstat_xdr.c
+rstat_xdr.o: rstat_xdr.c
+rstat_xdr.po: rstat_xdr.c
+rwall_xdr.So: rwall_xdr.c
+rwall_xdr.o: rwall_xdr.c
+rwall_xdr.po: rwall_xdr.c
+sm_inter_xdr.So: sm_inter_xdr.c
+sm_inter_xdr.o: sm_inter_xdr.c
+sm_inter_xdr.po: sm_inter_xdr.c
+spray_xdr.So: spray_xdr.c
+spray_xdr.o: spray_xdr.c
+spray_xdr.po: spray_xdr.c
+yppasswd_xdr.So: yppasswd_xdr.c
+yppasswd_xdr.o: yppasswd_xdr.c
+yppasswd_xdr.po: yppasswd_xdr.c
+ypupdate_prot_xdr.So: ypupdate_prot_xdr.c
+ypupdate_prot_xdr.o: ypupdate_prot_xdr.c
+ypupdate_prot_xdr.po: ypupdate_prot_xdr.c
+ypxfrd_xdr.So: ypxfrd_xdr.c
+ypxfrd_xdr.o: ypxfrd_xdr.c
+ypxfrd_xdr.po: ypxfrd_xdr.c
+.endif
diff --git a/lib/librt/Makefile.depend b/lib/librt/Makefile.depend
new file mode 100644
index 0000000..0a2f351
--- /dev/null
+++ b/lib/librt/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librtld_db/Makefile.depend b/lib/librtld_db/Makefile.depend
new file mode 100644
index 0000000..fad79f2
--- /dev/null
+++ b/lib/librtld_db/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libproc \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsbuf/Makefile b/lib/libsbuf/Makefile
index 79d3fe9..98ceeb6 100644
--- a/lib/libsbuf/Makefile
+++ b/lib/libsbuf/Makefile
@@ -2,7 +2,7 @@
LIB= sbuf
SHLIBDIR?= /lib
-SRCS= subr_sbuf.c
+SRCS= subr_prf.c subr_sbuf.c
SHLIB_MAJOR = 6
diff --git a/lib/libsbuf/Makefile.depend b/lib/libsbuf/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libsbuf/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsbuf/Symbol.map b/lib/libsbuf/Symbol.map
index cf2508f..164b8f3 100644
--- a/lib/libsbuf/Symbol.map
+++ b/lib/libsbuf/Symbol.map
@@ -27,3 +27,7 @@ FBSD_1.3 {
sbuf_start_section;
sbuf_end_section;
};
+
+FBSD_1.4 {
+ sbuf_hexdump;
+};
diff --git a/lib/libsbuf/Version.def b/lib/libsbuf/Version.def
index fb0b3f6..fd5c6be 100644
--- a/lib/libsbuf/Version.def
+++ b/lib/libsbuf/Version.def
@@ -5,3 +5,6 @@ FBSD_1.2 {
FBSD_1.3 {
} FBSD_1.2;
+
+FBSD_1.4 {
+} FBSD_1.3;
diff --git a/lib/libsdp/Makefile.depend b/lib/libsdp/Makefile.depend
new file mode 100644
index 0000000..37f8632
--- /dev/null
+++ b/lib/libsdp/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsm/Makefile.depend b/lib/libsm/Makefile.depend
new file mode 100644
index 0000000..2b8cf93
--- /dev/null
+++ b/lib/libsm/Makefile.depend
@@ -0,0 +1,154 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+assert.o: sm_os.h
+assert.po: sm_os.h
+cf.o: sm_os.h
+cf.po: sm_os.h
+clock.o: sm_os.h
+clock.po: sm_os.h
+clrerr.o: sm_os.h
+clrerr.po: sm_os.h
+config.o: sm_os.h
+config.po: sm_os.h
+debug.o: sm_os.h
+debug.po: sm_os.h
+errstring.o: sm_os.h
+errstring.po: sm_os.h
+exc.o: sm_os.h
+exc.po: sm_os.h
+fclose.o: sm_os.h
+fclose.po: sm_os.h
+feof.o: sm_os.h
+feof.po: sm_os.h
+ferror.o: sm_os.h
+ferror.po: sm_os.h
+fflush.o: sm_os.h
+fflush.po: sm_os.h
+fget.o: sm_os.h
+fget.po: sm_os.h
+findfp.o: sm_os.h
+findfp.po: sm_os.h
+flags.o: sm_os.h
+flags.po: sm_os.h
+fopen.o: sm_os.h
+fopen.po: sm_os.h
+fpos.o: sm_os.h
+fpos.po: sm_os.h
+fprintf.o: sm_os.h
+fprintf.po: sm_os.h
+fpurge.o: sm_os.h
+fpurge.po: sm_os.h
+fput.o: sm_os.h
+fput.po: sm_os.h
+fread.o: sm_os.h
+fread.po: sm_os.h
+fscanf.o: sm_os.h
+fscanf.po: sm_os.h
+fseek.o: sm_os.h
+fseek.po: sm_os.h
+fvwrite.o: sm_os.h
+fvwrite.po: sm_os.h
+fwalk.o: sm_os.h
+fwalk.po: sm_os.h
+fwrite.o: sm_os.h
+fwrite.po: sm_os.h
+get.o: sm_os.h
+get.po: sm_os.h
+heap.o: sm_os.h
+heap.po: sm_os.h
+inet6_ntop.o: sm_os.h
+inet6_ntop.po: sm_os.h
+ldap.o: sm_os.h
+ldap.po: sm_os.h
+makebuf.o: sm_os.h
+makebuf.po: sm_os.h
+match.o: sm_os.h
+match.po: sm_os.h
+mbdb.o: sm_os.h
+mbdb.po: sm_os.h
+memstat.o: sm_os.h
+memstat.po: sm_os.h
+mpeix.o: sm_os.h
+mpeix.po: sm_os.h
+niprop.o: sm_os.h
+niprop.po: sm_os.h
+path.o: sm_os.h
+path.po: sm_os.h
+put.o: sm_os.h
+put.po: sm_os.h
+refill.o: sm_os.h
+refill.po: sm_os.h
+rewind.o: sm_os.h
+rewind.po: sm_os.h
+rpool.o: sm_os.h
+rpool.po: sm_os.h
+sem.o: sm_os.h
+sem.po: sm_os.h
+setvbuf.o: sm_os.h
+setvbuf.po: sm_os.h
+shm.o: sm_os.h
+shm.po: sm_os.h
+signal.o: sm_os.h
+signal.po: sm_os.h
+smstdio.o: sm_os.h
+smstdio.po: sm_os.h
+snprintf.o: sm_os.h
+snprintf.po: sm_os.h
+sscanf.o: sm_os.h
+sscanf.po: sm_os.h
+stdio.o: sm_os.h
+stdio.po: sm_os.h
+strcasecmp.o: sm_os.h
+strcasecmp.po: sm_os.h
+strdup.o: sm_os.h
+strdup.po: sm_os.h
+strerror.o: sm_os.h
+strerror.po: sm_os.h
+strexit.o: sm_os.h
+strexit.po: sm_os.h
+string.o: sm_os.h
+string.po: sm_os.h
+stringf.o: sm_os.h
+stringf.po: sm_os.h
+strio.o: sm_os.h
+strio.po: sm_os.h
+strl.o: sm_os.h
+strl.po: sm_os.h
+strrevcmp.o: sm_os.h
+strrevcmp.po: sm_os.h
+strto.o: sm_os.h
+strto.po: sm_os.h
+test.o: sm_os.h
+test.po: sm_os.h
+ungetc.o: sm_os.h
+ungetc.po: sm_os.h
+util.o: sm_os.h
+util.po: sm_os.h
+vasprintf.o: sm_os.h
+vasprintf.po: sm_os.h
+vfprintf.o: sm_os.h
+vfprintf.po: sm_os.h
+vfscanf.o: sm_os.h
+vfscanf.po: sm_os.h
+vprintf.o: sm_os.h
+vprintf.po: sm_os.h
+vsnprintf.o: sm_os.h
+vsnprintf.po: sm_os.h
+wbuf.o: sm_os.h
+wbuf.po: sm_os.h
+wsetup.o: sm_os.h
+wsetup.po: sm_os.h
+xtrap.o: sm_os.h
+xtrap.po: sm_os.h
+.endif
diff --git a/lib/libsmb/Makefile.depend b/lib/libsmb/Makefile.depend
new file mode 100644
index 0000000..441168d
--- /dev/null
+++ b/lib/libsmb/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsmdb/Makefile.depend b/lib/libsmdb/Makefile.depend
new file mode 100644
index 0000000..1ee0d0e
--- /dev/null
+++ b/lib/libsmdb/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+smdb.o: sm_os.h
+smdb.po: sm_os.h
+smdb1.o: sm_os.h
+smdb1.po: sm_os.h
+smdb2.o: sm_os.h
+smdb2.po: sm_os.h
+smndbm.o: sm_os.h
+smndbm.po: sm_os.h
+.endif
diff --git a/lib/libsmutil/Makefile.depend b/lib/libsmutil/Makefile.depend
new file mode 100644
index 0000000..d534e11
--- /dev/null
+++ b/lib/libsmutil/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cf.o: sm_os.h
+cf.po: sm_os.h
+debug.o: sm_os.h
+debug.po: sm_os.h
+err.o: sm_os.h
+err.po: sm_os.h
+lockfile.o: sm_os.h
+lockfile.po: sm_os.h
+safefile.o: sm_os.h
+safefile.po: sm_os.h
+snprintf.o: sm_os.h
+snprintf.po: sm_os.h
+.endif
diff --git a/lib/libsqlite3/Makefile.depend b/lib/libsqlite3/Makefile.depend
new file mode 100644
index 0000000..0a2f351
--- /dev/null
+++ b/lib/libsqlite3/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libstand/Makefile.depend b/lib/libstand/Makefile.depend
new file mode 100644
index 0000000..bb85bcd
--- /dev/null
+++ b/lib/libstand/Makefile.depend
@@ -0,0 +1,59 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libbz2 \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+_bzlib.o: _bzlib.c
+_bzlib.o: libstand_bzlib_private.h
+_bzlib.po: _bzlib.c
+_bzlib.po: libstand_bzlib_private.h
+_crctable.o: _crctable.c
+_crctable.o: libstand_bzlib_private.h
+_crctable.po: _crctable.c
+_crctable.po: libstand_bzlib_private.h
+_decompress.o: _decompress.c
+_decompress.o: libstand_bzlib_private.h
+_decompress.po: _decompress.c
+_decompress.po: libstand_bzlib_private.h
+_huffman.o: _huffman.c
+_huffman.o: libstand_bzlib_private.h
+_huffman.po: _huffman.c
+_huffman.po: libstand_bzlib_private.h
+_infback.o: _infback.c
+_infback.o: libstand_zutil.h
+_infback.po: _infback.c
+_infback.po: libstand_zutil.h
+_inffast.o: _inffast.c
+_inffast.o: libstand_zutil.h
+_inffast.po: _inffast.c
+_inffast.po: libstand_zutil.h
+_inflate.o: _inflate.c
+_inflate.o: libstand_zutil.h
+_inflate.po: _inflate.c
+_inflate.po: libstand_zutil.h
+_inftrees.o: _inftrees.c
+_inftrees.o: libstand_zutil.h
+_inftrees.po: _inftrees.c
+_inftrees.po: libstand_zutil.h
+_randtable.o: _randtable.c
+_randtable.o: libstand_bzlib_private.h
+_randtable.po: _randtable.c
+_randtable.po: libstand_bzlib_private.h
+_zutil.o: _zutil.c
+_zutil.o: libstand_gzguts.h
+_zutil.o: libstand_zutil.h
+_zutil.po: _zutil.c
+_zutil.po: libstand_gzguts.h
+_zutil.po: libstand_zutil.h
+.endif
diff --git a/lib/libstdbuf/Makefile.depend b/lib/libstdbuf/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libstdbuf/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libstdthreads/Makefile.depend b/lib/libstdthreads/Makefile.depend
new file mode 100644
index 0000000..441e1ee
--- /dev/null
+++ b/lib/libstdthreads/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libtacplus/Makefile.depend b/lib/libtacplus/Makefile.depend
new file mode 100644
index 0000000..6a2d406
--- /dev/null
+++ b/lib/libtacplus/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libtelnet/Makefile b/lib/libtelnet/Makefile
index 3ddecf0..7f73733 100644
--- a/lib/libtelnet/Makefile
+++ b/lib/libtelnet/Makefile
@@ -26,7 +26,4 @@ CFLAGS+= -DKRB5 -I${KRB5DIR}/lib/krb5 -I${KRB5OBJDIR} -I${ASN1OBJDIR}
CFLAGS+= -DFORWARD -Dnet_write=telnet_net_write
.endif
-INCS= ${TELNETDIR}/arpa/telnet.h
-INCSDIR= ${INCLUDEDIR}/arpa
-
.include <bsd.lib.mk>
diff --git a/lib/libtelnet/Makefile.depend b/lib/libtelnet/Makefile.depend
new file mode 100644
index 0000000..0edf350
--- /dev/null
+++ b/lib/libtelnet/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ lib/libmp \
+ lib/libpam/libpam \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libthr/Makefile.depend b/lib/libthr/Makefile.depend
new file mode 100644
index 0000000..3699b06
--- /dev/null
+++ b/lib/libthr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c
index 11a131c..a6d021f 100644
--- a/lib/libthr/thread/thr_sig.c
+++ b/lib/libthr/thread/thr_sig.c
@@ -293,8 +293,8 @@ check_cancel(struct pthread *curthread, ucontext_t *ucp)
* 2) because _thr_ast() may be called by
* THR_CRITICAL_LEAVE() which is used by rtld rwlock
* and any libthr internal locks, when rtld rwlock
- * is used, it is mostly caused my an unresolved PLT.
- * those routines may clear the TDP_WAKEUP flag by
+ * is used, it is mostly caused by an unresolved PLT.
+ * Those routines may clear the TDP_WAKEUP flag by
* invoking some system calls, in those cases, we
* also should reenable the flag.
* 3) thread is in sigsuspend(), and the syscall insists
diff --git a/lib/libthread_db/Makefile.depend b/lib/libthread_db/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libthread_db/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libucl/Makefile.depend b/lib/libucl/Makefile.depend
new file mode 100644
index 0000000..3dce64a
--- /dev/null
+++ b/lib/libucl/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libufs/Makefile.depend b/lib/libufs/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libufs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libugidfw/Makefile.depend b/lib/libugidfw/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libugidfw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libugidfw/ugidfw.c b/lib/libugidfw/ugidfw.c
index df7c799..479ab46 100644
--- a/lib/libugidfw/ugidfw.c
+++ b/lib/libugidfw/ugidfw.c
@@ -1232,7 +1232,7 @@ bsde_delete_rule(int rulenum, size_t buflen, char *errstr)
name[len] = rulenum;
len++;
- error = sysctl(name, len, NULL, NULL, &rule, 0);
+ error = sysctl(name, len, NULL, NULL, &rule, sizeof(rule));
if (error) {
len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
rulenum, strerror(errno));
@@ -1247,7 +1247,7 @@ bsde_set_rule(int rulenum, struct mac_bsdextended_rule *rule, size_t buflen,
char *errstr)
{
int name[10];
- size_t len, size;
+ size_t len;
int error;
if (bsde_check_version(buflen, errstr) != 0)
@@ -1264,8 +1264,7 @@ bsde_set_rule(int rulenum, struct mac_bsdextended_rule *rule, size_t buflen,
name[len] = rulenum;
len++;
- size = sizeof(*rule);
- error = sysctl(name, len, NULL, NULL, rule, size);
+ error = sysctl(name, len, NULL, NULL, rule, sizeof(*rule));
if (error) {
len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
rulenum, strerror(errno));
@@ -1281,7 +1280,7 @@ bsde_add_rule(int *rulenum, struct mac_bsdextended_rule *rule, size_t buflen,
{
char charstr[BUFSIZ];
int name[10];
- size_t len, size;
+ size_t len;
int error, rule_slots;
if (bsde_check_version(buflen, errstr) != 0)
@@ -1305,8 +1304,7 @@ bsde_add_rule(int *rulenum, struct mac_bsdextended_rule *rule, size_t buflen,
name[len] = rule_slots;
len++;
- size = sizeof(*rule);
- error = sysctl(name, len, NULL, NULL, rule, size);
+ error = sysctl(name, len, NULL, NULL, rule, sizeof(*rule));
if (error) {
len = snprintf(errstr, buflen, "%s.%d: %s", MIB ".rules",
rule_slots, strerror(errno));
diff --git a/lib/libulog/Makefile.depend b/lib/libulog/Makefile.depend
new file mode 100644
index 0000000..2e2a25e
--- /dev/null
+++ b/lib/libulog/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libunbound/Makefile.depend b/lib/libunbound/Makefile.depend
new file mode 100644
index 0000000..45199c4
--- /dev/null
+++ b/lib/libunbound/Makefile.depend
@@ -0,0 +1,37 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+config_file.So: configparser.h
+config_file.o: configparser.h
+config_file.po: configparser.h
+configlexer.So: configlexer.c
+configlexer.So: configparser.h
+configlexer.o: configlexer.c
+configlexer.o: configparser.h
+configlexer.po: configlexer.c
+configlexer.po: configparser.h
+configparser.So: configparser.c
+configparser.o: configparser.c
+configparser.po: configparser.c
+.endif
diff --git a/lib/libusb/Makefile.depend b/lib/libusb/Makefile.depend
new file mode 100644
index 0000000..0a2f351
--- /dev/null
+++ b/lib/libusb/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libusbhid/Makefile.depend b/lib/libusbhid/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libusbhid/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libutil/Makefile b/lib/libutil/Makefile
index 2f68628..35d146a 100644
--- a/lib/libutil/Makefile
+++ b/lib/libutil/Makefile
@@ -9,7 +9,7 @@ LIB= util
SHLIB_MAJOR= 9
SRCS= _secure_path.c auth.c expand_number.c flopen.c fparseln.c gr_util.c \
- hexdump.c humanize_number.c kinfo_getfile.c kinfo_getfile.c \
+ hexdump.c humanize_number.c kinfo_getfile.c \
kinfo_getallproc.c kinfo_getproc.c kinfo_getvmmap.c \
kinfo_getvmobject.c kld.c \
login_auth.c login_cap.c \
diff --git a/lib/libutil/Makefile.depend b/lib/libutil/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libutil/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libutil/hexdump.3 b/lib/libutil/hexdump.3
index 8e997ac..9fa96f8 100644
--- a/lib/libutil/hexdump.3
+++ b/lib/libutil/hexdump.3
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 1, 2008
+.Dd May 8, 2014
.Dt HEXDUMP 3
.Os
.Sh NAME
@@ -36,8 +36,17 @@
.Nd "dump a block of bytes to standard out in hexadecimal form"
.Sh SYNOPSIS
.In libutil.h
+.In sys/sbuf.h
.Ft void
.Fn hexdump "void *ptr" "int length" "const char *hdr" "int flags"
+.Ft void
+.Fo sbuf_hexdump
+.Fa "struct sbuf *sb"
+.Fa "void *ptr"
+.Fa "int length"
+.Fa "const char *hdr"
+.Fa "int flags"
+.Fc
.Sh DESCRIPTION
The
.Fn hexdump
@@ -50,6 +59,11 @@ output will start with an offset count, followed by 16 hexadecimal values,
followed by 16
.Tn ASCII
characters.
+.Pp
+The
+.Fn sbuf_hexdump
+function prints the hexdump to the supplied
+.Xr sbuf 9 .
.Bl -tag -width indent
.It Fa ptr
Pointer to the array of bytes to print.
@@ -88,7 +102,8 @@ Do not print the character values on each line.
.El
.El
.Sh SEE ALSO
-.Xr ascii 7
+.Xr ascii 7 ,
+.Xr sbuf 9
.Sh AUTHORS
This manual page was written by
.An Scott Long .
diff --git a/lib/libvgl/Makefile.depend b/lib/libvgl/Makefile.depend
new file mode 100644
index 0000000..09164c1
--- /dev/null
+++ b/lib/libvgl/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libvmmapi/Makefile.depend b/lib/libvmmapi/Makefile.depend
new file mode 100644
index 0000000..a5c14b5
--- /dev/null
+++ b/lib/libvmmapi/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libvmmapi/vmmapi.c b/lib/libvmmapi/vmmapi.c
index 1e6e627..d5f387a 100644
--- a/lib/libvmmapi/vmmapi.c
+++ b/lib/libvmmapi/vmmapi.c
@@ -58,15 +58,23 @@ __FBSDID("$FreeBSD$");
#define MB (1024 * 1024UL)
#define GB (1024 * 1024 * 1024UL)
+/*
+ * Size of the guard region before and after the virtual address space
+ * mapping the guest physical memory. This must be a multiple of the
+ * superpage size for performance reasons.
+ */
+#define VM_MMAP_GUARD_SIZE (4 * MB)
+
+#define PROT_RW (PROT_READ | PROT_WRITE)
+#define PROT_ALL (PROT_READ | PROT_WRITE | PROT_EXEC)
+
struct vmctx {
int fd;
uint32_t lowmem_limit;
- enum vm_mmap_style vms;
int memflags;
size_t lowmem;
- char *lowmem_addr;
size_t highmem;
- char *highmem_addr;
+ char *baseaddr;
char *name;
};
@@ -157,22 +165,6 @@ vm_parse_memsize(const char *optarg, size_t *ret_memsize)
return (error);
}
-int
-vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, size_t *ret_len,
- int *wired)
-{
- int error;
- struct vm_memory_segment seg;
-
- bzero(&seg, sizeof(seg));
- seg.gpa = gpa;
- error = ioctl(ctx->fd, VM_GET_MEMORY_SEG, &seg);
- *ret_len = seg.len;
- if (wired != NULL)
- *wired = seg.wired;
- return (error);
-}
-
uint32_t
vm_get_lowmem_limit(struct vmctx *ctx)
{
@@ -194,39 +186,184 @@ vm_set_memflags(struct vmctx *ctx, int flags)
ctx->memflags = flags;
}
+int
+vm_get_memflags(struct vmctx *ctx)
+{
+
+ return (ctx->memflags);
+}
+
+/*
+ * Map segment 'segid' starting at 'off' into guest address range [gpa,gpa+len).
+ */
+int
+vm_mmap_memseg(struct vmctx *ctx, vm_paddr_t gpa, int segid, vm_ooffset_t off,
+ size_t len, int prot)
+{
+ struct vm_memmap memmap;
+ int error, flags;
+
+ memmap.gpa = gpa;
+ memmap.segid = segid;
+ memmap.segoff = off;
+ memmap.len = len;
+ memmap.prot = prot;
+ memmap.flags = 0;
+
+ if (ctx->memflags & VM_MEM_F_WIRED)
+ memmap.flags |= VM_MEMMAP_F_WIRED;
+
+ /*
+ * If this mapping already exists then don't create it again. This
+ * is the common case for SYSMEM mappings created by bhyveload(8).
+ */
+ error = vm_mmap_getnext(ctx, &gpa, &segid, &off, &len, &prot, &flags);
+ if (error == 0 && gpa == memmap.gpa) {
+ if (segid != memmap.segid || off != memmap.segoff ||
+ prot != memmap.prot || flags != memmap.flags) {
+ errno = EEXIST;
+ return (-1);
+ } else {
+ return (0);
+ }
+ }
+
+ error = ioctl(ctx->fd, VM_MMAP_MEMSEG, &memmap);
+ return (error);
+}
+
+int
+vm_mmap_getnext(struct vmctx *ctx, vm_paddr_t *gpa, int *segid,
+ vm_ooffset_t *segoff, size_t *len, int *prot, int *flags)
+{
+ struct vm_memmap memmap;
+ int error;
+
+ bzero(&memmap, sizeof(struct vm_memmap));
+ memmap.gpa = *gpa;
+ error = ioctl(ctx->fd, VM_MMAP_GETNEXT, &memmap);
+ if (error == 0) {
+ *gpa = memmap.gpa;
+ *segid = memmap.segid;
+ *segoff = memmap.segoff;
+ *len = memmap.len;
+ *prot = memmap.prot;
+ *flags = memmap.flags;
+ }
+ return (error);
+}
+
+/*
+ * Return 0 if the segments are identical and non-zero otherwise.
+ *
+ * This is slightly complicated by the fact that only device memory segments
+ * are named.
+ */
+static int
+cmpseg(size_t len, const char *str, size_t len2, const char *str2)
+{
+
+ if (len == len2) {
+ if ((!str && !str2) || (str && str2 && !strcmp(str, str2)))
+ return (0);
+ }
+ return (-1);
+}
+
static int
-setup_memory_segment(struct vmctx *ctx, vm_paddr_t gpa, size_t len, char **addr)
+vm_alloc_memseg(struct vmctx *ctx, int segid, size_t len, const char *name)
{
- int error, mmap_flags;
- struct vm_memory_segment seg;
+ struct vm_memseg memseg;
+ size_t n;
+ int error;
/*
- * Create and optionally map 'len' bytes of memory at guest
- * physical address 'gpa'
+ * If the memory segment has already been created then just return.
+ * This is the usual case for the SYSMEM segment created by userspace
+ * loaders like bhyveload(8).
*/
- bzero(&seg, sizeof(seg));
- seg.gpa = gpa;
- seg.len = len;
- error = ioctl(ctx->fd, VM_MAP_MEMORY, &seg);
- if (error == 0 && addr != NULL) {
- mmap_flags = MAP_SHARED;
- if ((ctx->memflags & VM_MEM_F_INCORE) == 0)
- mmap_flags |= MAP_NOCORE;
- *addr = mmap(NULL, len, PROT_READ | PROT_WRITE, mmap_flags,
- ctx->fd, gpa);
+ error = vm_get_memseg(ctx, segid, &memseg.len, memseg.name,
+ sizeof(memseg.name));
+ if (error)
+ return (error);
+
+ if (memseg.len != 0) {
+ if (cmpseg(len, name, memseg.len, VM_MEMSEG_NAME(&memseg))) {
+ errno = EINVAL;
+ return (-1);
+ } else {
+ return (0);
+ }
+ }
+
+ bzero(&memseg, sizeof(struct vm_memseg));
+ memseg.segid = segid;
+ memseg.len = len;
+ if (name != NULL) {
+ n = strlcpy(memseg.name, name, sizeof(memseg.name));
+ if (n >= sizeof(memseg.name)) {
+ errno = ENAMETOOLONG;
+ return (-1);
+ }
}
+
+ error = ioctl(ctx->fd, VM_ALLOC_MEMSEG, &memseg);
return (error);
}
int
-vm_setup_memory(struct vmctx *ctx, size_t memsize, enum vm_mmap_style vms)
+vm_get_memseg(struct vmctx *ctx, int segid, size_t *lenp, char *namebuf,
+ size_t bufsize)
{
- char **addr;
+ struct vm_memseg memseg;
+ size_t n;
int error;
- /* XXX VM_MMAP_SPARSE not implemented yet */
- assert(vms == VM_MMAP_NONE || vms == VM_MMAP_ALL);
- ctx->vms = vms;
+ memseg.segid = segid;
+ error = ioctl(ctx->fd, VM_GET_MEMSEG, &memseg);
+ if (error == 0) {
+ *lenp = memseg.len;
+ n = strlcpy(namebuf, memseg.name, bufsize);
+ if (n >= bufsize) {
+ errno = ENAMETOOLONG;
+ error = -1;
+ }
+ }
+ return (error);
+}
+
+static int
+setup_memory_segment(struct vmctx *ctx, vm_paddr_t gpa, size_t len, char *base)
+{
+ char *ptr;
+ int error, flags;
+
+ /* Map 'len' bytes starting at 'gpa' in the guest address space */
+ error = vm_mmap_memseg(ctx, gpa, VM_SYSMEM, gpa, len, PROT_ALL);
+ if (error)
+ return (error);
+
+ flags = MAP_SHARED | MAP_FIXED;
+ if ((ctx->memflags & VM_MEM_F_INCORE) == 0)
+ flags |= MAP_NOCORE;
+
+ /* mmap into the process address space on the host */
+ ptr = mmap(base + gpa, len, PROT_RW, flags, ctx->fd, gpa);
+ if (ptr == MAP_FAILED)
+ return (-1);
+
+ return (0);
+}
+
+int
+vm_setup_memory(struct vmctx *ctx, size_t memsize, enum vm_mmap_style vms)
+{
+ size_t objsize, len;
+ vm_paddr_t gpa;
+ char *baseaddr, *ptr;
+ int error, flags;
+
+ assert(vms == VM_MMAP_ALL);
/*
* If 'memsize' cannot fit entirely in the 'lowmem' segment then
@@ -234,46 +371,63 @@ vm_setup_memory(struct vmctx *ctx, size_t memsize, enum vm_mmap_style vms)
*/
if (memsize > ctx->lowmem_limit) {
ctx->lowmem = ctx->lowmem_limit;
- ctx->highmem = memsize - ctx->lowmem;
+ ctx->highmem = memsize - ctx->lowmem_limit;
+ objsize = 4*GB + ctx->highmem;
} else {
ctx->lowmem = memsize;
ctx->highmem = 0;
+ objsize = ctx->lowmem;
}
- if (ctx->lowmem > 0) {
- addr = (vms == VM_MMAP_ALL) ? &ctx->lowmem_addr : NULL;
- error = setup_memory_segment(ctx, 0, ctx->lowmem, addr);
+ error = vm_alloc_memseg(ctx, VM_SYSMEM, objsize, NULL);
+ if (error)
+ return (error);
+
+ /*
+ * Stake out a contiguous region covering the guest physical memory
+ * and the adjoining guard regions.
+ */
+ len = VM_MMAP_GUARD_SIZE + objsize + VM_MMAP_GUARD_SIZE;
+ flags = MAP_PRIVATE | MAP_ANON | MAP_NOCORE | MAP_ALIGNED_SUPER;
+ ptr = mmap(NULL, len, PROT_NONE, flags, -1, 0);
+ if (ptr == MAP_FAILED)
+ return (-1);
+
+ baseaddr = ptr + VM_MMAP_GUARD_SIZE;
+ if (ctx->highmem > 0) {
+ gpa = 4*GB;
+ len = ctx->highmem;
+ error = setup_memory_segment(ctx, gpa, len, baseaddr);
if (error)
return (error);
}
- if (ctx->highmem > 0) {
- addr = (vms == VM_MMAP_ALL) ? &ctx->highmem_addr : NULL;
- error = setup_memory_segment(ctx, 4*GB, ctx->highmem, addr);
+ if (ctx->lowmem > 0) {
+ gpa = 0;
+ len = ctx->lowmem;
+ error = setup_memory_segment(ctx, gpa, len, baseaddr);
if (error)
return (error);
}
+ ctx->baseaddr = baseaddr;
+
return (0);
}
void *
vm_map_gpa(struct vmctx *ctx, vm_paddr_t gaddr, size_t len)
{
+ vm_paddr_t start, end, mapend;
- /* XXX VM_MMAP_SPARSE not implemented yet */
- assert(ctx->vms == VM_MMAP_ALL);
-
- if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
- return ((void *)(ctx->lowmem_addr + gaddr));
-
- if (gaddr >= 4*GB) {
- gaddr -= 4*GB;
- if (gaddr < ctx->highmem && gaddr + len <= ctx->highmem)
- return ((void *)(ctx->highmem_addr + gaddr));
- }
+ start = gaddr;
+ end = gaddr + len;
+ mapend = ctx->highmem ? 4*GB + ctx->highmem : ctx->lowmem;
- return (NULL);
+ if (start <= end && end <= mapend)
+ return (ctx->baseaddr + start);
+ else
+ return (NULL);
}
size_t
@@ -290,6 +444,56 @@ vm_get_highmem_size(struct vmctx *ctx)
return (ctx->highmem);
}
+void *
+vm_create_devmem(struct vmctx *ctx, int segid, const char *name, size_t len)
+{
+ char pathname[MAXPATHLEN];
+ size_t len2;
+ char *base, *ptr;
+ int fd, error, flags;
+
+ fd = -1;
+ ptr = MAP_FAILED;
+ if (name == NULL || strlen(name) == 0) {
+ errno = EINVAL;
+ goto done;
+ }
+
+ error = vm_alloc_memseg(ctx, segid, len, name);
+ if (error)
+ goto done;
+
+ strlcpy(pathname, "/dev/vmm/", sizeof(pathname));
+ strlcat(pathname, ctx->name, sizeof(pathname));
+ strlcat(pathname, ".", sizeof(pathname));
+ strlcat(pathname, name, sizeof(pathname));
+
+ fd = open(pathname, O_RDWR);
+ if (fd < 0)
+ goto done;
+
+ /*
+ * Stake out a contiguous region covering the device memory and the
+ * adjoining guard regions.
+ */
+ len2 = VM_MMAP_GUARD_SIZE + len + VM_MMAP_GUARD_SIZE;
+ flags = MAP_PRIVATE | MAP_ANON | MAP_NOCORE | MAP_ALIGNED_SUPER;
+ base = mmap(NULL, len2, PROT_NONE, flags, -1, 0);
+ if (base == MAP_FAILED)
+ goto done;
+
+ flags = MAP_SHARED | MAP_FIXED;
+ if ((ctx->memflags & VM_MEM_F_INCORE) == 0)
+ flags |= MAP_NOCORE;
+
+ /* mmap the devmem region in the host address space */
+ ptr = mmap(base + VM_MMAP_GUARD_SIZE, len, PROT_RW, flags, fd, 0);
+done:
+ if (fd >= 0)
+ close(fd);
+ return (ptr);
+}
+
int
vm_set_desc(struct vmctx *ctx, int vcpu, int reg,
uint64_t base, uint32_t limit, uint32_t access)
diff --git a/lib/libvmmapi/vmmapi.h b/lib/libvmmapi/vmmapi.h
index d3ecdc4..57f8c56 100644
--- a/lib/libvmmapi/vmmapi.h
+++ b/lib/libvmmapi/vmmapi.h
@@ -36,7 +36,7 @@
* API version for out-of-tree consumers like grub-bhyve for making compile
* time decisions.
*/
-#define VMMAPI_VERSION 0101 /* 2 digit major followed by 2 digit minor */
+#define VMMAPI_VERSION 0102 /* 2 digit major followed by 2 digit minor */
struct iovec;
struct vmctx;
@@ -52,14 +52,59 @@ enum vm_mmap_style {
VM_MMAP_SPARSE, /* mappings created on-demand */
};
+/*
+ * 'flags' value passed to 'vm_set_memflags()'.
+ */
#define VM_MEM_F_INCORE 0x01 /* include guest memory in core file */
+#define VM_MEM_F_WIRED 0x02 /* guest memory is wired */
+
+/*
+ * Identifiers for memory segments:
+ * - vm_setup_memory() uses VM_SYSMEM for the system memory segment.
+ * - the remaining identifiers can be used to create devmem segments.
+ */
+enum {
+ VM_SYSMEM,
+ VM_BOOTROM,
+ VM_FRAMEBUFFER,
+};
+
+/*
+ * Get the length and name of the memory segment identified by 'segid'.
+ * Note that system memory segments are identified with a nul name.
+ *
+ * Returns 0 on success and non-zero otherwise.
+ */
+int vm_get_memseg(struct vmctx *ctx, int ident, size_t *lenp, char *name,
+ size_t namesiz);
+
+/*
+ * Iterate over the guest address space. This function finds an address range
+ * that starts at an address >= *gpa.
+ *
+ * Returns 0 if the next address range was found and non-zero otherwise.
+ */
+int vm_mmap_getnext(struct vmctx *ctx, vm_paddr_t *gpa, int *segid,
+ vm_ooffset_t *segoff, size_t *len, int *prot, int *flags);
+/*
+ * Create a device memory segment identified by 'segid'.
+ *
+ * Returns a pointer to the memory segment on success and MAP_FAILED otherwise.
+ */
+void *vm_create_devmem(struct vmctx *ctx, int segid, const char *name,
+ size_t len);
+
+/*
+ * Map the memory segment identified by 'segid' into the guest address space
+ * at [gpa,gpa+len) with protection 'prot'.
+ */
+int vm_mmap_memseg(struct vmctx *ctx, vm_paddr_t gpa, int segid,
+ vm_ooffset_t segoff, size_t len, int prot);
int vm_create(const char *name);
struct vmctx *vm_open(const char *name);
void vm_destroy(struct vmctx *ctx);
int vm_parse_memsize(const char *optarg, size_t *memsize);
-int vm_get_memory_seg(struct vmctx *ctx, vm_paddr_t gpa, size_t *ret_len,
- int *wired);
int vm_setup_memory(struct vmctx *ctx, size_t len, enum vm_mmap_style s);
void *vm_map_gpa(struct vmctx *ctx, vm_paddr_t gaddr, size_t len);
int vm_get_gpa_pmap(struct vmctx *, uint64_t gpa, uint64_t *pte, int *num);
@@ -68,6 +113,7 @@ int vm_gla2gpa(struct vmctx *, int vcpuid, struct vm_guest_paging *paging,
uint32_t vm_get_lowmem_limit(struct vmctx *ctx);
void vm_set_lowmem_limit(struct vmctx *ctx, uint32_t limit);
void vm_set_memflags(struct vmctx *ctx, int flags);
+int vm_get_memflags(struct vmctx *ctx);
size_t vm_get_lowmem_size(struct vmctx *ctx);
size_t vm_get_highmem_size(struct vmctx *ctx);
int vm_set_desc(struct vmctx *ctx, int vcpu, int reg,
diff --git a/lib/libwrap/Makefile.depend b/lib/libwrap/Makefile.depend
new file mode 100644
index 0000000..69d1724
--- /dev/null
+++ b/lib/libwrap/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libxo/Makefile.depend b/lib/libxo/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libxo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/liby/Makefile.depend b/lib/liby/Makefile.depend
new file mode 100644
index 0000000..79506ce
--- /dev/null
+++ b/lib/liby/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libypclnt/Makefile.depend b/lib/libypclnt/Makefile.depend
new file mode 100644
index 0000000..36ab5e3
--- /dev/null
+++ b/lib/libypclnt/Makefile.depend
@@ -0,0 +1,54 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.So: yp.h
+yp_clnt.So: yp_clnt.c
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+ypclnt_passwd.So: yppasswd_private.h
+ypclnt_passwd.o: yppasswd_private.h
+ypclnt_passwd.po: yppasswd_private.h
+yppasswd_clnt.So: yppasswd.h
+yppasswd_clnt.So: yppasswd_clnt.c
+yppasswd_clnt.o: yppasswd.h
+yppasswd_clnt.o: yppasswd_clnt.c
+yppasswd_clnt.po: yppasswd.h
+yppasswd_clnt.po: yppasswd_clnt.c
+yppasswd_private_clnt.So: yppasswd_private.h
+yppasswd_private_clnt.So: yppasswd_private_clnt.c
+yppasswd_private_clnt.o: yppasswd_private.h
+yppasswd_private_clnt.o: yppasswd_private_clnt.c
+yppasswd_private_clnt.po: yppasswd_private.h
+yppasswd_private_clnt.po: yppasswd_private_clnt.c
+yppasswd_private_xdr.So: yppasswd_private.h
+yppasswd_private_xdr.So: yppasswd_private_xdr.c
+yppasswd_private_xdr.o: yppasswd_private.h
+yppasswd_private_xdr.o: yppasswd_private_xdr.c
+yppasswd_private_xdr.po: yppasswd_private.h
+yppasswd_private_xdr.po: yppasswd_private_xdr.c
+yppasswd_xdr.So: yppasswd.h
+yppasswd_xdr.So: yppasswd_xdr.c
+yppasswd_xdr.o: yppasswd.h
+yppasswd_xdr.o: yppasswd_xdr.c
+yppasswd_xdr.po: yppasswd.h
+yppasswd_xdr.po: yppasswd_xdr.c
+.endif
diff --git a/lib/libz/Makefile.depend b/lib/libz/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/libz/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/msun/Makefile b/lib/msun/Makefile
index 5cb6292..094fcba 100644
--- a/lib/msun/Makefile
+++ b/lib/msun/Makefile
@@ -35,6 +35,8 @@ CFLAGS+= -I${.CURDIR}/ld80
CFLAGS+= -I${.CURDIR}/ld128
.endif
+CFLAGS+= -I${.CURDIR}/${ARCH_SUBDIR}
+
.PATH: ${.CURDIR}/bsdsrc
.PATH: ${.CURDIR}/src
.PATH: ${.CURDIR}/man
diff --git a/lib/msun/Makefile.depend b/lib/msun/Makefile.depend
new file mode 100644
index 0000000..dde2d60
--- /dev/null
+++ b/lib/msun/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/msun/src/s_ccosh.c b/lib/msun/src/s_ccosh.c
index fbe15fc..2843198 100644
--- a/lib/msun/src/s_ccosh.c
+++ b/lib/msun/src/s_ccosh.c
@@ -32,6 +32,8 @@
*
* Exceptional values are noted in the comments within the source code.
* These values and the return value were taken from n1124.pdf.
+ * The sign of the result for some exceptional values is unspecified but
+ * must satisfy both cosh(conj(z)) == conj(cosh(z)) and cosh(-z) == cosh(z).
*/
#include <sys/cdefs.h>
@@ -63,7 +65,7 @@ ccosh(double complex z)
if (ix < 0x7ff00000 && iy < 0x7ff00000) {
if ((iy | ly) == 0)
return (CMPLX(cosh(x), x * y));
- if (ix < 0x40360000) /* small x: normal case */
+ if (ix < 0x40360000) /* |x| < 22: normal case */
return (CMPLX(cosh(x) * cos(y), sinh(x) * sin(y)));
/* |x| >= 22, so cosh(x) ~= exp(|x|) */
@@ -83,28 +85,27 @@ ccosh(double complex z)
}
/*
- * cosh(+-0 +- I Inf) = dNaN + I sign(d(+-0, dNaN))0.
- * The sign of 0 in the result is unspecified. Choice = normally
- * the same as dNaN. Raise the invalid floating-point exception.
+ * cosh(+-0 +- I Inf) = dNaN + I (+-)(+-)0.
+ * The sign of 0 in the result is unspecified. Choice = product
+ * of the signs of the argument. Raise the invalid floating-point
+ * exception.
*
- * cosh(+-0 +- I NaN) = d(NaN) + I sign(d(+-0, NaN))0.
- * The sign of 0 in the result is unspecified. Choice = normally
- * the same as d(NaN).
+ * cosh(+-0 +- I NaN) = d(NaN) + I (+-)(+-)0.
+ * The sign of 0 in the result is unspecified. Choice = product
+ * of the signs of the argument.
*/
- if ((ix | lx) == 0 && iy >= 0x7ff00000)
- return (CMPLX(y - y, copysign(0, x * (y - y))));
+ if ((ix | lx) == 0) /* && iy >= 0x7ff00000 */
+ return (CMPLX(y - y, x * copysign(0, y)));
/*
* cosh(+-Inf +- I 0) = +Inf + I (+-)(+-)0.
*
- * cosh(NaN +- I 0) = d(NaN) + I sign(d(NaN, +-0))0.
- * The sign of 0 in the result is unspecified.
+ * cosh(NaN +- I 0) = d(NaN) + I (+-)(+-)0.
+ * The sign of 0 in the result is unspecified. Choice = product
+ * of the signs of the argument.
*/
- if ((iy | ly) == 0 && ix >= 0x7ff00000) {
- if (((hx & 0xfffff) | lx) == 0)
- return (CMPLX(x * x, copysign(0, x) * y));
- return (CMPLX(x * x, copysign(0, (x + x) * y)));
- }
+ if ((iy | ly) == 0) /* && ix >= 0x7ff00000 */
+ return (CMPLX(x * x, copysign(0, x) * y));
/*
* cosh(x +- I Inf) = dNaN + I dNaN.
@@ -114,7 +115,7 @@ ccosh(double complex z)
* Optionally raises the invalid floating-point exception for finite
* nonzero x. Choice = don't raise (except for signaling NaNs).
*/
- if (ix < 0x7ff00000 && iy >= 0x7ff00000)
+ if (ix < 0x7ff00000) /* && iy >= 0x7ff00000 */
return (CMPLX(y - y, x * (y - y)));
/*
@@ -126,10 +127,10 @@ ccosh(double complex z)
*
* cosh(+-Inf + I y) = +Inf cos(y) +- I Inf sin(y)
*/
- if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
+ if (ix == 0x7ff00000 && lx == 0) {
if (iy >= 0x7ff00000)
- return (CMPLX(x * x, x * (y - y)));
- return (CMPLX((x * x) * cos(y), x * sin(y)));
+ return (CMPLX(INFINITY, x * (y - y)));
+ return (CMPLX(INFINITY * cos(y), x * sin(y)));
}
/*
diff --git a/lib/msun/src/s_ccoshf.c b/lib/msun/src/s_ccoshf.c
index fe8cf89..eeed92f 100644
--- a/lib/msun/src/s_ccoshf.c
+++ b/lib/msun/src/s_ccoshf.c
@@ -25,7 +25,7 @@
*/
/*
- * Hyperbolic cosine of a complex argument. See s_ccosh.c for details.
+ * Float version of ccosh(). See s_ccosh.c for details.
*/
#include <sys/cdefs.h>
@@ -56,13 +56,13 @@ ccoshf(float complex z)
if (ix < 0x7f800000 && iy < 0x7f800000) {
if (iy == 0)
return (CMPLXF(coshf(x), x * y));
- if (ix < 0x41100000) /* small x: normal case */
+ if (ix < 0x41100000) /* |x| < 9: normal case */
return (CMPLXF(coshf(x) * cosf(y), sinhf(x) * sinf(y)));
/* |x| >= 9, so cosh(x) ~= exp(|x|) */
if (ix < 0x42b17218) {
/* x < 88.7: expf(|x|) won't overflow */
- h = expf(fabsf(x)) * 0.5f;
+ h = expf(fabsf(x)) * 0.5F;
return (CMPLXF(h * cosf(y), copysignf(h, x) * sinf(y)));
} else if (ix < 0x4340b1e7) {
/* x < 192.7: scale to avoid overflow */
@@ -75,22 +75,19 @@ ccoshf(float complex z)
}
}
- if (ix == 0 && iy >= 0x7f800000)
- return (CMPLXF(y - y, copysignf(0, x * (y - y))));
+ if (ix == 0) /* && iy >= 0x7f800000 */
+ return (CMPLXF(y - y, x * copysignf(0, y)));
- if (iy == 0 && ix >= 0x7f800000) {
- if ((hx & 0x7fffff) == 0)
- return (CMPLXF(x * x, copysignf(0, x) * y));
- return (CMPLXF(x * x, copysignf(0, (x + x) * y)));
- }
+ if (iy == 0) /* && ix >= 0x7f800000 */
+ return (CMPLXF(x * x, copysignf(0, x) * y));
- if (ix < 0x7f800000 && iy >= 0x7f800000)
+ if (ix < 0x7f800000) /* && iy >= 0x7f800000 */
return (CMPLXF(y - y, x * (y - y)));
- if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
+ if (ix == 0x7f800000) {
if (iy >= 0x7f800000)
- return (CMPLXF(x * x, x * (y - y)));
- return (CMPLXF((x * x) * cosf(y), x * sinf(y)));
+ return (CMPLXF(INFINITY, x * (y - y)));
+ return (CMPLXF(INFINITY * cosf(y), x * sinf(y)));
}
return (CMPLXF((x * x) * (y - y), (x + x) * (y - y)));
diff --git a/lib/msun/src/s_csinh.c b/lib/msun/src/s_csinh.c
index 37f46da..7af3634 100644
--- a/lib/msun/src/s_csinh.c
+++ b/lib/msun/src/s_csinh.c
@@ -32,6 +32,8 @@
*
* Exceptional values are noted in the comments within the source code.
* These values and the return value were taken from n1124.pdf.
+ * The sign of the result for some exceptional values is unspecified but
+ * must satisfy both sinh(conj(z)) == conj(sinh(z)) and sinh(-z) == -sinh(z).
*/
#include <sys/cdefs.h>
@@ -63,7 +65,7 @@ csinh(double complex z)
if (ix < 0x7ff00000 && iy < 0x7ff00000) {
if ((iy | ly) == 0)
return (CMPLX(sinh(x), y));
- if (ix < 0x40360000) /* small x: normal case */
+ if (ix < 0x40360000) /* |x| < 22: normal case */
return (CMPLX(sinh(x) * cos(y), cosh(x) * sin(y)));
/* |x| >= 22, so cosh(x) ~= exp(|x|) */
@@ -83,27 +85,24 @@ csinh(double complex z)
}
/*
- * sinh(+-0 +- I Inf) = sign(d(+-0, dNaN))0 + I dNaN.
- * The sign of 0 in the result is unspecified. Choice = normally
- * the same as dNaN. Raise the invalid floating-point exception.
+ * sinh(+-0 +- I Inf) = +-0 + I dNaN.
+ * The sign of 0 in the result is unspecified. Choice = same sign
+ * as the argument. Raise the invalid floating-point exception.
*
- * sinh(+-0 +- I NaN) = sign(d(+-0, NaN))0 + I d(NaN).
- * The sign of 0 in the result is unspecified. Choice = normally
- * the same as d(NaN).
+ * sinh(+-0 +- I NaN) = +-0 + I d(NaN).
+ * The sign of 0 in the result is unspecified. Choice = same sign
+ * as the argument.
*/
- if ((ix | lx) == 0 && iy >= 0x7ff00000)
- return (CMPLX(copysign(0, x * (y - y)), y - y));
+ if ((ix | lx) == 0) /* && iy >= 0x7ff00000 */
+ return (CMPLX(x, y - y));
/*
* sinh(+-Inf +- I 0) = +-Inf + I +-0.
*
* sinh(NaN +- I 0) = d(NaN) + I +-0.
*/
- if ((iy | ly) == 0 && ix >= 0x7ff00000) {
- if (((hx & 0xfffff) | lx) == 0)
- return (CMPLX(x, y));
- return (CMPLX(x, copysign(0, y)));
- }
+ if ((iy | ly) == 0) /* && ix >= 0x7ff00000 */
+ return (CMPLX(x + x, y));
/*
* sinh(x +- I Inf) = dNaN + I dNaN.
@@ -113,45 +112,45 @@ csinh(double complex z)
* Optionally raises the invalid floating-point exception for finite
* nonzero x. Choice = don't raise (except for signaling NaNs).
*/
- if (ix < 0x7ff00000 && iy >= 0x7ff00000)
- return (CMPLX(y - y, x * (y - y)));
+ if (ix < 0x7ff00000) /* && iy >= 0x7ff00000 */
+ return (CMPLX(y - y, y - y));
/*
* sinh(+-Inf + I NaN) = +-Inf + I d(NaN).
- * The sign of Inf in the result is unspecified. Choice = normally
- * the same as d(NaN).
+ * The sign of Inf in the result is unspecified. Choice = same sign
+ * as the argument.
*
- * sinh(+-Inf +- I Inf) = +Inf + I dNaN.
- * The sign of Inf in the result is unspecified. Choice = always +.
- * Raise the invalid floating-point exception.
+ * sinh(+-Inf +- I Inf) = +-Inf + I dNaN.
+ * The sign of Inf in the result is unspecified. Choice = same sign
+ * as the argument. Raise the invalid floating-point exception.
*
* sinh(+-Inf + I y) = +-Inf cos(y) + I Inf sin(y)
*/
- if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
+ if (ix == 0x7ff00000 && lx == 0) {
if (iy >= 0x7ff00000)
- return (CMPLX(x * x, x * (y - y)));
+ return (CMPLX(x, y - y));
return (CMPLX(x * cos(y), INFINITY * sin(y)));
}
/*
- * sinh(NaN + I NaN) = d(NaN) + I d(NaN).
+ * sinh(NaN1 + I NaN2) = d(NaN1, NaN2) + I d(NaN1, NaN2).
*
- * sinh(NaN +- I Inf) = d(NaN) + I d(NaN).
+ * sinh(NaN +- I Inf) = d(NaN, dNaN) + I d(NaN, dNaN).
* Optionally raises the invalid floating-point exception.
* Choice = raise.
*
- * sinh(NaN + I y) = d(NaN) + I d(NaN).
+ * sinh(NaN + I y) = d(NaN) + I d(NaN).
* Optionally raises the invalid floating-point exception for finite
* nonzero y. Choice = don't raise (except for signaling NaNs).
*/
- return (CMPLX((x * x) * (y - y), (x + x) * (y - y)));
+ return (CMPLX((x + x) * (y - y), (x * x) * (y - y)));
}
double complex
csin(double complex z)
{
- /* csin(z) = -I * csinh(I * z) */
- z = csinh(CMPLX(-cimag(z), creal(z)));
- return (CMPLX(cimag(z), -creal(z)));
+ /* csin(z) = -I * csinh(I * z) = I * conj(csinh(I * conj(z))). */
+ z = csinh(CMPLX(cimag(z), creal(z)));
+ return (CMPLX(cimag(z), creal(z)));
}
diff --git a/lib/msun/src/s_csinhf.c b/lib/msun/src/s_csinhf.c
index 6348272..c9d9d3c 100644
--- a/lib/msun/src/s_csinhf.c
+++ b/lib/msun/src/s_csinhf.c
@@ -25,7 +25,7 @@
*/
/*
- * Hyperbolic sine of a complex argument z. See s_csinh.c for details.
+ * Float version of csinh(). See s_csinh.c for details.
*/
#include <sys/cdefs.h>
@@ -56,13 +56,13 @@ csinhf(float complex z)
if (ix < 0x7f800000 && iy < 0x7f800000) {
if (iy == 0)
return (CMPLXF(sinhf(x), y));
- if (ix < 0x41100000) /* small x: normal case */
+ if (ix < 0x41100000) /* |x| < 9: normal case */
return (CMPLXF(sinhf(x) * cosf(y), coshf(x) * sinf(y)));
/* |x| >= 9, so cosh(x) ~= exp(|x|) */
if (ix < 0x42b17218) {
/* x < 88.7: expf(|x|) won't overflow */
- h = expf(fabsf(x)) * 0.5f;
+ h = expf(fabsf(x)) * 0.5F;
return (CMPLXF(copysignf(h, x) * cosf(y), h * sinf(y)));
} else if (ix < 0x4340b1e7) {
/* x < 192.7: scale to avoid overflow */
@@ -75,31 +75,28 @@ csinhf(float complex z)
}
}
- if (ix == 0 && iy >= 0x7f800000)
- return (CMPLXF(copysignf(0, x * (y - y)), y - y));
+ if (ix == 0) /* && iy >= 0x7f800000 */
+ return (CMPLXF(x, y - y));
- if (iy == 0 && ix >= 0x7f800000) {
- if ((hx & 0x7fffff) == 0)
- return (CMPLXF(x, y));
- return (CMPLXF(x, copysignf(0, y)));
- }
+ if (iy == 0) /* && ix >= 0x7f800000 */
+ return (CMPLXF(x + x, y));
- if (ix < 0x7f800000 && iy >= 0x7f800000)
- return (CMPLXF(y - y, x * (y - y)));
+ if (ix < 0x7f800000) /* && iy >= 0x7f800000 */
+ return (CMPLXF(y - y, y - y));
- if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
+ if (ix == 0x7f800000) {
if (iy >= 0x7f800000)
- return (CMPLXF(x * x, x * (y - y)));
+ return (CMPLXF(x, y - y));
return (CMPLXF(x * cosf(y), INFINITY * sinf(y)));
}
- return (CMPLXF((x * x) * (y - y), (x + x) * (y - y)));
+ return (CMPLXF((x + x) * (y - y), (x * x) * (y - y)));
}
float complex
csinf(float complex z)
{
- z = csinhf(CMPLXF(-cimagf(z), crealf(z)));
- return (CMPLXF(cimagf(z), -crealf(z)));
+ z = csinhf(CMPLXF(cimagf(z), crealf(z)));
+ return (CMPLXF(cimagf(z), crealf(z)));
}
diff --git a/lib/msun/src/s_ctanh.c b/lib/msun/src/s_ctanh.c
index b15c814..f5b9bdd 100644
--- a/lib/msun/src/s_ctanh.c
+++ b/lib/msun/src/s_ctanh.c
@@ -25,7 +25,7 @@
*/
/*
- * Hyperbolic tangent of a complex argument z = x + i y.
+ * Hyperbolic tangent of a complex argument z = x + I y.
*
* The algorithm is from:
*
@@ -44,15 +44,15 @@
*
* tanh(z) = sinh(z) / cosh(z)
*
- * sinh(x) cos(y) + i cosh(x) sin(y)
+ * sinh(x) cos(y) + I cosh(x) sin(y)
* = ---------------------------------
- * cosh(x) cos(y) + i sinh(x) sin(y)
+ * cosh(x) cos(y) + I sinh(x) sin(y)
*
- * cosh(x) sinh(x) / cos^2(y) + i tan(y)
+ * cosh(x) sinh(x) / cos^2(y) + I tan(y)
* = -------------------------------------
* 1 + sinh^2(x) / cos^2(y)
*
- * beta rho s + i t
+ * beta rho s + I t
* = ----------------
* 1 + beta s^2
*
@@ -85,16 +85,16 @@ ctanh(double complex z)
ix = hx & 0x7fffffff;
/*
- * ctanh(NaN + i 0) = NaN + i 0
+ * ctanh(NaN +- I 0) = d(NaN) +- I 0
*
- * ctanh(NaN + i y) = NaN + i NaN for y != 0
+ * ctanh(NaN + I y) = d(NaN,y) + I d(NaN,y) for y != 0
*
* The imaginary part has the sign of x*sin(2*y), but there's no
* special effort to get this right.
*
- * ctanh(+-Inf +- i Inf) = +-1 +- 0
+ * ctanh(+-Inf +- I Inf) = +-1 +- I 0
*
- * ctanh(+-Inf + i y) = +-1 + 0 sin(2y) for y finite
+ * ctanh(+-Inf + I y) = +-1 + I 0 sin(2y) for y finite
*
* The imaginary part of the sign is unspecified. This special
* case is only needed to avoid a spurious invalid exception when
@@ -102,24 +102,25 @@ ctanh(double complex z)
*/
if (ix >= 0x7ff00000) {
if ((ix & 0xfffff) | lx) /* x is NaN */
- return (CMPLX(x, (y == 0 ? y : x * y)));
+ return (CMPLX((x + 0) * (y + 0),
+ y == 0 ? y : (x + 0) * (y + 0)));
SET_HIGH_WORD(x, hx - 0x40000000); /* x = copysign(1, x) */
return (CMPLX(x, copysign(0, isinf(y) ? y : sin(y) * cos(y))));
}
/*
- * ctanh(x + i NAN) = NaN + i NaN
- * ctanh(x +- i Inf) = NaN + i NaN
+ * ctanh(x + I NaN) = d(NaN) + I d(NaN)
+ * ctanh(x +- I Inf) = dNaN + I dNaN
*/
if (!isfinite(y))
return (CMPLX(y - y, y - y));
/*
- * ctanh(+-huge + i +-y) ~= +-1 +- i 2sin(2y)/exp(2x), using the
+ * ctanh(+-huge +- I y) ~= +-1 +- I 2sin(2y)/exp(2x), using the
* approximation sinh^2(huge) ~= exp(2*huge) / 4.
* We use a modified formula to avoid spurious overflow.
*/
- if (ix >= 0x40360000) { /* x >= 22 */
+ if (ix >= 0x40360000) { /* |x| >= 22 */
double exp_mx = exp(-fabs(x));
return (CMPLX(copysign(1, x),
4 * sin(y) * cos(y) * exp_mx * exp_mx));
@@ -138,7 +139,7 @@ double complex
ctan(double complex z)
{
- /* ctan(z) = -I * ctanh(I * z) */
- z = ctanh(CMPLX(-cimag(z), creal(z)));
- return (CMPLX(cimag(z), -creal(z)));
+ /* ctan(z) = -I * ctanh(I * z) = I * conj(ctanh(I * conj(z))) */
+ z = ctanh(CMPLX(cimag(z), creal(z)));
+ return (CMPLX(cimag(z), creal(z)));
}
diff --git a/lib/msun/src/s_ctanhf.c b/lib/msun/src/s_ctanhf.c
index 9b0cda1..520bf77 100644
--- a/lib/msun/src/s_ctanhf.c
+++ b/lib/msun/src/s_ctanhf.c
@@ -51,7 +51,8 @@ ctanhf(float complex z)
if (ix >= 0x7f800000) {
if (ix & 0x7fffff)
- return (CMPLXF(x, (y == 0 ? y : x * y)));
+ return (CMPLXF((x + 0) * (y + 0),
+ y == 0 ? y : (x + 0) * (y + 0)));
SET_FLOAT_WORD(x, hx - 0x40000000);
return (CMPLXF(x,
copysignf(0, isinf(y) ? y : sinf(y) * cosf(y))));
@@ -60,7 +61,7 @@ ctanhf(float complex z)
if (!isfinite(y))
return (CMPLXF(y - y, y - y));
- if (ix >= 0x41300000) { /* x >= 11 */
+ if (ix >= 0x41300000) { /* |x| >= 11 */
float exp_mx = expf(-fabsf(x));
return (CMPLXF(copysignf(1, x),
4 * sinf(y) * cosf(y) * exp_mx * exp_mx));
@@ -78,7 +79,7 @@ float complex
ctanf(float complex z)
{
- z = ctanhf(CMPLXF(-cimagf(z), crealf(z)));
- return (CMPLXF(cimagf(z), -crealf(z)));
+ z = ctanhf(CMPLXF(cimagf(z), crealf(z)));
+ return (CMPLXF(cimagf(z), crealf(z)));
}
diff --git a/lib/ncurses/form/Makefile.depend b/lib/ncurses/form/Makefile.depend
new file mode 100644
index 0000000..fc0fd0c
--- /dev/null
+++ b/lib/ncurses/form/Makefile.depend
@@ -0,0 +1,140 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fld_arg.So: ncurses_def.h
+fld_arg.o: ncurses_def.h
+fld_arg.po: ncurses_def.h
+fld_attr.So: ncurses_def.h
+fld_attr.o: ncurses_def.h
+fld_attr.po: ncurses_def.h
+fld_current.So: ncurses_def.h
+fld_current.o: ncurses_def.h
+fld_current.po: ncurses_def.h
+fld_def.So: ncurses_def.h
+fld_def.o: ncurses_def.h
+fld_def.po: ncurses_def.h
+fld_dup.So: ncurses_def.h
+fld_dup.o: ncurses_def.h
+fld_dup.po: ncurses_def.h
+fld_ftchoice.So: ncurses_def.h
+fld_ftchoice.o: ncurses_def.h
+fld_ftchoice.po: ncurses_def.h
+fld_ftlink.So: ncurses_def.h
+fld_ftlink.o: ncurses_def.h
+fld_ftlink.po: ncurses_def.h
+fld_info.So: ncurses_def.h
+fld_info.o: ncurses_def.h
+fld_info.po: ncurses_def.h
+fld_just.So: ncurses_def.h
+fld_just.o: ncurses_def.h
+fld_just.po: ncurses_def.h
+fld_link.So: ncurses_def.h
+fld_link.o: ncurses_def.h
+fld_link.po: ncurses_def.h
+fld_max.So: ncurses_def.h
+fld_max.o: ncurses_def.h
+fld_max.po: ncurses_def.h
+fld_move.So: ncurses_def.h
+fld_move.o: ncurses_def.h
+fld_move.po: ncurses_def.h
+fld_newftyp.So: ncurses_def.h
+fld_newftyp.o: ncurses_def.h
+fld_newftyp.po: ncurses_def.h
+fld_opts.So: ncurses_def.h
+fld_opts.o: ncurses_def.h
+fld_opts.po: ncurses_def.h
+fld_pad.So: ncurses_def.h
+fld_pad.o: ncurses_def.h
+fld_pad.po: ncurses_def.h
+fld_page.So: ncurses_def.h
+fld_page.o: ncurses_def.h
+fld_page.po: ncurses_def.h
+fld_stat.So: ncurses_def.h
+fld_stat.o: ncurses_def.h
+fld_stat.po: ncurses_def.h
+fld_type.So: ncurses_def.h
+fld_type.o: ncurses_def.h
+fld_type.po: ncurses_def.h
+fld_user.So: ncurses_def.h
+fld_user.o: ncurses_def.h
+fld_user.po: ncurses_def.h
+frm_cursor.So: ncurses_def.h
+frm_cursor.o: ncurses_def.h
+frm_cursor.po: ncurses_def.h
+frm_data.So: ncurses_def.h
+frm_data.o: ncurses_def.h
+frm_data.po: ncurses_def.h
+frm_def.So: ncurses_def.h
+frm_def.o: ncurses_def.h
+frm_def.po: ncurses_def.h
+frm_driver.So: ncurses_def.h
+frm_driver.o: ncurses_def.h
+frm_driver.po: ncurses_def.h
+frm_hook.So: ncurses_def.h
+frm_hook.o: ncurses_def.h
+frm_hook.po: ncurses_def.h
+frm_opts.So: ncurses_def.h
+frm_opts.o: ncurses_def.h
+frm_opts.po: ncurses_def.h
+frm_page.So: ncurses_def.h
+frm_page.o: ncurses_def.h
+frm_page.po: ncurses_def.h
+frm_post.So: ncurses_def.h
+frm_post.o: ncurses_def.h
+frm_post.po: ncurses_def.h
+frm_req_name.So: ncurses_def.h
+frm_req_name.o: ncurses_def.h
+frm_req_name.po: ncurses_def.h
+frm_scale.So: ncurses_def.h
+frm_scale.o: ncurses_def.h
+frm_scale.po: ncurses_def.h
+frm_sub.So: ncurses_def.h
+frm_sub.o: ncurses_def.h
+frm_sub.po: ncurses_def.h
+frm_user.So: ncurses_def.h
+frm_user.o: ncurses_def.h
+frm_user.po: ncurses_def.h
+frm_win.So: ncurses_def.h
+frm_win.o: ncurses_def.h
+frm_win.po: ncurses_def.h
+fty_alnum.So: ncurses_def.h
+fty_alnum.o: ncurses_def.h
+fty_alnum.po: ncurses_def.h
+fty_alpha.So: ncurses_def.h
+fty_alpha.o: ncurses_def.h
+fty_alpha.po: ncurses_def.h
+fty_enum.So: ncurses_def.h
+fty_enum.o: ncurses_def.h
+fty_enum.po: ncurses_def.h
+fty_int.So: ncurses_def.h
+fty_int.o: ncurses_def.h
+fty_int.po: ncurses_def.h
+fty_ipv4.So: ncurses_def.h
+fty_ipv4.o: ncurses_def.h
+fty_ipv4.po: ncurses_def.h
+fty_num.So: ncurses_def.h
+fty_num.o: ncurses_def.h
+fty_num.po: ncurses_def.h
+fty_regex.So: ncurses_def.h
+fty_regex.o: ncurses_def.h
+fty_regex.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/formw/Makefile.depend b/lib/ncurses/formw/Makefile.depend
new file mode 100644
index 0000000..04d041a4
--- /dev/null
+++ b/lib/ncurses/formw/Makefile.depend
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fld_arg.So: ncurses_def.h
+fld_arg.o: ncurses_def.h
+fld_arg.po: ncurses_def.h
+fld_attr.So: ncurses_def.h
+fld_attr.o: ncurses_def.h
+fld_attr.po: ncurses_def.h
+fld_current.So: ncurses_def.h
+fld_current.o: ncurses_def.h
+fld_current.po: ncurses_def.h
+fld_def.So: ncurses_def.h
+fld_def.o: ncurses_def.h
+fld_def.po: ncurses_def.h
+fld_dup.So: ncurses_def.h
+fld_dup.o: ncurses_def.h
+fld_dup.po: ncurses_def.h
+fld_ftchoice.So: ncurses_def.h
+fld_ftchoice.o: ncurses_def.h
+fld_ftchoice.po: ncurses_def.h
+fld_ftlink.So: ncurses_def.h
+fld_ftlink.o: ncurses_def.h
+fld_ftlink.po: ncurses_def.h
+fld_info.So: ncurses_def.h
+fld_info.o: ncurses_def.h
+fld_info.po: ncurses_def.h
+fld_just.So: ncurses_def.h
+fld_just.o: ncurses_def.h
+fld_just.po: ncurses_def.h
+fld_link.So: ncurses_def.h
+fld_link.o: ncurses_def.h
+fld_link.po: ncurses_def.h
+fld_max.So: ncurses_def.h
+fld_max.o: ncurses_def.h
+fld_max.po: ncurses_def.h
+fld_move.So: ncurses_def.h
+fld_move.o: ncurses_def.h
+fld_move.po: ncurses_def.h
+fld_newftyp.So: ncurses_def.h
+fld_newftyp.o: ncurses_def.h
+fld_newftyp.po: ncurses_def.h
+fld_opts.So: ncurses_def.h
+fld_opts.o: ncurses_def.h
+fld_opts.po: ncurses_def.h
+fld_pad.So: ncurses_def.h
+fld_pad.o: ncurses_def.h
+fld_pad.po: ncurses_def.h
+fld_page.So: ncurses_def.h
+fld_page.o: ncurses_def.h
+fld_page.po: ncurses_def.h
+fld_stat.So: ncurses_def.h
+fld_stat.o: ncurses_def.h
+fld_stat.po: ncurses_def.h
+fld_type.So: ncurses_def.h
+fld_type.o: ncurses_def.h
+fld_type.po: ncurses_def.h
+fld_user.So: ncurses_def.h
+fld_user.o: ncurses_def.h
+fld_user.po: ncurses_def.h
+frm_cursor.So: ncurses_def.h
+frm_cursor.o: ncurses_def.h
+frm_cursor.po: ncurses_def.h
+frm_data.So: ncurses_def.h
+frm_data.o: ncurses_def.h
+frm_data.po: ncurses_def.h
+frm_def.So: ncurses_def.h
+frm_def.o: ncurses_def.h
+frm_def.po: ncurses_def.h
+frm_driver.So: ncurses_def.h
+frm_driver.o: ncurses_def.h
+frm_driver.po: ncurses_def.h
+frm_hook.So: ncurses_def.h
+frm_hook.o: ncurses_def.h
+frm_hook.po: ncurses_def.h
+frm_opts.So: ncurses_def.h
+frm_opts.o: ncurses_def.h
+frm_opts.po: ncurses_def.h
+frm_page.So: ncurses_def.h
+frm_page.o: ncurses_def.h
+frm_page.po: ncurses_def.h
+frm_post.So: ncurses_def.h
+frm_post.o: ncurses_def.h
+frm_post.po: ncurses_def.h
+frm_req_name.So: ncurses_def.h
+frm_req_name.o: ncurses_def.h
+frm_req_name.po: ncurses_def.h
+frm_scale.So: ncurses_def.h
+frm_scale.o: ncurses_def.h
+frm_scale.po: ncurses_def.h
+frm_sub.So: ncurses_def.h
+frm_sub.o: ncurses_def.h
+frm_sub.po: ncurses_def.h
+frm_user.So: ncurses_def.h
+frm_user.o: ncurses_def.h
+frm_user.po: ncurses_def.h
+frm_win.So: ncurses_def.h
+frm_win.o: ncurses_def.h
+frm_win.po: ncurses_def.h
+fty_alnum.So: ncurses_def.h
+fty_alnum.o: ncurses_def.h
+fty_alnum.po: ncurses_def.h
+fty_alpha.So: ncurses_def.h
+fty_alpha.o: ncurses_def.h
+fty_alpha.po: ncurses_def.h
+fty_enum.So: ncurses_def.h
+fty_enum.o: ncurses_def.h
+fty_enum.po: ncurses_def.h
+fty_int.So: ncurses_def.h
+fty_int.o: ncurses_def.h
+fty_int.po: ncurses_def.h
+fty_ipv4.So: ncurses_def.h
+fty_ipv4.o: ncurses_def.h
+fty_ipv4.po: ncurses_def.h
+fty_num.So: ncurses_def.h
+fty_num.o: ncurses_def.h
+fty_num.po: ncurses_def.h
+fty_regex.So: ncurses_def.h
+fty_regex.o: ncurses_def.h
+fty_regex.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/menu/Makefile.depend b/lib/ncurses/menu/Makefile.depend
new file mode 100644
index 0000000..cb8d80b
--- /dev/null
+++ b/lib/ncurses/menu/Makefile.depend
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+m_attribs.So: ncurses_def.h
+m_attribs.o: ncurses_def.h
+m_attribs.po: ncurses_def.h
+m_cursor.So: ncurses_def.h
+m_cursor.o: ncurses_def.h
+m_cursor.po: ncurses_def.h
+m_driver.So: ncurses_def.h
+m_driver.o: ncurses_def.h
+m_driver.po: ncurses_def.h
+m_format.So: ncurses_def.h
+m_format.o: ncurses_def.h
+m_format.po: ncurses_def.h
+m_global.So: ncurses_def.h
+m_global.o: ncurses_def.h
+m_global.po: ncurses_def.h
+m_hook.So: ncurses_def.h
+m_hook.o: ncurses_def.h
+m_hook.po: ncurses_def.h
+m_item_cur.So: ncurses_def.h
+m_item_cur.o: ncurses_def.h
+m_item_cur.po: ncurses_def.h
+m_item_nam.So: ncurses_def.h
+m_item_nam.o: ncurses_def.h
+m_item_nam.po: ncurses_def.h
+m_item_new.So: ncurses_def.h
+m_item_new.o: ncurses_def.h
+m_item_new.po: ncurses_def.h
+m_item_opt.So: ncurses_def.h
+m_item_opt.o: ncurses_def.h
+m_item_opt.po: ncurses_def.h
+m_item_top.So: ncurses_def.h
+m_item_top.o: ncurses_def.h
+m_item_top.po: ncurses_def.h
+m_item_use.So: ncurses_def.h
+m_item_use.o: ncurses_def.h
+m_item_use.po: ncurses_def.h
+m_item_val.So: ncurses_def.h
+m_item_val.o: ncurses_def.h
+m_item_val.po: ncurses_def.h
+m_item_vis.So: ncurses_def.h
+m_item_vis.o: ncurses_def.h
+m_item_vis.po: ncurses_def.h
+m_items.So: ncurses_def.h
+m_items.o: ncurses_def.h
+m_items.po: ncurses_def.h
+m_new.So: ncurses_def.h
+m_new.o: ncurses_def.h
+m_new.po: ncurses_def.h
+m_opts.So: ncurses_def.h
+m_opts.o: ncurses_def.h
+m_opts.po: ncurses_def.h
+m_pad.So: ncurses_def.h
+m_pad.o: ncurses_def.h
+m_pad.po: ncurses_def.h
+m_pattern.So: ncurses_def.h
+m_pattern.o: ncurses_def.h
+m_pattern.po: ncurses_def.h
+m_post.So: ncurses_def.h
+m_post.o: ncurses_def.h
+m_post.po: ncurses_def.h
+m_req_name.So: ncurses_def.h
+m_req_name.o: ncurses_def.h
+m_req_name.po: ncurses_def.h
+m_scale.So: ncurses_def.h
+m_scale.o: ncurses_def.h
+m_scale.po: ncurses_def.h
+m_spacing.So: ncurses_def.h
+m_spacing.o: ncurses_def.h
+m_spacing.po: ncurses_def.h
+m_sub.So: ncurses_def.h
+m_sub.o: ncurses_def.h
+m_sub.po: ncurses_def.h
+m_userptr.So: ncurses_def.h
+m_userptr.o: ncurses_def.h
+m_userptr.po: ncurses_def.h
+m_win.So: ncurses_def.h
+m_win.o: ncurses_def.h
+m_win.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/menuw/Makefile.depend b/lib/ncurses/menuw/Makefile.depend
new file mode 100644
index 0000000..771e004
--- /dev/null
+++ b/lib/ncurses/menuw/Makefile.depend
@@ -0,0 +1,100 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+m_attribs.So: ncurses_def.h
+m_attribs.o: ncurses_def.h
+m_attribs.po: ncurses_def.h
+m_cursor.So: ncurses_def.h
+m_cursor.o: ncurses_def.h
+m_cursor.po: ncurses_def.h
+m_driver.So: ncurses_def.h
+m_driver.o: ncurses_def.h
+m_driver.po: ncurses_def.h
+m_format.So: ncurses_def.h
+m_format.o: ncurses_def.h
+m_format.po: ncurses_def.h
+m_global.So: ncurses_def.h
+m_global.o: ncurses_def.h
+m_global.po: ncurses_def.h
+m_hook.So: ncurses_def.h
+m_hook.o: ncurses_def.h
+m_hook.po: ncurses_def.h
+m_item_cur.So: ncurses_def.h
+m_item_cur.o: ncurses_def.h
+m_item_cur.po: ncurses_def.h
+m_item_nam.So: ncurses_def.h
+m_item_nam.o: ncurses_def.h
+m_item_nam.po: ncurses_def.h
+m_item_new.So: ncurses_def.h
+m_item_new.o: ncurses_def.h
+m_item_new.po: ncurses_def.h
+m_item_opt.So: ncurses_def.h
+m_item_opt.o: ncurses_def.h
+m_item_opt.po: ncurses_def.h
+m_item_top.So: ncurses_def.h
+m_item_top.o: ncurses_def.h
+m_item_top.po: ncurses_def.h
+m_item_use.So: ncurses_def.h
+m_item_use.o: ncurses_def.h
+m_item_use.po: ncurses_def.h
+m_item_val.So: ncurses_def.h
+m_item_val.o: ncurses_def.h
+m_item_val.po: ncurses_def.h
+m_item_vis.So: ncurses_def.h
+m_item_vis.o: ncurses_def.h
+m_item_vis.po: ncurses_def.h
+m_items.So: ncurses_def.h
+m_items.o: ncurses_def.h
+m_items.po: ncurses_def.h
+m_new.So: ncurses_def.h
+m_new.o: ncurses_def.h
+m_new.po: ncurses_def.h
+m_opts.So: ncurses_def.h
+m_opts.o: ncurses_def.h
+m_opts.po: ncurses_def.h
+m_pad.So: ncurses_def.h
+m_pad.o: ncurses_def.h
+m_pad.po: ncurses_def.h
+m_pattern.So: ncurses_def.h
+m_pattern.o: ncurses_def.h
+m_pattern.po: ncurses_def.h
+m_post.So: ncurses_def.h
+m_post.o: ncurses_def.h
+m_post.po: ncurses_def.h
+m_req_name.So: ncurses_def.h
+m_req_name.o: ncurses_def.h
+m_req_name.po: ncurses_def.h
+m_scale.So: ncurses_def.h
+m_scale.o: ncurses_def.h
+m_scale.po: ncurses_def.h
+m_spacing.So: ncurses_def.h
+m_spacing.o: ncurses_def.h
+m_spacing.po: ncurses_def.h
+m_sub.So: ncurses_def.h
+m_sub.o: ncurses_def.h
+m_sub.po: ncurses_def.h
+m_userptr.So: ncurses_def.h
+m_userptr.o: ncurses_def.h
+m_userptr.po: ncurses_def.h
+m_win.So: ncurses_def.h
+m_win.o: ncurses_def.h
+m_win.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile
index 3c2e5d9..31c68cd 100644
--- a/lib/ncurses/ncurses/Makefile
+++ b/lib/ncurses/ncurses/Makefile
@@ -308,6 +308,7 @@ SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtermlib${LIB_SUFFIX}_p.a
SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtinfo${LIB_SUFFIX}_p.a
.endif
+.if ${.CURDIR:T} == "ncurses"
.if defined(ENABLE_WIDEC)
DOCSDIR= ${SHAREDIR}/doc/ncurses
DOCS= ncurses-intro.html hackguide.html
@@ -317,6 +318,7 @@ DOCS= ncurses-intro.html hackguide.html
.PATH: ${NCURSES_DIR}/doc/html
FILESGROUPS= DOCS
.endif
+.endif
# Generated source
.ORDER: names.c codes.c
diff --git a/lib/ncurses/ncurses/Makefile.depend b/lib/ncurses/ncurses/Makefile.depend
new file mode 100644
index 0000000..df76371
--- /dev/null
+++ b/lib/ncurses/ncurses/Makefile.depend
@@ -0,0 +1,1799 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+access.So: curses.h
+access.So: ncurses_def.h
+access.So: term.h
+access.So: unctrl.h
+access.o: curses.h
+access.o: ncurses_def.h
+access.o: term.h
+access.o: unctrl.h
+access.po: curses.h
+access.po: ncurses_def.h
+access.po: term.h
+access.po: unctrl.h
+add_tries.So: curses.h
+add_tries.So: ncurses_def.h
+add_tries.So: term.h
+add_tries.So: unctrl.h
+add_tries.o: curses.h
+add_tries.o: ncurses_def.h
+add_tries.o: term.h
+add_tries.o: unctrl.h
+add_tries.po: curses.h
+add_tries.po: ncurses_def.h
+add_tries.po: term.h
+add_tries.po: unctrl.h
+alloc_entry.So: curses.h
+alloc_entry.So: ncurses_def.h
+alloc_entry.So: term.h
+alloc_entry.So: unctrl.h
+alloc_entry.o: curses.h
+alloc_entry.o: ncurses_def.h
+alloc_entry.o: term.h
+alloc_entry.o: unctrl.h
+alloc_entry.po: curses.h
+alloc_entry.po: ncurses_def.h
+alloc_entry.po: term.h
+alloc_entry.po: unctrl.h
+alloc_ttype.So: curses.h
+alloc_ttype.So: ncurses_def.h
+alloc_ttype.So: term.h
+alloc_ttype.So: unctrl.h
+alloc_ttype.o: curses.h
+alloc_ttype.o: ncurses_def.h
+alloc_ttype.o: term.h
+alloc_ttype.o: unctrl.h
+alloc_ttype.po: curses.h
+alloc_ttype.po: ncurses_def.h
+alloc_ttype.po: term.h
+alloc_ttype.po: unctrl.h
+captoinfo.So: curses.h
+captoinfo.So: ncurses_def.h
+captoinfo.So: term.h
+captoinfo.So: unctrl.h
+captoinfo.o: curses.h
+captoinfo.o: ncurses_def.h
+captoinfo.o: term.h
+captoinfo.o: unctrl.h
+captoinfo.po: curses.h
+captoinfo.po: ncurses_def.h
+captoinfo.po: term.h
+captoinfo.po: unctrl.h
+codes.So: codes.c
+codes.So: curses.h
+codes.So: ncurses_def.h
+codes.So: term.h
+codes.So: unctrl.h
+codes.o: codes.c
+codes.o: curses.h
+codes.o: ncurses_def.h
+codes.o: term.h
+codes.o: unctrl.h
+codes.po: codes.c
+codes.po: curses.h
+codes.po: ncurses_def.h
+codes.po: term.h
+codes.po: unctrl.h
+comp_captab.So: comp_captab.c
+comp_captab.So: curses.h
+comp_captab.So: hashsize.h
+comp_captab.So: ncurses_def.h
+comp_captab.So: term.h
+comp_captab.So: unctrl.h
+comp_captab.o: comp_captab.c
+comp_captab.o: curses.h
+comp_captab.o: hashsize.h
+comp_captab.o: ncurses_def.h
+comp_captab.o: term.h
+comp_captab.o: unctrl.h
+comp_captab.po: comp_captab.c
+comp_captab.po: curses.h
+comp_captab.po: hashsize.h
+comp_captab.po: ncurses_def.h
+comp_captab.po: term.h
+comp_captab.po: unctrl.h
+comp_error.So: curses.h
+comp_error.So: ncurses_def.h
+comp_error.So: term.h
+comp_error.So: unctrl.h
+comp_error.o: curses.h
+comp_error.o: ncurses_def.h
+comp_error.o: term.h
+comp_error.o: unctrl.h
+comp_error.po: curses.h
+comp_error.po: ncurses_def.h
+comp_error.po: term.h
+comp_error.po: unctrl.h
+comp_expand.So: curses.h
+comp_expand.So: ncurses_def.h
+comp_expand.So: term.h
+comp_expand.So: unctrl.h
+comp_expand.o: curses.h
+comp_expand.o: ncurses_def.h
+comp_expand.o: term.h
+comp_expand.o: unctrl.h
+comp_expand.po: curses.h
+comp_expand.po: ncurses_def.h
+comp_expand.po: term.h
+comp_expand.po: unctrl.h
+comp_hash.So: curses.h
+comp_hash.So: hashsize.h
+comp_hash.So: ncurses_def.h
+comp_hash.So: term.h
+comp_hash.So: unctrl.h
+comp_hash.o: curses.h
+comp_hash.o: hashsize.h
+comp_hash.o: ncurses_def.h
+comp_hash.o: term.h
+comp_hash.o: unctrl.h
+comp_hash.po: curses.h
+comp_hash.po: hashsize.h
+comp_hash.po: ncurses_def.h
+comp_hash.po: term.h
+comp_hash.po: unctrl.h
+comp_parse.So: curses.h
+comp_parse.So: ncurses_def.h
+comp_parse.So: term.h
+comp_parse.So: unctrl.h
+comp_parse.o: curses.h
+comp_parse.o: ncurses_def.h
+comp_parse.o: term.h
+comp_parse.o: unctrl.h
+comp_parse.po: curses.h
+comp_parse.po: ncurses_def.h
+comp_parse.po: term.h
+comp_parse.po: unctrl.h
+comp_scan.So: curses.h
+comp_scan.So: ncurses_def.h
+comp_scan.So: term.h
+comp_scan.So: unctrl.h
+comp_scan.o: curses.h
+comp_scan.o: ncurses_def.h
+comp_scan.o: term.h
+comp_scan.o: unctrl.h
+comp_scan.po: curses.h
+comp_scan.po: ncurses_def.h
+comp_scan.po: term.h
+comp_scan.po: unctrl.h
+db_iterator.So: curses.h
+db_iterator.So: ncurses_def.h
+db_iterator.So: term.h
+db_iterator.So: unctrl.h
+db_iterator.o: curses.h
+db_iterator.o: ncurses_def.h
+db_iterator.o: term.h
+db_iterator.o: unctrl.h
+db_iterator.po: curses.h
+db_iterator.po: ncurses_def.h
+db_iterator.po: term.h
+db_iterator.po: unctrl.h
+define_key.So: curses.h
+define_key.So: ncurses_def.h
+define_key.So: term.h
+define_key.So: unctrl.h
+define_key.o: curses.h
+define_key.o: ncurses_def.h
+define_key.o: term.h
+define_key.o: unctrl.h
+define_key.po: curses.h
+define_key.po: ncurses_def.h
+define_key.po: term.h
+define_key.po: unctrl.h
+doalloc.So: curses.h
+doalloc.So: ncurses_def.h
+doalloc.So: term.h
+doalloc.So: unctrl.h
+doalloc.o: curses.h
+doalloc.o: ncurses_def.h
+doalloc.o: term.h
+doalloc.o: unctrl.h
+doalloc.po: curses.h
+doalloc.po: ncurses_def.h
+doalloc.po: term.h
+doalloc.po: unctrl.h
+entries.So: curses.h
+entries.So: ncurses_def.h
+entries.So: term.h
+entries.So: unctrl.h
+entries.o: curses.h
+entries.o: ncurses_def.h
+entries.o: term.h
+entries.o: unctrl.h
+entries.po: curses.h
+entries.po: ncurses_def.h
+entries.po: term.h
+entries.po: unctrl.h
+expanded.So: curses.h
+expanded.So: expanded.c
+expanded.So: ncurses_def.h
+expanded.So: term.h
+expanded.So: unctrl.h
+expanded.o: curses.h
+expanded.o: expanded.c
+expanded.o: ncurses_def.h
+expanded.o: term.h
+expanded.o: unctrl.h
+expanded.po: curses.h
+expanded.po: expanded.c
+expanded.po: ncurses_def.h
+expanded.po: term.h
+expanded.po: unctrl.h
+fallback.So: curses.h
+fallback.So: fallback.c
+fallback.So: ncurses_def.h
+fallback.So: term.h
+fallback.So: unctrl.h
+fallback.o: curses.h
+fallback.o: fallback.c
+fallback.o: ncurses_def.h
+fallback.o: term.h
+fallback.o: unctrl.h
+fallback.po: curses.h
+fallback.po: fallback.c
+fallback.po: ncurses_def.h
+fallback.po: term.h
+fallback.po: unctrl.h
+free_ttype.So: curses.h
+free_ttype.So: ncurses_def.h
+free_ttype.So: term.h
+free_ttype.So: unctrl.h
+free_ttype.o: curses.h
+free_ttype.o: ncurses_def.h
+free_ttype.o: term.h
+free_ttype.o: unctrl.h
+free_ttype.po: curses.h
+free_ttype.po: ncurses_def.h
+free_ttype.po: term.h
+free_ttype.po: unctrl.h
+getenv_num.So: curses.h
+getenv_num.So: ncurses_def.h
+getenv_num.So: term.h
+getenv_num.So: unctrl.h
+getenv_num.o: curses.h
+getenv_num.o: ncurses_def.h
+getenv_num.o: term.h
+getenv_num.o: unctrl.h
+getenv_num.po: curses.h
+getenv_num.po: ncurses_def.h
+getenv_num.po: term.h
+getenv_num.po: unctrl.h
+hardscroll.So: curses.h
+hardscroll.So: ncurses_def.h
+hardscroll.So: term.h
+hardscroll.So: unctrl.h
+hardscroll.o: curses.h
+hardscroll.o: ncurses_def.h
+hardscroll.o: term.h
+hardscroll.o: unctrl.h
+hardscroll.po: curses.h
+hardscroll.po: ncurses_def.h
+hardscroll.po: term.h
+hardscroll.po: unctrl.h
+hashed_db.So: curses.h
+hashed_db.So: ncurses_def.h
+hashed_db.So: term.h
+hashed_db.So: unctrl.h
+hashed_db.o: curses.h
+hashed_db.o: ncurses_def.h
+hashed_db.o: term.h
+hashed_db.o: unctrl.h
+hashed_db.po: curses.h
+hashed_db.po: ncurses_def.h
+hashed_db.po: term.h
+hashed_db.po: unctrl.h
+hashmap.So: curses.h
+hashmap.So: ncurses_def.h
+hashmap.So: term.h
+hashmap.So: unctrl.h
+hashmap.o: curses.h
+hashmap.o: ncurses_def.h
+hashmap.o: term.h
+hashmap.o: unctrl.h
+hashmap.po: curses.h
+hashmap.po: ncurses_def.h
+hashmap.po: term.h
+hashmap.po: unctrl.h
+home_terminfo.So: curses.h
+home_terminfo.So: ncurses_def.h
+home_terminfo.So: term.h
+home_terminfo.So: unctrl.h
+home_terminfo.o: curses.h
+home_terminfo.o: ncurses_def.h
+home_terminfo.o: term.h
+home_terminfo.o: unctrl.h
+home_terminfo.po: curses.h
+home_terminfo.po: ncurses_def.h
+home_terminfo.po: term.h
+home_terminfo.po: unctrl.h
+init_keytry.So: curses.h
+init_keytry.So: init_keytry.h
+init_keytry.So: ncurses_def.h
+init_keytry.So: term.h
+init_keytry.So: unctrl.h
+init_keytry.o: curses.h
+init_keytry.o: init_keytry.h
+init_keytry.o: ncurses_def.h
+init_keytry.o: term.h
+init_keytry.o: unctrl.h
+init_keytry.po: curses.h
+init_keytry.po: init_keytry.h
+init_keytry.po: ncurses_def.h
+init_keytry.po: term.h
+init_keytry.po: unctrl.h
+key_defined.So: curses.h
+key_defined.So: ncurses_def.h
+key_defined.So: term.h
+key_defined.So: unctrl.h
+key_defined.o: curses.h
+key_defined.o: ncurses_def.h
+key_defined.o: term.h
+key_defined.o: unctrl.h
+key_defined.po: curses.h
+key_defined.po: ncurses_def.h
+key_defined.po: term.h
+key_defined.po: unctrl.h
+keybound.So: curses.h
+keybound.So: ncurses_def.h
+keybound.So: term.h
+keybound.So: unctrl.h
+keybound.o: curses.h
+keybound.o: ncurses_def.h
+keybound.o: term.h
+keybound.o: unctrl.h
+keybound.po: curses.h
+keybound.po: ncurses_def.h
+keybound.po: term.h
+keybound.po: unctrl.h
+keyok.So: curses.h
+keyok.So: ncurses_def.h
+keyok.So: term.h
+keyok.So: unctrl.h
+keyok.o: curses.h
+keyok.o: ncurses_def.h
+keyok.o: term.h
+keyok.o: unctrl.h
+keyok.po: curses.h
+keyok.po: ncurses_def.h
+keyok.po: term.h
+keyok.po: unctrl.h
+legacy_coding.So: curses.h
+legacy_coding.So: ncurses_def.h
+legacy_coding.So: term.h
+legacy_coding.So: unctrl.h
+legacy_coding.o: curses.h
+legacy_coding.o: ncurses_def.h
+legacy_coding.o: term.h
+legacy_coding.o: unctrl.h
+legacy_coding.po: curses.h
+legacy_coding.po: ncurses_def.h
+legacy_coding.po: term.h
+legacy_coding.po: unctrl.h
+lib_acs.So: curses.h
+lib_acs.So: ncurses_def.h
+lib_acs.So: term.h
+lib_acs.So: unctrl.h
+lib_acs.o: curses.h
+lib_acs.o: ncurses_def.h
+lib_acs.o: term.h
+lib_acs.o: unctrl.h
+lib_acs.po: curses.h
+lib_acs.po: ncurses_def.h
+lib_acs.po: term.h
+lib_acs.po: unctrl.h
+lib_addch.So: curses.h
+lib_addch.So: ncurses_def.h
+lib_addch.So: term.h
+lib_addch.So: unctrl.h
+lib_addch.o: curses.h
+lib_addch.o: ncurses_def.h
+lib_addch.o: term.h
+lib_addch.o: unctrl.h
+lib_addch.po: curses.h
+lib_addch.po: ncurses_def.h
+lib_addch.po: term.h
+lib_addch.po: unctrl.h
+lib_addstr.So: curses.h
+lib_addstr.So: ncurses_def.h
+lib_addstr.So: term.h
+lib_addstr.So: unctrl.h
+lib_addstr.o: curses.h
+lib_addstr.o: ncurses_def.h
+lib_addstr.o: term.h
+lib_addstr.o: unctrl.h
+lib_addstr.po: curses.h
+lib_addstr.po: ncurses_def.h
+lib_addstr.po: term.h
+lib_addstr.po: unctrl.h
+lib_baudrate.So: curses.h
+lib_baudrate.So: ncurses_def.h
+lib_baudrate.So: term.h
+lib_baudrate.So: termcap.h
+lib_baudrate.So: unctrl.h
+lib_baudrate.o: curses.h
+lib_baudrate.o: ncurses_def.h
+lib_baudrate.o: term.h
+lib_baudrate.o: termcap.h
+lib_baudrate.o: unctrl.h
+lib_baudrate.po: curses.h
+lib_baudrate.po: ncurses_def.h
+lib_baudrate.po: term.h
+lib_baudrate.po: termcap.h
+lib_baudrate.po: unctrl.h
+lib_beep.So: curses.h
+lib_beep.So: ncurses_def.h
+lib_beep.So: term.h
+lib_beep.So: unctrl.h
+lib_beep.o: curses.h
+lib_beep.o: ncurses_def.h
+lib_beep.o: term.h
+lib_beep.o: unctrl.h
+lib_beep.po: curses.h
+lib_beep.po: ncurses_def.h
+lib_beep.po: term.h
+lib_beep.po: unctrl.h
+lib_bkgd.So: curses.h
+lib_bkgd.So: ncurses_def.h
+lib_bkgd.So: term.h
+lib_bkgd.So: unctrl.h
+lib_bkgd.o: curses.h
+lib_bkgd.o: ncurses_def.h
+lib_bkgd.o: term.h
+lib_bkgd.o: unctrl.h
+lib_bkgd.po: curses.h
+lib_bkgd.po: ncurses_def.h
+lib_bkgd.po: term.h
+lib_bkgd.po: unctrl.h
+lib_box.So: curses.h
+lib_box.So: ncurses_def.h
+lib_box.So: term.h
+lib_box.So: unctrl.h
+lib_box.o: curses.h
+lib_box.o: ncurses_def.h
+lib_box.o: term.h
+lib_box.o: unctrl.h
+lib_box.po: curses.h
+lib_box.po: ncurses_def.h
+lib_box.po: term.h
+lib_box.po: unctrl.h
+lib_chgat.So: curses.h
+lib_chgat.So: ncurses_def.h
+lib_chgat.So: term.h
+lib_chgat.So: unctrl.h
+lib_chgat.o: curses.h
+lib_chgat.o: ncurses_def.h
+lib_chgat.o: term.h
+lib_chgat.o: unctrl.h
+lib_chgat.po: curses.h
+lib_chgat.po: ncurses_def.h
+lib_chgat.po: term.h
+lib_chgat.po: unctrl.h
+lib_clear.So: curses.h
+lib_clear.So: ncurses_def.h
+lib_clear.So: term.h
+lib_clear.So: unctrl.h
+lib_clear.o: curses.h
+lib_clear.o: ncurses_def.h
+lib_clear.o: term.h
+lib_clear.o: unctrl.h
+lib_clear.po: curses.h
+lib_clear.po: ncurses_def.h
+lib_clear.po: term.h
+lib_clear.po: unctrl.h
+lib_clearok.So: curses.h
+lib_clearok.So: ncurses_def.h
+lib_clearok.So: term.h
+lib_clearok.So: unctrl.h
+lib_clearok.o: curses.h
+lib_clearok.o: ncurses_def.h
+lib_clearok.o: term.h
+lib_clearok.o: unctrl.h
+lib_clearok.po: curses.h
+lib_clearok.po: ncurses_def.h
+lib_clearok.po: term.h
+lib_clearok.po: unctrl.h
+lib_clrbot.So: curses.h
+lib_clrbot.So: ncurses_def.h
+lib_clrbot.So: term.h
+lib_clrbot.So: unctrl.h
+lib_clrbot.o: curses.h
+lib_clrbot.o: ncurses_def.h
+lib_clrbot.o: term.h
+lib_clrbot.o: unctrl.h
+lib_clrbot.po: curses.h
+lib_clrbot.po: ncurses_def.h
+lib_clrbot.po: term.h
+lib_clrbot.po: unctrl.h
+lib_clreol.So: curses.h
+lib_clreol.So: ncurses_def.h
+lib_clreol.So: term.h
+lib_clreol.So: unctrl.h
+lib_clreol.o: curses.h
+lib_clreol.o: ncurses_def.h
+lib_clreol.o: term.h
+lib_clreol.o: unctrl.h
+lib_clreol.po: curses.h
+lib_clreol.po: ncurses_def.h
+lib_clreol.po: term.h
+lib_clreol.po: unctrl.h
+lib_color.So: curses.h
+lib_color.So: ncurses_def.h
+lib_color.So: term.h
+lib_color.So: unctrl.h
+lib_color.o: curses.h
+lib_color.o: ncurses_def.h
+lib_color.o: term.h
+lib_color.o: unctrl.h
+lib_color.po: curses.h
+lib_color.po: ncurses_def.h
+lib_color.po: term.h
+lib_color.po: unctrl.h
+lib_colorset.So: curses.h
+lib_colorset.So: ncurses_def.h
+lib_colorset.So: term.h
+lib_colorset.So: unctrl.h
+lib_colorset.o: curses.h
+lib_colorset.o: ncurses_def.h
+lib_colorset.o: term.h
+lib_colorset.o: unctrl.h
+lib_colorset.po: curses.h
+lib_colorset.po: ncurses_def.h
+lib_colorset.po: term.h
+lib_colorset.po: unctrl.h
+lib_cur_term.So: curses.h
+lib_cur_term.So: ncurses_def.h
+lib_cur_term.So: term.h
+lib_cur_term.So: termcap.h
+lib_cur_term.So: unctrl.h
+lib_cur_term.o: curses.h
+lib_cur_term.o: ncurses_def.h
+lib_cur_term.o: term.h
+lib_cur_term.o: termcap.h
+lib_cur_term.o: unctrl.h
+lib_cur_term.po: curses.h
+lib_cur_term.po: ncurses_def.h
+lib_cur_term.po: term.h
+lib_cur_term.po: termcap.h
+lib_cur_term.po: unctrl.h
+lib_data.So: curses.h
+lib_data.So: ncurses_def.h
+lib_data.So: term.h
+lib_data.So: unctrl.h
+lib_data.o: curses.h
+lib_data.o: ncurses_def.h
+lib_data.o: term.h
+lib_data.o: unctrl.h
+lib_data.po: curses.h
+lib_data.po: ncurses_def.h
+lib_data.po: term.h
+lib_data.po: unctrl.h
+lib_delch.So: curses.h
+lib_delch.So: ncurses_def.h
+lib_delch.So: term.h
+lib_delch.So: unctrl.h
+lib_delch.o: curses.h
+lib_delch.o: ncurses_def.h
+lib_delch.o: term.h
+lib_delch.o: unctrl.h
+lib_delch.po: curses.h
+lib_delch.po: ncurses_def.h
+lib_delch.po: term.h
+lib_delch.po: unctrl.h
+lib_delwin.So: curses.h
+lib_delwin.So: ncurses_def.h
+lib_delwin.So: term.h
+lib_delwin.So: unctrl.h
+lib_delwin.o: curses.h
+lib_delwin.o: ncurses_def.h
+lib_delwin.o: term.h
+lib_delwin.o: unctrl.h
+lib_delwin.po: curses.h
+lib_delwin.po: ncurses_def.h
+lib_delwin.po: term.h
+lib_delwin.po: unctrl.h
+lib_dft_fgbg.So: curses.h
+lib_dft_fgbg.So: ncurses_def.h
+lib_dft_fgbg.So: term.h
+lib_dft_fgbg.So: unctrl.h
+lib_dft_fgbg.o: curses.h
+lib_dft_fgbg.o: ncurses_def.h
+lib_dft_fgbg.o: term.h
+lib_dft_fgbg.o: unctrl.h
+lib_dft_fgbg.po: curses.h
+lib_dft_fgbg.po: ncurses_def.h
+lib_dft_fgbg.po: term.h
+lib_dft_fgbg.po: unctrl.h
+lib_echo.So: curses.h
+lib_echo.So: ncurses_def.h
+lib_echo.So: term.h
+lib_echo.So: unctrl.h
+lib_echo.o: curses.h
+lib_echo.o: ncurses_def.h
+lib_echo.o: term.h
+lib_echo.o: unctrl.h
+lib_echo.po: curses.h
+lib_echo.po: ncurses_def.h
+lib_echo.po: term.h
+lib_echo.po: unctrl.h
+lib_endwin.So: curses.h
+lib_endwin.So: ncurses_def.h
+lib_endwin.So: term.h
+lib_endwin.So: unctrl.h
+lib_endwin.o: curses.h
+lib_endwin.o: ncurses_def.h
+lib_endwin.o: term.h
+lib_endwin.o: unctrl.h
+lib_endwin.po: curses.h
+lib_endwin.po: ncurses_def.h
+lib_endwin.po: term.h
+lib_endwin.po: unctrl.h
+lib_erase.So: curses.h
+lib_erase.So: ncurses_def.h
+lib_erase.So: term.h
+lib_erase.So: unctrl.h
+lib_erase.o: curses.h
+lib_erase.o: ncurses_def.h
+lib_erase.o: term.h
+lib_erase.o: unctrl.h
+lib_erase.po: curses.h
+lib_erase.po: ncurses_def.h
+lib_erase.po: term.h
+lib_erase.po: unctrl.h
+lib_flash.So: curses.h
+lib_flash.So: ncurses_def.h
+lib_flash.So: term.h
+lib_flash.So: unctrl.h
+lib_flash.o: curses.h
+lib_flash.o: ncurses_def.h
+lib_flash.o: term.h
+lib_flash.o: unctrl.h
+lib_flash.po: curses.h
+lib_flash.po: ncurses_def.h
+lib_flash.po: term.h
+lib_flash.po: unctrl.h
+lib_freeall.So: curses.h
+lib_freeall.So: ncurses_def.h
+lib_freeall.So: term.h
+lib_freeall.So: unctrl.h
+lib_freeall.o: curses.h
+lib_freeall.o: ncurses_def.h
+lib_freeall.o: term.h
+lib_freeall.o: unctrl.h
+lib_freeall.po: curses.h
+lib_freeall.po: ncurses_def.h
+lib_freeall.po: term.h
+lib_freeall.po: unctrl.h
+lib_gen.So: curses.h
+lib_gen.So: lib_gen.c
+lib_gen.So: ncurses_def.h
+lib_gen.So: term.h
+lib_gen.So: unctrl.h
+lib_gen.o: curses.h
+lib_gen.o: lib_gen.c
+lib_gen.o: ncurses_def.h
+lib_gen.o: term.h
+lib_gen.o: unctrl.h
+lib_gen.po: curses.h
+lib_gen.po: lib_gen.c
+lib_gen.po: ncurses_def.h
+lib_gen.po: term.h
+lib_gen.po: unctrl.h
+lib_getch.So: curses.h
+lib_getch.So: ncurses_def.h
+lib_getch.So: term.h
+lib_getch.So: unctrl.h
+lib_getch.o: curses.h
+lib_getch.o: ncurses_def.h
+lib_getch.o: term.h
+lib_getch.o: unctrl.h
+lib_getch.po: curses.h
+lib_getch.po: ncurses_def.h
+lib_getch.po: term.h
+lib_getch.po: unctrl.h
+lib_getstr.So: curses.h
+lib_getstr.So: ncurses_def.h
+lib_getstr.So: term.h
+lib_getstr.So: unctrl.h
+lib_getstr.o: curses.h
+lib_getstr.o: ncurses_def.h
+lib_getstr.o: term.h
+lib_getstr.o: unctrl.h
+lib_getstr.po: curses.h
+lib_getstr.po: ncurses_def.h
+lib_getstr.po: term.h
+lib_getstr.po: unctrl.h
+lib_has_cap.So: curses.h
+lib_has_cap.So: ncurses_def.h
+lib_has_cap.So: term.h
+lib_has_cap.So: unctrl.h
+lib_has_cap.o: curses.h
+lib_has_cap.o: ncurses_def.h
+lib_has_cap.o: term.h
+lib_has_cap.o: unctrl.h
+lib_has_cap.po: curses.h
+lib_has_cap.po: ncurses_def.h
+lib_has_cap.po: term.h
+lib_has_cap.po: unctrl.h
+lib_hline.So: curses.h
+lib_hline.So: ncurses_def.h
+lib_hline.So: term.h
+lib_hline.So: unctrl.h
+lib_hline.o: curses.h
+lib_hline.o: ncurses_def.h
+lib_hline.o: term.h
+lib_hline.o: unctrl.h
+lib_hline.po: curses.h
+lib_hline.po: ncurses_def.h
+lib_hline.po: term.h
+lib_hline.po: unctrl.h
+lib_immedok.So: curses.h
+lib_immedok.So: ncurses_def.h
+lib_immedok.So: term.h
+lib_immedok.So: unctrl.h
+lib_immedok.o: curses.h
+lib_immedok.o: ncurses_def.h
+lib_immedok.o: term.h
+lib_immedok.o: unctrl.h
+lib_immedok.po: curses.h
+lib_immedok.po: ncurses_def.h
+lib_immedok.po: term.h
+lib_immedok.po: unctrl.h
+lib_inchstr.So: curses.h
+lib_inchstr.So: ncurses_def.h
+lib_inchstr.So: term.h
+lib_inchstr.So: unctrl.h
+lib_inchstr.o: curses.h
+lib_inchstr.o: ncurses_def.h
+lib_inchstr.o: term.h
+lib_inchstr.o: unctrl.h
+lib_inchstr.po: curses.h
+lib_inchstr.po: ncurses_def.h
+lib_inchstr.po: term.h
+lib_inchstr.po: unctrl.h
+lib_initscr.So: curses.h
+lib_initscr.So: ncurses_def.h
+lib_initscr.So: term.h
+lib_initscr.So: unctrl.h
+lib_initscr.o: curses.h
+lib_initscr.o: ncurses_def.h
+lib_initscr.o: term.h
+lib_initscr.o: unctrl.h
+lib_initscr.po: curses.h
+lib_initscr.po: ncurses_def.h
+lib_initscr.po: term.h
+lib_initscr.po: unctrl.h
+lib_insch.So: curses.h
+lib_insch.So: ncurses_def.h
+lib_insch.So: term.h
+lib_insch.So: unctrl.h
+lib_insch.o: curses.h
+lib_insch.o: ncurses_def.h
+lib_insch.o: term.h
+lib_insch.o: unctrl.h
+lib_insch.po: curses.h
+lib_insch.po: ncurses_def.h
+lib_insch.po: term.h
+lib_insch.po: unctrl.h
+lib_insdel.So: curses.h
+lib_insdel.So: ncurses_def.h
+lib_insdel.So: term.h
+lib_insdel.So: unctrl.h
+lib_insdel.o: curses.h
+lib_insdel.o: ncurses_def.h
+lib_insdel.o: term.h
+lib_insdel.o: unctrl.h
+lib_insdel.po: curses.h
+lib_insdel.po: ncurses_def.h
+lib_insdel.po: term.h
+lib_insdel.po: unctrl.h
+lib_insnstr.So: curses.h
+lib_insnstr.So: ncurses_def.h
+lib_insnstr.So: term.h
+lib_insnstr.So: unctrl.h
+lib_insnstr.o: curses.h
+lib_insnstr.o: ncurses_def.h
+lib_insnstr.o: term.h
+lib_insnstr.o: unctrl.h
+lib_insnstr.po: curses.h
+lib_insnstr.po: ncurses_def.h
+lib_insnstr.po: term.h
+lib_insnstr.po: unctrl.h
+lib_instr.So: curses.h
+lib_instr.So: ncurses_def.h
+lib_instr.So: term.h
+lib_instr.So: unctrl.h
+lib_instr.o: curses.h
+lib_instr.o: ncurses_def.h
+lib_instr.o: term.h
+lib_instr.o: unctrl.h
+lib_instr.po: curses.h
+lib_instr.po: ncurses_def.h
+lib_instr.po: term.h
+lib_instr.po: unctrl.h
+lib_isendwin.So: curses.h
+lib_isendwin.So: ncurses_def.h
+lib_isendwin.So: term.h
+lib_isendwin.So: unctrl.h
+lib_isendwin.o: curses.h
+lib_isendwin.o: ncurses_def.h
+lib_isendwin.o: term.h
+lib_isendwin.o: unctrl.h
+lib_isendwin.po: curses.h
+lib_isendwin.po: ncurses_def.h
+lib_isendwin.po: term.h
+lib_isendwin.po: unctrl.h
+lib_kernel.So: curses.h
+lib_kernel.So: ncurses_def.h
+lib_kernel.So: term.h
+lib_kernel.So: unctrl.h
+lib_kernel.o: curses.h
+lib_kernel.o: ncurses_def.h
+lib_kernel.o: term.h
+lib_kernel.o: unctrl.h
+lib_kernel.po: curses.h
+lib_kernel.po: ncurses_def.h
+lib_kernel.po: term.h
+lib_kernel.po: unctrl.h
+lib_keyname.So: curses.h
+lib_keyname.So: lib_keyname.c
+lib_keyname.So: ncurses_def.h
+lib_keyname.So: term.h
+lib_keyname.So: unctrl.h
+lib_keyname.o: curses.h
+lib_keyname.o: lib_keyname.c
+lib_keyname.o: ncurses_def.h
+lib_keyname.o: term.h
+lib_keyname.o: unctrl.h
+lib_keyname.po: curses.h
+lib_keyname.po: lib_keyname.c
+lib_keyname.po: ncurses_def.h
+lib_keyname.po: term.h
+lib_keyname.po: unctrl.h
+lib_leaveok.So: curses.h
+lib_leaveok.So: ncurses_def.h
+lib_leaveok.So: term.h
+lib_leaveok.So: unctrl.h
+lib_leaveok.o: curses.h
+lib_leaveok.o: ncurses_def.h
+lib_leaveok.o: term.h
+lib_leaveok.o: unctrl.h
+lib_leaveok.po: curses.h
+lib_leaveok.po: ncurses_def.h
+lib_leaveok.po: term.h
+lib_leaveok.po: unctrl.h
+lib_longname.So: curses.h
+lib_longname.So: ncurses_def.h
+lib_longname.So: term.h
+lib_longname.So: unctrl.h
+lib_longname.o: curses.h
+lib_longname.o: ncurses_def.h
+lib_longname.o: term.h
+lib_longname.o: unctrl.h
+lib_longname.po: curses.h
+lib_longname.po: ncurses_def.h
+lib_longname.po: term.h
+lib_longname.po: unctrl.h
+lib_mouse.So: curses.h
+lib_mouse.So: ncurses_def.h
+lib_mouse.So: term.h
+lib_mouse.So: unctrl.h
+lib_mouse.o: curses.h
+lib_mouse.o: ncurses_def.h
+lib_mouse.o: term.h
+lib_mouse.o: unctrl.h
+lib_mouse.po: curses.h
+lib_mouse.po: ncurses_def.h
+lib_mouse.po: term.h
+lib_mouse.po: unctrl.h
+lib_move.So: curses.h
+lib_move.So: ncurses_def.h
+lib_move.So: term.h
+lib_move.So: unctrl.h
+lib_move.o: curses.h
+lib_move.o: ncurses_def.h
+lib_move.o: term.h
+lib_move.o: unctrl.h
+lib_move.po: curses.h
+lib_move.po: ncurses_def.h
+lib_move.po: term.h
+lib_move.po: unctrl.h
+lib_mvcur.So: curses.h
+lib_mvcur.So: ncurses_def.h
+lib_mvcur.So: term.h
+lib_mvcur.So: unctrl.h
+lib_mvcur.o: curses.h
+lib_mvcur.o: ncurses_def.h
+lib_mvcur.o: term.h
+lib_mvcur.o: unctrl.h
+lib_mvcur.po: curses.h
+lib_mvcur.po: ncurses_def.h
+lib_mvcur.po: term.h
+lib_mvcur.po: unctrl.h
+lib_mvwin.So: curses.h
+lib_mvwin.So: ncurses_def.h
+lib_mvwin.So: term.h
+lib_mvwin.So: unctrl.h
+lib_mvwin.o: curses.h
+lib_mvwin.o: ncurses_def.h
+lib_mvwin.o: term.h
+lib_mvwin.o: unctrl.h
+lib_mvwin.po: curses.h
+lib_mvwin.po: ncurses_def.h
+lib_mvwin.po: term.h
+lib_mvwin.po: unctrl.h
+lib_napms.So: curses.h
+lib_napms.So: ncurses_def.h
+lib_napms.So: term.h
+lib_napms.So: unctrl.h
+lib_napms.o: curses.h
+lib_napms.o: ncurses_def.h
+lib_napms.o: term.h
+lib_napms.o: unctrl.h
+lib_napms.po: curses.h
+lib_napms.po: ncurses_def.h
+lib_napms.po: term.h
+lib_napms.po: unctrl.h
+lib_newterm.So: curses.h
+lib_newterm.So: ncurses_def.h
+lib_newterm.So: term.h
+lib_newterm.So: unctrl.h
+lib_newterm.o: curses.h
+lib_newterm.o: ncurses_def.h
+lib_newterm.o: term.h
+lib_newterm.o: unctrl.h
+lib_newterm.po: curses.h
+lib_newterm.po: ncurses_def.h
+lib_newterm.po: term.h
+lib_newterm.po: unctrl.h
+lib_newwin.So: curses.h
+lib_newwin.So: ncurses_def.h
+lib_newwin.So: term.h
+lib_newwin.So: unctrl.h
+lib_newwin.o: curses.h
+lib_newwin.o: ncurses_def.h
+lib_newwin.o: term.h
+lib_newwin.o: unctrl.h
+lib_newwin.po: curses.h
+lib_newwin.po: ncurses_def.h
+lib_newwin.po: term.h
+lib_newwin.po: unctrl.h
+lib_nl.So: curses.h
+lib_nl.So: ncurses_def.h
+lib_nl.So: term.h
+lib_nl.So: unctrl.h
+lib_nl.o: curses.h
+lib_nl.o: ncurses_def.h
+lib_nl.o: term.h
+lib_nl.o: unctrl.h
+lib_nl.po: curses.h
+lib_nl.po: ncurses_def.h
+lib_nl.po: term.h
+lib_nl.po: unctrl.h
+lib_options.So: curses.h
+lib_options.So: ncurses_def.h
+lib_options.So: term.h
+lib_options.So: unctrl.h
+lib_options.o: curses.h
+lib_options.o: ncurses_def.h
+lib_options.o: term.h
+lib_options.o: unctrl.h
+lib_options.po: curses.h
+lib_options.po: ncurses_def.h
+lib_options.po: term.h
+lib_options.po: unctrl.h
+lib_overlay.So: curses.h
+lib_overlay.So: ncurses_def.h
+lib_overlay.So: term.h
+lib_overlay.So: unctrl.h
+lib_overlay.o: curses.h
+lib_overlay.o: ncurses_def.h
+lib_overlay.o: term.h
+lib_overlay.o: unctrl.h
+lib_overlay.po: curses.h
+lib_overlay.po: ncurses_def.h
+lib_overlay.po: term.h
+lib_overlay.po: unctrl.h
+lib_pad.So: curses.h
+lib_pad.So: ncurses_def.h
+lib_pad.So: term.h
+lib_pad.So: unctrl.h
+lib_pad.o: curses.h
+lib_pad.o: ncurses_def.h
+lib_pad.o: term.h
+lib_pad.o: unctrl.h
+lib_pad.po: curses.h
+lib_pad.po: ncurses_def.h
+lib_pad.po: term.h
+lib_pad.po: unctrl.h
+lib_print.So: curses.h
+lib_print.So: ncurses_def.h
+lib_print.So: term.h
+lib_print.So: unctrl.h
+lib_print.o: curses.h
+lib_print.o: ncurses_def.h
+lib_print.o: term.h
+lib_print.o: unctrl.h
+lib_print.po: curses.h
+lib_print.po: ncurses_def.h
+lib_print.po: term.h
+lib_print.po: unctrl.h
+lib_printw.So: curses.h
+lib_printw.So: ncurses_def.h
+lib_printw.So: term.h
+lib_printw.So: unctrl.h
+lib_printw.o: curses.h
+lib_printw.o: ncurses_def.h
+lib_printw.o: term.h
+lib_printw.o: unctrl.h
+lib_printw.po: curses.h
+lib_printw.po: ncurses_def.h
+lib_printw.po: term.h
+lib_printw.po: unctrl.h
+lib_raw.So: curses.h
+lib_raw.So: ncurses_def.h
+lib_raw.So: term.h
+lib_raw.So: unctrl.h
+lib_raw.o: curses.h
+lib_raw.o: ncurses_def.h
+lib_raw.o: term.h
+lib_raw.o: unctrl.h
+lib_raw.po: curses.h
+lib_raw.po: ncurses_def.h
+lib_raw.po: term.h
+lib_raw.po: unctrl.h
+lib_redrawln.So: curses.h
+lib_redrawln.So: ncurses_def.h
+lib_redrawln.So: term.h
+lib_redrawln.So: unctrl.h
+lib_redrawln.o: curses.h
+lib_redrawln.o: ncurses_def.h
+lib_redrawln.o: term.h
+lib_redrawln.o: unctrl.h
+lib_redrawln.po: curses.h
+lib_redrawln.po: ncurses_def.h
+lib_redrawln.po: term.h
+lib_redrawln.po: unctrl.h
+lib_refresh.So: curses.h
+lib_refresh.So: ncurses_def.h
+lib_refresh.So: term.h
+lib_refresh.So: unctrl.h
+lib_refresh.o: curses.h
+lib_refresh.o: ncurses_def.h
+lib_refresh.o: term.h
+lib_refresh.o: unctrl.h
+lib_refresh.po: curses.h
+lib_refresh.po: ncurses_def.h
+lib_refresh.po: term.h
+lib_refresh.po: unctrl.h
+lib_restart.So: curses.h
+lib_restart.So: ncurses_def.h
+lib_restart.So: term.h
+lib_restart.So: unctrl.h
+lib_restart.o: curses.h
+lib_restart.o: ncurses_def.h
+lib_restart.o: term.h
+lib_restart.o: unctrl.h
+lib_restart.po: curses.h
+lib_restart.po: ncurses_def.h
+lib_restart.po: term.h
+lib_restart.po: unctrl.h
+lib_scanw.So: curses.h
+lib_scanw.So: ncurses_def.h
+lib_scanw.So: term.h
+lib_scanw.So: unctrl.h
+lib_scanw.o: curses.h
+lib_scanw.o: ncurses_def.h
+lib_scanw.o: term.h
+lib_scanw.o: unctrl.h
+lib_scanw.po: curses.h
+lib_scanw.po: ncurses_def.h
+lib_scanw.po: term.h
+lib_scanw.po: unctrl.h
+lib_screen.So: curses.h
+lib_screen.So: ncurses_def.h
+lib_screen.So: term.h
+lib_screen.So: unctrl.h
+lib_screen.o: curses.h
+lib_screen.o: ncurses_def.h
+lib_screen.o: term.h
+lib_screen.o: unctrl.h
+lib_screen.po: curses.h
+lib_screen.po: ncurses_def.h
+lib_screen.po: term.h
+lib_screen.po: unctrl.h
+lib_scroll.So: curses.h
+lib_scroll.So: ncurses_def.h
+lib_scroll.So: term.h
+lib_scroll.So: unctrl.h
+lib_scroll.o: curses.h
+lib_scroll.o: ncurses_def.h
+lib_scroll.o: term.h
+lib_scroll.o: unctrl.h
+lib_scroll.po: curses.h
+lib_scroll.po: ncurses_def.h
+lib_scroll.po: term.h
+lib_scroll.po: unctrl.h
+lib_scrollok.So: curses.h
+lib_scrollok.So: ncurses_def.h
+lib_scrollok.So: term.h
+lib_scrollok.So: unctrl.h
+lib_scrollok.o: curses.h
+lib_scrollok.o: ncurses_def.h
+lib_scrollok.o: term.h
+lib_scrollok.o: unctrl.h
+lib_scrollok.po: curses.h
+lib_scrollok.po: ncurses_def.h
+lib_scrollok.po: term.h
+lib_scrollok.po: unctrl.h
+lib_scrreg.So: curses.h
+lib_scrreg.So: ncurses_def.h
+lib_scrreg.So: term.h
+lib_scrreg.So: unctrl.h
+lib_scrreg.o: curses.h
+lib_scrreg.o: ncurses_def.h
+lib_scrreg.o: term.h
+lib_scrreg.o: unctrl.h
+lib_scrreg.po: curses.h
+lib_scrreg.po: ncurses_def.h
+lib_scrreg.po: term.h
+lib_scrreg.po: unctrl.h
+lib_set_term.So: curses.h
+lib_set_term.So: ncurses_def.h
+lib_set_term.So: term.h
+lib_set_term.So: unctrl.h
+lib_set_term.o: curses.h
+lib_set_term.o: ncurses_def.h
+lib_set_term.o: term.h
+lib_set_term.o: unctrl.h
+lib_set_term.po: curses.h
+lib_set_term.po: ncurses_def.h
+lib_set_term.po: term.h
+lib_set_term.po: unctrl.h
+lib_setup.So: curses.h
+lib_setup.So: ncurses_def.h
+lib_setup.So: term.h
+lib_setup.So: unctrl.h
+lib_setup.o: curses.h
+lib_setup.o: ncurses_def.h
+lib_setup.o: term.h
+lib_setup.o: unctrl.h
+lib_setup.po: curses.h
+lib_setup.po: ncurses_def.h
+lib_setup.po: term.h
+lib_setup.po: unctrl.h
+lib_slk.So: curses.h
+lib_slk.So: ncurses_def.h
+lib_slk.So: term.h
+lib_slk.So: unctrl.h
+lib_slk.o: curses.h
+lib_slk.o: ncurses_def.h
+lib_slk.o: term.h
+lib_slk.o: unctrl.h
+lib_slk.po: curses.h
+lib_slk.po: ncurses_def.h
+lib_slk.po: term.h
+lib_slk.po: unctrl.h
+lib_slkatr_set.So: curses.h
+lib_slkatr_set.So: ncurses_def.h
+lib_slkatr_set.So: term.h
+lib_slkatr_set.So: unctrl.h
+lib_slkatr_set.o: curses.h
+lib_slkatr_set.o: ncurses_def.h
+lib_slkatr_set.o: term.h
+lib_slkatr_set.o: unctrl.h
+lib_slkatr_set.po: curses.h
+lib_slkatr_set.po: ncurses_def.h
+lib_slkatr_set.po: term.h
+lib_slkatr_set.po: unctrl.h
+lib_slkatrof.So: curses.h
+lib_slkatrof.So: ncurses_def.h
+lib_slkatrof.So: term.h
+lib_slkatrof.So: unctrl.h
+lib_slkatrof.o: curses.h
+lib_slkatrof.o: ncurses_def.h
+lib_slkatrof.o: term.h
+lib_slkatrof.o: unctrl.h
+lib_slkatrof.po: curses.h
+lib_slkatrof.po: ncurses_def.h
+lib_slkatrof.po: term.h
+lib_slkatrof.po: unctrl.h
+lib_slkatron.So: curses.h
+lib_slkatron.So: ncurses_def.h
+lib_slkatron.So: term.h
+lib_slkatron.So: unctrl.h
+lib_slkatron.o: curses.h
+lib_slkatron.o: ncurses_def.h
+lib_slkatron.o: term.h
+lib_slkatron.o: unctrl.h
+lib_slkatron.po: curses.h
+lib_slkatron.po: ncurses_def.h
+lib_slkatron.po: term.h
+lib_slkatron.po: unctrl.h
+lib_slkatrset.So: curses.h
+lib_slkatrset.So: ncurses_def.h
+lib_slkatrset.So: term.h
+lib_slkatrset.So: unctrl.h
+lib_slkatrset.o: curses.h
+lib_slkatrset.o: ncurses_def.h
+lib_slkatrset.o: term.h
+lib_slkatrset.o: unctrl.h
+lib_slkatrset.po: curses.h
+lib_slkatrset.po: ncurses_def.h
+lib_slkatrset.po: term.h
+lib_slkatrset.po: unctrl.h
+lib_slkattr.So: curses.h
+lib_slkattr.So: ncurses_def.h
+lib_slkattr.So: term.h
+lib_slkattr.So: unctrl.h
+lib_slkattr.o: curses.h
+lib_slkattr.o: ncurses_def.h
+lib_slkattr.o: term.h
+lib_slkattr.o: unctrl.h
+lib_slkattr.po: curses.h
+lib_slkattr.po: ncurses_def.h
+lib_slkattr.po: term.h
+lib_slkattr.po: unctrl.h
+lib_slkclear.So: curses.h
+lib_slkclear.So: ncurses_def.h
+lib_slkclear.So: term.h
+lib_slkclear.So: unctrl.h
+lib_slkclear.o: curses.h
+lib_slkclear.o: ncurses_def.h
+lib_slkclear.o: term.h
+lib_slkclear.o: unctrl.h
+lib_slkclear.po: curses.h
+lib_slkclear.po: ncurses_def.h
+lib_slkclear.po: term.h
+lib_slkclear.po: unctrl.h
+lib_slkcolor.So: curses.h
+lib_slkcolor.So: ncurses_def.h
+lib_slkcolor.So: term.h
+lib_slkcolor.So: unctrl.h
+lib_slkcolor.o: curses.h
+lib_slkcolor.o: ncurses_def.h
+lib_slkcolor.o: term.h
+lib_slkcolor.o: unctrl.h
+lib_slkcolor.po: curses.h
+lib_slkcolor.po: ncurses_def.h
+lib_slkcolor.po: term.h
+lib_slkcolor.po: unctrl.h
+lib_slkinit.So: curses.h
+lib_slkinit.So: ncurses_def.h
+lib_slkinit.So: term.h
+lib_slkinit.So: unctrl.h
+lib_slkinit.o: curses.h
+lib_slkinit.o: ncurses_def.h
+lib_slkinit.o: term.h
+lib_slkinit.o: unctrl.h
+lib_slkinit.po: curses.h
+lib_slkinit.po: ncurses_def.h
+lib_slkinit.po: term.h
+lib_slkinit.po: unctrl.h
+lib_slklab.So: curses.h
+lib_slklab.So: ncurses_def.h
+lib_slklab.So: term.h
+lib_slklab.So: unctrl.h
+lib_slklab.o: curses.h
+lib_slklab.o: ncurses_def.h
+lib_slklab.o: term.h
+lib_slklab.o: unctrl.h
+lib_slklab.po: curses.h
+lib_slklab.po: ncurses_def.h
+lib_slklab.po: term.h
+lib_slklab.po: unctrl.h
+lib_slkrefr.So: curses.h
+lib_slkrefr.So: ncurses_def.h
+lib_slkrefr.So: term.h
+lib_slkrefr.So: unctrl.h
+lib_slkrefr.o: curses.h
+lib_slkrefr.o: ncurses_def.h
+lib_slkrefr.o: term.h
+lib_slkrefr.o: unctrl.h
+lib_slkrefr.po: curses.h
+lib_slkrefr.po: ncurses_def.h
+lib_slkrefr.po: term.h
+lib_slkrefr.po: unctrl.h
+lib_slkset.So: curses.h
+lib_slkset.So: ncurses_def.h
+lib_slkset.So: term.h
+lib_slkset.So: unctrl.h
+lib_slkset.o: curses.h
+lib_slkset.o: ncurses_def.h
+lib_slkset.o: term.h
+lib_slkset.o: unctrl.h
+lib_slkset.po: curses.h
+lib_slkset.po: ncurses_def.h
+lib_slkset.po: term.h
+lib_slkset.po: unctrl.h
+lib_slktouch.So: curses.h
+lib_slktouch.So: ncurses_def.h
+lib_slktouch.So: term.h
+lib_slktouch.So: unctrl.h
+lib_slktouch.o: curses.h
+lib_slktouch.o: ncurses_def.h
+lib_slktouch.o: term.h
+lib_slktouch.o: unctrl.h
+lib_slktouch.po: curses.h
+lib_slktouch.po: ncurses_def.h
+lib_slktouch.po: term.h
+lib_slktouch.po: unctrl.h
+lib_termcap.So: curses.h
+lib_termcap.So: ncurses_def.h
+lib_termcap.So: term.h
+lib_termcap.So: termcap.h
+lib_termcap.So: unctrl.h
+lib_termcap.o: curses.h
+lib_termcap.o: ncurses_def.h
+lib_termcap.o: term.h
+lib_termcap.o: termcap.h
+lib_termcap.o: unctrl.h
+lib_termcap.po: curses.h
+lib_termcap.po: ncurses_def.h
+lib_termcap.po: term.h
+lib_termcap.po: termcap.h
+lib_termcap.po: unctrl.h
+lib_termname.So: curses.h
+lib_termname.So: ncurses_def.h
+lib_termname.So: term.h
+lib_termname.So: unctrl.h
+lib_termname.o: curses.h
+lib_termname.o: ncurses_def.h
+lib_termname.o: term.h
+lib_termname.o: unctrl.h
+lib_termname.po: curses.h
+lib_termname.po: ncurses_def.h
+lib_termname.po: term.h
+lib_termname.po: unctrl.h
+lib_tgoto.So: curses.h
+lib_tgoto.So: ncurses_def.h
+lib_tgoto.So: term.h
+lib_tgoto.So: termcap.h
+lib_tgoto.So: unctrl.h
+lib_tgoto.o: curses.h
+lib_tgoto.o: ncurses_def.h
+lib_tgoto.o: term.h
+lib_tgoto.o: termcap.h
+lib_tgoto.o: unctrl.h
+lib_tgoto.po: curses.h
+lib_tgoto.po: ncurses_def.h
+lib_tgoto.po: term.h
+lib_tgoto.po: termcap.h
+lib_tgoto.po: unctrl.h
+lib_ti.So: curses.h
+lib_ti.So: ncurses_def.h
+lib_ti.So: term.h
+lib_ti.So: unctrl.h
+lib_ti.o: curses.h
+lib_ti.o: ncurses_def.h
+lib_ti.o: term.h
+lib_ti.o: unctrl.h
+lib_ti.po: curses.h
+lib_ti.po: ncurses_def.h
+lib_ti.po: term.h
+lib_ti.po: unctrl.h
+lib_touch.So: curses.h
+lib_touch.So: ncurses_def.h
+lib_touch.So: term.h
+lib_touch.So: unctrl.h
+lib_touch.o: curses.h
+lib_touch.o: ncurses_def.h
+lib_touch.o: term.h
+lib_touch.o: unctrl.h
+lib_touch.po: curses.h
+lib_touch.po: ncurses_def.h
+lib_touch.po: term.h
+lib_touch.po: unctrl.h
+lib_tparm.So: curses.h
+lib_tparm.So: ncurses_def.h
+lib_tparm.So: term.h
+lib_tparm.So: unctrl.h
+lib_tparm.o: curses.h
+lib_tparm.o: ncurses_def.h
+lib_tparm.o: term.h
+lib_tparm.o: unctrl.h
+lib_tparm.po: curses.h
+lib_tparm.po: ncurses_def.h
+lib_tparm.po: term.h
+lib_tparm.po: unctrl.h
+lib_tputs.So: curses.h
+lib_tputs.So: ncurses_def.h
+lib_tputs.So: term.h
+lib_tputs.So: termcap.h
+lib_tputs.So: unctrl.h
+lib_tputs.o: curses.h
+lib_tputs.o: ncurses_def.h
+lib_tputs.o: term.h
+lib_tputs.o: termcap.h
+lib_tputs.o: unctrl.h
+lib_tputs.po: curses.h
+lib_tputs.po: ncurses_def.h
+lib_tputs.po: term.h
+lib_tputs.po: termcap.h
+lib_tputs.po: unctrl.h
+lib_trace.So: curses.h
+lib_trace.So: ncurses_def.h
+lib_trace.So: term.h
+lib_trace.So: unctrl.h
+lib_trace.o: curses.h
+lib_trace.o: ncurses_def.h
+lib_trace.o: term.h
+lib_trace.o: unctrl.h
+lib_trace.po: curses.h
+lib_trace.po: ncurses_def.h
+lib_trace.po: term.h
+lib_trace.po: unctrl.h
+lib_tstp.So: curses.h
+lib_tstp.So: ncurses_def.h
+lib_tstp.So: term.h
+lib_tstp.So: unctrl.h
+lib_tstp.o: curses.h
+lib_tstp.o: ncurses_def.h
+lib_tstp.o: term.h
+lib_tstp.o: unctrl.h
+lib_tstp.po: curses.h
+lib_tstp.po: ncurses_def.h
+lib_tstp.po: term.h
+lib_tstp.po: unctrl.h
+lib_ttyflags.So: curses.h
+lib_ttyflags.So: ncurses_def.h
+lib_ttyflags.So: term.h
+lib_ttyflags.So: unctrl.h
+lib_ttyflags.o: curses.h
+lib_ttyflags.o: ncurses_def.h
+lib_ttyflags.o: term.h
+lib_ttyflags.o: unctrl.h
+lib_ttyflags.po: curses.h
+lib_ttyflags.po: ncurses_def.h
+lib_ttyflags.po: term.h
+lib_ttyflags.po: unctrl.h
+lib_twait.So: curses.h
+lib_twait.So: ncurses_def.h
+lib_twait.So: term.h
+lib_twait.So: unctrl.h
+lib_twait.o: curses.h
+lib_twait.o: ncurses_def.h
+lib_twait.o: term.h
+lib_twait.o: unctrl.h
+lib_twait.po: curses.h
+lib_twait.po: ncurses_def.h
+lib_twait.po: term.h
+lib_twait.po: unctrl.h
+lib_ungetch.So: curses.h
+lib_ungetch.So: ncurses_def.h
+lib_ungetch.So: term.h
+lib_ungetch.So: unctrl.h
+lib_ungetch.o: curses.h
+lib_ungetch.o: ncurses_def.h
+lib_ungetch.o: term.h
+lib_ungetch.o: unctrl.h
+lib_ungetch.po: curses.h
+lib_ungetch.po: ncurses_def.h
+lib_ungetch.po: term.h
+lib_ungetch.po: unctrl.h
+lib_vidattr.So: curses.h
+lib_vidattr.So: ncurses_def.h
+lib_vidattr.So: term.h
+lib_vidattr.So: unctrl.h
+lib_vidattr.o: curses.h
+lib_vidattr.o: ncurses_def.h
+lib_vidattr.o: term.h
+lib_vidattr.o: unctrl.h
+lib_vidattr.po: curses.h
+lib_vidattr.po: ncurses_def.h
+lib_vidattr.po: term.h
+lib_vidattr.po: unctrl.h
+lib_vline.So: curses.h
+lib_vline.So: ncurses_def.h
+lib_vline.So: term.h
+lib_vline.So: unctrl.h
+lib_vline.o: curses.h
+lib_vline.o: ncurses_def.h
+lib_vline.o: term.h
+lib_vline.o: unctrl.h
+lib_vline.po: curses.h
+lib_vline.po: ncurses_def.h
+lib_vline.po: term.h
+lib_vline.po: unctrl.h
+lib_wattroff.So: curses.h
+lib_wattroff.So: ncurses_def.h
+lib_wattroff.So: term.h
+lib_wattroff.So: unctrl.h
+lib_wattroff.o: curses.h
+lib_wattroff.o: ncurses_def.h
+lib_wattroff.o: term.h
+lib_wattroff.o: unctrl.h
+lib_wattroff.po: curses.h
+lib_wattroff.po: ncurses_def.h
+lib_wattroff.po: term.h
+lib_wattroff.po: unctrl.h
+lib_wattron.So: curses.h
+lib_wattron.So: ncurses_def.h
+lib_wattron.So: term.h
+lib_wattron.So: unctrl.h
+lib_wattron.o: curses.h
+lib_wattron.o: ncurses_def.h
+lib_wattron.o: term.h
+lib_wattron.o: unctrl.h
+lib_wattron.po: curses.h
+lib_wattron.po: ncurses_def.h
+lib_wattron.po: term.h
+lib_wattron.po: unctrl.h
+lib_winch.So: curses.h
+lib_winch.So: ncurses_def.h
+lib_winch.So: term.h
+lib_winch.So: unctrl.h
+lib_winch.o: curses.h
+lib_winch.o: ncurses_def.h
+lib_winch.o: term.h
+lib_winch.o: unctrl.h
+lib_winch.po: curses.h
+lib_winch.po: ncurses_def.h
+lib_winch.po: term.h
+lib_winch.po: unctrl.h
+lib_window.So: curses.h
+lib_window.So: ncurses_def.h
+lib_window.So: term.h
+lib_window.So: unctrl.h
+lib_window.o: curses.h
+lib_window.o: ncurses_def.h
+lib_window.o: term.h
+lib_window.o: unctrl.h
+lib_window.po: curses.h
+lib_window.po: ncurses_def.h
+lib_window.po: term.h
+lib_window.po: unctrl.h
+name_match.So: curses.h
+name_match.So: ncurses_def.h
+name_match.So: term.h
+name_match.So: unctrl.h
+name_match.o: curses.h
+name_match.o: ncurses_def.h
+name_match.o: term.h
+name_match.o: unctrl.h
+name_match.po: curses.h
+name_match.po: ncurses_def.h
+name_match.po: term.h
+name_match.po: unctrl.h
+names.So: curses.h
+names.So: names.c
+names.So: ncurses_def.h
+names.So: term.h
+names.So: unctrl.h
+names.o: curses.h
+names.o: names.c
+names.o: ncurses_def.h
+names.o: term.h
+names.o: unctrl.h
+names.po: curses.h
+names.po: names.c
+names.po: ncurses_def.h
+names.po: term.h
+names.po: unctrl.h
+nc_panel.So: curses.h
+nc_panel.So: ncurses_def.h
+nc_panel.So: term.h
+nc_panel.So: unctrl.h
+nc_panel.o: curses.h
+nc_panel.o: ncurses_def.h
+nc_panel.o: term.h
+nc_panel.o: unctrl.h
+nc_panel.po: curses.h
+nc_panel.po: ncurses_def.h
+nc_panel.po: term.h
+nc_panel.po: unctrl.h
+obsolete.So: curses.h
+obsolete.So: ncurses_def.h
+obsolete.So: term.h
+obsolete.So: unctrl.h
+obsolete.o: curses.h
+obsolete.o: ncurses_def.h
+obsolete.o: term.h
+obsolete.o: unctrl.h
+obsolete.po: curses.h
+obsolete.po: ncurses_def.h
+obsolete.po: term.h
+obsolete.po: unctrl.h
+parse_entry.So: curses.h
+parse_entry.So: ncurses_def.h
+parse_entry.So: parametrized.h
+parse_entry.So: term.h
+parse_entry.So: unctrl.h
+parse_entry.o: curses.h
+parse_entry.o: ncurses_def.h
+parse_entry.o: parametrized.h
+parse_entry.o: term.h
+parse_entry.o: unctrl.h
+parse_entry.po: curses.h
+parse_entry.po: ncurses_def.h
+parse_entry.po: parametrized.h
+parse_entry.po: term.h
+parse_entry.po: unctrl.h
+read_entry.So: curses.h
+read_entry.So: ncurses_def.h
+read_entry.So: term.h
+read_entry.So: unctrl.h
+read_entry.o: curses.h
+read_entry.o: ncurses_def.h
+read_entry.o: term.h
+read_entry.o: unctrl.h
+read_entry.po: curses.h
+read_entry.po: ncurses_def.h
+read_entry.po: term.h
+read_entry.po: unctrl.h
+resizeterm.So: curses.h
+resizeterm.So: ncurses_def.h
+resizeterm.So: term.h
+resizeterm.So: unctrl.h
+resizeterm.o: curses.h
+resizeterm.o: ncurses_def.h
+resizeterm.o: term.h
+resizeterm.o: unctrl.h
+resizeterm.po: curses.h
+resizeterm.po: ncurses_def.h
+resizeterm.po: term.h
+resizeterm.po: unctrl.h
+safe_sprintf.So: curses.h
+safe_sprintf.So: ncurses_def.h
+safe_sprintf.So: term.h
+safe_sprintf.So: unctrl.h
+safe_sprintf.o: curses.h
+safe_sprintf.o: ncurses_def.h
+safe_sprintf.o: term.h
+safe_sprintf.o: unctrl.h
+safe_sprintf.po: curses.h
+safe_sprintf.po: ncurses_def.h
+safe_sprintf.po: term.h
+safe_sprintf.po: unctrl.h
+strings.So: curses.h
+strings.So: ncurses_def.h
+strings.So: term.h
+strings.So: unctrl.h
+strings.o: curses.h
+strings.o: ncurses_def.h
+strings.o: term.h
+strings.o: unctrl.h
+strings.po: curses.h
+strings.po: ncurses_def.h
+strings.po: term.h
+strings.po: unctrl.h
+termcap.So: curses.h
+termcap.So: ncurses_def.h
+termcap.So: term.h
+termcap.So: unctrl.h
+termcap.o: curses.h
+termcap.o: ncurses_def.h
+termcap.o: term.h
+termcap.o: unctrl.h
+termcap.po: curses.h
+termcap.po: ncurses_def.h
+termcap.po: term.h
+termcap.po: unctrl.h
+tries.So: curses.h
+tries.So: ncurses_def.h
+tries.So: term.h
+tries.So: unctrl.h
+tries.o: curses.h
+tries.o: ncurses_def.h
+tries.o: term.h
+tries.o: unctrl.h
+tries.po: curses.h
+tries.po: ncurses_def.h
+tries.po: term.h
+tries.po: unctrl.h
+trim_sgr0.So: curses.h
+trim_sgr0.So: ncurses_def.h
+trim_sgr0.So: term.h
+trim_sgr0.So: unctrl.h
+trim_sgr0.o: curses.h
+trim_sgr0.o: ncurses_def.h
+trim_sgr0.o: term.h
+trim_sgr0.o: unctrl.h
+trim_sgr0.po: curses.h
+trim_sgr0.po: ncurses_def.h
+trim_sgr0.po: term.h
+trim_sgr0.po: unctrl.h
+tty_update.So: curses.h
+tty_update.So: ncurses_def.h
+tty_update.So: term.h
+tty_update.So: unctrl.h
+tty_update.o: curses.h
+tty_update.o: ncurses_def.h
+tty_update.o: term.h
+tty_update.o: unctrl.h
+tty_update.po: curses.h
+tty_update.po: ncurses_def.h
+tty_update.po: term.h
+tty_update.po: unctrl.h
+unctrl.So: curses.h
+unctrl.So: ncurses_def.h
+unctrl.So: term.h
+unctrl.So: unctrl.c
+unctrl.So: unctrl.h
+unctrl.o: curses.h
+unctrl.o: ncurses_def.h
+unctrl.o: term.h
+unctrl.o: unctrl.c
+unctrl.o: unctrl.h
+unctrl.po: curses.h
+unctrl.po: ncurses_def.h
+unctrl.po: term.h
+unctrl.po: unctrl.c
+unctrl.po: unctrl.h
+version.So: curses.h
+version.So: ncurses_def.h
+version.So: term.h
+version.So: unctrl.h
+version.o: curses.h
+version.o: ncurses_def.h
+version.o: term.h
+version.o: unctrl.h
+version.po: curses.h
+version.po: ncurses_def.h
+version.po: term.h
+version.po: unctrl.h
+visbuf.So: curses.h
+visbuf.So: ncurses_def.h
+visbuf.So: term.h
+visbuf.So: unctrl.h
+visbuf.o: curses.h
+visbuf.o: ncurses_def.h
+visbuf.o: term.h
+visbuf.o: unctrl.h
+visbuf.po: curses.h
+visbuf.po: ncurses_def.h
+visbuf.po: term.h
+visbuf.po: unctrl.h
+vsscanf.So: curses.h
+vsscanf.So: ncurses_def.h
+vsscanf.So: term.h
+vsscanf.So: unctrl.h
+vsscanf.o: curses.h
+vsscanf.o: ncurses_def.h
+vsscanf.o: term.h
+vsscanf.o: unctrl.h
+vsscanf.po: curses.h
+vsscanf.po: ncurses_def.h
+vsscanf.po: term.h
+vsscanf.po: unctrl.h
+wresize.So: curses.h
+wresize.So: ncurses_def.h
+wresize.So: term.h
+wresize.So: unctrl.h
+wresize.o: curses.h
+wresize.o: ncurses_def.h
+wresize.o: term.h
+wresize.o: unctrl.h
+wresize.po: curses.h
+wresize.po: ncurses_def.h
+wresize.po: term.h
+wresize.po: unctrl.h
+write_entry.So: curses.h
+write_entry.So: ncurses_def.h
+write_entry.So: term.h
+write_entry.So: unctrl.h
+write_entry.o: curses.h
+write_entry.o: ncurses_def.h
+write_entry.o: term.h
+write_entry.o: unctrl.h
+write_entry.po: curses.h
+write_entry.po: ncurses_def.h
+write_entry.po: term.h
+write_entry.po: unctrl.h
+.endif
diff --git a/lib/ncurses/ncursesw/Makefile.depend b/lib/ncurses/ncursesw/Makefile.depend
new file mode 100644
index 0000000..443698d
--- /dev/null
+++ b/lib/ncurses/ncursesw/Makefile.depend
@@ -0,0 +1,2530 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+access.So: curses.h
+access.So: ncurses_def.h
+access.So: ncurses_dll.h
+access.So: term.h
+access.So: unctrl.h
+access.o: curses.h
+access.o: ncurses_def.h
+access.o: ncurses_dll.h
+access.o: term.h
+access.o: unctrl.h
+access.po: curses.h
+access.po: ncurses_def.h
+access.po: ncurses_dll.h
+access.po: term.h
+access.po: unctrl.h
+add_tries.So: curses.h
+add_tries.So: ncurses_def.h
+add_tries.So: ncurses_dll.h
+add_tries.So: term.h
+add_tries.So: unctrl.h
+add_tries.o: curses.h
+add_tries.o: ncurses_def.h
+add_tries.o: ncurses_dll.h
+add_tries.o: term.h
+add_tries.o: unctrl.h
+add_tries.po: curses.h
+add_tries.po: ncurses_def.h
+add_tries.po: ncurses_dll.h
+add_tries.po: term.h
+add_tries.po: unctrl.h
+alloc_entry.So: curses.h
+alloc_entry.So: ncurses_def.h
+alloc_entry.So: ncurses_dll.h
+alloc_entry.So: term.h
+alloc_entry.So: unctrl.h
+alloc_entry.o: curses.h
+alloc_entry.o: ncurses_def.h
+alloc_entry.o: ncurses_dll.h
+alloc_entry.o: term.h
+alloc_entry.o: unctrl.h
+alloc_entry.po: curses.h
+alloc_entry.po: ncurses_def.h
+alloc_entry.po: ncurses_dll.h
+alloc_entry.po: term.h
+alloc_entry.po: unctrl.h
+alloc_ttype.So: curses.h
+alloc_ttype.So: ncurses_def.h
+alloc_ttype.So: ncurses_dll.h
+alloc_ttype.So: term.h
+alloc_ttype.So: unctrl.h
+alloc_ttype.o: curses.h
+alloc_ttype.o: ncurses_def.h
+alloc_ttype.o: ncurses_dll.h
+alloc_ttype.o: term.h
+alloc_ttype.o: unctrl.h
+alloc_ttype.po: curses.h
+alloc_ttype.po: ncurses_def.h
+alloc_ttype.po: ncurses_dll.h
+alloc_ttype.po: term.h
+alloc_ttype.po: unctrl.h
+captoinfo.So: curses.h
+captoinfo.So: ncurses_def.h
+captoinfo.So: ncurses_dll.h
+captoinfo.So: term.h
+captoinfo.So: unctrl.h
+captoinfo.o: curses.h
+captoinfo.o: ncurses_def.h
+captoinfo.o: ncurses_dll.h
+captoinfo.o: term.h
+captoinfo.o: unctrl.h
+captoinfo.po: curses.h
+captoinfo.po: ncurses_def.h
+captoinfo.po: ncurses_dll.h
+captoinfo.po: term.h
+captoinfo.po: unctrl.h
+charable.So: curses.h
+charable.So: ncurses_def.h
+charable.So: ncurses_dll.h
+charable.So: term.h
+charable.So: unctrl.h
+charable.o: curses.h
+charable.o: ncurses_def.h
+charable.o: ncurses_dll.h
+charable.o: term.h
+charable.o: unctrl.h
+charable.po: curses.h
+charable.po: ncurses_def.h
+charable.po: ncurses_dll.h
+charable.po: term.h
+charable.po: unctrl.h
+codes.So: codes.c
+codes.So: curses.h
+codes.So: ncurses_def.h
+codes.So: ncurses_dll.h
+codes.So: term.h
+codes.So: unctrl.h
+codes.o: codes.c
+codes.o: curses.h
+codes.o: ncurses_def.h
+codes.o: ncurses_dll.h
+codes.o: term.h
+codes.o: unctrl.h
+codes.po: codes.c
+codes.po: curses.h
+codes.po: ncurses_def.h
+codes.po: ncurses_dll.h
+codes.po: term.h
+codes.po: unctrl.h
+comp_captab.So: comp_captab.c
+comp_captab.So: curses.h
+comp_captab.So: hashsize.h
+comp_captab.So: ncurses_def.h
+comp_captab.So: ncurses_dll.h
+comp_captab.So: term.h
+comp_captab.So: unctrl.h
+comp_captab.o: comp_captab.c
+comp_captab.o: curses.h
+comp_captab.o: hashsize.h
+comp_captab.o: ncurses_def.h
+comp_captab.o: ncurses_dll.h
+comp_captab.o: term.h
+comp_captab.o: unctrl.h
+comp_captab.po: comp_captab.c
+comp_captab.po: curses.h
+comp_captab.po: hashsize.h
+comp_captab.po: ncurses_def.h
+comp_captab.po: ncurses_dll.h
+comp_captab.po: term.h
+comp_captab.po: unctrl.h
+comp_error.So: curses.h
+comp_error.So: ncurses_def.h
+comp_error.So: ncurses_dll.h
+comp_error.So: term.h
+comp_error.So: unctrl.h
+comp_error.o: curses.h
+comp_error.o: ncurses_def.h
+comp_error.o: ncurses_dll.h
+comp_error.o: term.h
+comp_error.o: unctrl.h
+comp_error.po: curses.h
+comp_error.po: ncurses_def.h
+comp_error.po: ncurses_dll.h
+comp_error.po: term.h
+comp_error.po: unctrl.h
+comp_expand.So: curses.h
+comp_expand.So: ncurses_def.h
+comp_expand.So: ncurses_dll.h
+comp_expand.So: term.h
+comp_expand.So: unctrl.h
+comp_expand.o: curses.h
+comp_expand.o: ncurses_def.h
+comp_expand.o: ncurses_dll.h
+comp_expand.o: term.h
+comp_expand.o: unctrl.h
+comp_expand.po: curses.h
+comp_expand.po: ncurses_def.h
+comp_expand.po: ncurses_dll.h
+comp_expand.po: term.h
+comp_expand.po: unctrl.h
+comp_hash.So: curses.h
+comp_hash.So: hashsize.h
+comp_hash.So: ncurses_def.h
+comp_hash.So: ncurses_dll.h
+comp_hash.So: term.h
+comp_hash.So: unctrl.h
+comp_hash.o: curses.h
+comp_hash.o: hashsize.h
+comp_hash.o: ncurses_def.h
+comp_hash.o: ncurses_dll.h
+comp_hash.o: term.h
+comp_hash.o: unctrl.h
+comp_hash.po: curses.h
+comp_hash.po: hashsize.h
+comp_hash.po: ncurses_def.h
+comp_hash.po: ncurses_dll.h
+comp_hash.po: term.h
+comp_hash.po: unctrl.h
+comp_parse.So: curses.h
+comp_parse.So: ncurses_def.h
+comp_parse.So: ncurses_dll.h
+comp_parse.So: term.h
+comp_parse.So: unctrl.h
+comp_parse.o: curses.h
+comp_parse.o: ncurses_def.h
+comp_parse.o: ncurses_dll.h
+comp_parse.o: term.h
+comp_parse.o: unctrl.h
+comp_parse.po: curses.h
+comp_parse.po: ncurses_def.h
+comp_parse.po: ncurses_dll.h
+comp_parse.po: term.h
+comp_parse.po: unctrl.h
+comp_scan.So: curses.h
+comp_scan.So: ncurses_def.h
+comp_scan.So: ncurses_dll.h
+comp_scan.So: term.h
+comp_scan.So: unctrl.h
+comp_scan.o: curses.h
+comp_scan.o: ncurses_def.h
+comp_scan.o: ncurses_dll.h
+comp_scan.o: term.h
+comp_scan.o: unctrl.h
+comp_scan.po: curses.h
+comp_scan.po: ncurses_def.h
+comp_scan.po: ncurses_dll.h
+comp_scan.po: term.h
+comp_scan.po: unctrl.h
+db_iterator.So: curses.h
+db_iterator.So: ncurses_def.h
+db_iterator.So: ncurses_dll.h
+db_iterator.So: term.h
+db_iterator.So: unctrl.h
+db_iterator.o: curses.h
+db_iterator.o: ncurses_def.h
+db_iterator.o: ncurses_dll.h
+db_iterator.o: term.h
+db_iterator.o: unctrl.h
+db_iterator.po: curses.h
+db_iterator.po: ncurses_def.h
+db_iterator.po: ncurses_dll.h
+db_iterator.po: term.h
+db_iterator.po: unctrl.h
+define_key.So: curses.h
+define_key.So: ncurses_def.h
+define_key.So: ncurses_dll.h
+define_key.So: term.h
+define_key.So: unctrl.h
+define_key.o: curses.h
+define_key.o: ncurses_def.h
+define_key.o: ncurses_dll.h
+define_key.o: term.h
+define_key.o: unctrl.h
+define_key.po: curses.h
+define_key.po: ncurses_def.h
+define_key.po: ncurses_dll.h
+define_key.po: term.h
+define_key.po: unctrl.h
+doalloc.So: curses.h
+doalloc.So: ncurses_def.h
+doalloc.So: ncurses_dll.h
+doalloc.So: term.h
+doalloc.So: unctrl.h
+doalloc.o: curses.h
+doalloc.o: ncurses_def.h
+doalloc.o: ncurses_dll.h
+doalloc.o: term.h
+doalloc.o: unctrl.h
+doalloc.po: curses.h
+doalloc.po: ncurses_def.h
+doalloc.po: ncurses_dll.h
+doalloc.po: term.h
+doalloc.po: unctrl.h
+entries.So: curses.h
+entries.So: ncurses_def.h
+entries.So: ncurses_dll.h
+entries.So: term.h
+entries.So: unctrl.h
+entries.o: curses.h
+entries.o: ncurses_def.h
+entries.o: ncurses_dll.h
+entries.o: term.h
+entries.o: unctrl.h
+entries.po: curses.h
+entries.po: ncurses_def.h
+entries.po: ncurses_dll.h
+entries.po: term.h
+entries.po: unctrl.h
+expanded.So: curses.h
+expanded.So: expanded.c
+expanded.So: ncurses_def.h
+expanded.So: ncurses_dll.h
+expanded.So: term.h
+expanded.So: unctrl.h
+expanded.o: curses.h
+expanded.o: expanded.c
+expanded.o: ncurses_def.h
+expanded.o: ncurses_dll.h
+expanded.o: term.h
+expanded.o: unctrl.h
+expanded.po: curses.h
+expanded.po: expanded.c
+expanded.po: ncurses_def.h
+expanded.po: ncurses_dll.h
+expanded.po: term.h
+expanded.po: unctrl.h
+fallback.So: curses.h
+fallback.So: fallback.c
+fallback.So: ncurses_def.h
+fallback.So: ncurses_dll.h
+fallback.So: term.h
+fallback.So: unctrl.h
+fallback.o: curses.h
+fallback.o: fallback.c
+fallback.o: ncurses_def.h
+fallback.o: ncurses_dll.h
+fallback.o: term.h
+fallback.o: unctrl.h
+fallback.po: curses.h
+fallback.po: fallback.c
+fallback.po: ncurses_def.h
+fallback.po: ncurses_dll.h
+fallback.po: term.h
+fallback.po: unctrl.h
+free_ttype.So: curses.h
+free_ttype.So: ncurses_def.h
+free_ttype.So: ncurses_dll.h
+free_ttype.So: term.h
+free_ttype.So: unctrl.h
+free_ttype.o: curses.h
+free_ttype.o: ncurses_def.h
+free_ttype.o: ncurses_dll.h
+free_ttype.o: term.h
+free_ttype.o: unctrl.h
+free_ttype.po: curses.h
+free_ttype.po: ncurses_def.h
+free_ttype.po: ncurses_dll.h
+free_ttype.po: term.h
+free_ttype.po: unctrl.h
+getenv_num.So: curses.h
+getenv_num.So: ncurses_def.h
+getenv_num.So: ncurses_dll.h
+getenv_num.So: term.h
+getenv_num.So: unctrl.h
+getenv_num.o: curses.h
+getenv_num.o: ncurses_def.h
+getenv_num.o: ncurses_dll.h
+getenv_num.o: term.h
+getenv_num.o: unctrl.h
+getenv_num.po: curses.h
+getenv_num.po: ncurses_def.h
+getenv_num.po: ncurses_dll.h
+getenv_num.po: term.h
+getenv_num.po: unctrl.h
+hardscroll.So: curses.h
+hardscroll.So: ncurses_def.h
+hardscroll.So: ncurses_dll.h
+hardscroll.So: term.h
+hardscroll.So: unctrl.h
+hardscroll.o: curses.h
+hardscroll.o: ncurses_def.h
+hardscroll.o: ncurses_dll.h
+hardscroll.o: term.h
+hardscroll.o: unctrl.h
+hardscroll.po: curses.h
+hardscroll.po: ncurses_def.h
+hardscroll.po: ncurses_dll.h
+hardscroll.po: term.h
+hardscroll.po: unctrl.h
+hashed_db.So: curses.h
+hashed_db.So: ncurses_def.h
+hashed_db.So: ncurses_dll.h
+hashed_db.So: term.h
+hashed_db.So: unctrl.h
+hashed_db.o: curses.h
+hashed_db.o: ncurses_def.h
+hashed_db.o: ncurses_dll.h
+hashed_db.o: term.h
+hashed_db.o: unctrl.h
+hashed_db.po: curses.h
+hashed_db.po: ncurses_def.h
+hashed_db.po: ncurses_dll.h
+hashed_db.po: term.h
+hashed_db.po: unctrl.h
+hashmap.So: curses.h
+hashmap.So: ncurses_def.h
+hashmap.So: ncurses_dll.h
+hashmap.So: term.h
+hashmap.So: unctrl.h
+hashmap.o: curses.h
+hashmap.o: ncurses_def.h
+hashmap.o: ncurses_dll.h
+hashmap.o: term.h
+hashmap.o: unctrl.h
+hashmap.po: curses.h
+hashmap.po: ncurses_def.h
+hashmap.po: ncurses_dll.h
+hashmap.po: term.h
+hashmap.po: unctrl.h
+home_terminfo.So: curses.h
+home_terminfo.So: ncurses_def.h
+home_terminfo.So: ncurses_dll.h
+home_terminfo.So: term.h
+home_terminfo.So: unctrl.h
+home_terminfo.o: curses.h
+home_terminfo.o: ncurses_def.h
+home_terminfo.o: ncurses_dll.h
+home_terminfo.o: term.h
+home_terminfo.o: unctrl.h
+home_terminfo.po: curses.h
+home_terminfo.po: ncurses_def.h
+home_terminfo.po: ncurses_dll.h
+home_terminfo.po: term.h
+home_terminfo.po: unctrl.h
+init_keytry.So: curses.h
+init_keytry.So: init_keytry.h
+init_keytry.So: ncurses_def.h
+init_keytry.So: ncurses_dll.h
+init_keytry.So: term.h
+init_keytry.So: unctrl.h
+init_keytry.o: curses.h
+init_keytry.o: init_keytry.h
+init_keytry.o: ncurses_def.h
+init_keytry.o: ncurses_dll.h
+init_keytry.o: term.h
+init_keytry.o: unctrl.h
+init_keytry.po: curses.h
+init_keytry.po: init_keytry.h
+init_keytry.po: ncurses_def.h
+init_keytry.po: ncurses_dll.h
+init_keytry.po: term.h
+init_keytry.po: unctrl.h
+key_defined.So: curses.h
+key_defined.So: ncurses_def.h
+key_defined.So: ncurses_dll.h
+key_defined.So: term.h
+key_defined.So: unctrl.h
+key_defined.o: curses.h
+key_defined.o: ncurses_def.h
+key_defined.o: ncurses_dll.h
+key_defined.o: term.h
+key_defined.o: unctrl.h
+key_defined.po: curses.h
+key_defined.po: ncurses_def.h
+key_defined.po: ncurses_dll.h
+key_defined.po: term.h
+key_defined.po: unctrl.h
+keybound.So: curses.h
+keybound.So: ncurses_def.h
+keybound.So: ncurses_dll.h
+keybound.So: term.h
+keybound.So: unctrl.h
+keybound.o: curses.h
+keybound.o: ncurses_def.h
+keybound.o: ncurses_dll.h
+keybound.o: term.h
+keybound.o: unctrl.h
+keybound.po: curses.h
+keybound.po: ncurses_def.h
+keybound.po: ncurses_dll.h
+keybound.po: term.h
+keybound.po: unctrl.h
+keyok.So: curses.h
+keyok.So: ncurses_def.h
+keyok.So: ncurses_dll.h
+keyok.So: term.h
+keyok.So: unctrl.h
+keyok.o: curses.h
+keyok.o: ncurses_def.h
+keyok.o: ncurses_dll.h
+keyok.o: term.h
+keyok.o: unctrl.h
+keyok.po: curses.h
+keyok.po: ncurses_def.h
+keyok.po: ncurses_dll.h
+keyok.po: term.h
+keyok.po: unctrl.h
+legacy_coding.So: curses.h
+legacy_coding.So: ncurses_def.h
+legacy_coding.So: ncurses_dll.h
+legacy_coding.So: term.h
+legacy_coding.So: unctrl.h
+legacy_coding.o: curses.h
+legacy_coding.o: ncurses_def.h
+legacy_coding.o: ncurses_dll.h
+legacy_coding.o: term.h
+legacy_coding.o: unctrl.h
+legacy_coding.po: curses.h
+legacy_coding.po: ncurses_def.h
+legacy_coding.po: ncurses_dll.h
+legacy_coding.po: term.h
+legacy_coding.po: unctrl.h
+lib_acs.So: curses.h
+lib_acs.So: ncurses_def.h
+lib_acs.So: ncurses_dll.h
+lib_acs.So: term.h
+lib_acs.So: unctrl.h
+lib_acs.o: curses.h
+lib_acs.o: ncurses_def.h
+lib_acs.o: ncurses_dll.h
+lib_acs.o: term.h
+lib_acs.o: unctrl.h
+lib_acs.po: curses.h
+lib_acs.po: ncurses_def.h
+lib_acs.po: ncurses_dll.h
+lib_acs.po: term.h
+lib_acs.po: unctrl.h
+lib_add_wch.So: curses.h
+lib_add_wch.So: ncurses_def.h
+lib_add_wch.So: ncurses_dll.h
+lib_add_wch.So: term.h
+lib_add_wch.So: unctrl.h
+lib_add_wch.o: curses.h
+lib_add_wch.o: ncurses_def.h
+lib_add_wch.o: ncurses_dll.h
+lib_add_wch.o: term.h
+lib_add_wch.o: unctrl.h
+lib_add_wch.po: curses.h
+lib_add_wch.po: ncurses_def.h
+lib_add_wch.po: ncurses_dll.h
+lib_add_wch.po: term.h
+lib_add_wch.po: unctrl.h
+lib_addch.So: curses.h
+lib_addch.So: ncurses_def.h
+lib_addch.So: ncurses_dll.h
+lib_addch.So: term.h
+lib_addch.So: unctrl.h
+lib_addch.o: curses.h
+lib_addch.o: ncurses_def.h
+lib_addch.o: ncurses_dll.h
+lib_addch.o: term.h
+lib_addch.o: unctrl.h
+lib_addch.po: curses.h
+lib_addch.po: ncurses_def.h
+lib_addch.po: ncurses_dll.h
+lib_addch.po: term.h
+lib_addch.po: unctrl.h
+lib_addstr.So: curses.h
+lib_addstr.So: ncurses_def.h
+lib_addstr.So: ncurses_dll.h
+lib_addstr.So: term.h
+lib_addstr.So: unctrl.h
+lib_addstr.o: curses.h
+lib_addstr.o: ncurses_def.h
+lib_addstr.o: ncurses_dll.h
+lib_addstr.o: term.h
+lib_addstr.o: unctrl.h
+lib_addstr.po: curses.h
+lib_addstr.po: ncurses_def.h
+lib_addstr.po: ncurses_dll.h
+lib_addstr.po: term.h
+lib_addstr.po: unctrl.h
+lib_baudrate.So: curses.h
+lib_baudrate.So: ncurses_def.h
+lib_baudrate.So: ncurses_dll.h
+lib_baudrate.So: term.h
+lib_baudrate.So: termcap.h
+lib_baudrate.So: unctrl.h
+lib_baudrate.o: curses.h
+lib_baudrate.o: ncurses_def.h
+lib_baudrate.o: ncurses_dll.h
+lib_baudrate.o: term.h
+lib_baudrate.o: termcap.h
+lib_baudrate.o: unctrl.h
+lib_baudrate.po: curses.h
+lib_baudrate.po: ncurses_def.h
+lib_baudrate.po: ncurses_dll.h
+lib_baudrate.po: term.h
+lib_baudrate.po: termcap.h
+lib_baudrate.po: unctrl.h
+lib_beep.So: curses.h
+lib_beep.So: ncurses_def.h
+lib_beep.So: ncurses_dll.h
+lib_beep.So: term.h
+lib_beep.So: unctrl.h
+lib_beep.o: curses.h
+lib_beep.o: ncurses_def.h
+lib_beep.o: ncurses_dll.h
+lib_beep.o: term.h
+lib_beep.o: unctrl.h
+lib_beep.po: curses.h
+lib_beep.po: ncurses_def.h
+lib_beep.po: ncurses_dll.h
+lib_beep.po: term.h
+lib_beep.po: unctrl.h
+lib_bkgd.So: curses.h
+lib_bkgd.So: ncurses_def.h
+lib_bkgd.So: ncurses_dll.h
+lib_bkgd.So: term.h
+lib_bkgd.So: unctrl.h
+lib_bkgd.o: curses.h
+lib_bkgd.o: ncurses_def.h
+lib_bkgd.o: ncurses_dll.h
+lib_bkgd.o: term.h
+lib_bkgd.o: unctrl.h
+lib_bkgd.po: curses.h
+lib_bkgd.po: ncurses_def.h
+lib_bkgd.po: ncurses_dll.h
+lib_bkgd.po: term.h
+lib_bkgd.po: unctrl.h
+lib_box.So: curses.h
+lib_box.So: ncurses_def.h
+lib_box.So: ncurses_dll.h
+lib_box.So: term.h
+lib_box.So: unctrl.h
+lib_box.o: curses.h
+lib_box.o: ncurses_def.h
+lib_box.o: ncurses_dll.h
+lib_box.o: term.h
+lib_box.o: unctrl.h
+lib_box.po: curses.h
+lib_box.po: ncurses_def.h
+lib_box.po: ncurses_dll.h
+lib_box.po: term.h
+lib_box.po: unctrl.h
+lib_box_set.So: curses.h
+lib_box_set.So: ncurses_def.h
+lib_box_set.So: ncurses_dll.h
+lib_box_set.So: term.h
+lib_box_set.So: unctrl.h
+lib_box_set.o: curses.h
+lib_box_set.o: ncurses_def.h
+lib_box_set.o: ncurses_dll.h
+lib_box_set.o: term.h
+lib_box_set.o: unctrl.h
+lib_box_set.po: curses.h
+lib_box_set.po: ncurses_def.h
+lib_box_set.po: ncurses_dll.h
+lib_box_set.po: term.h
+lib_box_set.po: unctrl.h
+lib_cchar.So: curses.h
+lib_cchar.So: ncurses_def.h
+lib_cchar.So: ncurses_dll.h
+lib_cchar.So: term.h
+lib_cchar.So: unctrl.h
+lib_cchar.o: curses.h
+lib_cchar.o: ncurses_def.h
+lib_cchar.o: ncurses_dll.h
+lib_cchar.o: term.h
+lib_cchar.o: unctrl.h
+lib_cchar.po: curses.h
+lib_cchar.po: ncurses_def.h
+lib_cchar.po: ncurses_dll.h
+lib_cchar.po: term.h
+lib_cchar.po: unctrl.h
+lib_chgat.So: curses.h
+lib_chgat.So: ncurses_def.h
+lib_chgat.So: ncurses_dll.h
+lib_chgat.So: term.h
+lib_chgat.So: unctrl.h
+lib_chgat.o: curses.h
+lib_chgat.o: ncurses_def.h
+lib_chgat.o: ncurses_dll.h
+lib_chgat.o: term.h
+lib_chgat.o: unctrl.h
+lib_chgat.po: curses.h
+lib_chgat.po: ncurses_def.h
+lib_chgat.po: ncurses_dll.h
+lib_chgat.po: term.h
+lib_chgat.po: unctrl.h
+lib_clear.So: curses.h
+lib_clear.So: ncurses_def.h
+lib_clear.So: ncurses_dll.h
+lib_clear.So: term.h
+lib_clear.So: unctrl.h
+lib_clear.o: curses.h
+lib_clear.o: ncurses_def.h
+lib_clear.o: ncurses_dll.h
+lib_clear.o: term.h
+lib_clear.o: unctrl.h
+lib_clear.po: curses.h
+lib_clear.po: ncurses_def.h
+lib_clear.po: ncurses_dll.h
+lib_clear.po: term.h
+lib_clear.po: unctrl.h
+lib_clearok.So: curses.h
+lib_clearok.So: ncurses_def.h
+lib_clearok.So: ncurses_dll.h
+lib_clearok.So: term.h
+lib_clearok.So: unctrl.h
+lib_clearok.o: curses.h
+lib_clearok.o: ncurses_def.h
+lib_clearok.o: ncurses_dll.h
+lib_clearok.o: term.h
+lib_clearok.o: unctrl.h
+lib_clearok.po: curses.h
+lib_clearok.po: ncurses_def.h
+lib_clearok.po: ncurses_dll.h
+lib_clearok.po: term.h
+lib_clearok.po: unctrl.h
+lib_clrbot.So: curses.h
+lib_clrbot.So: ncurses_def.h
+lib_clrbot.So: ncurses_dll.h
+lib_clrbot.So: term.h
+lib_clrbot.So: unctrl.h
+lib_clrbot.o: curses.h
+lib_clrbot.o: ncurses_def.h
+lib_clrbot.o: ncurses_dll.h
+lib_clrbot.o: term.h
+lib_clrbot.o: unctrl.h
+lib_clrbot.po: curses.h
+lib_clrbot.po: ncurses_def.h
+lib_clrbot.po: ncurses_dll.h
+lib_clrbot.po: term.h
+lib_clrbot.po: unctrl.h
+lib_clreol.So: curses.h
+lib_clreol.So: ncurses_def.h
+lib_clreol.So: ncurses_dll.h
+lib_clreol.So: term.h
+lib_clreol.So: unctrl.h
+lib_clreol.o: curses.h
+lib_clreol.o: ncurses_def.h
+lib_clreol.o: ncurses_dll.h
+lib_clreol.o: term.h
+lib_clreol.o: unctrl.h
+lib_clreol.po: curses.h
+lib_clreol.po: ncurses_def.h
+lib_clreol.po: ncurses_dll.h
+lib_clreol.po: term.h
+lib_clreol.po: unctrl.h
+lib_color.So: curses.h
+lib_color.So: ncurses_def.h
+lib_color.So: ncurses_dll.h
+lib_color.So: term.h
+lib_color.So: unctrl.h
+lib_color.o: curses.h
+lib_color.o: ncurses_def.h
+lib_color.o: ncurses_dll.h
+lib_color.o: term.h
+lib_color.o: unctrl.h
+lib_color.po: curses.h
+lib_color.po: ncurses_def.h
+lib_color.po: ncurses_dll.h
+lib_color.po: term.h
+lib_color.po: unctrl.h
+lib_colorset.So: curses.h
+lib_colorset.So: ncurses_def.h
+lib_colorset.So: ncurses_dll.h
+lib_colorset.So: term.h
+lib_colorset.So: unctrl.h
+lib_colorset.o: curses.h
+lib_colorset.o: ncurses_def.h
+lib_colorset.o: ncurses_dll.h
+lib_colorset.o: term.h
+lib_colorset.o: unctrl.h
+lib_colorset.po: curses.h
+lib_colorset.po: ncurses_def.h
+lib_colorset.po: ncurses_dll.h
+lib_colorset.po: term.h
+lib_colorset.po: unctrl.h
+lib_cur_term.So: curses.h
+lib_cur_term.So: ncurses_def.h
+lib_cur_term.So: ncurses_dll.h
+lib_cur_term.So: term.h
+lib_cur_term.So: termcap.h
+lib_cur_term.So: unctrl.h
+lib_cur_term.o: curses.h
+lib_cur_term.o: ncurses_def.h
+lib_cur_term.o: ncurses_dll.h
+lib_cur_term.o: term.h
+lib_cur_term.o: termcap.h
+lib_cur_term.o: unctrl.h
+lib_cur_term.po: curses.h
+lib_cur_term.po: ncurses_def.h
+lib_cur_term.po: ncurses_dll.h
+lib_cur_term.po: term.h
+lib_cur_term.po: termcap.h
+lib_cur_term.po: unctrl.h
+lib_data.So: curses.h
+lib_data.So: ncurses_def.h
+lib_data.So: ncurses_dll.h
+lib_data.So: term.h
+lib_data.So: unctrl.h
+lib_data.o: curses.h
+lib_data.o: ncurses_def.h
+lib_data.o: ncurses_dll.h
+lib_data.o: term.h
+lib_data.o: unctrl.h
+lib_data.po: curses.h
+lib_data.po: ncurses_def.h
+lib_data.po: ncurses_dll.h
+lib_data.po: term.h
+lib_data.po: unctrl.h
+lib_delch.So: curses.h
+lib_delch.So: ncurses_def.h
+lib_delch.So: ncurses_dll.h
+lib_delch.So: term.h
+lib_delch.So: unctrl.h
+lib_delch.o: curses.h
+lib_delch.o: ncurses_def.h
+lib_delch.o: ncurses_dll.h
+lib_delch.o: term.h
+lib_delch.o: unctrl.h
+lib_delch.po: curses.h
+lib_delch.po: ncurses_def.h
+lib_delch.po: ncurses_dll.h
+lib_delch.po: term.h
+lib_delch.po: unctrl.h
+lib_delwin.So: curses.h
+lib_delwin.So: ncurses_def.h
+lib_delwin.So: ncurses_dll.h
+lib_delwin.So: term.h
+lib_delwin.So: unctrl.h
+lib_delwin.o: curses.h
+lib_delwin.o: ncurses_def.h
+lib_delwin.o: ncurses_dll.h
+lib_delwin.o: term.h
+lib_delwin.o: unctrl.h
+lib_delwin.po: curses.h
+lib_delwin.po: ncurses_def.h
+lib_delwin.po: ncurses_dll.h
+lib_delwin.po: term.h
+lib_delwin.po: unctrl.h
+lib_dft_fgbg.So: curses.h
+lib_dft_fgbg.So: ncurses_def.h
+lib_dft_fgbg.So: ncurses_dll.h
+lib_dft_fgbg.So: term.h
+lib_dft_fgbg.So: unctrl.h
+lib_dft_fgbg.o: curses.h
+lib_dft_fgbg.o: ncurses_def.h
+lib_dft_fgbg.o: ncurses_dll.h
+lib_dft_fgbg.o: term.h
+lib_dft_fgbg.o: unctrl.h
+lib_dft_fgbg.po: curses.h
+lib_dft_fgbg.po: ncurses_def.h
+lib_dft_fgbg.po: ncurses_dll.h
+lib_dft_fgbg.po: term.h
+lib_dft_fgbg.po: unctrl.h
+lib_echo.So: curses.h
+lib_echo.So: ncurses_def.h
+lib_echo.So: ncurses_dll.h
+lib_echo.So: term.h
+lib_echo.So: unctrl.h
+lib_echo.o: curses.h
+lib_echo.o: ncurses_def.h
+lib_echo.o: ncurses_dll.h
+lib_echo.o: term.h
+lib_echo.o: unctrl.h
+lib_echo.po: curses.h
+lib_echo.po: ncurses_def.h
+lib_echo.po: ncurses_dll.h
+lib_echo.po: term.h
+lib_echo.po: unctrl.h
+lib_endwin.So: curses.h
+lib_endwin.So: ncurses_def.h
+lib_endwin.So: ncurses_dll.h
+lib_endwin.So: term.h
+lib_endwin.So: unctrl.h
+lib_endwin.o: curses.h
+lib_endwin.o: ncurses_def.h
+lib_endwin.o: ncurses_dll.h
+lib_endwin.o: term.h
+lib_endwin.o: unctrl.h
+lib_endwin.po: curses.h
+lib_endwin.po: ncurses_def.h
+lib_endwin.po: ncurses_dll.h
+lib_endwin.po: term.h
+lib_endwin.po: unctrl.h
+lib_erase.So: curses.h
+lib_erase.So: ncurses_def.h
+lib_erase.So: ncurses_dll.h
+lib_erase.So: term.h
+lib_erase.So: unctrl.h
+lib_erase.o: curses.h
+lib_erase.o: ncurses_def.h
+lib_erase.o: ncurses_dll.h
+lib_erase.o: term.h
+lib_erase.o: unctrl.h
+lib_erase.po: curses.h
+lib_erase.po: ncurses_def.h
+lib_erase.po: ncurses_dll.h
+lib_erase.po: term.h
+lib_erase.po: unctrl.h
+lib_erasewchar.So: curses.h
+lib_erasewchar.So: ncurses_def.h
+lib_erasewchar.So: ncurses_dll.h
+lib_erasewchar.So: term.h
+lib_erasewchar.So: unctrl.h
+lib_erasewchar.o: curses.h
+lib_erasewchar.o: ncurses_def.h
+lib_erasewchar.o: ncurses_dll.h
+lib_erasewchar.o: term.h
+lib_erasewchar.o: unctrl.h
+lib_erasewchar.po: curses.h
+lib_erasewchar.po: ncurses_def.h
+lib_erasewchar.po: ncurses_dll.h
+lib_erasewchar.po: term.h
+lib_erasewchar.po: unctrl.h
+lib_flash.So: curses.h
+lib_flash.So: ncurses_def.h
+lib_flash.So: ncurses_dll.h
+lib_flash.So: term.h
+lib_flash.So: unctrl.h
+lib_flash.o: curses.h
+lib_flash.o: ncurses_def.h
+lib_flash.o: ncurses_dll.h
+lib_flash.o: term.h
+lib_flash.o: unctrl.h
+lib_flash.po: curses.h
+lib_flash.po: ncurses_def.h
+lib_flash.po: ncurses_dll.h
+lib_flash.po: term.h
+lib_flash.po: unctrl.h
+lib_freeall.So: curses.h
+lib_freeall.So: ncurses_def.h
+lib_freeall.So: ncurses_dll.h
+lib_freeall.So: term.h
+lib_freeall.So: unctrl.h
+lib_freeall.o: curses.h
+lib_freeall.o: ncurses_def.h
+lib_freeall.o: ncurses_dll.h
+lib_freeall.o: term.h
+lib_freeall.o: unctrl.h
+lib_freeall.po: curses.h
+lib_freeall.po: ncurses_def.h
+lib_freeall.po: ncurses_dll.h
+lib_freeall.po: term.h
+lib_freeall.po: unctrl.h
+lib_gen.So: curses.h
+lib_gen.So: lib_gen.c
+lib_gen.So: ncurses_def.h
+lib_gen.So: ncurses_dll.h
+lib_gen.So: term.h
+lib_gen.So: unctrl.h
+lib_gen.o: curses.h
+lib_gen.o: lib_gen.c
+lib_gen.o: ncurses_def.h
+lib_gen.o: ncurses_dll.h
+lib_gen.o: term.h
+lib_gen.o: unctrl.h
+lib_gen.po: curses.h
+lib_gen.po: lib_gen.c
+lib_gen.po: ncurses_def.h
+lib_gen.po: ncurses_dll.h
+lib_gen.po: term.h
+lib_gen.po: unctrl.h
+lib_get_wch.So: curses.h
+lib_get_wch.So: ncurses_def.h
+lib_get_wch.So: ncurses_dll.h
+lib_get_wch.So: term.h
+lib_get_wch.So: unctrl.h
+lib_get_wch.o: curses.h
+lib_get_wch.o: ncurses_def.h
+lib_get_wch.o: ncurses_dll.h
+lib_get_wch.o: term.h
+lib_get_wch.o: unctrl.h
+lib_get_wch.po: curses.h
+lib_get_wch.po: ncurses_def.h
+lib_get_wch.po: ncurses_dll.h
+lib_get_wch.po: term.h
+lib_get_wch.po: unctrl.h
+lib_get_wstr.So: curses.h
+lib_get_wstr.So: ncurses_def.h
+lib_get_wstr.So: ncurses_dll.h
+lib_get_wstr.So: term.h
+lib_get_wstr.So: unctrl.h
+lib_get_wstr.o: curses.h
+lib_get_wstr.o: ncurses_def.h
+lib_get_wstr.o: ncurses_dll.h
+lib_get_wstr.o: term.h
+lib_get_wstr.o: unctrl.h
+lib_get_wstr.po: curses.h
+lib_get_wstr.po: ncurses_def.h
+lib_get_wstr.po: ncurses_dll.h
+lib_get_wstr.po: term.h
+lib_get_wstr.po: unctrl.h
+lib_getch.So: curses.h
+lib_getch.So: ncurses_def.h
+lib_getch.So: ncurses_dll.h
+lib_getch.So: term.h
+lib_getch.So: unctrl.h
+lib_getch.o: curses.h
+lib_getch.o: ncurses_def.h
+lib_getch.o: ncurses_dll.h
+lib_getch.o: term.h
+lib_getch.o: unctrl.h
+lib_getch.po: curses.h
+lib_getch.po: ncurses_def.h
+lib_getch.po: ncurses_dll.h
+lib_getch.po: term.h
+lib_getch.po: unctrl.h
+lib_getstr.So: curses.h
+lib_getstr.So: ncurses_def.h
+lib_getstr.So: ncurses_dll.h
+lib_getstr.So: term.h
+lib_getstr.So: unctrl.h
+lib_getstr.o: curses.h
+lib_getstr.o: ncurses_def.h
+lib_getstr.o: ncurses_dll.h
+lib_getstr.o: term.h
+lib_getstr.o: unctrl.h
+lib_getstr.po: curses.h
+lib_getstr.po: ncurses_def.h
+lib_getstr.po: ncurses_dll.h
+lib_getstr.po: term.h
+lib_getstr.po: unctrl.h
+lib_has_cap.So: curses.h
+lib_has_cap.So: ncurses_def.h
+lib_has_cap.So: ncurses_dll.h
+lib_has_cap.So: term.h
+lib_has_cap.So: unctrl.h
+lib_has_cap.o: curses.h
+lib_has_cap.o: ncurses_def.h
+lib_has_cap.o: ncurses_dll.h
+lib_has_cap.o: term.h
+lib_has_cap.o: unctrl.h
+lib_has_cap.po: curses.h
+lib_has_cap.po: ncurses_def.h
+lib_has_cap.po: ncurses_dll.h
+lib_has_cap.po: term.h
+lib_has_cap.po: unctrl.h
+lib_hline.So: curses.h
+lib_hline.So: ncurses_def.h
+lib_hline.So: ncurses_dll.h
+lib_hline.So: term.h
+lib_hline.So: unctrl.h
+lib_hline.o: curses.h
+lib_hline.o: ncurses_def.h
+lib_hline.o: ncurses_dll.h
+lib_hline.o: term.h
+lib_hline.o: unctrl.h
+lib_hline.po: curses.h
+lib_hline.po: ncurses_def.h
+lib_hline.po: ncurses_dll.h
+lib_hline.po: term.h
+lib_hline.po: unctrl.h
+lib_hline_set.So: curses.h
+lib_hline_set.So: ncurses_def.h
+lib_hline_set.So: ncurses_dll.h
+lib_hline_set.So: term.h
+lib_hline_set.So: unctrl.h
+lib_hline_set.o: curses.h
+lib_hline_set.o: ncurses_def.h
+lib_hline_set.o: ncurses_dll.h
+lib_hline_set.o: term.h
+lib_hline_set.o: unctrl.h
+lib_hline_set.po: curses.h
+lib_hline_set.po: ncurses_def.h
+lib_hline_set.po: ncurses_dll.h
+lib_hline_set.po: term.h
+lib_hline_set.po: unctrl.h
+lib_immedok.So: curses.h
+lib_immedok.So: ncurses_def.h
+lib_immedok.So: ncurses_dll.h
+lib_immedok.So: term.h
+lib_immedok.So: unctrl.h
+lib_immedok.o: curses.h
+lib_immedok.o: ncurses_def.h
+lib_immedok.o: ncurses_dll.h
+lib_immedok.o: term.h
+lib_immedok.o: unctrl.h
+lib_immedok.po: curses.h
+lib_immedok.po: ncurses_def.h
+lib_immedok.po: ncurses_dll.h
+lib_immedok.po: term.h
+lib_immedok.po: unctrl.h
+lib_in_wch.So: curses.h
+lib_in_wch.So: ncurses_def.h
+lib_in_wch.So: ncurses_dll.h
+lib_in_wch.So: term.h
+lib_in_wch.So: unctrl.h
+lib_in_wch.o: curses.h
+lib_in_wch.o: ncurses_def.h
+lib_in_wch.o: ncurses_dll.h
+lib_in_wch.o: term.h
+lib_in_wch.o: unctrl.h
+lib_in_wch.po: curses.h
+lib_in_wch.po: ncurses_def.h
+lib_in_wch.po: ncurses_dll.h
+lib_in_wch.po: term.h
+lib_in_wch.po: unctrl.h
+lib_in_wchnstr.So: curses.h
+lib_in_wchnstr.So: ncurses_def.h
+lib_in_wchnstr.So: ncurses_dll.h
+lib_in_wchnstr.So: term.h
+lib_in_wchnstr.So: unctrl.h
+lib_in_wchnstr.o: curses.h
+lib_in_wchnstr.o: ncurses_def.h
+lib_in_wchnstr.o: ncurses_dll.h
+lib_in_wchnstr.o: term.h
+lib_in_wchnstr.o: unctrl.h
+lib_in_wchnstr.po: curses.h
+lib_in_wchnstr.po: ncurses_def.h
+lib_in_wchnstr.po: ncurses_dll.h
+lib_in_wchnstr.po: term.h
+lib_in_wchnstr.po: unctrl.h
+lib_inchstr.So: curses.h
+lib_inchstr.So: ncurses_def.h
+lib_inchstr.So: ncurses_dll.h
+lib_inchstr.So: term.h
+lib_inchstr.So: unctrl.h
+lib_inchstr.o: curses.h
+lib_inchstr.o: ncurses_def.h
+lib_inchstr.o: ncurses_dll.h
+lib_inchstr.o: term.h
+lib_inchstr.o: unctrl.h
+lib_inchstr.po: curses.h
+lib_inchstr.po: ncurses_def.h
+lib_inchstr.po: ncurses_dll.h
+lib_inchstr.po: term.h
+lib_inchstr.po: unctrl.h
+lib_initscr.So: curses.h
+lib_initscr.So: ncurses_def.h
+lib_initscr.So: ncurses_dll.h
+lib_initscr.So: term.h
+lib_initscr.So: unctrl.h
+lib_initscr.o: curses.h
+lib_initscr.o: ncurses_def.h
+lib_initscr.o: ncurses_dll.h
+lib_initscr.o: term.h
+lib_initscr.o: unctrl.h
+lib_initscr.po: curses.h
+lib_initscr.po: ncurses_def.h
+lib_initscr.po: ncurses_dll.h
+lib_initscr.po: term.h
+lib_initscr.po: unctrl.h
+lib_ins_wch.So: curses.h
+lib_ins_wch.So: ncurses_def.h
+lib_ins_wch.So: ncurses_dll.h
+lib_ins_wch.So: term.h
+lib_ins_wch.So: unctrl.h
+lib_ins_wch.o: curses.h
+lib_ins_wch.o: ncurses_def.h
+lib_ins_wch.o: ncurses_dll.h
+lib_ins_wch.o: term.h
+lib_ins_wch.o: unctrl.h
+lib_ins_wch.po: curses.h
+lib_ins_wch.po: ncurses_def.h
+lib_ins_wch.po: ncurses_dll.h
+lib_ins_wch.po: term.h
+lib_ins_wch.po: unctrl.h
+lib_insch.So: curses.h
+lib_insch.So: ncurses_def.h
+lib_insch.So: ncurses_dll.h
+lib_insch.So: term.h
+lib_insch.So: unctrl.h
+lib_insch.o: curses.h
+lib_insch.o: ncurses_def.h
+lib_insch.o: ncurses_dll.h
+lib_insch.o: term.h
+lib_insch.o: unctrl.h
+lib_insch.po: curses.h
+lib_insch.po: ncurses_def.h
+lib_insch.po: ncurses_dll.h
+lib_insch.po: term.h
+lib_insch.po: unctrl.h
+lib_insdel.So: curses.h
+lib_insdel.So: ncurses_def.h
+lib_insdel.So: ncurses_dll.h
+lib_insdel.So: term.h
+lib_insdel.So: unctrl.h
+lib_insdel.o: curses.h
+lib_insdel.o: ncurses_def.h
+lib_insdel.o: ncurses_dll.h
+lib_insdel.o: term.h
+lib_insdel.o: unctrl.h
+lib_insdel.po: curses.h
+lib_insdel.po: ncurses_def.h
+lib_insdel.po: ncurses_dll.h
+lib_insdel.po: term.h
+lib_insdel.po: unctrl.h
+lib_insnstr.So: curses.h
+lib_insnstr.So: ncurses_def.h
+lib_insnstr.So: ncurses_dll.h
+lib_insnstr.So: term.h
+lib_insnstr.So: unctrl.h
+lib_insnstr.o: curses.h
+lib_insnstr.o: ncurses_def.h
+lib_insnstr.o: ncurses_dll.h
+lib_insnstr.o: term.h
+lib_insnstr.o: unctrl.h
+lib_insnstr.po: curses.h
+lib_insnstr.po: ncurses_def.h
+lib_insnstr.po: ncurses_dll.h
+lib_insnstr.po: term.h
+lib_insnstr.po: unctrl.h
+lib_instr.So: curses.h
+lib_instr.So: ncurses_def.h
+lib_instr.So: ncurses_dll.h
+lib_instr.So: term.h
+lib_instr.So: unctrl.h
+lib_instr.o: curses.h
+lib_instr.o: ncurses_def.h
+lib_instr.o: ncurses_dll.h
+lib_instr.o: term.h
+lib_instr.o: unctrl.h
+lib_instr.po: curses.h
+lib_instr.po: ncurses_def.h
+lib_instr.po: ncurses_dll.h
+lib_instr.po: term.h
+lib_instr.po: unctrl.h
+lib_inwstr.So: curses.h
+lib_inwstr.So: ncurses_def.h
+lib_inwstr.So: ncurses_dll.h
+lib_inwstr.So: term.h
+lib_inwstr.So: unctrl.h
+lib_inwstr.o: curses.h
+lib_inwstr.o: ncurses_def.h
+lib_inwstr.o: ncurses_dll.h
+lib_inwstr.o: term.h
+lib_inwstr.o: unctrl.h
+lib_inwstr.po: curses.h
+lib_inwstr.po: ncurses_def.h
+lib_inwstr.po: ncurses_dll.h
+lib_inwstr.po: term.h
+lib_inwstr.po: unctrl.h
+lib_isendwin.So: curses.h
+lib_isendwin.So: ncurses_def.h
+lib_isendwin.So: ncurses_dll.h
+lib_isendwin.So: term.h
+lib_isendwin.So: unctrl.h
+lib_isendwin.o: curses.h
+lib_isendwin.o: ncurses_def.h
+lib_isendwin.o: ncurses_dll.h
+lib_isendwin.o: term.h
+lib_isendwin.o: unctrl.h
+lib_isendwin.po: curses.h
+lib_isendwin.po: ncurses_def.h
+lib_isendwin.po: ncurses_dll.h
+lib_isendwin.po: term.h
+lib_isendwin.po: unctrl.h
+lib_kernel.So: curses.h
+lib_kernel.So: ncurses_def.h
+lib_kernel.So: ncurses_dll.h
+lib_kernel.So: term.h
+lib_kernel.So: unctrl.h
+lib_kernel.o: curses.h
+lib_kernel.o: ncurses_def.h
+lib_kernel.o: ncurses_dll.h
+lib_kernel.o: term.h
+lib_kernel.o: unctrl.h
+lib_kernel.po: curses.h
+lib_kernel.po: ncurses_def.h
+lib_kernel.po: ncurses_dll.h
+lib_kernel.po: term.h
+lib_kernel.po: unctrl.h
+lib_key_name.So: curses.h
+lib_key_name.So: ncurses_def.h
+lib_key_name.So: ncurses_dll.h
+lib_key_name.So: term.h
+lib_key_name.So: unctrl.h
+lib_key_name.o: curses.h
+lib_key_name.o: ncurses_def.h
+lib_key_name.o: ncurses_dll.h
+lib_key_name.o: term.h
+lib_key_name.o: unctrl.h
+lib_key_name.po: curses.h
+lib_key_name.po: ncurses_def.h
+lib_key_name.po: ncurses_dll.h
+lib_key_name.po: term.h
+lib_key_name.po: unctrl.h
+lib_keyname.So: curses.h
+lib_keyname.So: lib_keyname.c
+lib_keyname.So: ncurses_def.h
+lib_keyname.So: ncurses_dll.h
+lib_keyname.So: term.h
+lib_keyname.So: unctrl.h
+lib_keyname.o: curses.h
+lib_keyname.o: lib_keyname.c
+lib_keyname.o: ncurses_def.h
+lib_keyname.o: ncurses_dll.h
+lib_keyname.o: term.h
+lib_keyname.o: unctrl.h
+lib_keyname.po: curses.h
+lib_keyname.po: lib_keyname.c
+lib_keyname.po: ncurses_def.h
+lib_keyname.po: ncurses_dll.h
+lib_keyname.po: term.h
+lib_keyname.po: unctrl.h
+lib_leaveok.So: curses.h
+lib_leaveok.So: ncurses_def.h
+lib_leaveok.So: ncurses_dll.h
+lib_leaveok.So: term.h
+lib_leaveok.So: unctrl.h
+lib_leaveok.o: curses.h
+lib_leaveok.o: ncurses_def.h
+lib_leaveok.o: ncurses_dll.h
+lib_leaveok.o: term.h
+lib_leaveok.o: unctrl.h
+lib_leaveok.po: curses.h
+lib_leaveok.po: ncurses_def.h
+lib_leaveok.po: ncurses_dll.h
+lib_leaveok.po: term.h
+lib_leaveok.po: unctrl.h
+lib_longname.So: curses.h
+lib_longname.So: ncurses_def.h
+lib_longname.So: ncurses_dll.h
+lib_longname.So: term.h
+lib_longname.So: unctrl.h
+lib_longname.o: curses.h
+lib_longname.o: ncurses_def.h
+lib_longname.o: ncurses_dll.h
+lib_longname.o: term.h
+lib_longname.o: unctrl.h
+lib_longname.po: curses.h
+lib_longname.po: ncurses_def.h
+lib_longname.po: ncurses_dll.h
+lib_longname.po: term.h
+lib_longname.po: unctrl.h
+lib_mouse.So: curses.h
+lib_mouse.So: ncurses_def.h
+lib_mouse.So: ncurses_dll.h
+lib_mouse.So: term.h
+lib_mouse.So: unctrl.h
+lib_mouse.o: curses.h
+lib_mouse.o: ncurses_def.h
+lib_mouse.o: ncurses_dll.h
+lib_mouse.o: term.h
+lib_mouse.o: unctrl.h
+lib_mouse.po: curses.h
+lib_mouse.po: ncurses_def.h
+lib_mouse.po: ncurses_dll.h
+lib_mouse.po: term.h
+lib_mouse.po: unctrl.h
+lib_move.So: curses.h
+lib_move.So: ncurses_def.h
+lib_move.So: ncurses_dll.h
+lib_move.So: term.h
+lib_move.So: unctrl.h
+lib_move.o: curses.h
+lib_move.o: ncurses_def.h
+lib_move.o: ncurses_dll.h
+lib_move.o: term.h
+lib_move.o: unctrl.h
+lib_move.po: curses.h
+lib_move.po: ncurses_def.h
+lib_move.po: ncurses_dll.h
+lib_move.po: term.h
+lib_move.po: unctrl.h
+lib_mvcur.So: curses.h
+lib_mvcur.So: ncurses_def.h
+lib_mvcur.So: ncurses_dll.h
+lib_mvcur.So: term.h
+lib_mvcur.So: unctrl.h
+lib_mvcur.o: curses.h
+lib_mvcur.o: ncurses_def.h
+lib_mvcur.o: ncurses_dll.h
+lib_mvcur.o: term.h
+lib_mvcur.o: unctrl.h
+lib_mvcur.po: curses.h
+lib_mvcur.po: ncurses_def.h
+lib_mvcur.po: ncurses_dll.h
+lib_mvcur.po: term.h
+lib_mvcur.po: unctrl.h
+lib_mvwin.So: curses.h
+lib_mvwin.So: ncurses_def.h
+lib_mvwin.So: ncurses_dll.h
+lib_mvwin.So: term.h
+lib_mvwin.So: unctrl.h
+lib_mvwin.o: curses.h
+lib_mvwin.o: ncurses_def.h
+lib_mvwin.o: ncurses_dll.h
+lib_mvwin.o: term.h
+lib_mvwin.o: unctrl.h
+lib_mvwin.po: curses.h
+lib_mvwin.po: ncurses_def.h
+lib_mvwin.po: ncurses_dll.h
+lib_mvwin.po: term.h
+lib_mvwin.po: unctrl.h
+lib_napms.So: curses.h
+lib_napms.So: ncurses_def.h
+lib_napms.So: ncurses_dll.h
+lib_napms.So: term.h
+lib_napms.So: unctrl.h
+lib_napms.o: curses.h
+lib_napms.o: ncurses_def.h
+lib_napms.o: ncurses_dll.h
+lib_napms.o: term.h
+lib_napms.o: unctrl.h
+lib_napms.po: curses.h
+lib_napms.po: ncurses_def.h
+lib_napms.po: ncurses_dll.h
+lib_napms.po: term.h
+lib_napms.po: unctrl.h
+lib_newterm.So: curses.h
+lib_newterm.So: ncurses_def.h
+lib_newterm.So: ncurses_dll.h
+lib_newterm.So: term.h
+lib_newterm.So: unctrl.h
+lib_newterm.o: curses.h
+lib_newterm.o: ncurses_def.h
+lib_newterm.o: ncurses_dll.h
+lib_newterm.o: term.h
+lib_newterm.o: unctrl.h
+lib_newterm.po: curses.h
+lib_newterm.po: ncurses_def.h
+lib_newterm.po: ncurses_dll.h
+lib_newterm.po: term.h
+lib_newterm.po: unctrl.h
+lib_newwin.So: curses.h
+lib_newwin.So: ncurses_def.h
+lib_newwin.So: ncurses_dll.h
+lib_newwin.So: term.h
+lib_newwin.So: unctrl.h
+lib_newwin.o: curses.h
+lib_newwin.o: ncurses_def.h
+lib_newwin.o: ncurses_dll.h
+lib_newwin.o: term.h
+lib_newwin.o: unctrl.h
+lib_newwin.po: curses.h
+lib_newwin.po: ncurses_def.h
+lib_newwin.po: ncurses_dll.h
+lib_newwin.po: term.h
+lib_newwin.po: unctrl.h
+lib_nl.So: curses.h
+lib_nl.So: ncurses_def.h
+lib_nl.So: ncurses_dll.h
+lib_nl.So: term.h
+lib_nl.So: unctrl.h
+lib_nl.o: curses.h
+lib_nl.o: ncurses_def.h
+lib_nl.o: ncurses_dll.h
+lib_nl.o: term.h
+lib_nl.o: unctrl.h
+lib_nl.po: curses.h
+lib_nl.po: ncurses_def.h
+lib_nl.po: ncurses_dll.h
+lib_nl.po: term.h
+lib_nl.po: unctrl.h
+lib_options.So: curses.h
+lib_options.So: ncurses_def.h
+lib_options.So: ncurses_dll.h
+lib_options.So: term.h
+lib_options.So: unctrl.h
+lib_options.o: curses.h
+lib_options.o: ncurses_def.h
+lib_options.o: ncurses_dll.h
+lib_options.o: term.h
+lib_options.o: unctrl.h
+lib_options.po: curses.h
+lib_options.po: ncurses_def.h
+lib_options.po: ncurses_dll.h
+lib_options.po: term.h
+lib_options.po: unctrl.h
+lib_overlay.So: curses.h
+lib_overlay.So: ncurses_def.h
+lib_overlay.So: ncurses_dll.h
+lib_overlay.So: term.h
+lib_overlay.So: unctrl.h
+lib_overlay.o: curses.h
+lib_overlay.o: ncurses_def.h
+lib_overlay.o: ncurses_dll.h
+lib_overlay.o: term.h
+lib_overlay.o: unctrl.h
+lib_overlay.po: curses.h
+lib_overlay.po: ncurses_def.h
+lib_overlay.po: ncurses_dll.h
+lib_overlay.po: term.h
+lib_overlay.po: unctrl.h
+lib_pad.So: curses.h
+lib_pad.So: ncurses_def.h
+lib_pad.So: ncurses_dll.h
+lib_pad.So: term.h
+lib_pad.So: unctrl.h
+lib_pad.o: curses.h
+lib_pad.o: ncurses_def.h
+lib_pad.o: ncurses_dll.h
+lib_pad.o: term.h
+lib_pad.o: unctrl.h
+lib_pad.po: curses.h
+lib_pad.po: ncurses_def.h
+lib_pad.po: ncurses_dll.h
+lib_pad.po: term.h
+lib_pad.po: unctrl.h
+lib_pecho_wchar.So: curses.h
+lib_pecho_wchar.So: ncurses_def.h
+lib_pecho_wchar.So: ncurses_dll.h
+lib_pecho_wchar.So: term.h
+lib_pecho_wchar.So: unctrl.h
+lib_pecho_wchar.o: curses.h
+lib_pecho_wchar.o: ncurses_def.h
+lib_pecho_wchar.o: ncurses_dll.h
+lib_pecho_wchar.o: term.h
+lib_pecho_wchar.o: unctrl.h
+lib_pecho_wchar.po: curses.h
+lib_pecho_wchar.po: ncurses_def.h
+lib_pecho_wchar.po: ncurses_dll.h
+lib_pecho_wchar.po: term.h
+lib_pecho_wchar.po: unctrl.h
+lib_print.So: curses.h
+lib_print.So: ncurses_def.h
+lib_print.So: ncurses_dll.h
+lib_print.So: term.h
+lib_print.So: unctrl.h
+lib_print.o: curses.h
+lib_print.o: ncurses_def.h
+lib_print.o: ncurses_dll.h
+lib_print.o: term.h
+lib_print.o: unctrl.h
+lib_print.po: curses.h
+lib_print.po: ncurses_def.h
+lib_print.po: ncurses_dll.h
+lib_print.po: term.h
+lib_print.po: unctrl.h
+lib_printw.So: curses.h
+lib_printw.So: ncurses_def.h
+lib_printw.So: ncurses_dll.h
+lib_printw.So: term.h
+lib_printw.So: unctrl.h
+lib_printw.o: curses.h
+lib_printw.o: ncurses_def.h
+lib_printw.o: ncurses_dll.h
+lib_printw.o: term.h
+lib_printw.o: unctrl.h
+lib_printw.po: curses.h
+lib_printw.po: ncurses_def.h
+lib_printw.po: ncurses_dll.h
+lib_printw.po: term.h
+lib_printw.po: unctrl.h
+lib_raw.So: curses.h
+lib_raw.So: ncurses_def.h
+lib_raw.So: ncurses_dll.h
+lib_raw.So: term.h
+lib_raw.So: unctrl.h
+lib_raw.o: curses.h
+lib_raw.o: ncurses_def.h
+lib_raw.o: ncurses_dll.h
+lib_raw.o: term.h
+lib_raw.o: unctrl.h
+lib_raw.po: curses.h
+lib_raw.po: ncurses_def.h
+lib_raw.po: ncurses_dll.h
+lib_raw.po: term.h
+lib_raw.po: unctrl.h
+lib_redrawln.So: curses.h
+lib_redrawln.So: ncurses_def.h
+lib_redrawln.So: ncurses_dll.h
+lib_redrawln.So: term.h
+lib_redrawln.So: unctrl.h
+lib_redrawln.o: curses.h
+lib_redrawln.o: ncurses_def.h
+lib_redrawln.o: ncurses_dll.h
+lib_redrawln.o: term.h
+lib_redrawln.o: unctrl.h
+lib_redrawln.po: curses.h
+lib_redrawln.po: ncurses_def.h
+lib_redrawln.po: ncurses_dll.h
+lib_redrawln.po: term.h
+lib_redrawln.po: unctrl.h
+lib_refresh.So: curses.h
+lib_refresh.So: ncurses_def.h
+lib_refresh.So: ncurses_dll.h
+lib_refresh.So: term.h
+lib_refresh.So: unctrl.h
+lib_refresh.o: curses.h
+lib_refresh.o: ncurses_def.h
+lib_refresh.o: ncurses_dll.h
+lib_refresh.o: term.h
+lib_refresh.o: unctrl.h
+lib_refresh.po: curses.h
+lib_refresh.po: ncurses_def.h
+lib_refresh.po: ncurses_dll.h
+lib_refresh.po: term.h
+lib_refresh.po: unctrl.h
+lib_restart.So: curses.h
+lib_restart.So: ncurses_def.h
+lib_restart.So: ncurses_dll.h
+lib_restart.So: term.h
+lib_restart.So: unctrl.h
+lib_restart.o: curses.h
+lib_restart.o: ncurses_def.h
+lib_restart.o: ncurses_dll.h
+lib_restart.o: term.h
+lib_restart.o: unctrl.h
+lib_restart.po: curses.h
+lib_restart.po: ncurses_def.h
+lib_restart.po: ncurses_dll.h
+lib_restart.po: term.h
+lib_restart.po: unctrl.h
+lib_scanw.So: curses.h
+lib_scanw.So: ncurses_def.h
+lib_scanw.So: ncurses_dll.h
+lib_scanw.So: term.h
+lib_scanw.So: unctrl.h
+lib_scanw.o: curses.h
+lib_scanw.o: ncurses_def.h
+lib_scanw.o: ncurses_dll.h
+lib_scanw.o: term.h
+lib_scanw.o: unctrl.h
+lib_scanw.po: curses.h
+lib_scanw.po: ncurses_def.h
+lib_scanw.po: ncurses_dll.h
+lib_scanw.po: term.h
+lib_scanw.po: unctrl.h
+lib_screen.So: curses.h
+lib_screen.So: ncurses_def.h
+lib_screen.So: ncurses_dll.h
+lib_screen.So: term.h
+lib_screen.So: unctrl.h
+lib_screen.o: curses.h
+lib_screen.o: ncurses_def.h
+lib_screen.o: ncurses_dll.h
+lib_screen.o: term.h
+lib_screen.o: unctrl.h
+lib_screen.po: curses.h
+lib_screen.po: ncurses_def.h
+lib_screen.po: ncurses_dll.h
+lib_screen.po: term.h
+lib_screen.po: unctrl.h
+lib_scroll.So: curses.h
+lib_scroll.So: ncurses_def.h
+lib_scroll.So: ncurses_dll.h
+lib_scroll.So: term.h
+lib_scroll.So: unctrl.h
+lib_scroll.o: curses.h
+lib_scroll.o: ncurses_def.h
+lib_scroll.o: ncurses_dll.h
+lib_scroll.o: term.h
+lib_scroll.o: unctrl.h
+lib_scroll.po: curses.h
+lib_scroll.po: ncurses_def.h
+lib_scroll.po: ncurses_dll.h
+lib_scroll.po: term.h
+lib_scroll.po: unctrl.h
+lib_scrollok.So: curses.h
+lib_scrollok.So: ncurses_def.h
+lib_scrollok.So: ncurses_dll.h
+lib_scrollok.So: term.h
+lib_scrollok.So: unctrl.h
+lib_scrollok.o: curses.h
+lib_scrollok.o: ncurses_def.h
+lib_scrollok.o: ncurses_dll.h
+lib_scrollok.o: term.h
+lib_scrollok.o: unctrl.h
+lib_scrollok.po: curses.h
+lib_scrollok.po: ncurses_def.h
+lib_scrollok.po: ncurses_dll.h
+lib_scrollok.po: term.h
+lib_scrollok.po: unctrl.h
+lib_scrreg.So: curses.h
+lib_scrreg.So: ncurses_def.h
+lib_scrreg.So: ncurses_dll.h
+lib_scrreg.So: term.h
+lib_scrreg.So: unctrl.h
+lib_scrreg.o: curses.h
+lib_scrreg.o: ncurses_def.h
+lib_scrreg.o: ncurses_dll.h
+lib_scrreg.o: term.h
+lib_scrreg.o: unctrl.h
+lib_scrreg.po: curses.h
+lib_scrreg.po: ncurses_def.h
+lib_scrreg.po: ncurses_dll.h
+lib_scrreg.po: term.h
+lib_scrreg.po: unctrl.h
+lib_set_term.So: curses.h
+lib_set_term.So: ncurses_def.h
+lib_set_term.So: ncurses_dll.h
+lib_set_term.So: term.h
+lib_set_term.So: unctrl.h
+lib_set_term.o: curses.h
+lib_set_term.o: ncurses_def.h
+lib_set_term.o: ncurses_dll.h
+lib_set_term.o: term.h
+lib_set_term.o: unctrl.h
+lib_set_term.po: curses.h
+lib_set_term.po: ncurses_def.h
+lib_set_term.po: ncurses_dll.h
+lib_set_term.po: term.h
+lib_set_term.po: unctrl.h
+lib_setup.So: curses.h
+lib_setup.So: ncurses_def.h
+lib_setup.So: ncurses_dll.h
+lib_setup.So: term.h
+lib_setup.So: unctrl.h
+lib_setup.o: curses.h
+lib_setup.o: ncurses_def.h
+lib_setup.o: ncurses_dll.h
+lib_setup.o: term.h
+lib_setup.o: unctrl.h
+lib_setup.po: curses.h
+lib_setup.po: ncurses_def.h
+lib_setup.po: ncurses_dll.h
+lib_setup.po: term.h
+lib_setup.po: unctrl.h
+lib_slk.So: curses.h
+lib_slk.So: ncurses_def.h
+lib_slk.So: ncurses_dll.h
+lib_slk.So: term.h
+lib_slk.So: unctrl.h
+lib_slk.o: curses.h
+lib_slk.o: ncurses_def.h
+lib_slk.o: ncurses_dll.h
+lib_slk.o: term.h
+lib_slk.o: unctrl.h
+lib_slk.po: curses.h
+lib_slk.po: ncurses_def.h
+lib_slk.po: ncurses_dll.h
+lib_slk.po: term.h
+lib_slk.po: unctrl.h
+lib_slk_wset.So: curses.h
+lib_slk_wset.So: ncurses_def.h
+lib_slk_wset.So: ncurses_dll.h
+lib_slk_wset.So: term.h
+lib_slk_wset.So: unctrl.h
+lib_slk_wset.o: curses.h
+lib_slk_wset.o: ncurses_def.h
+lib_slk_wset.o: ncurses_dll.h
+lib_slk_wset.o: term.h
+lib_slk_wset.o: unctrl.h
+lib_slk_wset.po: curses.h
+lib_slk_wset.po: ncurses_def.h
+lib_slk_wset.po: ncurses_dll.h
+lib_slk_wset.po: term.h
+lib_slk_wset.po: unctrl.h
+lib_slkatr_set.So: curses.h
+lib_slkatr_set.So: ncurses_def.h
+lib_slkatr_set.So: ncurses_dll.h
+lib_slkatr_set.So: term.h
+lib_slkatr_set.So: unctrl.h
+lib_slkatr_set.o: curses.h
+lib_slkatr_set.o: ncurses_def.h
+lib_slkatr_set.o: ncurses_dll.h
+lib_slkatr_set.o: term.h
+lib_slkatr_set.o: unctrl.h
+lib_slkatr_set.po: curses.h
+lib_slkatr_set.po: ncurses_def.h
+lib_slkatr_set.po: ncurses_dll.h
+lib_slkatr_set.po: term.h
+lib_slkatr_set.po: unctrl.h
+lib_slkatrof.So: curses.h
+lib_slkatrof.So: ncurses_def.h
+lib_slkatrof.So: ncurses_dll.h
+lib_slkatrof.So: term.h
+lib_slkatrof.So: unctrl.h
+lib_slkatrof.o: curses.h
+lib_slkatrof.o: ncurses_def.h
+lib_slkatrof.o: ncurses_dll.h
+lib_slkatrof.o: term.h
+lib_slkatrof.o: unctrl.h
+lib_slkatrof.po: curses.h
+lib_slkatrof.po: ncurses_def.h
+lib_slkatrof.po: ncurses_dll.h
+lib_slkatrof.po: term.h
+lib_slkatrof.po: unctrl.h
+lib_slkatron.So: curses.h
+lib_slkatron.So: ncurses_def.h
+lib_slkatron.So: ncurses_dll.h
+lib_slkatron.So: term.h
+lib_slkatron.So: unctrl.h
+lib_slkatron.o: curses.h
+lib_slkatron.o: ncurses_def.h
+lib_slkatron.o: ncurses_dll.h
+lib_slkatron.o: term.h
+lib_slkatron.o: unctrl.h
+lib_slkatron.po: curses.h
+lib_slkatron.po: ncurses_def.h
+lib_slkatron.po: ncurses_dll.h
+lib_slkatron.po: term.h
+lib_slkatron.po: unctrl.h
+lib_slkatrset.So: curses.h
+lib_slkatrset.So: ncurses_def.h
+lib_slkatrset.So: ncurses_dll.h
+lib_slkatrset.So: term.h
+lib_slkatrset.So: unctrl.h
+lib_slkatrset.o: curses.h
+lib_slkatrset.o: ncurses_def.h
+lib_slkatrset.o: ncurses_dll.h
+lib_slkatrset.o: term.h
+lib_slkatrset.o: unctrl.h
+lib_slkatrset.po: curses.h
+lib_slkatrset.po: ncurses_def.h
+lib_slkatrset.po: ncurses_dll.h
+lib_slkatrset.po: term.h
+lib_slkatrset.po: unctrl.h
+lib_slkattr.So: curses.h
+lib_slkattr.So: ncurses_def.h
+lib_slkattr.So: ncurses_dll.h
+lib_slkattr.So: term.h
+lib_slkattr.So: unctrl.h
+lib_slkattr.o: curses.h
+lib_slkattr.o: ncurses_def.h
+lib_slkattr.o: ncurses_dll.h
+lib_slkattr.o: term.h
+lib_slkattr.o: unctrl.h
+lib_slkattr.po: curses.h
+lib_slkattr.po: ncurses_def.h
+lib_slkattr.po: ncurses_dll.h
+lib_slkattr.po: term.h
+lib_slkattr.po: unctrl.h
+lib_slkclear.So: curses.h
+lib_slkclear.So: ncurses_def.h
+lib_slkclear.So: ncurses_dll.h
+lib_slkclear.So: term.h
+lib_slkclear.So: unctrl.h
+lib_slkclear.o: curses.h
+lib_slkclear.o: ncurses_def.h
+lib_slkclear.o: ncurses_dll.h
+lib_slkclear.o: term.h
+lib_slkclear.o: unctrl.h
+lib_slkclear.po: curses.h
+lib_slkclear.po: ncurses_def.h
+lib_slkclear.po: ncurses_dll.h
+lib_slkclear.po: term.h
+lib_slkclear.po: unctrl.h
+lib_slkcolor.So: curses.h
+lib_slkcolor.So: ncurses_def.h
+lib_slkcolor.So: ncurses_dll.h
+lib_slkcolor.So: term.h
+lib_slkcolor.So: unctrl.h
+lib_slkcolor.o: curses.h
+lib_slkcolor.o: ncurses_def.h
+lib_slkcolor.o: ncurses_dll.h
+lib_slkcolor.o: term.h
+lib_slkcolor.o: unctrl.h
+lib_slkcolor.po: curses.h
+lib_slkcolor.po: ncurses_def.h
+lib_slkcolor.po: ncurses_dll.h
+lib_slkcolor.po: term.h
+lib_slkcolor.po: unctrl.h
+lib_slkinit.So: curses.h
+lib_slkinit.So: ncurses_def.h
+lib_slkinit.So: ncurses_dll.h
+lib_slkinit.So: term.h
+lib_slkinit.So: unctrl.h
+lib_slkinit.o: curses.h
+lib_slkinit.o: ncurses_def.h
+lib_slkinit.o: ncurses_dll.h
+lib_slkinit.o: term.h
+lib_slkinit.o: unctrl.h
+lib_slkinit.po: curses.h
+lib_slkinit.po: ncurses_def.h
+lib_slkinit.po: ncurses_dll.h
+lib_slkinit.po: term.h
+lib_slkinit.po: unctrl.h
+lib_slklab.So: curses.h
+lib_slklab.So: ncurses_def.h
+lib_slklab.So: ncurses_dll.h
+lib_slklab.So: term.h
+lib_slklab.So: unctrl.h
+lib_slklab.o: curses.h
+lib_slklab.o: ncurses_def.h
+lib_slklab.o: ncurses_dll.h
+lib_slklab.o: term.h
+lib_slklab.o: unctrl.h
+lib_slklab.po: curses.h
+lib_slklab.po: ncurses_def.h
+lib_slklab.po: ncurses_dll.h
+lib_slklab.po: term.h
+lib_slklab.po: unctrl.h
+lib_slkrefr.So: curses.h
+lib_slkrefr.So: ncurses_def.h
+lib_slkrefr.So: ncurses_dll.h
+lib_slkrefr.So: term.h
+lib_slkrefr.So: unctrl.h
+lib_slkrefr.o: curses.h
+lib_slkrefr.o: ncurses_def.h
+lib_slkrefr.o: ncurses_dll.h
+lib_slkrefr.o: term.h
+lib_slkrefr.o: unctrl.h
+lib_slkrefr.po: curses.h
+lib_slkrefr.po: ncurses_def.h
+lib_slkrefr.po: ncurses_dll.h
+lib_slkrefr.po: term.h
+lib_slkrefr.po: unctrl.h
+lib_slkset.So: curses.h
+lib_slkset.So: ncurses_def.h
+lib_slkset.So: ncurses_dll.h
+lib_slkset.So: term.h
+lib_slkset.So: unctrl.h
+lib_slkset.o: curses.h
+lib_slkset.o: ncurses_def.h
+lib_slkset.o: ncurses_dll.h
+lib_slkset.o: term.h
+lib_slkset.o: unctrl.h
+lib_slkset.po: curses.h
+lib_slkset.po: ncurses_def.h
+lib_slkset.po: ncurses_dll.h
+lib_slkset.po: term.h
+lib_slkset.po: unctrl.h
+lib_slktouch.So: curses.h
+lib_slktouch.So: ncurses_def.h
+lib_slktouch.So: ncurses_dll.h
+lib_slktouch.So: term.h
+lib_slktouch.So: unctrl.h
+lib_slktouch.o: curses.h
+lib_slktouch.o: ncurses_def.h
+lib_slktouch.o: ncurses_dll.h
+lib_slktouch.o: term.h
+lib_slktouch.o: unctrl.h
+lib_slktouch.po: curses.h
+lib_slktouch.po: ncurses_def.h
+lib_slktouch.po: ncurses_dll.h
+lib_slktouch.po: term.h
+lib_slktouch.po: unctrl.h
+lib_termcap.So: curses.h
+lib_termcap.So: ncurses_def.h
+lib_termcap.So: ncurses_dll.h
+lib_termcap.So: term.h
+lib_termcap.So: termcap.h
+lib_termcap.So: unctrl.h
+lib_termcap.o: curses.h
+lib_termcap.o: ncurses_def.h
+lib_termcap.o: ncurses_dll.h
+lib_termcap.o: term.h
+lib_termcap.o: termcap.h
+lib_termcap.o: unctrl.h
+lib_termcap.po: curses.h
+lib_termcap.po: ncurses_def.h
+lib_termcap.po: ncurses_dll.h
+lib_termcap.po: term.h
+lib_termcap.po: termcap.h
+lib_termcap.po: unctrl.h
+lib_termname.So: curses.h
+lib_termname.So: ncurses_def.h
+lib_termname.So: ncurses_dll.h
+lib_termname.So: term.h
+lib_termname.So: unctrl.h
+lib_termname.o: curses.h
+lib_termname.o: ncurses_def.h
+lib_termname.o: ncurses_dll.h
+lib_termname.o: term.h
+lib_termname.o: unctrl.h
+lib_termname.po: curses.h
+lib_termname.po: ncurses_def.h
+lib_termname.po: ncurses_dll.h
+lib_termname.po: term.h
+lib_termname.po: unctrl.h
+lib_tgoto.So: curses.h
+lib_tgoto.So: ncurses_def.h
+lib_tgoto.So: ncurses_dll.h
+lib_tgoto.So: term.h
+lib_tgoto.So: termcap.h
+lib_tgoto.So: unctrl.h
+lib_tgoto.o: curses.h
+lib_tgoto.o: ncurses_def.h
+lib_tgoto.o: ncurses_dll.h
+lib_tgoto.o: term.h
+lib_tgoto.o: termcap.h
+lib_tgoto.o: unctrl.h
+lib_tgoto.po: curses.h
+lib_tgoto.po: ncurses_def.h
+lib_tgoto.po: ncurses_dll.h
+lib_tgoto.po: term.h
+lib_tgoto.po: termcap.h
+lib_tgoto.po: unctrl.h
+lib_ti.So: curses.h
+lib_ti.So: ncurses_def.h
+lib_ti.So: ncurses_dll.h
+lib_ti.So: term.h
+lib_ti.So: unctrl.h
+lib_ti.o: curses.h
+lib_ti.o: ncurses_def.h
+lib_ti.o: ncurses_dll.h
+lib_ti.o: term.h
+lib_ti.o: unctrl.h
+lib_ti.po: curses.h
+lib_ti.po: ncurses_def.h
+lib_ti.po: ncurses_dll.h
+lib_ti.po: term.h
+lib_ti.po: unctrl.h
+lib_touch.So: curses.h
+lib_touch.So: ncurses_def.h
+lib_touch.So: ncurses_dll.h
+lib_touch.So: term.h
+lib_touch.So: unctrl.h
+lib_touch.o: curses.h
+lib_touch.o: ncurses_def.h
+lib_touch.o: ncurses_dll.h
+lib_touch.o: term.h
+lib_touch.o: unctrl.h
+lib_touch.po: curses.h
+lib_touch.po: ncurses_def.h
+lib_touch.po: ncurses_dll.h
+lib_touch.po: term.h
+lib_touch.po: unctrl.h
+lib_tparm.So: curses.h
+lib_tparm.So: ncurses_def.h
+lib_tparm.So: ncurses_dll.h
+lib_tparm.So: term.h
+lib_tparm.So: unctrl.h
+lib_tparm.o: curses.h
+lib_tparm.o: ncurses_def.h
+lib_tparm.o: ncurses_dll.h
+lib_tparm.o: term.h
+lib_tparm.o: unctrl.h
+lib_tparm.po: curses.h
+lib_tparm.po: ncurses_def.h
+lib_tparm.po: ncurses_dll.h
+lib_tparm.po: term.h
+lib_tparm.po: unctrl.h
+lib_tputs.So: curses.h
+lib_tputs.So: ncurses_def.h
+lib_tputs.So: ncurses_dll.h
+lib_tputs.So: term.h
+lib_tputs.So: termcap.h
+lib_tputs.So: unctrl.h
+lib_tputs.o: curses.h
+lib_tputs.o: ncurses_def.h
+lib_tputs.o: ncurses_dll.h
+lib_tputs.o: term.h
+lib_tputs.o: termcap.h
+lib_tputs.o: unctrl.h
+lib_tputs.po: curses.h
+lib_tputs.po: ncurses_def.h
+lib_tputs.po: ncurses_dll.h
+lib_tputs.po: term.h
+lib_tputs.po: termcap.h
+lib_tputs.po: unctrl.h
+lib_trace.So: curses.h
+lib_trace.So: ncurses_def.h
+lib_trace.So: ncurses_dll.h
+lib_trace.So: term.h
+lib_trace.So: unctrl.h
+lib_trace.o: curses.h
+lib_trace.o: ncurses_def.h
+lib_trace.o: ncurses_dll.h
+lib_trace.o: term.h
+lib_trace.o: unctrl.h
+lib_trace.po: curses.h
+lib_trace.po: ncurses_def.h
+lib_trace.po: ncurses_dll.h
+lib_trace.po: term.h
+lib_trace.po: unctrl.h
+lib_tstp.So: curses.h
+lib_tstp.So: ncurses_def.h
+lib_tstp.So: ncurses_dll.h
+lib_tstp.So: term.h
+lib_tstp.So: unctrl.h
+lib_tstp.o: curses.h
+lib_tstp.o: ncurses_def.h
+lib_tstp.o: ncurses_dll.h
+lib_tstp.o: term.h
+lib_tstp.o: unctrl.h
+lib_tstp.po: curses.h
+lib_tstp.po: ncurses_def.h
+lib_tstp.po: ncurses_dll.h
+lib_tstp.po: term.h
+lib_tstp.po: unctrl.h
+lib_ttyflags.So: curses.h
+lib_ttyflags.So: ncurses_def.h
+lib_ttyflags.So: ncurses_dll.h
+lib_ttyflags.So: term.h
+lib_ttyflags.So: unctrl.h
+lib_ttyflags.o: curses.h
+lib_ttyflags.o: ncurses_def.h
+lib_ttyflags.o: ncurses_dll.h
+lib_ttyflags.o: term.h
+lib_ttyflags.o: unctrl.h
+lib_ttyflags.po: curses.h
+lib_ttyflags.po: ncurses_def.h
+lib_ttyflags.po: ncurses_dll.h
+lib_ttyflags.po: term.h
+lib_ttyflags.po: unctrl.h
+lib_twait.So: curses.h
+lib_twait.So: ncurses_def.h
+lib_twait.So: ncurses_dll.h
+lib_twait.So: term.h
+lib_twait.So: unctrl.h
+lib_twait.o: curses.h
+lib_twait.o: ncurses_def.h
+lib_twait.o: ncurses_dll.h
+lib_twait.o: term.h
+lib_twait.o: unctrl.h
+lib_twait.po: curses.h
+lib_twait.po: ncurses_def.h
+lib_twait.po: ncurses_dll.h
+lib_twait.po: term.h
+lib_twait.po: unctrl.h
+lib_unget_wch.So: curses.h
+lib_unget_wch.So: ncurses_def.h
+lib_unget_wch.So: ncurses_dll.h
+lib_unget_wch.So: term.h
+lib_unget_wch.So: unctrl.h
+lib_unget_wch.o: curses.h
+lib_unget_wch.o: ncurses_def.h
+lib_unget_wch.o: ncurses_dll.h
+lib_unget_wch.o: term.h
+lib_unget_wch.o: unctrl.h
+lib_unget_wch.po: curses.h
+lib_unget_wch.po: ncurses_def.h
+lib_unget_wch.po: ncurses_dll.h
+lib_unget_wch.po: term.h
+lib_unget_wch.po: unctrl.h
+lib_ungetch.So: curses.h
+lib_ungetch.So: ncurses_def.h
+lib_ungetch.So: ncurses_dll.h
+lib_ungetch.So: term.h
+lib_ungetch.So: unctrl.h
+lib_ungetch.o: curses.h
+lib_ungetch.o: ncurses_def.h
+lib_ungetch.o: ncurses_dll.h
+lib_ungetch.o: term.h
+lib_ungetch.o: unctrl.h
+lib_ungetch.po: curses.h
+lib_ungetch.po: ncurses_def.h
+lib_ungetch.po: ncurses_dll.h
+lib_ungetch.po: term.h
+lib_ungetch.po: unctrl.h
+lib_vid_attr.So: curses.h
+lib_vid_attr.So: ncurses_def.h
+lib_vid_attr.So: ncurses_dll.h
+lib_vid_attr.So: term.h
+lib_vid_attr.So: unctrl.h
+lib_vid_attr.o: curses.h
+lib_vid_attr.o: ncurses_def.h
+lib_vid_attr.o: ncurses_dll.h
+lib_vid_attr.o: term.h
+lib_vid_attr.o: unctrl.h
+lib_vid_attr.po: curses.h
+lib_vid_attr.po: ncurses_def.h
+lib_vid_attr.po: ncurses_dll.h
+lib_vid_attr.po: term.h
+lib_vid_attr.po: unctrl.h
+lib_vidattr.So: curses.h
+lib_vidattr.So: ncurses_def.h
+lib_vidattr.So: ncurses_dll.h
+lib_vidattr.So: term.h
+lib_vidattr.So: unctrl.h
+lib_vidattr.o: curses.h
+lib_vidattr.o: ncurses_def.h
+lib_vidattr.o: ncurses_dll.h
+lib_vidattr.o: term.h
+lib_vidattr.o: unctrl.h
+lib_vidattr.po: curses.h
+lib_vidattr.po: ncurses_def.h
+lib_vidattr.po: ncurses_dll.h
+lib_vidattr.po: term.h
+lib_vidattr.po: unctrl.h
+lib_vline.So: curses.h
+lib_vline.So: ncurses_def.h
+lib_vline.So: ncurses_dll.h
+lib_vline.So: term.h
+lib_vline.So: unctrl.h
+lib_vline.o: curses.h
+lib_vline.o: ncurses_def.h
+lib_vline.o: ncurses_dll.h
+lib_vline.o: term.h
+lib_vline.o: unctrl.h
+lib_vline.po: curses.h
+lib_vline.po: ncurses_def.h
+lib_vline.po: ncurses_dll.h
+lib_vline.po: term.h
+lib_vline.po: unctrl.h
+lib_vline_set.So: curses.h
+lib_vline_set.So: ncurses_def.h
+lib_vline_set.So: ncurses_dll.h
+lib_vline_set.So: term.h
+lib_vline_set.So: unctrl.h
+lib_vline_set.o: curses.h
+lib_vline_set.o: ncurses_def.h
+lib_vline_set.o: ncurses_dll.h
+lib_vline_set.o: term.h
+lib_vline_set.o: unctrl.h
+lib_vline_set.po: curses.h
+lib_vline_set.po: ncurses_def.h
+lib_vline_set.po: ncurses_dll.h
+lib_vline_set.po: term.h
+lib_vline_set.po: unctrl.h
+lib_wacs.So: curses.h
+lib_wacs.So: ncurses_def.h
+lib_wacs.So: ncurses_dll.h
+lib_wacs.So: term.h
+lib_wacs.So: unctrl.h
+lib_wacs.o: curses.h
+lib_wacs.o: ncurses_def.h
+lib_wacs.o: ncurses_dll.h
+lib_wacs.o: term.h
+lib_wacs.o: unctrl.h
+lib_wacs.po: curses.h
+lib_wacs.po: ncurses_def.h
+lib_wacs.po: ncurses_dll.h
+lib_wacs.po: term.h
+lib_wacs.po: unctrl.h
+lib_wattroff.So: curses.h
+lib_wattroff.So: ncurses_def.h
+lib_wattroff.So: ncurses_dll.h
+lib_wattroff.So: term.h
+lib_wattroff.So: unctrl.h
+lib_wattroff.o: curses.h
+lib_wattroff.o: ncurses_def.h
+lib_wattroff.o: ncurses_dll.h
+lib_wattroff.o: term.h
+lib_wattroff.o: unctrl.h
+lib_wattroff.po: curses.h
+lib_wattroff.po: ncurses_def.h
+lib_wattroff.po: ncurses_dll.h
+lib_wattroff.po: term.h
+lib_wattroff.po: unctrl.h
+lib_wattron.So: curses.h
+lib_wattron.So: ncurses_def.h
+lib_wattron.So: ncurses_dll.h
+lib_wattron.So: term.h
+lib_wattron.So: unctrl.h
+lib_wattron.o: curses.h
+lib_wattron.o: ncurses_def.h
+lib_wattron.o: ncurses_dll.h
+lib_wattron.o: term.h
+lib_wattron.o: unctrl.h
+lib_wattron.po: curses.h
+lib_wattron.po: ncurses_def.h
+lib_wattron.po: ncurses_dll.h
+lib_wattron.po: term.h
+lib_wattron.po: unctrl.h
+lib_winch.So: curses.h
+lib_winch.So: ncurses_def.h
+lib_winch.So: ncurses_dll.h
+lib_winch.So: term.h
+lib_winch.So: unctrl.h
+lib_winch.o: curses.h
+lib_winch.o: ncurses_def.h
+lib_winch.o: ncurses_dll.h
+lib_winch.o: term.h
+lib_winch.o: unctrl.h
+lib_winch.po: curses.h
+lib_winch.po: ncurses_def.h
+lib_winch.po: ncurses_dll.h
+lib_winch.po: term.h
+lib_winch.po: unctrl.h
+lib_window.So: curses.h
+lib_window.So: ncurses_def.h
+lib_window.So: ncurses_dll.h
+lib_window.So: term.h
+lib_window.So: unctrl.h
+lib_window.o: curses.h
+lib_window.o: ncurses_def.h
+lib_window.o: ncurses_dll.h
+lib_window.o: term.h
+lib_window.o: unctrl.h
+lib_window.po: curses.h
+lib_window.po: ncurses_def.h
+lib_window.po: ncurses_dll.h
+lib_window.po: term.h
+lib_window.po: unctrl.h
+lib_wunctrl.So: curses.h
+lib_wunctrl.So: ncurses_def.h
+lib_wunctrl.So: ncurses_dll.h
+lib_wunctrl.So: term.h
+lib_wunctrl.So: unctrl.h
+lib_wunctrl.o: curses.h
+lib_wunctrl.o: ncurses_def.h
+lib_wunctrl.o: ncurses_dll.h
+lib_wunctrl.o: term.h
+lib_wunctrl.o: unctrl.h
+lib_wunctrl.po: curses.h
+lib_wunctrl.po: ncurses_def.h
+lib_wunctrl.po: ncurses_dll.h
+lib_wunctrl.po: term.h
+lib_wunctrl.po: unctrl.h
+name_match.So: curses.h
+name_match.So: ncurses_def.h
+name_match.So: ncurses_dll.h
+name_match.So: term.h
+name_match.So: unctrl.h
+name_match.o: curses.h
+name_match.o: ncurses_def.h
+name_match.o: ncurses_dll.h
+name_match.o: term.h
+name_match.o: unctrl.h
+name_match.po: curses.h
+name_match.po: ncurses_def.h
+name_match.po: ncurses_dll.h
+name_match.po: term.h
+name_match.po: unctrl.h
+names.So: curses.h
+names.So: names.c
+names.So: ncurses_def.h
+names.So: ncurses_dll.h
+names.So: term.h
+names.So: unctrl.h
+names.o: curses.h
+names.o: names.c
+names.o: ncurses_def.h
+names.o: ncurses_dll.h
+names.o: term.h
+names.o: unctrl.h
+names.po: curses.h
+names.po: names.c
+names.po: ncurses_def.h
+names.po: ncurses_dll.h
+names.po: term.h
+names.po: unctrl.h
+nc_panel.So: curses.h
+nc_panel.So: ncurses_def.h
+nc_panel.So: ncurses_dll.h
+nc_panel.So: term.h
+nc_panel.So: unctrl.h
+nc_panel.o: curses.h
+nc_panel.o: ncurses_def.h
+nc_panel.o: ncurses_dll.h
+nc_panel.o: term.h
+nc_panel.o: unctrl.h
+nc_panel.po: curses.h
+nc_panel.po: ncurses_def.h
+nc_panel.po: ncurses_dll.h
+nc_panel.po: term.h
+nc_panel.po: unctrl.h
+obsolete.So: curses.h
+obsolete.So: ncurses_def.h
+obsolete.So: ncurses_dll.h
+obsolete.So: term.h
+obsolete.So: unctrl.h
+obsolete.o: curses.h
+obsolete.o: ncurses_def.h
+obsolete.o: ncurses_dll.h
+obsolete.o: term.h
+obsolete.o: unctrl.h
+obsolete.po: curses.h
+obsolete.po: ncurses_def.h
+obsolete.po: ncurses_dll.h
+obsolete.po: term.h
+obsolete.po: unctrl.h
+parse_entry.So: curses.h
+parse_entry.So: ncurses_def.h
+parse_entry.So: ncurses_dll.h
+parse_entry.So: parametrized.h
+parse_entry.So: term.h
+parse_entry.So: unctrl.h
+parse_entry.o: curses.h
+parse_entry.o: ncurses_def.h
+parse_entry.o: ncurses_dll.h
+parse_entry.o: parametrized.h
+parse_entry.o: term.h
+parse_entry.o: unctrl.h
+parse_entry.po: curses.h
+parse_entry.po: ncurses_def.h
+parse_entry.po: ncurses_dll.h
+parse_entry.po: parametrized.h
+parse_entry.po: term.h
+parse_entry.po: unctrl.h
+read_entry.So: curses.h
+read_entry.So: ncurses_def.h
+read_entry.So: ncurses_dll.h
+read_entry.So: term.h
+read_entry.So: unctrl.h
+read_entry.o: curses.h
+read_entry.o: ncurses_def.h
+read_entry.o: ncurses_dll.h
+read_entry.o: term.h
+read_entry.o: unctrl.h
+read_entry.po: curses.h
+read_entry.po: ncurses_def.h
+read_entry.po: ncurses_dll.h
+read_entry.po: term.h
+read_entry.po: unctrl.h
+resizeterm.So: curses.h
+resizeterm.So: ncurses_def.h
+resizeterm.So: ncurses_dll.h
+resizeterm.So: term.h
+resizeterm.So: unctrl.h
+resizeterm.o: curses.h
+resizeterm.o: ncurses_def.h
+resizeterm.o: ncurses_dll.h
+resizeterm.o: term.h
+resizeterm.o: unctrl.h
+resizeterm.po: curses.h
+resizeterm.po: ncurses_def.h
+resizeterm.po: ncurses_dll.h
+resizeterm.po: term.h
+resizeterm.po: unctrl.h
+safe_sprintf.So: curses.h
+safe_sprintf.So: ncurses_def.h
+safe_sprintf.So: ncurses_dll.h
+safe_sprintf.So: term.h
+safe_sprintf.So: unctrl.h
+safe_sprintf.o: curses.h
+safe_sprintf.o: ncurses_def.h
+safe_sprintf.o: ncurses_dll.h
+safe_sprintf.o: term.h
+safe_sprintf.o: unctrl.h
+safe_sprintf.po: curses.h
+safe_sprintf.po: ncurses_def.h
+safe_sprintf.po: ncurses_dll.h
+safe_sprintf.po: term.h
+safe_sprintf.po: unctrl.h
+strings.So: curses.h
+strings.So: ncurses_def.h
+strings.So: ncurses_dll.h
+strings.So: term.h
+strings.So: unctrl.h
+strings.o: curses.h
+strings.o: ncurses_def.h
+strings.o: ncurses_dll.h
+strings.o: term.h
+strings.o: unctrl.h
+strings.po: curses.h
+strings.po: ncurses_def.h
+strings.po: ncurses_dll.h
+strings.po: term.h
+strings.po: unctrl.h
+termcap.So: curses.h
+termcap.So: ncurses_def.h
+termcap.So: ncurses_dll.h
+termcap.So: term.h
+termcap.So: unctrl.h
+termcap.o: curses.h
+termcap.o: ncurses_def.h
+termcap.o: ncurses_dll.h
+termcap.o: term.h
+termcap.o: unctrl.h
+termcap.po: curses.h
+termcap.po: ncurses_def.h
+termcap.po: ncurses_dll.h
+termcap.po: term.h
+termcap.po: unctrl.h
+tries.So: curses.h
+tries.So: ncurses_def.h
+tries.So: ncurses_dll.h
+tries.So: term.h
+tries.So: unctrl.h
+tries.o: curses.h
+tries.o: ncurses_def.h
+tries.o: ncurses_dll.h
+tries.o: term.h
+tries.o: unctrl.h
+tries.po: curses.h
+tries.po: ncurses_def.h
+tries.po: ncurses_dll.h
+tries.po: term.h
+tries.po: unctrl.h
+trim_sgr0.So: curses.h
+trim_sgr0.So: ncurses_def.h
+trim_sgr0.So: ncurses_dll.h
+trim_sgr0.So: term.h
+trim_sgr0.So: unctrl.h
+trim_sgr0.o: curses.h
+trim_sgr0.o: ncurses_def.h
+trim_sgr0.o: ncurses_dll.h
+trim_sgr0.o: term.h
+trim_sgr0.o: unctrl.h
+trim_sgr0.po: curses.h
+trim_sgr0.po: ncurses_def.h
+trim_sgr0.po: ncurses_dll.h
+trim_sgr0.po: term.h
+trim_sgr0.po: unctrl.h
+tty_update.So: curses.h
+tty_update.So: ncurses_def.h
+tty_update.So: ncurses_dll.h
+tty_update.So: term.h
+tty_update.So: unctrl.h
+tty_update.o: curses.h
+tty_update.o: ncurses_def.h
+tty_update.o: ncurses_dll.h
+tty_update.o: term.h
+tty_update.o: unctrl.h
+tty_update.po: curses.h
+tty_update.po: ncurses_def.h
+tty_update.po: ncurses_dll.h
+tty_update.po: term.h
+tty_update.po: unctrl.h
+unctrl.So: curses.h
+unctrl.So: ncurses_def.h
+unctrl.So: ncurses_dll.h
+unctrl.So: term.h
+unctrl.So: unctrl.c
+unctrl.So: unctrl.h
+unctrl.o: curses.h
+unctrl.o: ncurses_def.h
+unctrl.o: ncurses_dll.h
+unctrl.o: term.h
+unctrl.o: unctrl.c
+unctrl.o: unctrl.h
+unctrl.po: curses.h
+unctrl.po: ncurses_def.h
+unctrl.po: ncurses_dll.h
+unctrl.po: term.h
+unctrl.po: unctrl.c
+unctrl.po: unctrl.h
+version.So: curses.h
+version.So: ncurses_def.h
+version.So: ncurses_dll.h
+version.So: term.h
+version.So: unctrl.h
+version.o: curses.h
+version.o: ncurses_def.h
+version.o: ncurses_dll.h
+version.o: term.h
+version.o: unctrl.h
+version.po: curses.h
+version.po: ncurses_def.h
+version.po: ncurses_dll.h
+version.po: term.h
+version.po: unctrl.h
+visbuf.So: curses.h
+visbuf.So: ncurses_def.h
+visbuf.So: ncurses_dll.h
+visbuf.So: term.h
+visbuf.So: unctrl.h
+visbuf.o: curses.h
+visbuf.o: ncurses_def.h
+visbuf.o: ncurses_dll.h
+visbuf.o: term.h
+visbuf.o: unctrl.h
+visbuf.po: curses.h
+visbuf.po: ncurses_def.h
+visbuf.po: ncurses_dll.h
+visbuf.po: term.h
+visbuf.po: unctrl.h
+vsscanf.So: curses.h
+vsscanf.So: ncurses_def.h
+vsscanf.So: ncurses_dll.h
+vsscanf.So: term.h
+vsscanf.So: unctrl.h
+vsscanf.o: curses.h
+vsscanf.o: ncurses_def.h
+vsscanf.o: ncurses_dll.h
+vsscanf.o: term.h
+vsscanf.o: unctrl.h
+vsscanf.po: curses.h
+vsscanf.po: ncurses_def.h
+vsscanf.po: ncurses_dll.h
+vsscanf.po: term.h
+vsscanf.po: unctrl.h
+wresize.So: curses.h
+wresize.So: ncurses_def.h
+wresize.So: ncurses_dll.h
+wresize.So: term.h
+wresize.So: unctrl.h
+wresize.o: curses.h
+wresize.o: ncurses_def.h
+wresize.o: ncurses_dll.h
+wresize.o: term.h
+wresize.o: unctrl.h
+wresize.po: curses.h
+wresize.po: ncurses_def.h
+wresize.po: ncurses_dll.h
+wresize.po: term.h
+wresize.po: unctrl.h
+write_entry.So: curses.h
+write_entry.So: ncurses_def.h
+write_entry.So: ncurses_dll.h
+write_entry.So: term.h
+write_entry.So: unctrl.h
+write_entry.o: curses.h
+write_entry.o: ncurses_def.h
+write_entry.o: ncurses_dll.h
+write_entry.o: term.h
+write_entry.o: unctrl.h
+write_entry.po: curses.h
+write_entry.po: ncurses_def.h
+write_entry.po: ncurses_dll.h
+write_entry.po: term.h
+write_entry.po: unctrl.h
+.endif
diff --git a/lib/ncurses/panel/Makefile.depend b/lib/ncurses/panel/Makefile.depend
new file mode 100644
index 0000000..fa0a8e0
--- /dev/null
+++ b/lib/ncurses/panel/Makefile.depend
@@ -0,0 +1,66 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+p_above.So: ncurses_def.h
+p_above.o: ncurses_def.h
+p_above.po: ncurses_def.h
+p_below.So: ncurses_def.h
+p_below.o: ncurses_def.h
+p_below.po: ncurses_def.h
+p_bottom.So: ncurses_def.h
+p_bottom.o: ncurses_def.h
+p_bottom.po: ncurses_def.h
+p_delete.So: ncurses_def.h
+p_delete.o: ncurses_def.h
+p_delete.po: ncurses_def.h
+p_hidden.So: ncurses_def.h
+p_hidden.o: ncurses_def.h
+p_hidden.po: ncurses_def.h
+p_hide.So: ncurses_def.h
+p_hide.o: ncurses_def.h
+p_hide.po: ncurses_def.h
+p_move.So: ncurses_def.h
+p_move.o: ncurses_def.h
+p_move.po: ncurses_def.h
+p_new.So: ncurses_def.h
+p_new.o: ncurses_def.h
+p_new.po: ncurses_def.h
+p_replace.So: ncurses_def.h
+p_replace.o: ncurses_def.h
+p_replace.po: ncurses_def.h
+p_show.So: ncurses_def.h
+p_show.o: ncurses_def.h
+p_show.po: ncurses_def.h
+p_top.So: ncurses_def.h
+p_top.o: ncurses_def.h
+p_top.po: ncurses_def.h
+p_update.So: ncurses_def.h
+p_update.o: ncurses_def.h
+p_update.po: ncurses_def.h
+p_user.So: ncurses_def.h
+p_user.o: ncurses_def.h
+p_user.po: ncurses_def.h
+p_win.So: ncurses_def.h
+p_win.o: ncurses_def.h
+p_win.po: ncurses_def.h
+panel.So: ncurses_def.h
+panel.o: ncurses_def.h
+panel.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/panelw/Makefile.depend b/lib/ncurses/panelw/Makefile.depend
new file mode 100644
index 0000000..0db3540
--- /dev/null
+++ b/lib/ncurses/panelw/Makefile.depend
@@ -0,0 +1,65 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+p_above.So: ncurses_def.h
+p_above.o: ncurses_def.h
+p_above.po: ncurses_def.h
+p_below.So: ncurses_def.h
+p_below.o: ncurses_def.h
+p_below.po: ncurses_def.h
+p_bottom.So: ncurses_def.h
+p_bottom.o: ncurses_def.h
+p_bottom.po: ncurses_def.h
+p_delete.So: ncurses_def.h
+p_delete.o: ncurses_def.h
+p_delete.po: ncurses_def.h
+p_hidden.So: ncurses_def.h
+p_hidden.o: ncurses_def.h
+p_hidden.po: ncurses_def.h
+p_hide.So: ncurses_def.h
+p_hide.o: ncurses_def.h
+p_hide.po: ncurses_def.h
+p_move.So: ncurses_def.h
+p_move.o: ncurses_def.h
+p_move.po: ncurses_def.h
+p_new.So: ncurses_def.h
+p_new.o: ncurses_def.h
+p_new.po: ncurses_def.h
+p_replace.So: ncurses_def.h
+p_replace.o: ncurses_def.h
+p_replace.po: ncurses_def.h
+p_show.So: ncurses_def.h
+p_show.o: ncurses_def.h
+p_show.po: ncurses_def.h
+p_top.So: ncurses_def.h
+p_top.o: ncurses_def.h
+p_top.po: ncurses_def.h
+p_update.So: ncurses_def.h
+p_update.o: ncurses_def.h
+p_update.po: ncurses_def.h
+p_user.So: ncurses_def.h
+p_user.o: ncurses_def.h
+p_user.po: ncurses_def.h
+p_win.So: ncurses_def.h
+p_win.o: ncurses_def.h
+p_win.po: ncurses_def.h
+panel.So: ncurses_def.h
+panel.o: ncurses_def.h
+panel.po: ncurses_def.h
+.endif
diff --git a/libexec/atf/atf-check/Makefile.depend b/libexec/atf/atf-check/Makefile.depend
new file mode 100644
index 0000000..494810e
--- /dev/null
+++ b/libexec/atf/atf-check/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/atf/atf-sh/Makefile.depend b/libexec/atf/atf-sh/Makefile.depend
new file mode 100644
index 0000000..494810e
--- /dev/null
+++ b/libexec/atf/atf-sh/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/atrun/Makefile.depend b/libexec/atrun/Makefile.depend
new file mode 100644
index 0000000..8f9750f
--- /dev/null
+++ b/libexec/atrun/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/Makefile.depend b/libexec/bootpd/Makefile.depend
new file mode 100644
index 0000000..74de0b1
--- /dev/null
+++ b/libexec/bootpd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/bootpgw/Makefile.depend b/libexec/bootpd/bootpgw/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/libexec/bootpd/bootpgw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/tools/bootpef/Makefile.depend b/libexec/bootpd/tools/bootpef/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/libexec/bootpd/tools/bootpef/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/tools/bootptest/Makefile.depend b/libexec/bootpd/tools/bootptest/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/libexec/bootpd/tools/bootptest/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/comsat/Makefile.depend b/libexec/comsat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/libexec/comsat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/fingerd/Makefile.depend b/libexec/fingerd/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/libexec/fingerd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ftpd/Makefile b/libexec/ftpd/Makefile
index da41967..5089a12 100644
--- a/libexec/ftpd/Makefile
+++ b/libexec/ftpd/Makefile
@@ -13,7 +13,7 @@ YFLAGS=
WARNS?= 2
WFORMAT=0
-LIBADD= util crypt
+LIBADD= util crypt xo
# XXX Kluge! Conversation mechanism needs to be fixed.
LIBADD+= opie md
diff --git a/libexec/ftpd/Makefile.depend b/libexec/ftpd/Makefile.depend
new file mode 100644
index 0000000..0c70593
--- /dev/null
+++ b/libexec/ftpd/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libmd \
+ lib/libopie \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libxo \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ftpcmd.o: ftpcmd.c
+ftpcmd.po: ftpcmd.c
+.endif
diff --git a/libexec/getty/Makefile.depend b/libexec/getty/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/libexec/getty/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/mail.local/Makefile.depend b/libexec/mail.local/Makefile.depend
new file mode 100644
index 0000000..59b2994
--- /dev/null
+++ b/libexec/mail.local/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mail.local.o: sm_os.h
+mail.local.po: sm_os.h
+.endif
diff --git a/libexec/mknetid/Makefile.depend b/libexec/mknetid/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/libexec/mknetid/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/pppoed/Makefile.depend b/libexec/pppoed/Makefile.depend
new file mode 100644
index 0000000..4fa00ad
--- /dev/null
+++ b/libexec/pppoed/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rbootd/Makefile.depend b/libexec/rbootd/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/libexec/rbootd/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/revnetgroup/Makefile.depend b/libexec/revnetgroup/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/libexec/revnetgroup/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rlogind/Makefile.depend b/libexec/rlogind/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/libexec/rlogind/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rquotad/Makefile.depend b/libexec/rpc.rquotad/Makefile.depend
new file mode 100644
index 0000000..b3a9fa6
--- /dev/null
+++ b/libexec/rpc.rquotad/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rstatd/Makefile.depend b/libexec/rpc.rstatd/Makefile.depend
new file mode 100644
index 0000000..bbb48e4
--- /dev/null
+++ b/libexec/rpc.rstatd/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rusersd/Makefile.depend b/libexec/rpc.rusersd/Makefile.depend
new file mode 100644
index 0000000..c8383bd
--- /dev/null
+++ b/libexec/rpc.rusersd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rwalld/Makefile.depend b/libexec/rpc.rwalld/Makefile.depend
new file mode 100644
index 0000000..0a49c9e
--- /dev/null
+++ b/libexec/rpc.rwalld/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.sprayd/Makefile.depend b/libexec/rpc.sprayd/Makefile.depend
new file mode 100644
index 0000000..c8383bd
--- /dev/null
+++ b/libexec/rpc.sprayd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rshd/Makefile.depend b/libexec/rshd/Makefile.depend
new file mode 100644
index 0000000..7ce0fb7
--- /dev/null
+++ b/libexec/rshd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rtld-elf/Makefile.depend b/libexec/rtld-elf/Makefile.depend
new file mode 100644
index 0000000..2eb281b
--- /dev/null
+++ b/libexec/rtld-elf/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/save-entropy/Makefile b/libexec/save-entropy/Makefile
index 3e27c48..400bb9e 100644
--- a/libexec/save-entropy/Makefile
+++ b/libexec/save-entropy/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
SCRIPTS= save-entropy.sh
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/libexec/save-entropy/Makefile.depend b/libexec/save-entropy/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/libexec/save-entropy/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/smrsh/Makefile.depend b/libexec/smrsh/Makefile.depend
new file mode 100644
index 0000000..0d59811
--- /dev/null
+++ b/libexec/smrsh/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+smrsh.o: sm_os.h
+smrsh.po: sm_os.h
+.endif
diff --git a/libexec/talkd/Makefile.depend b/libexec/talkd/Makefile.depend
new file mode 100644
index 0000000..e77ca8d
--- /dev/null
+++ b/libexec/talkd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tcpd/Makefile.depend b/libexec/tcpd/Makefile.depend
new file mode 100644
index 0000000..b320bb5
--- /dev/null
+++ b/libexec/tcpd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/telnetd/Makefile.depend b/libexec/telnetd/Makefile.depend
new file mode 100644
index 0000000..0417d53
--- /dev/null
+++ b/libexec/telnetd/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libmp \
+ lib/libpam/libpam \
+ lib/libtelnet \
+ lib/libthr \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tftp-proxy/Makefile.depend b/libexec/tftp-proxy/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/libexec/tftp-proxy/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tftpd/Makefile.depend b/libexec/tftpd/Makefile.depend
new file mode 100644
index 0000000..e314de5
--- /dev/null
+++ b/libexec/tftpd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ulog-helper/Makefile.depend b/libexec/ulog-helper/Makefile.depend
new file mode 100644
index 0000000..4809f9b
--- /dev/null
+++ b/libexec/ulog-helper/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libulog \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ypxfr/Makefile.depend b/libexec/ypxfr/Makefile.depend
new file mode 100644
index 0000000..6a84a3f
--- /dev/null
+++ b/libexec/ypxfr/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+ypxfr_clnt.o: yp.h
+ypxfr_clnt.o: ypxfr_clnt.c
+ypxfr_clnt.po: yp.h
+ypxfr_clnt.po: ypxfr_clnt.c
+.endif
diff --git a/release/Makefile.azure b/release/Makefile.azure
new file mode 100644
index 0000000..01e2204
--- /dev/null
+++ b/release/Makefile.azure
@@ -0,0 +1,53 @@
+#
+# $FreeBSD$
+#
+#
+# Makefile for uploading Microsoft Azure disk images.
+#
+
+AZURE_IMG?= ${.OBJDIR}/azure.vhdf
+AZURE_UPLOAD_TGTS= azure-check-depends \
+ azure-do-upload
+CLEANFILES+= ${AZURE_UPLOAD_TGTS}
+
+.if defined(AZURE_UPLOAD_CONF) && !empty(AZURE_UPLOAD_CONF)
+. for VAR in _STORAGE _ACCOUNT _KEY
+AZURE${VAR}!= grep -E ^AZURE${VAR} ${AZURE_UPLOAD_CONF} | awk -F' ' '{print $$2}'
+. endfor
+.endif
+
+.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
+SNAPSHOT_DATE!= date +-%Y-%m-%d
+.endif
+
+AZURE_TARGET:= ${OSRELEASE}${SNAPSHOT_DATE}.vhd
+
+azure-upload: ${AZURE_UPLOAD_TGTS}
+
+azure-check-depends:
+.for VAR in _STORAGE _ACCOUNT _KEY
+. if !defined(AZURE${VAR}) || empty(AZURE${VAR})
+ @echo "Variable AZURE${VAR} cannot be empty."
+ @false
+. endif
+.endfor
+.if !exists(/usr/local/bin/azure)
+. if !exists(/usr/local/bin/npm)
+. if !exists(${PORTSDIR}/www/npm/Makefile)
+. if !exists(/usr/local/sbin/pkg-static)
+ env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
+. endif
+ env ASSUME_ALWAYS_YES=yes pkg install -y www/npm
+. else
+ make -C ${PORTSDIR}/www/npm BATCH=1 all install clean
+. endif
+. endif
+ npm install -g azure-cli
+.endif
+
+azure-do-upload:
+ /usr/local/bin/azure storage blob upload \
+ ${AZURE_IMG} ${AZURE_STORAGE} ${AZURE_TARGET} \
+ -t page -a ${AZURE_ACCOUNT} -k "${AZURE_KEY}"
+ touch ${.OBJDIR}/${.TARGET}
+
diff --git a/release/Makefile.vm b/release/Makefile.vm
index 6599702..ae7c3aa 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -154,3 +154,4 @@ cloudware-install:
.endif
.include "${.CURDIR}/Makefile.ec2"
+.include "${.CURDIR}/Makefile.azure"
diff --git a/release/arm/WANDBOARD.conf b/release/arm/WANDBOARD.conf
index 211844c..4033d09 100644
--- a/release/arm/WANDBOARD.conf
+++ b/release/arm/WANDBOARD.conf
@@ -28,9 +28,6 @@ arm_install_uboot() {
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
chroot ${CHROOTDIR} cp -p ${UFSMOUNT}/boot/ubldr ${FATMOUNT}/ubldr
- chroot ${CHROOTDIR} /bin/sh -c 'echo \
- setenv fdt_file wandboard-quad.dtb\; fatload mmc 0:1 11000000 ubldr\; bootelf 11000000\; \
- > ${FATMOUNT}/boot.txt'
chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
sync
umount_loop ${CHROOTDIR}/${FATMOUNT}
diff --git a/release/tools/azure.conf b/release/tools/azure.conf
index 922f8d9..4267f97 100644
--- a/release/tools/azure.conf
+++ b/release/tools/azure.conf
@@ -14,8 +14,8 @@ export VM_EXTRA_PACKAGES="sysutils/azure-agent"
export VM_RC_LIST=
vm_extra_pre_umount() {
- chroot ${DESTDIR} /usr/sbin/waagent -verbose -install
- yes | chroot ${DESTDIR} /usr/sbin/waagent -deprovision
+ chroot ${DESTDIR} /usr/local/sbin/waagent -verbose -install
+ yes | chroot ${DESTDIR} /usr/local/sbin/waagent -deprovision
echo 'sshd_enable="YES"' >> ${DESTDIR}/etc/rc.conf
echo 'ifconfig_hn0="SYNCDHCP"' >> ${DESTDIR}/etc/rc.conf
echo 'waagent_enable="YES"' >> ${DESTDIR}/etc/rc.conf
diff --git a/rescue/librescue/Makefile.depend b/rescue/librescue/Makefile.depend
new file mode 100644
index 0000000..479669f
--- /dev/null
+++ b/rescue/librescue/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/adjkerntz/Makefile.depend b/sbin/adjkerntz/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/adjkerntz/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/atm/atmconfig/Makefile.depend b/sbin/atm/atmconfig/Makefile.depend
new file mode 100644
index 0000000..c790621
--- /dev/null
+++ b/sbin/atm/atmconfig/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atmconfig_device.o: oid.h
+atmconfig_device.po: oid.h
+.endif
diff --git a/sbin/badsect/Makefile.depend b/sbin/badsect/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/sbin/badsect/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/bsdlabel/Makefile.depend b/sbin/bsdlabel/Makefile.depend
new file mode 100644
index 0000000..851372c
--- /dev/null
+++ b/sbin/bsdlabel/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/camcontrol/Makefile b/sbin/camcontrol/Makefile
index f23ef52..cbc5452 100644
--- a/sbin/camcontrol/Makefile
+++ b/sbin/camcontrol/Makefile
@@ -3,7 +3,7 @@
PROG= camcontrol
SRCS= camcontrol.c util.c
.if !defined(RELEASE_CRUNCH)
-SRCS+= fwdownload.c modeedit.c persist.c progress.c
+SRCS+= attrib.c fwdownload.c modeedit.c persist.c progress.c
.else
CFLAGS+= -DMINIMALISTIC
.endif
diff --git a/sbin/camcontrol/Makefile.depend b/sbin/camcontrol/Makefile.depend
new file mode 100644
index 0000000..48a48dd
--- /dev/null
+++ b/sbin/camcontrol/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/camcontrol/attrib.c b/sbin/camcontrol/attrib.c
new file mode 100644
index 0000000..62d4b1e
--- /dev/null
+++ b/sbin/camcontrol/attrib.c
@@ -0,0 +1,509 @@
+/*-
+ * Copyright (c) 2014 Spectra Logic Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ *
+ * Authors: Ken Merry (Spectra Logic Corporation)
+ */
+/*
+ * SCSI Read and Write Attribute support for camcontrol(8).
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/ioctl.h>
+#include <sys/stdint.h>
+#include <sys/types.h>
+#include <sys/endian.h>
+#include <sys/sbuf.h>
+#include <sys/queue.h>
+#include <sys/chio.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <inttypes.h>
+#include <unistd.h>
+#include <string.h>
+#include <strings.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <limits.h>
+#include <err.h>
+#include <locale.h>
+
+#include <cam/cam.h>
+#include <cam/cam_debug.h>
+#include <cam/cam_ccb.h>
+#include <cam/scsi/scsi_all.h>
+#include <cam/scsi/scsi_pass.h>
+#include <cam/scsi/scsi_ch.h>
+#include <cam/scsi/scsi_message.h>
+#include <camlib.h>
+#include "camcontrol.h"
+
+#if 0
+struct scsi_attr_desc {
+ int attr_id;
+
+ STAILQ_ENTRY(scsi_attr_desc) links;
+};
+#endif
+
+static struct scsi_nv elem_type_map[] = {
+ { "all", ELEMENT_TYPE_ALL },
+ { "picker", ELEMENT_TYPE_MT },
+ { "slot", ELEMENT_TYPE_ST },
+ { "portal", ELEMENT_TYPE_IE },
+ { "drive", ELEMENT_TYPE_DT },
+};
+
+static struct scsi_nv sa_map[] = {
+ { "attr_values", SRA_SA_ATTR_VALUES },
+ { "attr_list", SRA_SA_ATTR_LIST },
+ { "lv_list", SRA_SA_LOG_VOL_LIST },
+ { "part_list", SRA_SA_PART_LIST },
+ { "supp_attr", SRA_SA_SUPPORTED_ATTRS }
+};
+
+static struct scsi_nv output_format_map[] = {
+ { "text_esc", SCSI_ATTR_OUTPUT_TEXT_ESC },
+ { "text_raw", SCSI_ATTR_OUTPUT_TEXT_RAW },
+ { "nonascii_esc", SCSI_ATTR_OUTPUT_NONASCII_ESC },
+ { "nonascii_trim", SCSI_ATTR_OUTPUT_NONASCII_TRIM },
+ { "nonascii_raw", SCSI_ATTR_OUTPUT_NONASCII_RAW },
+ { "field_all", SCSI_ATTR_OUTPUT_FIELD_ALL },
+ { "field_none", SCSI_ATTR_OUTPUT_FIELD_NONE },
+ { "field_desc", SCSI_ATTR_OUTPUT_FIELD_DESC },
+ { "field_num", SCSI_ATTR_OUTPUT_FIELD_NUM },
+ { "field_size", SCSI_ATTR_OUTPUT_FIELD_SIZE },
+ { "field_rw", SCSI_ATTR_OUTPUT_FIELD_RW },
+};
+
+int
+scsiattrib(struct cam_device *device, int argc, char **argv, char *combinedopt,
+ int retry_count, int timeout, int verbosemode, int err_recover)
+{
+ union ccb *ccb = NULL;
+ int attr_num = -1;
+#if 0
+ int num_attrs = 0;
+#endif
+ int start_attr = 0;
+ int cached_attr = 0;
+ int read_service_action = -1;
+ int read_attr = 0, write_attr = 0;
+ int element_address = 0;
+ int element_type = ELEMENT_TYPE_ALL;
+ int partition = 0;
+ int logical_volume = 0;
+ char *endptr;
+ uint8_t *data_buf = NULL;
+ uint32_t dxfer_len = UINT16_MAX - 1;
+ uint32_t valid_len;
+ uint32_t output_format;
+ STAILQ_HEAD(, scsi_attr_desc) write_attr_list;
+ int error = 0;
+ int c;
+
+ ccb = cam_getccb(device);
+ if (ccb == NULL) {
+ warnx("%s: error allocating CCB", __func__);
+ error = 1;
+ goto bailout;
+ }
+
+ bzero(&(&ccb->ccb_h)[1],
+ sizeof(union ccb) - sizeof(struct ccb_hdr));
+
+ STAILQ_INIT(&write_attr_list);
+
+ /*
+ * By default, when displaying attribute values, we trim out
+ * non-ASCII characters in ASCII fields. We display all fields
+ * (description, attribute number, attribute size, and readonly
+ * status). We default to displaying raw text.
+ *
+ * XXX KDM need to port this to stable/10 and newer FreeBSD
+ * versions that have iconv built in and can convert codesets.
+ */
+ output_format = SCSI_ATTR_OUTPUT_NONASCII_TRIM |
+ SCSI_ATTR_OUTPUT_FIELD_ALL |
+ SCSI_ATTR_OUTPUT_TEXT_RAW;
+
+ data_buf = malloc(dxfer_len);
+ if (data_buf == NULL) {
+ warn("%s: error allocating %u bytes", __func__, dxfer_len);
+ error = 1;
+ goto bailout;
+ }
+
+ while ((c = getopt(argc, argv, combinedopt)) != -1) {
+ switch (c) {
+ case 'a':
+ attr_num = strtol(optarg, &endptr, 0);
+ if (*endptr != '\0') {
+ warnx("%s: invalid attribute number %s",
+ __func__, optarg);
+ error = 1;
+ goto bailout;
+ }
+ start_attr = attr_num;
+ break;
+ case 'c':
+ cached_attr = 1;
+ break;
+ case 'e':
+ element_address = strtol(optarg, &endptr, 0);
+ if (*endptr != '\0') {
+ warnx("%s: invalid element address %s",
+ __func__, optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ case 'F': {
+ scsi_nv_status status;
+ scsi_attrib_output_flags new_outflags;
+ int entry_num = 0;
+ char *tmpstr;
+
+ if (isdigit(optarg[0])) {
+ output_format = strtoul(optarg, &endptr, 0);
+ if (*endptr != '\0') {
+ warnx("%s: invalid numeric output "
+ "format argument %s", __func__,
+ optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ }
+ new_outflags = SCSI_ATTR_OUTPUT_NONE;
+
+ while ((tmpstr = strsep(&optarg, ",")) != NULL) {
+ status = scsi_get_nv(output_format_map,
+ sizeof(output_format_map) /
+ sizeof(output_format_map[0]), tmpstr,
+ &entry_num, SCSI_NV_FLAG_IG_CASE);
+
+ if (status == SCSI_NV_FOUND)
+ new_outflags |=
+ output_format_map[entry_num].value;
+ else {
+ warnx("%s: %s format option %s",
+ __func__,
+ (status == SCSI_NV_AMBIGUOUS) ?
+ "ambiguous" : "invalid", tmpstr);
+ error = 1;
+ goto bailout;
+ }
+ }
+ output_format = new_outflags;
+ break;
+ }
+ case 'p':
+ partition = strtol(optarg, &endptr, 0);
+ if (*endptr != '\0') {
+ warnx("%s: invalid partition number %s",
+ __func__, optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ case 'r': {
+ scsi_nv_status status;
+ int entry_num = 0;
+
+ status = scsi_get_nv(sa_map, sizeof(sa_map) /
+ sizeof(sa_map[0]), optarg, &entry_num,
+ SCSI_NV_FLAG_IG_CASE);
+ if (status == SCSI_NV_FOUND)
+ read_service_action = sa_map[entry_num].value;
+ else {
+ warnx("%s: %s %s option %s", __func__,
+ (status == SCSI_NV_AMBIGUOUS) ?
+ "ambiguous" : "invalid", "service action",
+ optarg);
+ error = 1;
+ goto bailout;
+ }
+ read_attr = 1;
+ break;
+ }
+ case 's':
+ start_attr = strtol(optarg, &endptr, 0);
+ if (*endptr != '\0') {
+ warnx("%s: invalid starting attr argument %s",
+ __func__, optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ case 'T': {
+ scsi_nv_status status;
+ int entry_num = 0;
+
+ status = scsi_get_nv(elem_type_map,
+ sizeof(elem_type_map) / sizeof(elem_type_map[0]),
+ optarg, &entry_num, SCSI_NV_FLAG_IG_CASE);
+ if (status == SCSI_NV_FOUND)
+ element_type = elem_type_map[entry_num].value;
+ else {
+ warnx("%s: %s %s option %s", __func__,
+ (status == SCSI_NV_AMBIGUOUS) ?
+ "ambiguous" : "invalid", "element type",
+ optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ }
+ case 'w':
+ warnx("%s: writing attributes is not implemented yet",
+ __func__);
+ error = 1;
+ goto bailout;
+ break;
+ case 'V':
+ logical_volume = strtol(optarg, &endptr, 0);
+
+ if (*endptr != '\0') {
+ warnx("%s: invalid logical volume argument %s",
+ __func__, optarg);
+ error = 1;
+ goto bailout;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ /*
+ * Default to reading attributes
+ */
+ if (((read_attr == 0) && (write_attr == 0))
+ || ((read_attr != 0) && (write_attr != 0))) {
+ warnx("%s: Must specify either -r or -w", __func__);
+ error = 1;
+ goto bailout;
+ }
+
+ if (read_attr != 0) {
+ scsi_read_attribute(&ccb->csio,
+ /*retries*/ retry_count,
+ /*cbfcnp*/ NULL,
+ /*tag_action*/ MSG_SIMPLE_Q_TAG,
+ /*service_action*/ read_service_action,
+ /*element*/ element_address,
+ /*elem_type*/ element_type,
+ /*logical_volume*/ logical_volume,
+ /*partition*/ partition,
+ /*first_attribute*/ start_attr,
+ /*cache*/ cached_attr,
+ /*data_ptr*/ data_buf,
+ /*length*/ dxfer_len,
+ /*sense_len*/ SSD_FULL_SIZE,
+ /*timeout*/ timeout ? timeout : 60000);
+#if 0
+ } else {
+#endif
+
+ }
+
+ ccb->ccb_h.flags |= CAM_DEV_QFRZDIS;
+
+ if (err_recover != 0)
+ ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
+
+ if (cam_send_ccb(device, ccb) < 0) {
+ warn("error sending %s ATTRIBUTE", (read_attr != 0) ?
+ "READ" : "WRITE");
+
+ if (verbosemode != 0) {
+ cam_error_print(device, ccb, CAM_ESF_ALL,
+ CAM_EPF_ALL, stderr);
+ }
+
+ error = 1;
+ goto bailout;
+ }
+
+ if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
+ if (verbosemode != 0) {
+ cam_error_print(device, ccb, CAM_ESF_ALL,
+ CAM_EPF_ALL, stderr);
+ }
+ error = 1;
+ goto bailout;
+ }
+
+ if (read_attr == 0)
+ goto bailout;
+
+ valid_len = dxfer_len - ccb->csio.resid;
+
+ switch (read_service_action) {
+ case SRA_SA_ATTR_VALUES: {
+ uint32_t len_left, hdr_len, cur_len;
+ struct scsi_read_attribute_values *hdr;
+ struct scsi_mam_attribute_header *cur_id;
+ char error_str[512];
+ uint8_t *cur_pos;
+ struct sbuf *sb;
+
+ hdr = (struct scsi_read_attribute_values *)data_buf;
+
+ if (valid_len < sizeof(*hdr)) {
+ fprintf(stdout, "No attributes returned.\n");
+ error = 0;
+ goto bailout;
+ }
+
+ sb = sbuf_new_auto();
+ if (sb == NULL) {
+ warn("%s: Unable to allocate sbuf", __func__);
+ error = 1;
+ goto bailout;
+ }
+ /*
+ * XXX KDM grab more data if it is available.
+ */
+ hdr_len = scsi_4btoul(hdr->length);
+
+ for (len_left = MIN(valid_len, hdr_len),
+ cur_pos = &hdr->attribute_0[0]; len_left > sizeof(*cur_id);
+ len_left -= cur_len, cur_pos += cur_len) {
+ int cur_attr_num;
+ cur_id = (struct scsi_mam_attribute_header *)cur_pos;
+ cur_len = scsi_2btoul(cur_id->length) + sizeof(*cur_id);
+ cur_attr_num = scsi_2btoul(cur_id->id);
+
+ if ((attr_num != -1)
+ && (cur_attr_num != attr_num))
+ continue;
+
+ error = scsi_attrib_sbuf(sb, cur_id, len_left,
+ /*user_table*/ NULL, /*num_user_entries*/ 0,
+ /*prefer_user_table*/ 0, output_format, error_str,
+ sizeof(error_str));
+ if (error != 0) {
+ warnx("%s: %s", __func__, error_str);
+ sbuf_delete(sb);
+ error = 1;
+ goto bailout;
+ }
+ if (attr_num != -1)
+ break;
+ }
+
+ sbuf_finish(sb);
+ fprintf(stdout, "%s", sbuf_data(sb));
+ sbuf_delete(sb);
+ break;
+ }
+ case SRA_SA_SUPPORTED_ATTRS:
+ case SRA_SA_ATTR_LIST: {
+ uint32_t len_left, hdr_len;
+ struct scsi_attrib_list_header *hdr;
+ struct scsi_attrib_table_entry *entry = NULL;
+ const char *sa_name = "Supported Attributes";
+ const char *at_name = "Available Attributes";
+ int attr_id;
+ uint8_t *cur_id;
+
+ hdr = (struct scsi_attrib_list_header *)data_buf;
+ if (valid_len < sizeof(*hdr)) {
+ fprintf(stdout, "No %s\n",
+ (read_service_action == SRA_SA_SUPPORTED_ATTRS)?
+ sa_name : at_name);
+ error = 0;
+ goto bailout;
+ }
+ fprintf(stdout, "%s:\n",
+ (read_service_action == SRA_SA_SUPPORTED_ATTRS) ?
+ sa_name : at_name);
+ hdr_len = scsi_4btoul(hdr->length);
+ for (len_left = MIN(valid_len, hdr_len),
+ cur_id = &hdr->first_attr_0[0]; len_left > 1;
+ len_left -= sizeof(uint16_t), cur_id += sizeof(uint16_t)) {
+ attr_id = scsi_2btoul(cur_id);
+
+ if ((attr_num != -1)
+ && (attr_id != attr_num))
+ continue;
+
+ entry = scsi_get_attrib_entry(attr_id);
+ fprintf(stdout, "0x%.4x", attr_id);
+ if (entry == NULL)
+ fprintf(stdout, "\n");
+ else
+ fprintf(stdout, ": %s\n", entry->desc);
+
+ if (attr_num != -1)
+ break;
+ }
+ break;
+ }
+ case SRA_SA_PART_LIST:
+ case SRA_SA_LOG_VOL_LIST: {
+ struct scsi_attrib_lv_list *lv_list;
+ const char *partition_name = "Partition";
+ const char *lv_name = "Logical Volume";
+
+ if (valid_len < sizeof(*lv_list)) {
+ fprintf(stdout, "No %s list returned\n",
+ (read_service_action == SRA_SA_PART_LIST) ?
+ partition_name : lv_name);
+ error = 0;
+ goto bailout;
+ }
+
+ lv_list = (struct scsi_attrib_lv_list *)data_buf;
+
+ fprintf(stdout, "First %s: %d\n",
+ (read_service_action == SRA_SA_PART_LIST) ?
+ partition_name : lv_name,
+ lv_list->first_lv_number);
+ fprintf(stdout, "Number of %ss: %d\n",
+ (read_service_action == SRA_SA_PART_LIST) ?
+ partition_name : lv_name,
+ lv_list->num_logical_volumes);
+ break;
+ }
+ default:
+ break;
+ }
+bailout:
+ if (ccb != NULL)
+ cam_freeccb(ccb);
+
+ free(data_buf);
+
+ return (error);
+}
diff --git a/sbin/camcontrol/camcontrol.8 b/sbin/camcontrol/camcontrol.8
index 15e1862..b9bb248 100644
--- a/sbin/camcontrol/camcontrol.8
+++ b/sbin/camcontrol/camcontrol.8
@@ -298,6 +298,19 @@
.Op Fl T Ar res_type
.Op Fl U
.Nm
+.Ic attrib
+.Op device id
+.Op generic args
+.Aq Fl r Ar action | Fl w Ar attrib
+.Op Fl a Ar attr_num
+.Op Fl c
+.Op Fl e Ar elem_addr
+.Op Fl F Ar form1,form2
+.Op Fl p Ar part
+.Op Fl s Ar start_addr
+.Op Fl T Ar elem_type
+.Op Fl V Ar lv_num
+.Nm
.Ic help
.Sh DESCRIPTION
The
@@ -1822,6 +1835,129 @@ Register and Move request.
This option only applies to the Register and Move service action of the
Persistent Reserve Out command.
.El
+.It Ic attrib
+Issue the
+.Tn SCSI
+READ or WRITE ATTRIBUTE commands.
+These commands are used to read and write attributes in Medium Auxiliary
+Memory (MAM).
+The most common place Medium Auxiliary Memory is found is small flash chips
+included tape cartriges.
+For instance,
+.Tn LTO
+tapes have MAM.
+Either the
+.Fl r
+option or the
+.Fl w
+option must be specified.
+.Bl -tag -width 14n
+.It Fl r Ar action
+Specify the READ ATTRIBUTE service action.
+.Bl -tag -width 11n
+.It attr_values
+Issue the ATTRIBUTE VALUES service action.
+Read and decode the available attributes and their values.
+.It attr_list
+Issue the ATTRIBUTE LIST service action.
+List the attributes that are available to read and write.
+.It lv_list
+Issue the LOGICAL VOLUME LIST service action.
+List the available logical volumes in the MAM.
+.It part_list
+Issue the PARTITION LIST service action.
+List the available partitions in the MAM.
+.It supp_attr
+Issue the SUPPORTED ATTRIBUTES service action.
+List attributes that are supported for reading or writing.
+These attributes may or may not be currently present in the MAM.
+.El
+.It Fl w Ar attr
+Specify an attribute to write to the MAM.
+This option is not yet implemented.
+.It Fl a Ar num
+Specify the attribute number to display.
+This option only works with the attr_values, attr_list and supp_attr
+arguments to
+.Fl r .
+.It Fl c
+Display cached attributes.
+If the device supports this flag, it allows displaying attributes for the
+last piece of media loaded in the drive.
+.It Fl e Ar num
+Specify the element address.
+This is used for specifying which element number in a medium changer to
+access when reading attributes.
+The element number could be for a picker, portal, slot or drive.
+.It Fl F Ar form1,form2
+Specify the output format for the attribute values (attr_val) display as a
+comma separated list of options.
+The default output is currently set to field_all,nonascii_trim,text_raw.
+Once this code is ported to FreeBSD 10, any text fields will be converted
+from their codeset to the user's native codeset with
+.Xr iconv 3 .
+.Pp
+The text options are mutually exclusive; if you specify more than one, you
+will get unpredictable results.
+The nonascii options are also mutually exclusive.
+Most of the field options may be logically ORed together.
+.Bl -tag -width 12n
+.It text_esc
+Print text fields with non-ASCII characters escaped.
+.It text_raw
+Print text fields natively, with no codeset conversion.
+.It nonascii_esc
+If any non-ASCII characters occur in fields that are supposed to be ASCII,
+escape the non-ASCII characters.
+.It nonascii_trim
+If any non-ASCII characters occur in fields that are supposed to be ASCII,
+omit the non-ASCII characters.
+.It nonascii_raw
+If any non-ASCII characters occur in fields that are supposed to be ASCII,
+print them as they are.
+.It field_all
+Print all of the prefix fields: description, attribute number, attribute
+size, and the attribute's readonly status.
+If field_all is specified, specifying any other field options will not have
+an effect.
+.It field_none
+Print none of the prefix fields, and only print out the attribute value.
+If field_none is specified, specifying any other field options will result
+in those fields being printed.
+.It field_desc
+Print out the attribute description.
+.It field_num
+Print out the attribute number.
+.It field_size
+Print out the attribute size.
+.It field_rw
+Print out the attribute's readonly status.
+.El
+.It Fl p Ar part
+Specify the partition.
+When the media has multiple partitions, specifying different partition
+numbers allows seeing the values for each individual partition.
+.It Fl s Ar start_num
+Specify the starting attribute number.
+This requests that the target device return attribute information starting
+at the given number.
+.It Fl T Ar elem_type
+Specify the element type.
+For medium changer devices, this allows specifying the type the element
+referenced in the element address (
+.Fl e ) .
+Valid types are:
+.Dq all ,
+.Dq picker ,
+.Dq slot ,
+.Dq portal ,
+and
+.Dq drive .
+.El
+.It Fl V Ar vol_num
+Specify the number of the logical volume to operate on.
+If the media has multiple logical volumes, this will allow displaying
+or writing attributes on the given logical volume.
.It Ic help
Print out verbose usage information.
.El
@@ -2047,6 +2183,15 @@ current initiator will be unregistered from the target.
The reservation will be moved to relative target port 2 on the target
device.
The registration will persist across power losses.
+.Pp
+.Bd -literal -offset indent
+camcontrol attrib sa0 -v -i attr_values -p 1
+.Ed
+.Pp
+This will read and decode the attribute values from partition 1 on the tape
+in tape drive sa0, and will display any
+.Tn SCSI
+errors that result.
.Sh SEE ALSO
.Xr cam 3 ,
.Xr cam_cdbparse 3 ,
diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c
index 84a0101..45826e7 100644
--- a/sbin/camcontrol/camcontrol.c
+++ b/sbin/camcontrol/camcontrol.c
@@ -98,7 +98,8 @@ typedef enum {
CAM_CMD_SANITIZE = 0x0000001f,
CAM_CMD_PERSIST = 0x00000020,
CAM_CMD_APM = 0x00000021,
- CAM_CMD_AAM = 0x00000022
+ CAM_CMD_AAM = 0x00000022,
+ CAM_CMD_ATTRIB = 0x00000023
} cam_cmdmask;
typedef enum {
@@ -224,6 +225,7 @@ static struct camcontrol_opts option_table[] = {
{"security", CAM_CMD_SECURITY, CAM_ARG_NONE, "d:e:fh:k:l:qs:T:U:y"},
{"hpa", CAM_CMD_HPA, CAM_ARG_NONE, "Pflp:qs:U:y"},
{"persist", CAM_CMD_PERSIST, CAM_ARG_NONE, "ai:I:k:K:o:ps:ST:U"},
+ {"attrib", CAM_CMD_ATTRIB, CAM_ARG_NONE, "a:ce:F:p:r:s:T:w:V:"},
#endif /* MINIMALISTIC */
{"help", CAM_CMD_USAGE, CAM_ARG_NONE, NULL},
{"-?", CAM_CMD_USAGE, CAM_ARG_NONE, NULL},
@@ -8117,6 +8119,9 @@ usage(int printlong)
" camcontrol persist [dev_id][generic args] <-i action|-o action>\n"
" [-a][-I tid][-k key][-K sa_key][-p][-R rtp]\n"
" [-s scope][-S][-T type][-U]\n"
+" camcontrol attrib [dev_id][generic args] <-r action|-w attr>\n"
+" [-a attr_num][-c][-e elem][-F form1,form1]\n"
+" [-p part][-s start][-T type][-V vol]\n"
#endif /* MINIMALISTIC */
" camcontrol help\n");
if (!printlong)
@@ -8156,6 +8161,7 @@ usage(int printlong)
"fwdownload program firmware of the named device with the given image\n"
"security report or send ATA security commands to the named device\n"
"persist send the SCSI PERSISTENT RESERVE IN or OUT commands\n"
+"attrib send the SCSI READ or WRITE ATTRIBUTE commands\n"
"help this message\n"
"Device Identifiers:\n"
"bus:target specify the bus and target, lun defaults to 0\n"
@@ -8306,6 +8312,20 @@ usage(int printlong)
"-T res_type specify the reservation type: read_shared, wr_ex, rd_ex,\n"
" ex_ac, wr_ex_ro, ex_ac_ro, wr_ex_ar, ex_ac_ar\n"
"-U unregister the current initiator for register_move\n"
+"attrib arguments:\n"
+"-r action specify attr_values, attr_list, lv_list, part_list, or\n"
+" supp_attr\n"
+"-w attr specify an attribute to write, one -w argument per attr\n"
+"-a attr_num only display this attribute number\n"
+"-c get cached attributes\n"
+"-e elem_addr request attributes for the given element in a changer\n"
+"-F form1,form2 output format, comma separated list: text_esc, text_raw,\n"
+" nonascii_esc, nonascii_trim, nonascii_raw, field_all,\n"
+" field_none, field_desc, field_num, field_size, field_rw\n"
+"-p partition request attributes for the given partition\n"
+"-s start_attr request attributes starting at the given number\n"
+"-T elem_type specify the element type (used with -e)\n"
+"-V logical_vol specify the logical volume ID\n"
);
#endif /* MINIMALISTIC */
}
@@ -8650,6 +8670,11 @@ main(int argc, char **argv)
retry_count, timeout, arglist & CAM_ARG_VERBOSE,
arglist & CAM_ARG_ERR_RECOVER);
break;
+ case CAM_CMD_ATTRIB:
+ error = scsiattrib(cam_dev, argc, argv, combinedopt,
+ retry_count, timeout, arglist & CAM_ARG_VERBOSE,
+ arglist & CAM_ARG_ERR_RECOVER);
+ break;
#endif /* MINIMALISTIC */
case CAM_CMD_USAGE:
usage(1);
diff --git a/sbin/camcontrol/camcontrol.h b/sbin/camcontrol/camcontrol.h
index 7c249bf..582b6a3 100644
--- a/sbin/camcontrol/camcontrol.h
+++ b/sbin/camcontrol/camcontrol.h
@@ -66,6 +66,9 @@ int scsidoinquiry(struct cam_device *device, int argc, char **argv,
int scsipersist(struct cam_device *device, int argc, char **argv,
char *combinedopt, int retry_count, int timeout, int verbose,
int err_recover);
+int scsiattrib(struct cam_device *device, int argc, char **argv,
+ char *combinedopt, int retry_count, int timeout, int verbose,
+ int err_recover);
char *cget(void *hook, char *name);
int iget(void *hook, char *name);
void arg_put(void *hook, int letter, void *arg, int count, char *name);
diff --git a/sbin/ccdconfig/Makefile.depend b/sbin/ccdconfig/Makefile.depend
new file mode 100644
index 0000000..851372c
--- /dev/null
+++ b/sbin/ccdconfig/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/clri/Makefile.depend b/sbin/clri/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/clri/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/comcontrol/Makefile.depend b/sbin/comcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/comcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/conscontrol/Makefile.depend b/sbin/conscontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/conscontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ddb/Makefile.depend b/sbin/ddb/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/sbin/ddb/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/devd/Makefile.depend b/sbin/devd/Makefile.depend
new file mode 100644
index 0000000..2611200
--- /dev/null
+++ b/sbin/devd/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/devfs/Makefile.depend b/sbin/devfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/devfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dhclient/Makefile.depend b/sbin/dhclient/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/sbin/dhclient/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dmesg/Makefile.depend b/sbin/dmesg/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/sbin/dmesg/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dump/Makefile.depend b/sbin/dump/Makefile.depend
new file mode 100644
index 0000000..26cae4e
--- /dev/null
+++ b/sbin/dump/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dumpfs/Makefile.depend b/sbin/dumpfs/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/sbin/dumpfs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dumpon/Makefile.depend b/sbin/dumpon/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/dumpon/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/etherswitchcfg/Makefile.depend b/sbin/etherswitchcfg/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/etherswitchcfg/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fdisk/Makefile.depend b/sbin/fdisk/Makefile.depend
new file mode 100644
index 0000000..851372c
--- /dev/null
+++ b/sbin/fdisk/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fdisk_pc98/Makefile.depend b/sbin/fdisk_pc98/Makefile.depend
new file mode 100644
index 0000000..4c7271b
--- /dev/null
+++ b/sbin/fdisk_pc98/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ffsinfo/Makefile.depend b/sbin/ffsinfo/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/sbin/ffsinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck/Makefile.depend b/sbin/fsck/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/fsck/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck_ffs/Makefile.depend b/sbin/fsck_ffs/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/sbin/fsck_ffs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck_msdosfs/Makefile.depend b/sbin/fsck_msdosfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/fsck_msdosfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsdb/Makefile.depend b/sbin/fsdb/Makefile.depend
new file mode 100644
index 0000000..a1c5d03
--- /dev/null
+++ b/sbin/fsdb/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libufs \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsirand/Makefile.depend b/sbin/fsirand/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/fsirand/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/gbde/Makefile.depend b/sbin/gbde/Makefile.depend
new file mode 100644
index 0000000..1d64ddb
--- /dev/null
+++ b/sbin/gbde/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+template.o: template.c
+template.po: template.c
+.endif
diff --git a/sbin/geom/class/cache/Makefile.depend b/sbin/geom/class/cache/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/cache/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/concat/Makefile.depend b/sbin/geom/class/concat/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/concat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/eli/Makefile.depend b/sbin/geom/class/eli/Makefile.depend
new file mode 100644
index 0000000..cbf4e19
--- /dev/null
+++ b/sbin/geom/class/eli/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/eli/geom_eli.c b/sbin/geom/class/eli/geom_eli.c
index 7df4d90..502303d 100644
--- a/sbin/geom/class/eli/geom_eli.c
+++ b/sbin/geom/class/eli/geom_eli.c
@@ -423,7 +423,7 @@ eli_genkey_passphrase_prompt(struct gctl_req *req, bool new, char *passbuf,
for (;;) {
p = readpassphrase(
- new ? "Enter new passphrase:" : "Enter passphrase:",
+ new ? "Enter new passphrase: " : "Enter passphrase: ",
passbuf, passbufsize, RPP_ECHO_OFF | RPP_REQUIRE_TTY);
if (p == NULL) {
bzero(passbuf, passbufsize);
diff --git a/sbin/geom/class/journal/Makefile.depend b/sbin/geom/class/journal/Makefile.depend
new file mode 100644
index 0000000..f04aa87
--- /dev/null
+++ b/sbin/geom/class/journal/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ lib/libufs \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/label/Makefile.depend b/sbin/geom/class/label/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/label/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/mirror/Makefile.depend b/sbin/geom/class/mirror/Makefile.depend
new file mode 100644
index 0000000..87303d7
--- /dev/null
+++ b/sbin/geom/class/mirror/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/mountver/Makefile.depend b/sbin/geom/class/mountver/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/mountver/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/multipath/Makefile.depend b/sbin/geom/class/multipath/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/multipath/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/multipath/gmultipath.8 b/sbin/geom/class/multipath/gmultipath.8
index 07ac01e..cdb2e8a 100644
--- a/sbin/geom/class/multipath/gmultipath.8
+++ b/sbin/geom/class/multipath/gmultipath.8
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 18, 2012
+.Dd June 11, 2015
.Dt GMULTIPATH 8
.Os
.Sh NAME
@@ -253,13 +253,13 @@ This I/O continues until an I/O is returned with
a generic I/O error or a "Nonexistent Device" error.
When this occurs, that path is marked FAIL, the next path
in a list is selected as active and the failed I/O reissued.
-In Active/Active mode all paths not marked FAIL may handle I/O same time.
+In Active/Active mode all paths not marked FAIL may handle I/O at the same time.
Requests are distributed between paths to equalize load.
-For capable devices it allows to utilize bandwidth of all paths.
-In Active/Read mode all paths not marked FAIL may handle reads same time,
-but unlike Active/Active only one path handles write requests at any
+For capable devices it allows to utilize the bandwidth of all paths.
+In Active/Read mode all paths not marked FAIL may handle reads at the same time,
+but unlike in Active/Active mode only one path handles write requests at any
point in time.
-It allows to closer follow original write request order if above layer
+It allows to closer follow the original write request order if the layer above
needs it for data consistency (not waiting for requisite write completion
before sending dependent write).
.Pp
@@ -269,9 +269,9 @@ GEOM class is given an opportunity to taste these new devices.
If a new
device has a
.Nm MULTIPATH
-on-disk metadata label, the device is used to either create a new
+on-disk metadata label, the device is either used to create a new
.Nm MULTIPATH
-GEOM, or been added the list of paths for an existing
+GEOM, or added to the list of paths for an existing
.Nm MULTIPATH
GEOM.
.Pp
@@ -281,7 +281,7 @@ and
.Xr mpt 4
based Fibre Channel disk devices.
For these devices, when a device disappears
-(due e.g., to a cable pull or power failure to a switch), the device is
+(due to e.g., a cable pull or power failure to a switch), the device is
proactively marked as gone and I/O to it failed.
This causes the
.Nm MULTIPATH
diff --git a/sbin/geom/class/nop/Makefile.depend b/sbin/geom/class/nop/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/nop/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/part/Makefile.depend b/sbin/geom/class/part/Makefile.depend
new file mode 100644
index 0000000..4622764
--- /dev/null
+++ b/sbin/geom/class/part/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libutil \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/raid/Makefile.depend b/sbin/geom/class/raid/Makefile.depend
new file mode 100644
index 0000000..87303d7
--- /dev/null
+++ b/sbin/geom/class/raid/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/raid3/Makefile.depend b/sbin/geom/class/raid3/Makefile.depend
new file mode 100644
index 0000000..87303d7
--- /dev/null
+++ b/sbin/geom/class/raid3/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/sched/Makefile.depend b/sbin/geom/class/sched/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/sched/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/shsec/Makefile.depend b/sbin/geom/class/shsec/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/shsec/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/stripe/Makefile.depend b/sbin/geom/class/stripe/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/stripe/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/virstor/Makefile.depend b/sbin/geom/class/virstor/Makefile.depend
new file mode 100644
index 0000000..1c2c57c
--- /dev/null
+++ b/sbin/geom/class/virstor/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/core/Makefile.depend b/sbin/geom/core/Makefile.depend
new file mode 100644
index 0000000..7762933
--- /dev/null
+++ b/sbin/geom/core/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggatec/Makefile.depend b/sbin/ggate/ggatec/Makefile.depend
new file mode 100644
index 0000000..73bafe4
--- /dev/null
+++ b/sbin/ggate/ggatec/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggated/Makefile.depend b/sbin/ggate/ggated/Makefile.depend
new file mode 100644
index 0000000..9185091
--- /dev/null
+++ b/sbin/ggate/ggated/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libthr \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggatel/Makefile.depend b/sbin/ggate/ggatel/Makefile.depend
new file mode 100644
index 0000000..8ea3042
--- /dev/null
+++ b/sbin/ggate/ggatel/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/growfs/Makefile.depend b/sbin/growfs/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/sbin/growfs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/gvinum/Makefile.depend b/sbin/gvinum/Makefile.depend
new file mode 100644
index 0000000..30266ac
--- /dev/null
+++ b/sbin/gvinum/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libedit/edit/readline \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/hastctl/Makefile.depend b/sbin/hastctl/Makefile.depend
new file mode 100644
index 0000000..fa326bb
--- /dev/null
+++ b/sbin/hastctl/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ secure/lib/libcrypto \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/hastd/Makefile.depend b/sbin/hastd/Makefile.depend
new file mode 100644
index 0000000..546ac40
--- /dev/null
+++ b/sbin/hastd/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/ifconfig/Makefile.depend b/sbin/ifconfig/Makefile.depend
new file mode 100644
index 0000000..768e8c6
--- /dev/null
+++ b/sbin/ifconfig/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libjail \
+ lib/libsbuf \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/init/Makefile.depend b/sbin/init/Makefile.depend
new file mode 100644
index 0000000..d8297c2
--- /dev/null
+++ b/sbin/init/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipf/Makefile.depend b/sbin/ipf/ipf/Makefile.depend
new file mode 100644
index 0000000..4eb9aad
--- /dev/null
+++ b/sbin/ipf/ipf/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libpcap \
+ sbin/ipf/libipf \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipf_l.o: ipf_l.c
+ipf_l.o: ipf_l.h
+ipf_l.o: ipf_y.h
+ipf_l.po: ipf_l.c
+ipf_l.po: ipf_l.h
+ipf_l.po: ipf_y.h
+ipf_y.o: ipf_l.h
+ipf_y.o: ipf_y.c
+ipf_y.po: ipf_l.h
+ipf_y.po: ipf_y.c
+.endif
diff --git a/sbin/ipf/ipfs/Makefile.depend b/sbin/ipf/ipfs/Makefile.depend
new file mode 100644
index 0000000..baac233
--- /dev/null
+++ b/sbin/ipf/ipfs/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipfstat/Makefile.depend b/sbin/ipf/ipfstat/Makefile.depend
new file mode 100644
index 0000000..9efa7cf
--- /dev/null
+++ b/sbin/ipf/ipfstat/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/ncurses/ncursesw \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipftest/Makefile.depend b/sbin/ipf/ipftest/Makefile.depend
new file mode 100644
index 0000000..6167828
--- /dev/null
+++ b/sbin/ipf/ipftest/Makefile.depend
@@ -0,0 +1,52 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipf_l.o: ipf_l.c
+ipf_l.o: ipf_l.h
+ipf_l.o: ipf_y.h
+ipf_l.po: ipf_l.c
+ipf_l.po: ipf_l.h
+ipf_l.po: ipf_y.h
+ipf_y.o: ipf_l.h
+ipf_y.o: ipf_y.c
+ipf_y.po: ipf_l.h
+ipf_y.po: ipf_y.c
+ipnat_l.o: ipnat_l.c
+ipnat_l.o: ipnat_l.h
+ipnat_l.o: ipnat_y.h
+ipnat_l.po: ipnat_l.c
+ipnat_l.po: ipnat_l.h
+ipnat_l.po: ipnat_y.h
+ipnat_y.o: ipnat_l.h
+ipnat_y.o: ipnat_y.c
+ipnat_y.po: ipnat_l.h
+ipnat_y.po: ipnat_y.c
+ippool_l.o: ippool_l.c
+ippool_l.o: ippool_l.h
+ippool_l.o: ippool_y.h
+ippool_l.po: ippool_l.c
+ippool_l.po: ippool_l.h
+ippool_l.po: ippool_y.h
+ippool_y.o: ippool_l.h
+ippool_y.o: ippool_y.c
+ippool_y.po: ippool_l.h
+ippool_y.po: ippool_y.c
+.endif
diff --git a/sbin/ipf/ipmon/Makefile.depend b/sbin/ipf/ipmon/Makefile.depend
new file mode 100644
index 0000000..5bdb549
--- /dev/null
+++ b/sbin/ipf/ipmon/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipmon_l.o: ipmon_l.c
+ipmon_l.o: ipmon_l.h
+ipmon_l.o: ipmon_y.h
+ipmon_l.po: ipmon_l.c
+ipmon_l.po: ipmon_l.h
+ipmon_l.po: ipmon_y.h
+ipmon_y.o: ipmon_l.h
+ipmon_y.o: ipmon_y.c
+ipmon_y.po: ipmon_l.h
+ipmon_y.po: ipmon_y.c
+.endif
diff --git a/sbin/ipf/ipnat/Makefile.depend b/sbin/ipf/ipnat/Makefile.depend
new file mode 100644
index 0000000..1bbd418
--- /dev/null
+++ b/sbin/ipf/ipnat/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipnat_l.o: ipnat_l.c
+ipnat_l.o: ipnat_l.h
+ipnat_l.o: ipnat_y.h
+ipnat_l.po: ipnat_l.c
+ipnat_l.po: ipnat_l.h
+ipnat_l.po: ipnat_y.h
+ipnat_y.o: ipnat_l.h
+ipnat_y.o: ipnat_y.c
+ipnat_y.po: ipnat_l.h
+ipnat_y.po: ipnat_y.c
+.endif
diff --git a/sbin/ipf/ippool/Makefile.depend b/sbin/ipf/ippool/Makefile.depend
new file mode 100644
index 0000000..cc3cf4d
--- /dev/null
+++ b/sbin/ipf/ippool/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ippool_l.o: ippool_l.c
+ippool_l.o: ippool_l.h
+ippool_l.o: ippool_y.h
+ippool_l.po: ippool_l.c
+ippool_l.po: ippool_l.h
+ippool_l.po: ippool_y.h
+ippool_y.o: ippool_l.h
+ippool_y.o: ippool_y.c
+ippool_y.po: ippool_l.h
+ippool_y.po: ippool_y.c
+.endif
diff --git a/sbin/ipf/ipresend/Makefile.depend b/sbin/ipf/ipresend/Makefile.depend
new file mode 100644
index 0000000..9e0787f
--- /dev/null
+++ b/sbin/ipf/ipresend/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/msun \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/libipf/Makefile.depend b/sbin/ipf/libipf/Makefile.depend
new file mode 100644
index 0000000..55e67ed
--- /dev/null
+++ b/sbin/ipf/libipf/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipfw/Makefile.depend b/sbin/ipfw/Makefile.depend
new file mode 100644
index 0000000..94816f2
--- /dev/null
+++ b/sbin/ipfw/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/iscontrol/Makefile.depend b/sbin/iscontrol/Makefile.depend
new file mode 100644
index 0000000..6e045828
--- /dev/null
+++ b/sbin/iscontrol/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldconfig/Makefile.depend b/sbin/kldconfig/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/kldconfig/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldload/Makefile.depend b/sbin/kldload/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/kldload/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldstat/Makefile.depend b/sbin/kldstat/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/sbin/kldstat/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldunload/Makefile.depend b/sbin/kldunload/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/sbin/kldunload/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ldconfig/Makefile.depend b/sbin/ldconfig/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/ldconfig/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/md5/Makefile.depend b/sbin/md5/Makefile.depend
new file mode 100644
index 0000000..064e492
--- /dev/null
+++ b/sbin/md5/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mdconfig/Makefile.depend b/sbin/mdconfig/Makefile.depend
new file mode 100644
index 0000000..bfd9ff6
--- /dev/null
+++ b/sbin/mdconfig/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mdmfs/Makefile.depend b/sbin/mdmfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mdmfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mknod/Makefile.depend b/sbin/mknod/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mknod/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mksnap_ffs/Makefile.depend b/sbin/mksnap_ffs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mksnap_ffs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount/Makefile.depend b/sbin/mount/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/sbin/mount/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_cd9660/Makefile.depend b/sbin/mount_cd9660/Makefile.depend
new file mode 100644
index 0000000..5a8df4c
--- /dev/null
+++ b/sbin/mount_cd9660/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_fusefs/Makefile.depend b/sbin/mount_fusefs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mount_fusefs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_msdosfs/Makefile.depend b/sbin/mount_msdosfs/Makefile.depend
new file mode 100644
index 0000000..af10867
--- /dev/null
+++ b/sbin/mount_msdosfs/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_nfs/Makefile.depend b/sbin/mount_nfs/Makefile.depend
new file mode 100644
index 0000000..c0b7a14
--- /dev/null
+++ b/sbin/mount_nfs/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_nullfs/Makefile.depend b/sbin/mount_nullfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mount_nullfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_udf/Makefile.depend b/sbin/mount_udf/Makefile.depend
new file mode 100644
index 0000000..51cf539
--- /dev/null
+++ b/sbin/mount_udf/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_unionfs/Makefile.depend b/sbin/mount_unionfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/mount_unionfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/natd/Makefile.depend b/sbin/natd/Makefile.depend
new file mode 100644
index 0000000..3418575
--- /dev/null
+++ b/sbin/natd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/newfs/Makefile.depend b/sbin/newfs/Makefile.depend
new file mode 100644
index 0000000..24f47f3
--- /dev/null
+++ b/sbin/newfs/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/newfs_msdos/Makefile.depend b/sbin/newfs_msdos/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/newfs_msdos/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nfsiod/Makefile.depend b/sbin/nfsiod/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/sbin/nfsiod/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nos-tun/Makefile.depend b/sbin/nos-tun/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/sbin/nos-tun/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nvmecontrol/Makefile.depend b/sbin/nvmecontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/nvmecontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/pfctl/Makefile.depend b/sbin/pfctl/Makefile.depend
new file mode 100644
index 0000000..0113da6
--- /dev/null
+++ b/sbin/pfctl/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+.endif
diff --git a/sbin/pflogd/Makefile.depend b/sbin/pflogd/Makefile.depend
new file mode 100644
index 0000000..268320b
--- /dev/null
+++ b/sbin/pflogd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ping/Makefile.depend b/sbin/ping/Makefile.depend
new file mode 100644
index 0000000..35832c2
--- /dev/null
+++ b/sbin/ping/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libnv \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ping6/Makefile.depend b/sbin/ping6/Makefile.depend
new file mode 100644
index 0000000..c87ecaf
--- /dev/null
+++ b/sbin/ping6/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libmd \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/quotacheck/Makefile.depend b/sbin/quotacheck/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/sbin/quotacheck/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/rcorder/Makefile.depend b/sbin/rcorder/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/sbin/rcorder/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/reboot/Makefile.depend b/sbin/reboot/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/reboot/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/recoverdisk/Makefile.depend b/sbin/recoverdisk/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/recoverdisk/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/resolvconf/Makefile.depend b/sbin/resolvconf/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/sbin/resolvconf/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/restore/Makefile.depend b/sbin/restore/Makefile.depend
new file mode 100644
index 0000000..26cae4e
--- /dev/null
+++ b/sbin/restore/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/route/Makefile.depend b/sbin/route/Makefile.depend
new file mode 100644
index 0000000..a6497f2
--- /dev/null
+++ b/sbin/route/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+route.o: keywords.h
+route.po: keywords.h
+.endif
diff --git a/sbin/routed/Makefile.depend b/sbin/routed/Makefile.depend
new file mode 100644
index 0000000..9807567d
--- /dev/null
+++ b/sbin/routed/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/routed/rtquery/Makefile.depend b/sbin/routed/rtquery/Makefile.depend
new file mode 100644
index 0000000..1dd2697
--- /dev/null
+++ b/sbin/routed/rtquery/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/rtsol/Makefile.depend b/sbin/rtsol/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/sbin/rtsol/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/savecore/Makefile.depend b/sbin/savecore/Makefile.depend
new file mode 100644
index 0000000..952944d
--- /dev/null
+++ b/sbin/savecore/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libxo \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sconfig/Makefile.depend b/sbin/sconfig/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/sbin/sconfig/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/setkey/Makefile.depend b/sbin/setkey/Makefile.depend
new file mode 100644
index 0000000..9764245
--- /dev/null
+++ b/sbin/setkey/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/liby \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/shutdown/Makefile.depend b/sbin/shutdown/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/shutdown/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/spppcontrol/Makefile.depend b/sbin/spppcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/spppcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sunlabel/Makefile.depend b/sbin/sunlabel/Makefile.depend
new file mode 100644
index 0000000..4c7271b
--- /dev/null
+++ b/sbin/sunlabel/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/swapon/Makefile.depend b/sbin/swapon/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/sbin/swapon/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sysctl/Makefile.depend b/sbin/sysctl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/sbin/sysctl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/tunefs/Makefile.depend b/sbin/tunefs/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/sbin/tunefs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/umount/Makefile.depend b/sbin/umount/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/sbin/umount/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/umount/umount.8 b/sbin/umount/umount.8
index e62bcc5..2ddbf5a 100644
--- a/sbin/umount/umount.8
+++ b/sbin/umount/umount.8
@@ -28,7 +28,7 @@
.\" @(#)umount.8 8.2 (Berkeley) 5/8/95
.\" $FreeBSD$
.\"
-.Dd November 22, 2014
+.Dd June 17, 2015
.Dt UMOUNT 8
.Os
.Sh NAME
@@ -81,6 +81,9 @@ The root file system cannot be forcibly unmounted.
For NFS, a forced dismount can take up to 1 minute or more to
complete against an unresponsive server and may throw away
data not yet written to the server for this case.
+Also, doing a forced dismount of an NFSv3 mount when
+.Xr rpc.lockd 8
+is running is unsafe and can result in a crash.
.It Fl h Ar host
Only file systems mounted from the specified host will be
unmounted.
diff --git a/secure/lib/libcrypt/crypt-blowfish.c b/secure/lib/libcrypt/crypt-blowfish.c
index 35fb581..acd9057 100644
--- a/secure/lib/libcrypt/crypt-blowfish.c
+++ b/secure/lib/libcrypt/crypt-blowfish.c
@@ -167,6 +167,9 @@ crypt_blowfish(const char *key, const char *salt)
switch (salt[1]) {
case 'a': /* 'ab' should not yield the same as 'abab' */
case 'b': /* cap input length at 72 bytes */
+ case 'y': /* same as 'b', for compatibility
+ * with openwall crypt_blowfish
+ */
minr = salt[1];
salt++;
break;
diff --git a/secure/lib/libcrypto/Makefile.depend b/secure/lib/libcrypto/Makefile.depend
new file mode 100644
index 0000000..723f45e
--- /dev/null
+++ b/secure/lib/libcrypto/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cversion.So: buildinf.h
+cversion.o: buildinf.h
+cversion.po: buildinf.h
+.endif
diff --git a/secure/lib/libcrypto/Makefile.inc b/secure/lib/libcrypto/Makefile.inc
index ec7dabe..dcbbcc8 100644
--- a/secure/lib/libcrypto/Makefile.inc
+++ b/secure/lib/libcrypto/Makefile.inc
@@ -3,8 +3,8 @@
.include <bsd.own.mk>
# OpenSSL version used for manual page generation
-OPENSSL_VER= 1.0.1m
-OPENSSL_DATE= 2015-03-19
+OPENSSL_VER= 1.0.1o
+OPENSSL_DATE= 2015-06-12
LCRYPTO_SRC= ${.CURDIR}/../../../crypto/openssl
LCRYPTO_DOC= ${.CURDIR}/../../../crypto/openssl/doc
diff --git a/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend b/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libaep/Makefile.depend b/secure/lib/libcrypto/engines/libaep/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libaep/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libatalla/Makefile.depend b/secure/lib/libcrypto/engines/libatalla/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libatalla/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libchil/Makefile.depend b/secure/lib/libcrypto/engines/libchil/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libchil/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libcswift/Makefile.depend b/secure/lib/libcrypto/engines/libcswift/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libcswift/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libgost/Makefile.depend b/secure/lib/libcrypto/engines/libgost/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libgost/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libnuron/Makefile.depend b/secure/lib/libcrypto/engines/libnuron/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libnuron/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libsureware/Makefile.depend b/secure/lib/libcrypto/engines/libsureware/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libsureware/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libubsec/Makefile.depend b/secure/lib/libcrypto/engines/libubsec/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libubsec/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 b/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
index 4713d60..58e68f6 100644
--- a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
+++ b/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_OBJECT_new 3"
-.TH ASN1_OBJECT_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1_OBJECT_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_length.3 b/secure/lib/libcrypto/man/ASN1_STRING_length.3
index 6f94768..9b49af2 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_length.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_length.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_length 3"
-.TH ASN1_STRING_length 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1_STRING_length 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_new.3 b/secure/lib/libcrypto/man/ASN1_STRING_new.3
index 3311e84..d3ded18 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_new.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_new 3"
-.TH ASN1_STRING_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1_STRING_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 b/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
index 2a95bbd..97b50b8 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_print_ex 3"
-.TH ASN1_STRING_print_ex 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1_STRING_print_ex 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_generate_nconf.3 b/secure/lib/libcrypto/man/ASN1_generate_nconf.3
index 40d7a40..486ed31 100644
--- a/secure/lib/libcrypto/man/ASN1_generate_nconf.3
+++ b/secure/lib/libcrypto/man/ASN1_generate_nconf.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_generate_nconf 3"
-.TH ASN1_generate_nconf 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1_generate_nconf 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_ctrl.3 b/secure/lib/libcrypto/man/BIO_ctrl.3
index c7c995c..bed4344 100644
--- a/secure/lib/libcrypto/man/BIO_ctrl.3
+++ b/secure/lib/libcrypto/man/BIO_ctrl.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_ctrl 3"
-.TH BIO_ctrl 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_base64.3 b/secure/lib/libcrypto/man/BIO_f_base64.3
index f0f0302..36d8df6 100644
--- a/secure/lib/libcrypto/man/BIO_f_base64.3
+++ b/secure/lib/libcrypto/man/BIO_f_base64.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_base64 3"
-.TH BIO_f_base64 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_base64 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_buffer.3 b/secure/lib/libcrypto/man/BIO_f_buffer.3
index 6a2b76a..be271bb 100644
--- a/secure/lib/libcrypto/man/BIO_f_buffer.3
+++ b/secure/lib/libcrypto/man/BIO_f_buffer.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_buffer 3"
-.TH BIO_f_buffer 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_buffer 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_cipher.3 b/secure/lib/libcrypto/man/BIO_f_cipher.3
index 1f0a61f..796141b 100644
--- a/secure/lib/libcrypto/man/BIO_f_cipher.3
+++ b/secure/lib/libcrypto/man/BIO_f_cipher.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_cipher 3"
-.TH BIO_f_cipher 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_cipher 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_md.3 b/secure/lib/libcrypto/man/BIO_f_md.3
index 955b0ce..9990104 100644
--- a/secure/lib/libcrypto/man/BIO_f_md.3
+++ b/secure/lib/libcrypto/man/BIO_f_md.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_md 3"
-.TH BIO_f_md 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_md 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_null.3 b/secure/lib/libcrypto/man/BIO_f_null.3
index 1e5328e..fa5878a 100644
--- a/secure/lib/libcrypto/man/BIO_f_null.3
+++ b/secure/lib/libcrypto/man/BIO_f_null.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_null 3"
-.TH BIO_f_null 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_null 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_ssl.3 b/secure/lib/libcrypto/man/BIO_f_ssl.3
index 8cb1819..a5527e4 100644
--- a/secure/lib/libcrypto/man/BIO_f_ssl.3
+++ b/secure/lib/libcrypto/man/BIO_f_ssl.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_ssl 3"
-.TH BIO_f_ssl 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_f_ssl 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_find_type.3 b/secure/lib/libcrypto/man/BIO_find_type.3
index cfc8fc8..8babdc1 100644
--- a/secure/lib/libcrypto/man/BIO_find_type.3
+++ b/secure/lib/libcrypto/man/BIO_find_type.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_find_type 3"
-.TH BIO_find_type 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_find_type 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_new.3 b/secure/lib/libcrypto/man/BIO_new.3
index 509b11d..20770ce 100644
--- a/secure/lib/libcrypto/man/BIO_new.3
+++ b/secure/lib/libcrypto/man/BIO_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_new 3"
-.TH BIO_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_new_CMS.3 b/secure/lib/libcrypto/man/BIO_new_CMS.3
index bc75f5a..e031998 100644
--- a/secure/lib/libcrypto/man/BIO_new_CMS.3
+++ b/secure/lib/libcrypto/man/BIO_new_CMS.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_new_CMS 3"
-.TH BIO_new_CMS 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_new_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_push.3 b/secure/lib/libcrypto/man/BIO_push.3
index 603ad52..d3cc8ca 100644
--- a/secure/lib/libcrypto/man/BIO_push.3
+++ b/secure/lib/libcrypto/man/BIO_push.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_push 3"
-.TH BIO_push 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_push 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_read.3 b/secure/lib/libcrypto/man/BIO_read.3
index ac34461..99c3790 100644
--- a/secure/lib/libcrypto/man/BIO_read.3
+++ b/secure/lib/libcrypto/man/BIO_read.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_read 3"
-.TH BIO_read 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_read 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_accept.3 b/secure/lib/libcrypto/man/BIO_s_accept.3
index 317d2ae..a3bfd5c 100644
--- a/secure/lib/libcrypto/man/BIO_s_accept.3
+++ b/secure/lib/libcrypto/man/BIO_s_accept.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_accept 3"
-.TH BIO_s_accept 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_accept 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_bio.3 b/secure/lib/libcrypto/man/BIO_s_bio.3
index f4064d2..fb2ded4 100644
--- a/secure/lib/libcrypto/man/BIO_s_bio.3
+++ b/secure/lib/libcrypto/man/BIO_s_bio.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_bio 3"
-.TH BIO_s_bio 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_connect.3 b/secure/lib/libcrypto/man/BIO_s_connect.3
index 0e6388c..85fdf02 100644
--- a/secure/lib/libcrypto/man/BIO_s_connect.3
+++ b/secure/lib/libcrypto/man/BIO_s_connect.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_connect 3"
-.TH BIO_s_connect 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_connect 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_fd.3 b/secure/lib/libcrypto/man/BIO_s_fd.3
index 9e521a6..8e880b1 100644
--- a/secure/lib/libcrypto/man/BIO_s_fd.3
+++ b/secure/lib/libcrypto/man/BIO_s_fd.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_fd 3"
-.TH BIO_s_fd 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_file.3 b/secure/lib/libcrypto/man/BIO_s_file.3
index a22b488..7b56f84 100644
--- a/secure/lib/libcrypto/man/BIO_s_file.3
+++ b/secure/lib/libcrypto/man/BIO_s_file.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_file 3"
-.TH BIO_s_file 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_mem.3 b/secure/lib/libcrypto/man/BIO_s_mem.3
index bc3c6fd..ecfba6a 100644
--- a/secure/lib/libcrypto/man/BIO_s_mem.3
+++ b/secure/lib/libcrypto/man/BIO_s_mem.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_mem 3"
-.TH BIO_s_mem 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_mem 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_null.3 b/secure/lib/libcrypto/man/BIO_s_null.3
index c645820..4ed55fc 100644
--- a/secure/lib/libcrypto/man/BIO_s_null.3
+++ b/secure/lib/libcrypto/man/BIO_s_null.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_null 3"
-.TH BIO_s_null 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_null 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_socket.3 b/secure/lib/libcrypto/man/BIO_s_socket.3
index 9e85993..58329e9 100644
--- a/secure/lib/libcrypto/man/BIO_s_socket.3
+++ b/secure/lib/libcrypto/man/BIO_s_socket.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_socket 3"
-.TH BIO_s_socket 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_s_socket 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_set_callback.3 b/secure/lib/libcrypto/man/BIO_set_callback.3
index cedca3a..ae4841c 100644
--- a/secure/lib/libcrypto/man/BIO_set_callback.3
+++ b/secure/lib/libcrypto/man/BIO_set_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_set_callback 3"
-.TH BIO_set_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_set_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_should_retry.3 b/secure/lib/libcrypto/man/BIO_should_retry.3
index 21c079c..db1b796 100644
--- a/secure/lib/libcrypto/man/BIO_should_retry.3
+++ b/secure/lib/libcrypto/man/BIO_should_retry.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_should_retry 3"
-.TH BIO_should_retry 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BIO_should_retry 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_BLINDING_new.3 b/secure/lib/libcrypto/man/BN_BLINDING_new.3
index b5d4d8f..c26736b 100644
--- a/secure/lib/libcrypto/man/BN_BLINDING_new.3
+++ b/secure/lib/libcrypto/man/BN_BLINDING_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_BLINDING_new 3"
-.TH BN_BLINDING_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_BLINDING_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_CTX_new.3 b/secure/lib/libcrypto/man/BN_CTX_new.3
index faaba94..5676c1e 100644
--- a/secure/lib/libcrypto/man/BN_CTX_new.3
+++ b/secure/lib/libcrypto/man/BN_CTX_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_CTX_new 3"
-.TH BN_CTX_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_CTX_start.3 b/secure/lib/libcrypto/man/BN_CTX_start.3
index d939512..fe638ca 100644
--- a/secure/lib/libcrypto/man/BN_CTX_start.3
+++ b/secure/lib/libcrypto/man/BN_CTX_start.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_CTX_start 3"
-.TH BN_CTX_start 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_CTX_start 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_add.3 b/secure/lib/libcrypto/man/BN_add.3
index 52becbf..4e58a6b 100644
--- a/secure/lib/libcrypto/man/BN_add.3
+++ b/secure/lib/libcrypto/man/BN_add.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_add 3"
-.TH BN_add 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_add 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_add_word.3 b/secure/lib/libcrypto/man/BN_add_word.3
index cd58500..0869c2c 100644
--- a/secure/lib/libcrypto/man/BN_add_word.3
+++ b/secure/lib/libcrypto/man/BN_add_word.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_add_word 3"
-.TH BN_add_word 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_add_word 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_bn2bin.3 b/secure/lib/libcrypto/man/BN_bn2bin.3
index 50f7d5e..39849b5 100644
--- a/secure/lib/libcrypto/man/BN_bn2bin.3
+++ b/secure/lib/libcrypto/man/BN_bn2bin.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_bn2bin 3"
-.TH BN_bn2bin 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_bn2bin 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_cmp.3 b/secure/lib/libcrypto/man/BN_cmp.3
index 5037c95..c554e6a 100644
--- a/secure/lib/libcrypto/man/BN_cmp.3
+++ b/secure/lib/libcrypto/man/BN_cmp.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_cmp 3"
-.TH BN_cmp 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_cmp 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_copy.3 b/secure/lib/libcrypto/man/BN_copy.3
index 22506bf..2ab659c 100644
--- a/secure/lib/libcrypto/man/BN_copy.3
+++ b/secure/lib/libcrypto/man/BN_copy.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_copy 3"
-.TH BN_copy 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_copy 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_generate_prime.3 b/secure/lib/libcrypto/man/BN_generate_prime.3
index d7666a7..074db2b 100644
--- a/secure/lib/libcrypto/man/BN_generate_prime.3
+++ b/secure/lib/libcrypto/man/BN_generate_prime.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_generate_prime 3"
-.TH BN_generate_prime 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_generate_prime 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_inverse.3 b/secure/lib/libcrypto/man/BN_mod_inverse.3
index 67d8093..d28a92f 100644
--- a/secure/lib/libcrypto/man/BN_mod_inverse.3
+++ b/secure/lib/libcrypto/man/BN_mod_inverse.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_inverse 3"
-.TH BN_mod_inverse 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_mod_inverse 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 b/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
index b720639..8429a29 100644
--- a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
+++ b/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_mul_montgomery 3"
-.TH BN_mod_mul_montgomery 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_mod_mul_montgomery 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 b/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
index 4868b16..29bd3a6 100644
--- a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
+++ b/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_mul_reciprocal 3"
-.TH BN_mod_mul_reciprocal 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_mod_mul_reciprocal 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_new.3 b/secure/lib/libcrypto/man/BN_new.3
index 6f02a16..124f638 100644
--- a/secure/lib/libcrypto/man/BN_new.3
+++ b/secure/lib/libcrypto/man/BN_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_new 3"
-.TH BN_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_num_bytes.3 b/secure/lib/libcrypto/man/BN_num_bytes.3
index 5d35707..1da3a24 100644
--- a/secure/lib/libcrypto/man/BN_num_bytes.3
+++ b/secure/lib/libcrypto/man/BN_num_bytes.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_num_bytes 3"
-.TH BN_num_bytes 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_num_bytes 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_rand.3 b/secure/lib/libcrypto/man/BN_rand.3
index 7531b02..3748b95 100644
--- a/secure/lib/libcrypto/man/BN_rand.3
+++ b/secure/lib/libcrypto/man/BN_rand.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_rand 3"
-.TH BN_rand 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_rand 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -161,7 +161,8 @@ most significant bit of the random number can be zero. If \fBtop\fR is 0,
it is set to 1, and if \fBtop\fR is 1, the two most significant bits of
the number will be set to 1, so that the product of two such random
numbers will always have 2*\fBbits\fR length. If \fBbottom\fR is true, the
-number will be odd.
+number will be odd. The value of \fBbits\fR must be zero or greater. If \fBbits\fR is
+1 then \fBtop\fR cannot also be 1.
.PP
\&\fIBN_pseudo_rand()\fR does the same, but pseudo-random numbers generated by
this function are not necessarily unpredictable. They can be used for
diff --git a/secure/lib/libcrypto/man/BN_set_bit.3 b/secure/lib/libcrypto/man/BN_set_bit.3
index 9c474f6..38fad2e 100644
--- a/secure/lib/libcrypto/man/BN_set_bit.3
+++ b/secure/lib/libcrypto/man/BN_set_bit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_set_bit 3"
-.TH BN_set_bit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_set_bit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -174,12 +174,12 @@ error occurs if \fBa\fR is shorter than \fBn\fR bits.
shorter than \fBn\fR bits.
.PP
\&\fIBN_lshift()\fR shifts \fBa\fR left by \fBn\fR bits and places the result in
-\&\fBr\fR (\f(CW\*(C`r=a*2^n\*(C'\fR). \fIBN_lshift1()\fR shifts \fBa\fR left by one and places
-the result in \fBr\fR (\f(CW\*(C`r=2*a\*(C'\fR).
+\&\fBr\fR (\f(CW\*(C`r=a*2^n\*(C'\fR). Note that \fBn\fR must be non-negative. \fIBN_lshift1()\fR shifts
+\&\fBa\fR left by one and places the result in \fBr\fR (\f(CW\*(C`r=2*a\*(C'\fR).
.PP
\&\fIBN_rshift()\fR shifts \fBa\fR right by \fBn\fR bits and places the result in
-\&\fBr\fR (\f(CW\*(C`r=a/2^n\*(C'\fR). \fIBN_rshift1()\fR shifts \fBa\fR right by one and places
-the result in \fBr\fR (\f(CW\*(C`r=a/2\*(C'\fR).
+\&\fBr\fR (\f(CW\*(C`r=a/2^n\*(C'\fR). Note that \fBn\fR must be non-negative. \fIBN_rshift1()\fR shifts
+\&\fBa\fR right by one and places the result in \fBr\fR (\f(CW\*(C`r=a/2\*(C'\fR).
.PP
For the shift functions, \fBr\fR and \fBa\fR may be the same variable.
.SH "RETURN VALUES"
diff --git a/secure/lib/libcrypto/man/BN_swap.3 b/secure/lib/libcrypto/man/BN_swap.3
index 9778b2a..0416b1d 100644
--- a/secure/lib/libcrypto/man/BN_swap.3
+++ b/secure/lib/libcrypto/man/BN_swap.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_swap 3"
-.TH BN_swap 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_swap 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_zero.3 b/secure/lib/libcrypto/man/BN_zero.3
index 48d3c4c..4dfa809 100644
--- a/secure/lib/libcrypto/man/BN_zero.3
+++ b/secure/lib/libcrypto/man/BN_zero.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_zero 3"
-.TH BN_zero 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH BN_zero 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add0_cert.3 b/secure/lib/libcrypto/man/CMS_add0_cert.3
index d485194..60d0bfe 100644
--- a/secure/lib/libcrypto/man/CMS_add0_cert.3
+++ b/secure/lib/libcrypto/man/CMS_add0_cert.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add0_cert 3"
-.TH CMS_add0_cert 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_add0_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 b/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
index f302a1d..01ba868 100644
--- a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
+++ b/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add1_recipient_cert 3"
-.TH CMS_add1_recipient_cert 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_add1_recipient_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add1_signer.3 b/secure/lib/libcrypto/man/CMS_add1_signer.3
index 5e4a1d9..51bfd69 100644
--- a/secure/lib/libcrypto/man/CMS_add1_signer.3
+++ b/secure/lib/libcrypto/man/CMS_add1_signer.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add1_signer 3"
-.TH CMS_add1_signer 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_add1_signer 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_compress.3 b/secure/lib/libcrypto/man/CMS_compress.3
index 5e4083f..1b51fcf 100644
--- a/secure/lib/libcrypto/man/CMS_compress.3
+++ b/secure/lib/libcrypto/man/CMS_compress.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_compress 3"
-.TH CMS_compress 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_compress 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_decrypt.3 b/secure/lib/libcrypto/man/CMS_decrypt.3
index e482061..f7b269c 100644
--- a/secure/lib/libcrypto/man/CMS_decrypt.3
+++ b/secure/lib/libcrypto/man/CMS_decrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_decrypt 3"
-.TH CMS_decrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_encrypt.3 b/secure/lib/libcrypto/man/CMS_encrypt.3
index 96d7b88..d19486f 100644
--- a/secure/lib/libcrypto/man/CMS_encrypt.3
+++ b/secure/lib/libcrypto/man/CMS_encrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_encrypt 3"
-.TH CMS_encrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_final.3 b/secure/lib/libcrypto/man/CMS_final.3
index 8dd11fe..a329e6b 100644
--- a/secure/lib/libcrypto/man/CMS_final.3
+++ b/secure/lib/libcrypto/man/CMS_final.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_final 3"
-.TH CMS_final 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_final 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 b/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
index c019edb..bc6639e 100644
--- a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
+++ b/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_RecipientInfos 3"
-.TH CMS_get0_RecipientInfos 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_get0_RecipientInfos 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 b/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
index f77d2a5..1aa3218 100644
--- a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
+++ b/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_SignerInfos 3"
-.TH CMS_get0_SignerInfos 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_get0_SignerInfos 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_type.3 b/secure/lib/libcrypto/man/CMS_get0_type.3
index 8192327..23cb6d4 100644
--- a/secure/lib/libcrypto/man/CMS_get0_type.3
+++ b/secure/lib/libcrypto/man/CMS_get0_type.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_type 3"
-.TH CMS_get0_type 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_get0_type 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 b/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
index d567f2d..6a08414 100644
--- a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
+++ b/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get1_ReceiptRequest 3"
-.TH CMS_get1_ReceiptRequest 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_get1_ReceiptRequest 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_sign.3 b/secure/lib/libcrypto/man/CMS_sign.3
index e470246..2436e08 100644
--- a/secure/lib/libcrypto/man/CMS_sign.3
+++ b/secure/lib/libcrypto/man/CMS_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_sign 3"
-.TH CMS_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_sign_receipt.3 b/secure/lib/libcrypto/man/CMS_sign_receipt.3
index 12b1613..d97d577 100644
--- a/secure/lib/libcrypto/man/CMS_sign_receipt.3
+++ b/secure/lib/libcrypto/man/CMS_sign_receipt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_sign_receipt 3"
-.TH CMS_sign_receipt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_sign_receipt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_uncompress.3 b/secure/lib/libcrypto/man/CMS_uncompress.3
index 0152329..dad7e26 100644
--- a/secure/lib/libcrypto/man/CMS_uncompress.3
+++ b/secure/lib/libcrypto/man/CMS_uncompress.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_uncompress 3"
-.TH CMS_uncompress 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_uncompress 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_verify.3 b/secure/lib/libcrypto/man/CMS_verify.3
index f484c7f..7753053 100644
--- a/secure/lib/libcrypto/man/CMS_verify.3
+++ b/secure/lib/libcrypto/man/CMS_verify.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_verify 3"
-.TH CMS_verify 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_verify_receipt.3 b/secure/lib/libcrypto/man/CMS_verify_receipt.3
index 7b6981c..a324820 100644
--- a/secure/lib/libcrypto/man/CMS_verify_receipt.3
+++ b/secure/lib/libcrypto/man/CMS_verify_receipt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_verify_receipt 3"
-.TH CMS_verify_receipt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS_verify_receipt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CONF_modules_free.3 b/secure/lib/libcrypto/man/CONF_modules_free.3
index 120867d..139a8f8 100644
--- a/secure/lib/libcrypto/man/CONF_modules_free.3
+++ b/secure/lib/libcrypto/man/CONF_modules_free.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CONF_modules_free 3"
-.TH CONF_modules_free 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CONF_modules_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CONF_modules_load_file.3 b/secure/lib/libcrypto/man/CONF_modules_load_file.3
index 1d2a69c..2180371 100644
--- a/secure/lib/libcrypto/man/CONF_modules_load_file.3
+++ b/secure/lib/libcrypto/man/CONF_modules_load_file.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CONF_modules_load_file 3"
-.TH CONF_modules_load_file 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CONF_modules_load_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 b/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
index 58a92b1..f7fc5ef 100644
--- a/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
+++ b/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRYPTO_set_ex_data 3"
-.TH CRYPTO_set_ex_data 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CRYPTO_set_ex_data 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_generate_key.3 b/secure/lib/libcrypto/man/DH_generate_key.3
index d251cf2..9699d0c 100644
--- a/secure/lib/libcrypto/man/DH_generate_key.3
+++ b/secure/lib/libcrypto/man/DH_generate_key.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_generate_key 3"
-.TH DH_generate_key 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_generate_parameters.3 b/secure/lib/libcrypto/man/DH_generate_parameters.3
index bb320a4..d36c64a 100644
--- a/secure/lib/libcrypto/man/DH_generate_parameters.3
+++ b/secure/lib/libcrypto/man/DH_generate_parameters.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_generate_parameters 3"
-.TH DH_generate_parameters 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_generate_parameters 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_get_ex_new_index.3 b/secure/lib/libcrypto/man/DH_get_ex_new_index.3
index cf9baf1..79727c3 100644
--- a/secure/lib/libcrypto/man/DH_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/DH_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_get_ex_new_index 3"
-.TH DH_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_new.3 b/secure/lib/libcrypto/man/DH_new.3
index 064a94a..4c57bb5 100644
--- a/secure/lib/libcrypto/man/DH_new.3
+++ b/secure/lib/libcrypto/man/DH_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_new 3"
-.TH DH_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_set_method.3 b/secure/lib/libcrypto/man/DH_set_method.3
index 61ee98e..60eeec2 100644
--- a/secure/lib/libcrypto/man/DH_set_method.3
+++ b/secure/lib/libcrypto/man/DH_set_method.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_set_method 3"
-.TH DH_set_method 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_size.3 b/secure/lib/libcrypto/man/DH_size.3
index 020db13..1ee2f04 100644
--- a/secure/lib/libcrypto/man/DH_size.3
+++ b/secure/lib/libcrypto/man/DH_size.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_size 3"
-.TH DH_size 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DH_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_SIG_new.3 b/secure/lib/libcrypto/man/DSA_SIG_new.3
index eb6d5f1..598ddcb 100644
--- a/secure/lib/libcrypto/man/DSA_SIG_new.3
+++ b/secure/lib/libcrypto/man/DSA_SIG_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_SIG_new 3"
-.TH DSA_SIG_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_SIG_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_do_sign.3 b/secure/lib/libcrypto/man/DSA_do_sign.3
index 99a4669..504e25c 100644
--- a/secure/lib/libcrypto/man/DSA_do_sign.3
+++ b/secure/lib/libcrypto/man/DSA_do_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_do_sign 3"
-.TH DSA_do_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_do_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_dup_DH.3 b/secure/lib/libcrypto/man/DSA_dup_DH.3
index 3dd705e..053d61f 100644
--- a/secure/lib/libcrypto/man/DSA_dup_DH.3
+++ b/secure/lib/libcrypto/man/DSA_dup_DH.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_dup_DH 3"
-.TH DSA_dup_DH 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_dup_DH 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_generate_key.3 b/secure/lib/libcrypto/man/DSA_generate_key.3
index b9570ea..b8f8afb 100644
--- a/secure/lib/libcrypto/man/DSA_generate_key.3
+++ b/secure/lib/libcrypto/man/DSA_generate_key.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_generate_key 3"
-.TH DSA_generate_key 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_generate_parameters.3 b/secure/lib/libcrypto/man/DSA_generate_parameters.3
index 3aeecf1..d90a954 100644
--- a/secure/lib/libcrypto/man/DSA_generate_parameters.3
+++ b/secure/lib/libcrypto/man/DSA_generate_parameters.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_generate_parameters 3"
-.TH DSA_generate_parameters 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_generate_parameters 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 b/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
index 1bd5264..13ebc02 100644
--- a/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_get_ex_new_index 3"
-.TH DSA_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_new.3 b/secure/lib/libcrypto/man/DSA_new.3
index 63f4d7a..06f74c7 100644
--- a/secure/lib/libcrypto/man/DSA_new.3
+++ b/secure/lib/libcrypto/man/DSA_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_new 3"
-.TH DSA_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_set_method.3 b/secure/lib/libcrypto/man/DSA_set_method.3
index f8520dd..fedd0a6 100644
--- a/secure/lib/libcrypto/man/DSA_set_method.3
+++ b/secure/lib/libcrypto/man/DSA_set_method.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_set_method 3"
-.TH DSA_set_method 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_sign.3 b/secure/lib/libcrypto/man/DSA_sign.3
index 20aecab..7ca08c9 100644
--- a/secure/lib/libcrypto/man/DSA_sign.3
+++ b/secure/lib/libcrypto/man/DSA_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_sign 3"
-.TH DSA_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_size.3 b/secure/lib/libcrypto/man/DSA_size.3
index c556c71..aed21f7 100644
--- a/secure/lib/libcrypto/man/DSA_size.3
+++ b/secure/lib/libcrypto/man/DSA_size.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_size 3"
-.TH DSA_size 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_GET_LIB.3 b/secure/lib/libcrypto/man/ERR_GET_LIB.3
index eab80a6..fdac146 100644
--- a/secure/lib/libcrypto/man/ERR_GET_LIB.3
+++ b/secure/lib/libcrypto/man/ERR_GET_LIB.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_GET_LIB 3"
-.TH ERR_GET_LIB 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_GET_LIB 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_clear_error.3 b/secure/lib/libcrypto/man/ERR_clear_error.3
index 670d206..85435a6 100644
--- a/secure/lib/libcrypto/man/ERR_clear_error.3
+++ b/secure/lib/libcrypto/man/ERR_clear_error.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_clear_error 3"
-.TH ERR_clear_error 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_clear_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_error_string.3 b/secure/lib/libcrypto/man/ERR_error_string.3
index e29d933..9c0588a 100644
--- a/secure/lib/libcrypto/man/ERR_error_string.3
+++ b/secure/lib/libcrypto/man/ERR_error_string.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_error_string 3"
-.TH ERR_error_string 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_error_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_get_error.3 b/secure/lib/libcrypto/man/ERR_get_error.3
index c82d9c7..75170e0 100644
--- a/secure/lib/libcrypto/man/ERR_get_error.3
+++ b/secure/lib/libcrypto/man/ERR_get_error.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_get_error 3"
-.TH ERR_get_error 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 b/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
index 2947c96..dbcb632 100644
--- a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
+++ b/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_load_crypto_strings 3"
-.TH ERR_load_crypto_strings 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_load_crypto_strings 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_load_strings.3 b/secure/lib/libcrypto/man/ERR_load_strings.3
index 5fc34d5..1b2eb3c 100644
--- a/secure/lib/libcrypto/man/ERR_load_strings.3
+++ b/secure/lib/libcrypto/man/ERR_load_strings.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_load_strings 3"
-.TH ERR_load_strings 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_load_strings 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_print_errors.3 b/secure/lib/libcrypto/man/ERR_print_errors.3
index 6135132..193457b 100644
--- a/secure/lib/libcrypto/man/ERR_print_errors.3
+++ b/secure/lib/libcrypto/man/ERR_print_errors.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_print_errors 3"
-.TH ERR_print_errors 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_print_errors 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_put_error.3 b/secure/lib/libcrypto/man/ERR_put_error.3
index ad95314..cd84abf 100644
--- a/secure/lib/libcrypto/man/ERR_put_error.3
+++ b/secure/lib/libcrypto/man/ERR_put_error.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_put_error 3"
-.TH ERR_put_error 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_put_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_remove_state.3 b/secure/lib/libcrypto/man/ERR_remove_state.3
index 8f9716a..8ba7e8f 100644
--- a/secure/lib/libcrypto/man/ERR_remove_state.3
+++ b/secure/lib/libcrypto/man/ERR_remove_state.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_remove_state 3"
-.TH ERR_remove_state 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_remove_state 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_set_mark.3 b/secure/lib/libcrypto/man/ERR_set_mark.3
index e0aa667..7463b6d 100644
--- a/secure/lib/libcrypto/man/ERR_set_mark.3
+++ b/secure/lib/libcrypto/man/ERR_set_mark.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_set_mark 3"
-.TH ERR_set_mark 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERR_set_mark 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_BytesToKey.3 b/secure/lib/libcrypto/man/EVP_BytesToKey.3
index e07f3d3..4347d14 100644
--- a/secure/lib/libcrypto/man/EVP_BytesToKey.3
+++ b/secure/lib/libcrypto/man/EVP_BytesToKey.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_BytesToKey 3"
-.TH EVP_BytesToKey 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_BytesToKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestInit.3 b/secure/lib/libcrypto/man/EVP_DigestInit.3
index a22f9ee..504a333 100644
--- a/secure/lib/libcrypto/man/EVP_DigestInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestInit 3"
-.TH EVP_DigestInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_DigestInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestSignInit.3 b/secure/lib/libcrypto/man/EVP_DigestSignInit.3
index d88e8f4..f1343f4 100644
--- a/secure/lib/libcrypto/man/EVP_DigestSignInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestSignInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestSignInit 3"
-.TH EVP_DigestSignInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_DigestSignInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 b/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
index ec72af3..bd21874 100644
--- a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestVerifyInit 3"
-.TH EVP_DigestVerifyInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_DigestVerifyInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_EncryptInit.3 b/secure/lib/libcrypto/man/EVP_EncryptInit.3
index 9e38ba7..9fd9b0a 100644
--- a/secure/lib/libcrypto/man/EVP_EncryptInit.3
+++ b/secure/lib/libcrypto/man/EVP_EncryptInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_EncryptInit 3"
-.TH EVP_EncryptInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_EncryptInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_OpenInit.3 b/secure/lib/libcrypto/man/EVP_OpenInit.3
index 994f33b..52131a8 100644
--- a/secure/lib/libcrypto/man/EVP_OpenInit.3
+++ b/secure/lib/libcrypto/man/EVP_OpenInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_OpenInit 3"
-.TH EVP_OpenInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_OpenInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 b/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
index ed0f239..e5adbc4 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_CTX_ctrl 3"
-.TH EVP_PKEY_CTX_ctrl 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_CTX_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 b/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
index b3ce806..195eb9c 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_CTX_new 3"
-.TH EVP_PKEY_CTX_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 b/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
index a8610f6..e682a2f 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_cmp 3"
-.TH EVP_PKEY_cmp 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_cmp 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 b/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
index f8c6124..2f0417e 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_decrypt 3"
-.TH EVP_PKEY_decrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_derive.3 b/secure/lib/libcrypto/man/EVP_PKEY_derive.3
index 9ba3c87..5cf79de 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_derive.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_derive.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_derive 3"
-.TH EVP_PKEY_derive 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_derive 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 b/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
index 45a7bb5..68147e7 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_encrypt 3"
-.TH EVP_PKEY_encrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 b/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
index d7baaed..e031952 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_get_default_digest 3"
-.TH EVP_PKEY_get_default_digest 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_get_default_digest 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 b/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
index 9876ca2..f526733 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_keygen 3"
-.TH EVP_PKEY_keygen 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_keygen 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_new.3 b/secure/lib/libcrypto/man/EVP_PKEY_new.3
index 2915985..2a3f66b3 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_new.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_new 3"
-.TH EVP_PKEY_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 b/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
index 15fccb2..5ca0af9 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_print_private 3"
-.TH EVP_PKEY_print_private 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_print_private 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 b/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
index 7867f04..b0edc22 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_set1_RSA 3"
-.TH EVP_PKEY_set1_RSA 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_set1_RSA 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_sign.3 b/secure/lib/libcrypto/man/EVP_PKEY_sign.3
index b2546c5..8244cab 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_sign.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_sign 3"
-.TH EVP_PKEY_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify.3 b/secure/lib/libcrypto/man/EVP_PKEY_verify.3
index 3b7e9c2..e0ec309 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_verify.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_verify.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_verify 3"
-.TH EVP_PKEY_verify 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 b/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
index ff6c291..8ff8081 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_verify_recover 3"
-.TH EVP_PKEY_verify_recover 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_PKEY_verify_recover 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_SealInit.3 b/secure/lib/libcrypto/man/EVP_SealInit.3
index 90360a7..c8e68ef 100644
--- a/secure/lib/libcrypto/man/EVP_SealInit.3
+++ b/secure/lib/libcrypto/man/EVP_SealInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_SealInit 3"
-.TH EVP_SealInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_SealInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_SignInit.3 b/secure/lib/libcrypto/man/EVP_SignInit.3
index 81b65a6d..767a298 100644
--- a/secure/lib/libcrypto/man/EVP_SignInit.3
+++ b/secure/lib/libcrypto/man/EVP_SignInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_SignInit 3"
-.TH EVP_SignInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_SignInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_VerifyInit.3 b/secure/lib/libcrypto/man/EVP_VerifyInit.3
index b3ac2a2..a7aee83 100644
--- a/secure/lib/libcrypto/man/EVP_VerifyInit.3
+++ b/secure/lib/libcrypto/man/EVP_VerifyInit.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_VerifyInit 3"
-.TH EVP_VerifyInit 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EVP_VerifyInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OBJ_nid2obj.3 b/secure/lib/libcrypto/man/OBJ_nid2obj.3
index 3818446..5d6e94b 100644
--- a/secure/lib/libcrypto/man/OBJ_nid2obj.3
+++ b/secure/lib/libcrypto/man/OBJ_nid2obj.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OBJ_nid2obj 3"
-.TH OBJ_nid2obj 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OBJ_nid2obj 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_Applink.3 b/secure/lib/libcrypto/man/OPENSSL_Applink.3
index 16d8aed..1df9211 100644
--- a/secure/lib/libcrypto/man/OPENSSL_Applink.3
+++ b/secure/lib/libcrypto/man/OPENSSL_Applink.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_Applink 3"
-.TH OPENSSL_Applink 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL_Applink 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 b/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
index ccbf32a..286a252 100644
--- a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
+++ b/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_VERSION_NUMBER 3"
-.TH OPENSSL_VERSION_NUMBER 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL_VERSION_NUMBER 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_config.3 b/secure/lib/libcrypto/man/OPENSSL_config.3
index 12b3086..4607b68 100644
--- a/secure/lib/libcrypto/man/OPENSSL_config.3
+++ b/secure/lib/libcrypto/man/OPENSSL_config.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_config 3"
-.TH OPENSSL_config 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL_config 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 b/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
index 04395cf..48ae666 100644
--- a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
+++ b/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_ia32cap 3"
-.TH OPENSSL_ia32cap 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL_ia32cap 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 b/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
index 29cf323..de81330 100644
--- a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
+++ b/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_load_builtin_modules 3"
-.TH OPENSSL_load_builtin_modules 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL_load_builtin_modules 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 b/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
index 8a32af2..2572458 100644
--- a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
+++ b/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OpenSSL_add_all_algorithms 3"
-.TH OpenSSL_add_all_algorithms 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OpenSSL_add_all_algorithms 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 b/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
index 47ed7e6..27a8f54 100644
--- a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
+++ b/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PEM_write_bio_CMS_stream 3"
-.TH PEM_write_bio_CMS_stream 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PEM_write_bio_CMS_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 b/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
index 7c1f68cd..1ed5b5c 100644
--- a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
+++ b/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PEM_write_bio_PKCS7_stream 3"
-.TH PEM_write_bio_PKCS7_stream 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PEM_write_bio_PKCS7_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS12_create.3 b/secure/lib/libcrypto/man/PKCS12_create.3
index 22360a4..56e630b 100644
--- a/secure/lib/libcrypto/man/PKCS12_create.3
+++ b/secure/lib/libcrypto/man/PKCS12_create.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12_create 3"
-.TH PKCS12_create 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS12_create 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS12_parse.3 b/secure/lib/libcrypto/man/PKCS12_parse.3
index b572784..f3d8afb 100644
--- a/secure/lib/libcrypto/man/PKCS12_parse.3
+++ b/secure/lib/libcrypto/man/PKCS12_parse.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12_parse 3"
-.TH PKCS12_parse 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS12_parse 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_decrypt.3 b/secure/lib/libcrypto/man/PKCS7_decrypt.3
index ebe751a..f7ad34e 100644
--- a/secure/lib/libcrypto/man/PKCS7_decrypt.3
+++ b/secure/lib/libcrypto/man/PKCS7_decrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_decrypt 3"
-.TH PKCS7_decrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_encrypt.3 b/secure/lib/libcrypto/man/PKCS7_encrypt.3
index d8519e1..2514a44 100644
--- a/secure/lib/libcrypto/man/PKCS7_encrypt.3
+++ b/secure/lib/libcrypto/man/PKCS7_encrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_encrypt 3"
-.TH PKCS7_encrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_sign.3 b/secure/lib/libcrypto/man/PKCS7_sign.3
index 271352d..9ed3d28 100644
--- a/secure/lib/libcrypto/man/PKCS7_sign.3
+++ b/secure/lib/libcrypto/man/PKCS7_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_sign 3"
-.TH PKCS7_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
index 1ba1493..f566b9e 100644
--- a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
+++ b/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_sign_add_signer 3"
-.TH PKCS7_sign_add_signer 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7_sign_add_signer 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_verify.3 b/secure/lib/libcrypto/man/PKCS7_verify.3
index 9e5afdc..0cf3476 100644
--- a/secure/lib/libcrypto/man/PKCS7_verify.3
+++ b/secure/lib/libcrypto/man/PKCS7_verify.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_verify 3"
-.TH PKCS7_verify 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_add.3 b/secure/lib/libcrypto/man/RAND_add.3
index 43bed0c..154c415 100644
--- a/secure/lib/libcrypto/man/RAND_add.3
+++ b/secure/lib/libcrypto/man/RAND_add.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_add 3"
-.TH RAND_add 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_add 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_bytes.3 b/secure/lib/libcrypto/man/RAND_bytes.3
index a66177f..11f7f0a 100644
--- a/secure/lib/libcrypto/man/RAND_bytes.3
+++ b/secure/lib/libcrypto/man/RAND_bytes.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_bytes 3"
-.TH RAND_bytes 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_bytes 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_cleanup.3 b/secure/lib/libcrypto/man/RAND_cleanup.3
index 21f9392..2c9605c 100644
--- a/secure/lib/libcrypto/man/RAND_cleanup.3
+++ b/secure/lib/libcrypto/man/RAND_cleanup.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_cleanup 3"
-.TH RAND_cleanup 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_cleanup 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_egd.3 b/secure/lib/libcrypto/man/RAND_egd.3
index a131fbb..1ad9659 100644
--- a/secure/lib/libcrypto/man/RAND_egd.3
+++ b/secure/lib/libcrypto/man/RAND_egd.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_egd 3"
-.TH RAND_egd 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_egd 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_load_file.3 b/secure/lib/libcrypto/man/RAND_load_file.3
index 73757cc..72684da 100644
--- a/secure/lib/libcrypto/man/RAND_load_file.3
+++ b/secure/lib/libcrypto/man/RAND_load_file.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_load_file 3"
-.TH RAND_load_file 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_load_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_set_rand_method.3 b/secure/lib/libcrypto/man/RAND_set_rand_method.3
index dfbc1e4..833704d 100644
--- a/secure/lib/libcrypto/man/RAND_set_rand_method.3
+++ b/secure/lib/libcrypto/man/RAND_set_rand_method.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_set_rand_method 3"
-.TH RAND_set_rand_method 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND_set_rand_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_blinding_on.3 b/secure/lib/libcrypto/man/RSA_blinding_on.3
index 42ef106..596073e 100644
--- a/secure/lib/libcrypto/man/RSA_blinding_on.3
+++ b/secure/lib/libcrypto/man/RSA_blinding_on.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_blinding_on 3"
-.TH RSA_blinding_on 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_blinding_on 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_check_key.3 b/secure/lib/libcrypto/man/RSA_check_key.3
index 2ae54f6..f18ef96 100644
--- a/secure/lib/libcrypto/man/RSA_check_key.3
+++ b/secure/lib/libcrypto/man/RSA_check_key.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_check_key 3"
-.TH RSA_check_key 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_check_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_generate_key.3 b/secure/lib/libcrypto/man/RSA_generate_key.3
index 9d16c21..1150ba2 100644
--- a/secure/lib/libcrypto/man/RSA_generate_key.3
+++ b/secure/lib/libcrypto/man/RSA_generate_key.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_generate_key 3"
-.TH RSA_generate_key 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 b/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
index f83aaa9..a670327 100644
--- a/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_get_ex_new_index 3"
-.TH RSA_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_new.3 b/secure/lib/libcrypto/man/RSA_new.3
index 0a6bfab..369d485 100644
--- a/secure/lib/libcrypto/man/RSA_new.3
+++ b/secure/lib/libcrypto/man/RSA_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_new 3"
-.TH RSA_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 b/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
index b109d58..1dd2e33 100644
--- a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
+++ b/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_padding_add_PKCS1_type_1 3"
-.TH RSA_padding_add_PKCS1_type_1 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_padding_add_PKCS1_type_1 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_print.3 b/secure/lib/libcrypto/man/RSA_print.3
index f6fd9b6..102df9b 100644
--- a/secure/lib/libcrypto/man/RSA_print.3
+++ b/secure/lib/libcrypto/man/RSA_print.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_print 3"
-.TH RSA_print 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_print 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_private_encrypt.3 b/secure/lib/libcrypto/man/RSA_private_encrypt.3
index e0baf93..29eaba8 100644
--- a/secure/lib/libcrypto/man/RSA_private_encrypt.3
+++ b/secure/lib/libcrypto/man/RSA_private_encrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_private_encrypt 3"
-.TH RSA_private_encrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_private_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_public_encrypt.3 b/secure/lib/libcrypto/man/RSA_public_encrypt.3
index 6f71f1b..e67ae35a 100644
--- a/secure/lib/libcrypto/man/RSA_public_encrypt.3
+++ b/secure/lib/libcrypto/man/RSA_public_encrypt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_public_encrypt 3"
-.TH RSA_public_encrypt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_public_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_set_method.3 b/secure/lib/libcrypto/man/RSA_set_method.3
index 57258a9..4729751 100644
--- a/secure/lib/libcrypto/man/RSA_set_method.3
+++ b/secure/lib/libcrypto/man/RSA_set_method.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_set_method 3"
-.TH RSA_set_method 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_sign.3 b/secure/lib/libcrypto/man/RSA_sign.3
index 22070c0..0b1958a 100644
--- a/secure/lib/libcrypto/man/RSA_sign.3
+++ b/secure/lib/libcrypto/man/RSA_sign.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_sign 3"
-.TH RSA_sign 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 b/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
index 320ba35..6edefc6 100644
--- a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
+++ b/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_sign_ASN1_OCTET_STRING 3"
-.TH RSA_sign_ASN1_OCTET_STRING 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_sign_ASN1_OCTET_STRING 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_size.3 b/secure/lib/libcrypto/man/RSA_size.3
index 003f1b2..7818195 100644
--- a/secure/lib/libcrypto/man/RSA_size.3
+++ b/secure/lib/libcrypto/man/RSA_size.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_size 3"
-.TH RSA_size 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_read_CMS.3 b/secure/lib/libcrypto/man/SMIME_read_CMS.3
index f32e000..52a8d11 100644
--- a/secure/lib/libcrypto/man/SMIME_read_CMS.3
+++ b/secure/lib/libcrypto/man/SMIME_read_CMS.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_read_CMS 3"
-.TH SMIME_read_CMS 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SMIME_read_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 b/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
index e989e9a..b4a4f10 100644
--- a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
+++ b/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_read_PKCS7 3"
-.TH SMIME_read_PKCS7 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SMIME_read_PKCS7 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_write_CMS.3 b/secure/lib/libcrypto/man/SMIME_write_CMS.3
index bf99bc3..c09066f 100644
--- a/secure/lib/libcrypto/man/SMIME_write_CMS.3
+++ b/secure/lib/libcrypto/man/SMIME_write_CMS.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_write_CMS 3"
-.TH SMIME_write_CMS 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SMIME_write_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 b/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
index 53a56a9..3eb753e 100644
--- a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
+++ b/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_write_PKCS7 3"
-.TH SMIME_write_PKCS7 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SMIME_write_PKCS7 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 b/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
index d2f2201..cfbc283 100644
--- a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
+++ b/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_ENTRY_get_object 3"
-.TH X509_NAME_ENTRY_get_object 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_NAME_ENTRY_get_object 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 b/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
index b09ad9a..394138b 100644
--- a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
+++ b/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_add_entry_by_txt 3"
-.TH X509_NAME_add_entry_by_txt 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_NAME_add_entry_by_txt 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 b/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
index 7e6e431..5c10c9f 100644
--- a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
+++ b/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_get_index_by_NID 3"
-.TH X509_NAME_get_index_by_NID 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_NAME_get_index_by_NID 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_print_ex.3 b/secure/lib/libcrypto/man/X509_NAME_print_ex.3
index d0caf7b..596d213 100644
--- a/secure/lib/libcrypto/man/X509_NAME_print_ex.3
+++ b/secure/lib/libcrypto/man/X509_NAME_print_ex.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_print_ex 3"
-.TH X509_NAME_print_ex 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_NAME_print_ex 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
index 5a5c162..1fb0090 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_get_error 3"
-.TH X509_STORE_CTX_get_error 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_STORE_CTX_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
index e1458a5..f1603c9 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_get_ex_new_index 3"
-.TH X509_STORE_CTX_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_STORE_CTX_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
index 58caefb..fea612b 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_new 3"
-.TH X509_STORE_CTX_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_STORE_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
index 9884656..3c49c71 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_set_verify_cb 3"
-.TH X509_STORE_CTX_set_verify_cb 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_STORE_CTX_set_verify_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 b/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
index 931917e..6a3e736 100644
--- a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
+++ b/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_set_verify_cb_func 3"
-.TH X509_STORE_set_verify_cb_func 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_STORE_set_verify_cb_func 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 b/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
index 4bc4952..d19f288 100644
--- a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
+++ b/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_VERIFY_PARAM_set_flags 3"
-.TH X509_VERIFY_PARAM_set_flags 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_VERIFY_PARAM_set_flags 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -267,6 +267,12 @@ issuer checks. It is \fBnot\fR needed unless you are logging certificate
verification. If this flag is set then additional status codes will be sent
to the verification callback and it \fBmust\fR be prepared to handle such cases
without assuming they are hard errors.
+.PP
+The \fBX509_V_FLAG_NO_ALT_CHAINS\fR flag suppresses checking for alternative
+chains. By default, when building a certificate chain, if the first certificate
+chain found is not trusted, then OpenSSL will continue to check to see if an
+alternative chain can be found that is trusted. With this flag set the behaviour
+will match that of OpenSSL versions prior to 1.0.1n and 1.0.2b.
.SH "NOTES"
.IX Header "NOTES"
The above functions should be used to manipulate verification parameters
@@ -298,4 +304,4 @@ connections associated with an \fB\s-1SSL_CTX\s0\fR structure \fBctx\fR:
\&\fIX509_verify_cert\fR\|(3)
.SH "HISTORY"
.IX Header "HISTORY"
-\&\s-1TBA\s0
+The \fBX509_V_FLAG_NO_ALT_CHAINS\fR flag was added in OpenSSL 1.0.1n and 1.0.2b
diff --git a/secure/lib/libcrypto/man/X509_new.3 b/secure/lib/libcrypto/man/X509_new.3
index 488ef7b..aa187ba 100644
--- a/secure/lib/libcrypto/man/X509_new.3
+++ b/secure/lib/libcrypto/man/X509_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_new 3"
-.TH X509_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_verify_cert.3 b/secure/lib/libcrypto/man/X509_verify_cert.3
index 4b3de8d..42d1d87 100644
--- a/secure/lib/libcrypto/man/X509_verify_cert.3
+++ b/secure/lib/libcrypto/man/X509_verify_cert.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_verify_cert 3"
-.TH X509_verify_cert 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509_verify_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/bio.3 b/secure/lib/libcrypto/man/bio.3
index b8e57ad..ce2396d 100644
--- a/secure/lib/libcrypto/man/bio.3
+++ b/secure/lib/libcrypto/man/bio.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bio 3"
-.TH bio 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/blowfish.3 b/secure/lib/libcrypto/man/blowfish.3
index ac91199..ccd2c6f 100644
--- a/secure/lib/libcrypto/man/blowfish.3
+++ b/secure/lib/libcrypto/man/blowfish.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "blowfish 3"
-.TH blowfish 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH blowfish 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/bn.3 b/secure/lib/libcrypto/man/bn.3
index 75ff5e1..01b6820 100644
--- a/secure/lib/libcrypto/man/bn.3
+++ b/secure/lib/libcrypto/man/bn.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bn 3"
-.TH bn 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH bn 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/bn_internal.3 b/secure/lib/libcrypto/man/bn_internal.3
index f353f19..4701ad9 100644
--- a/secure/lib/libcrypto/man/bn_internal.3
+++ b/secure/lib/libcrypto/man/bn_internal.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bn_internal 3"
-.TH bn_internal 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH bn_internal 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/buffer.3 b/secure/lib/libcrypto/man/buffer.3
index 800b6a4..995d3e9 100644
--- a/secure/lib/libcrypto/man/buffer.3
+++ b/secure/lib/libcrypto/man/buffer.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "buffer 3"
-.TH buffer 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH buffer 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/crypto.3 b/secure/lib/libcrypto/man/crypto.3
index 0767acf..998891d 100644
--- a/secure/lib/libcrypto/man/crypto.3
+++ b/secure/lib/libcrypto/man/crypto.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "crypto 3"
-.TH crypto 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH crypto 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 b/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
index 4736f53..d4e49c9 100644
--- a/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
+++ b/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_ASN1_OBJECT 3"
-.TH d2i_ASN1_OBJECT 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_ASN1_OBJECT 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3 b/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
index 21abe69..2818e82 100644
--- a/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
+++ b/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_CMS_ContentInfo 3"
-.TH d2i_CMS_ContentInfo 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_CMS_ContentInfo 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_DHparams.3 b/secure/lib/libcrypto/man/d2i_DHparams.3
index db5b4da..6b44a33 100644
--- a/secure/lib/libcrypto/man/d2i_DHparams.3
+++ b/secure/lib/libcrypto/man/d2i_DHparams.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_DHparams 3"
-.TH d2i_DHparams 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_DHparams 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 b/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
index 1d834fa..8fb4f42 100644
--- a/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
+++ b/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_DSAPublicKey 3"
-.TH d2i_DSAPublicKey 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_DSAPublicKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_ECPrivateKey.3 b/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
index 52406fc..431e7e0 100644
--- a/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
+++ b/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_ECPrivateKey 3"
-.TH d2i_ECPrivateKey 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_ECPrivateKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 b/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
index 23807f6..91d4936 100644
--- a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
+++ b/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_PKCS8PrivateKey 3"
-.TH d2i_PKCS8PrivateKey 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_PKCS8PrivateKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 b/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
index 57c7c1a..519d9d1 100644
--- a/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
+++ b/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_RSAPublicKey 3"
-.TH d2i_RSAPublicKey 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_RSAPublicKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509.3 b/secure/lib/libcrypto/man/d2i_X509.3
index e5f63a8..8f13b46 100644
--- a/secure/lib/libcrypto/man/d2i_X509.3
+++ b/secure/lib/libcrypto/man/d2i_X509.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509 3"
-.TH d2i_X509 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 b/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
index cb32b70..b83b0af 100644
--- a/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
+++ b/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_ALGOR 3"
-.TH d2i_X509_ALGOR 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509_ALGOR 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_CRL.3 b/secure/lib/libcrypto/man/d2i_X509_CRL.3
index af0cbcc..fc02264 100644
--- a/secure/lib/libcrypto/man/d2i_X509_CRL.3
+++ b/secure/lib/libcrypto/man/d2i_X509_CRL.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_CRL 3"
-.TH d2i_X509_CRL 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509_CRL 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_NAME.3 b/secure/lib/libcrypto/man/d2i_X509_NAME.3
index f93ed16..1d953f2 100644
--- a/secure/lib/libcrypto/man/d2i_X509_NAME.3
+++ b/secure/lib/libcrypto/man/d2i_X509_NAME.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_NAME 3"
-.TH d2i_X509_NAME 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509_NAME 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_REQ.3 b/secure/lib/libcrypto/man/d2i_X509_REQ.3
index c88463a..ede040a 100644
--- a/secure/lib/libcrypto/man/d2i_X509_REQ.3
+++ b/secure/lib/libcrypto/man/d2i_X509_REQ.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_REQ 3"
-.TH d2i_X509_REQ 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509_REQ 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_SIG.3 b/secure/lib/libcrypto/man/d2i_X509_SIG.3
index efac791..4afe19b 100644
--- a/secure/lib/libcrypto/man/d2i_X509_SIG.3
+++ b/secure/lib/libcrypto/man/d2i_X509_SIG.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_SIG 3"
-.TH d2i_X509_SIG 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_X509_SIG 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/des.3 b/secure/lib/libcrypto/man/des.3
index 97a1a57..eb704b4 100644
--- a/secure/lib/libcrypto/man/des.3
+++ b/secure/lib/libcrypto/man/des.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "des 3"
-.TH des 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH des 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/dh.3 b/secure/lib/libcrypto/man/dh.3
index 11c203b..659fd6b 100644
--- a/secure/lib/libcrypto/man/dh.3
+++ b/secure/lib/libcrypto/man/dh.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "dh 3"
-.TH dh 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH dh 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/dsa.3 b/secure/lib/libcrypto/man/dsa.3
index 45b843d..1a723b2 100644
--- a/secure/lib/libcrypto/man/dsa.3
+++ b/secure/lib/libcrypto/man/dsa.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "dsa 3"
-.TH dsa 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH dsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ecdsa.3 b/secure/lib/libcrypto/man/ecdsa.3
index 2ef80ab..1d978e4 100644
--- a/secure/lib/libcrypto/man/ecdsa.3
+++ b/secure/lib/libcrypto/man/ecdsa.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ecdsa 3"
-.TH ecdsa 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ecdsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/engine.3 b/secure/lib/libcrypto/man/engine.3
index cf1f60b..f7f4ef1 100644
--- a/secure/lib/libcrypto/man/engine.3
+++ b/secure/lib/libcrypto/man/engine.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "engine 3"
-.TH engine 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH engine 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/err.3 b/secure/lib/libcrypto/man/err.3
index 2e6ed82..a825444 100644
--- a/secure/lib/libcrypto/man/err.3
+++ b/secure/lib/libcrypto/man/err.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "err 3"
-.TH err 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH err 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/evp.3 b/secure/lib/libcrypto/man/evp.3
index fd783a9..8de15fc 100644
--- a/secure/lib/libcrypto/man/evp.3
+++ b/secure/lib/libcrypto/man/evp.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "evp 3"
-.TH evp 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH evp 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/hmac.3 b/secure/lib/libcrypto/man/hmac.3
index 3dde3c5..a57a3bc 100644
--- a/secure/lib/libcrypto/man/hmac.3
+++ b/secure/lib/libcrypto/man/hmac.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "hmac 3"
-.TH hmac 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH hmac 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 b/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
index d57687f..14cfb92 100644
--- a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
+++ b/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "i2d_CMS_bio_stream 3"
-.TH i2d_CMS_bio_stream 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH i2d_CMS_bio_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 b/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
index 2f53509..512c300 100644
--- a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
+++ b/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "i2d_PKCS7_bio_stream 3"
-.TH i2d_PKCS7_bio_stream 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH i2d_PKCS7_bio_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/lh_stats.3 b/secure/lib/libcrypto/man/lh_stats.3
index 695be74..9b367be 100644
--- a/secure/lib/libcrypto/man/lh_stats.3
+++ b/secure/lib/libcrypto/man/lh_stats.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "lh_stats 3"
-.TH lh_stats 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH lh_stats 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/lhash.3 b/secure/lib/libcrypto/man/lhash.3
index 0c53c25..734de5a 100644
--- a/secure/lib/libcrypto/man/lhash.3
+++ b/secure/lib/libcrypto/man/lhash.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "lhash 3"
-.TH lhash 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH lhash 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/md5.3 b/secure/lib/libcrypto/man/md5.3
index 22fdfe6..045fca3 100644
--- a/secure/lib/libcrypto/man/md5.3
+++ b/secure/lib/libcrypto/man/md5.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "md5 3"
-.TH md5 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH md5 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/mdc2.3 b/secure/lib/libcrypto/man/mdc2.3
index a52058b..51ff478 100644
--- a/secure/lib/libcrypto/man/mdc2.3
+++ b/secure/lib/libcrypto/man/mdc2.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "mdc2 3"
-.TH mdc2 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH mdc2 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/pem.3 b/secure/lib/libcrypto/man/pem.3
index 54fc0b4..36d9f3b 100644
--- a/secure/lib/libcrypto/man/pem.3
+++ b/secure/lib/libcrypto/man/pem.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,13 +133,35 @@
.\" ========================================================================
.\"
.IX Title "pem 3"
-.TH pem 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH pem 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
-PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey, PEM_write_PrivateKey, PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey, PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid, PEM_read_bio_PUBKEY, PEM_read_PUBKEY, PEM_write_bio_PUBKEY, PEM_write_PUBKEY, PEM_read_bio_RSAPrivateKey, PEM_read_RSAPrivateKey, PEM_write_bio_RSAPrivateKey, PEM_write_RSAPrivateKey, PEM_read_bio_RSAPublicKey, PEM_read_RSAPublicKey, PEM_write_bio_RSAPublicKey, PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY, PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey, PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey, PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY, PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams, PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams, PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams, PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509, PEM_read_bio_X509_AUX, PEM_read_X509_AUX, PEM_write_bio_X509_AUX, PEM_write_X509_AUX, PEM_read_bio_X509_REQ, PEM_read_X509_REQ, PEM_write_bio_X509_REQ, PEM_write_X509_REQ, PEM_write_bio_X509_REQ_NEW, PEM_write_X509_REQ_NEW, PEM_read_bio_X509_CRL, PEM_read_X509_CRL, PEM_write_bio_X509_CRL, PEM_write_X509_CRL, PEM_read_bio_PKCS7, PEM_read_PKCS7, PEM_write_bio_PKCS7, PEM_write_PKCS7, PEM_read_bio_NETSCAPE_CERT_SEQUENCE, PEM_read_NETSCAPE_CERT_SEQUENCE, PEM_write_bio_NETSCAPE_CERT_SEQUENCE, PEM_write_NETSCAPE_CERT_SEQUENCE \- PEM routines
+PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey,
+PEM_write_PrivateKey, PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey,
+PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid,
+PEM_read_bio_PUBKEY, PEM_read_PUBKEY, PEM_write_bio_PUBKEY, PEM_write_PUBKEY,
+PEM_read_bio_RSAPrivateKey, PEM_read_RSAPrivateKey,
+PEM_write_bio_RSAPrivateKey, PEM_write_RSAPrivateKey,
+PEM_read_bio_RSAPublicKey, PEM_read_RSAPublicKey, PEM_write_bio_RSAPublicKey,
+PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY,
+PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey,
+PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey,
+PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY,
+PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams,
+PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams,
+PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams,
+PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509,
+PEM_read_bio_X509_AUX, PEM_read_X509_AUX, PEM_write_bio_X509_AUX,
+PEM_write_X509_AUX, PEM_read_bio_X509_REQ, PEM_read_X509_REQ,
+PEM_write_bio_X509_REQ, PEM_write_X509_REQ, PEM_write_bio_X509_REQ_NEW,
+PEM_write_X509_REQ_NEW, PEM_read_bio_X509_CRL, PEM_read_X509_CRL,
+PEM_write_bio_X509_CRL, PEM_write_X509_CRL, PEM_read_bio_PKCS7, PEM_read_PKCS7,
+PEM_write_bio_PKCS7, PEM_write_PKCS7, PEM_read_bio_NETSCAPE_CERT_SEQUENCE,
+PEM_read_NETSCAPE_CERT_SEQUENCE, PEM_write_bio_NETSCAPE_CERT_SEQUENCE,
+PEM_write_NETSCAPE_CERT_SEQUENCE \- PEM routines
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
@@ -376,7 +398,8 @@ SubjectPublicKeyInfo structure and an error occurs if the public
key is not \s-1DSA.\s0
.PP
The \fBDSAparams\fR functions process \s-1DSA\s0 parameters using a \s-1DSA\s0
-structure. The parameters are encoded using a foobar structure.
+structure. The parameters are encoded using a Dss-Parms structure
+as defined in \s-1RFC2459.\s0
.PP
The \fBDHparams\fR functions process \s-1DH\s0 parameters using a \s-1DH\s0
structure. The parameters are encoded using a PKCS#3 DHparameter
diff --git a/secure/lib/libcrypto/man/rand.3 b/secure/lib/libcrypto/man/rand.3
index 12906f1..c7e7897 100644
--- a/secure/lib/libcrypto/man/rand.3
+++ b/secure/lib/libcrypto/man/rand.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rand 3"
-.TH rand 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH rand 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/rc4.3 b/secure/lib/libcrypto/man/rc4.3
index 4afd32d..b6db734 100644
--- a/secure/lib/libcrypto/man/rc4.3
+++ b/secure/lib/libcrypto/man/rc4.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rc4 3"
-.TH rc4 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH rc4 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ripemd.3 b/secure/lib/libcrypto/man/ripemd.3
index 42b9d51..4475985 100644
--- a/secure/lib/libcrypto/man/ripemd.3
+++ b/secure/lib/libcrypto/man/ripemd.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ripemd 3"
-.TH ripemd 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ripemd 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/rsa.3 b/secure/lib/libcrypto/man/rsa.3
index a129469..5028f95 100644
--- a/secure/lib/libcrypto/man/rsa.3
+++ b/secure/lib/libcrypto/man/rsa.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rsa 3"
-.TH rsa 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH rsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/sha.3 b/secure/lib/libcrypto/man/sha.3
index 1895ffe..5b54c81 100644
--- a/secure/lib/libcrypto/man/sha.3
+++ b/secure/lib/libcrypto/man/sha.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "sha 3"
-.TH sha 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH sha 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/threads.3 b/secure/lib/libcrypto/man/threads.3
index 1133b50..05ffc9d 100644
--- a/secure/lib/libcrypto/man/threads.3
+++ b/secure/lib/libcrypto/man/threads.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "threads 3"
-.TH threads 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH threads 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ui.3 b/secure/lib/libcrypto/man/ui.3
index 4a30de4..4845afd 100644
--- a/secure/lib/libcrypto/man/ui.3
+++ b/secure/lib/libcrypto/man/ui.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ui 3"
-.TH ui 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ui 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ui_compat.3 b/secure/lib/libcrypto/man/ui_compat.3
index 9fb7b8d..69ee06f 100644
--- a/secure/lib/libcrypto/man/ui_compat.3
+++ b/secure/lib/libcrypto/man/ui_compat.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ui_compat 3"
-.TH ui_compat 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ui_compat 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/x509.3 b/secure/lib/libcrypto/man/x509.3
index 94183f5..83911c7 100644
--- a/secure/lib/libcrypto/man/x509.3
+++ b/secure/lib/libcrypto/man/x509.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "x509 3"
-.TH x509 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH x509 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssh/Makefile.depend b/secure/lib/libssh/Makefile.depend
new file mode 100644
index 0000000..fbf95e5
--- /dev/null
+++ b/secure/lib/libssh/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libssl/Makefile.depend b/secure/lib/libssl/Makefile.depend
new file mode 100644
index 0000000..5d73f97
--- /dev/null
+++ b/secure/lib/libssl/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libssl/man/SSL_CIPHER_get_name.3 b/secure/lib/libssl/man/SSL_CIPHER_get_name.3
index f69ccfb..e4779fc 100644
--- a/secure/lib/libssl/man/SSL_CIPHER_get_name.3
+++ b/secure/lib/libssl/man/SSL_CIPHER_get_name.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CIPHER_get_name 3"
-.TH SSL_CIPHER_get_name 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CIPHER_get_name 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 b/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
index 7d89651..3bd7acf 100644
--- a/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
+++ b/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_COMP_add_compression_method 3"
-.TH SSL_COMP_add_compression_method 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_COMP_add_compression_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 b/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
index dc94ce2..c044866 100644
--- a/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
+++ b/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_add_extra_chain_cert 3"
-.TH SSL_CTX_add_extra_chain_cert 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_add_extra_chain_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_add_session.3 b/secure/lib/libssl/man/SSL_CTX_add_session.3
index 1d6597e..b6efc34 100644
--- a/secure/lib/libssl/man/SSL_CTX_add_session.3
+++ b/secure/lib/libssl/man/SSL_CTX_add_session.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_add_session 3"
-.TH SSL_CTX_add_session 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_add_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_ctrl.3 b/secure/lib/libssl/man/SSL_CTX_ctrl.3
index f04af7d..b89fcc1 100644
--- a/secure/lib/libssl/man/SSL_CTX_ctrl.3
+++ b/secure/lib/libssl/man/SSL_CTX_ctrl.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_ctrl 3"
-.TH SSL_CTX_ctrl 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 b/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
index 7998fe9..5b1f2c0 100644
--- a/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
+++ b/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_flush_sessions 3"
-.TH SSL_CTX_flush_sessions 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_flush_sessions 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_free.3 b/secure/lib/libssl/man/SSL_CTX_free.3
index 3a1f10d..812627d 100644
--- a/secure/lib/libssl/man/SSL_CTX_free.3
+++ b/secure/lib/libssl/man/SSL_CTX_free.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_free 3"
-.TH SSL_CTX_free 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
index 7bd322d..627bdb4 100644
--- a/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_get_ex_new_index 3"
-.TH SSL_CTX_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 b/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
index f14c8ab..4c7c027 100644
--- a/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_get_verify_mode 3"
-.TH SSL_CTX_get_verify_mode 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_get_verify_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 b/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
index 132bf20..9d405ab 100644
--- a/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
+++ b/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_load_verify_locations 3"
-.TH SSL_CTX_load_verify_locations 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_load_verify_locations 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_new.3 b/secure/lib/libssl/man/SSL_CTX_new.3
index 937c857..1ada6ba 100644
--- a/secure/lib/libssl/man/SSL_CTX_new.3
+++ b/secure/lib/libssl/man/SSL_CTX_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_new 3"
-.TH SSL_CTX_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_number.3 b/secure/lib/libssl/man/SSL_CTX_sess_number.3
index 4567fec..b797083 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_number.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_number.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_number 3"
-.TH SSL_CTX_sess_number 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_sess_number 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 b/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
index 3a5196f..d6849f2 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_set_cache_size 3"
-.TH SSL_CTX_sess_set_cache_size 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_sess_set_cache_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 b/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
index e112111..4473e05 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_set_get_cb 3"
-.TH SSL_CTX_sess_set_get_cb 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_sess_set_get_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sessions.3 b/secure/lib/libssl/man/SSL_CTX_sessions.3
index 40e1d79..20e25ee 100644
--- a/secure/lib/libssl/man/SSL_CTX_sessions.3
+++ b/secure/lib/libssl/man/SSL_CTX_sessions.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sessions 3"
-.TH SSL_CTX_sessions 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_sessions 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 b/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
index 561c2ad..6bbe536 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cert_store 3"
-.TH SSL_CTX_set_cert_store 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_cert_store 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
index af153fd..2eb7d6d 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cert_verify_callback 3"
-.TH SSL_CTX_set_cert_verify_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_cert_verify_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 b/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
index 94ea8f9..02929e4 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cipher_list 3"
-.TH SSL_CTX_set_cipher_list 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_cipher_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 b/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
index 04460df..8664979 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_client_CA_list 3"
-.TH SSL_CTX_set_client_CA_list 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_client_CA_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
index 429a587..278c735 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_client_cert_cb 3"
-.TH SSL_CTX_set_client_cert_cb 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_client_cert_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
index 4c7c6d8..69c1b1f 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_default_passwd_cb 3"
-.TH SSL_CTX_set_default_passwd_cb 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_default_passwd_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 b/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
index bc58395..2e9b69a 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_generate_session_id 3"
-.TH SSL_CTX_set_generate_session_id 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_generate_session_id 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
index 3c110ec..feae479 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_info_callback 3"
-.TH SSL_CTX_set_info_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_info_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 b/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
index 4394128..6595ef7 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_max_cert_list 3"
-.TH SSL_CTX_set_max_cert_list 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_max_cert_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_mode.3 b/secure/lib/libssl/man/SSL_CTX_set_mode.3
index c14c1d9..121be12 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_mode.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_mode 3"
-.TH SSL_CTX_set_mode 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
index d36e01f..1fb3bf1 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_msg_callback 3"
-.TH SSL_CTX_set_msg_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_msg_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_options.3 b/secure/lib/libssl/man/SSL_CTX_set_options.3
index 627ff1b..c5165cb 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_options.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_options.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_options 3"
-.TH SSL_CTX_set_options 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_options 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
index 67d6640..d321b07 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_psk_client_callback 3"
-.TH SSL_CTX_set_psk_client_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_psk_client_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 b/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
index 1c63297..d9048f2 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_quiet_shutdown 3"
-.TH SSL_CTX_set_quiet_shutdown 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_quiet_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3 b/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
index 85f724a..00a66c6 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_read_ahead 3"
-.TH SSL_CTX_set_read_ahead 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_read_ahead 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 b/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
index d82f1ea..7c3c9eb 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_session_cache_mode 3"
-.TH SSL_CTX_set_session_cache_mode 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_session_cache_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 b/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
index 901dd82..aaf292e 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_session_id_context 3"
-.TH SSL_CTX_set_session_id_context 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_session_id_context 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 b/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
index 225ef46..96f48fc 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_ssl_version 3"
-.TH SSL_CTX_set_ssl_version 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_ssl_version 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_timeout.3 b/secure/lib/libssl/man/SSL_CTX_set_timeout.3
index 2ead376..a202e2f 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_timeout.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_timeout.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_timeout 3"
-.TH SSL_CTX_set_timeout 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_timeout 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
index bf73bd6..300efbf 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tlsext_ticket_key_cb 3"
-.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
index 4d80acd..62b1091 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tmp_dh_callback 3"
-.TH SSL_CTX_set_tmp_dh_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_tmp_dh_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -197,12 +197,12 @@ negotiation is being saved.
.PP
If \*(L"strong\*(R" primes were used to generate the \s-1DH\s0 parameters, it is not strictly
necessary to generate a new key for each handshake but it does improve forward
-secrecy. If it is not assured, that \*(L"strong\*(R" primes were used (see especially
-the section about \s-1DSA\s0 parameters below), \s-1SSL_OP_SINGLE_DH_USE\s0 must be used
-in order to prevent small subgroup attacks. Always using \s-1SSL_OP_SINGLE_DH_USE\s0
-has an impact on the computer time needed during negotiation, but it is not
-very large, so application authors/users should consider to always enable
-this option.
+secrecy. If it is not assured that \*(L"strong\*(R" primes were used,
+\&\s-1SSL_OP_SINGLE_DH_USE\s0 must be used in order to prevent small subgroup
+attacks. Always using \s-1SSL_OP_SINGLE_DH_USE\s0 has an impact on the
+computer time needed during negotiation, but it is not very large, so
+application authors/users should consider always enabling this option.
+The option is required to implement perfect forward secrecy (\s-1PFS\s0).
.PP
As generating \s-1DH\s0 parameters is extremely time consuming, an application
should not generate the parameters on the fly but supply the parameters.
@@ -210,82 +210,62 @@ should not generate the parameters on the fly but supply the parameters.
the negotiation. The risk in reusing \s-1DH\s0 parameters is that an attacker
may specialize on a very often used \s-1DH\s0 group. Applications should therefore
generate their own \s-1DH\s0 parameters during the installation process using the
-openssl \fIdhparam\fR\|(1) application. In order to reduce the computer
-time needed for this generation, it is possible to use \s-1DSA\s0 parameters
-instead (see \fIdhparam\fR\|(1)), but in this case \s-1SSL_OP_SINGLE_DH_USE\s0
-is mandatory.
+openssl \fIdhparam\fR\|(1) application. This application
+guarantees that \*(L"strong\*(R" primes are used.
.PP
-Application authors may compile in \s-1DH\s0 parameters. Files dh512.pem,
-dh1024.pem, dh2048.pem, and dh4096.pem in the 'apps' directory of current
+Files dh2048.pem, and dh4096.pem in the 'apps' directory of the current
version of the OpenSSL distribution contain the '\s-1SKIP\s0' \s-1DH\s0 parameters,
which use safe primes and were generated verifiably pseudo-randomly.
These files can be converted into C code using the \fB\-C\fR option of the
-\&\fIdhparam\fR\|(1) application.
-Authors may also generate their own set of parameters using
-\&\fIdhparam\fR\|(1), but a user may not be sure how the parameters were
-generated. The generation of \s-1DH\s0 parameters during installation is therefore
-recommended.
+\&\fIdhparam\fR\|(1) application. Generation of custom \s-1DH\s0
+parameters during installation should still be preferred to stop an
+attacker from specializing on a commonly used group. Files dh1024.pem
+and dh512.pem contain old parameters that must not be used by
+applications.
.PP
An application may either directly specify the \s-1DH\s0 parameters or
-can supply the \s-1DH\s0 parameters via a callback function. The callback approach
-has the advantage, that the callback may supply \s-1DH\s0 parameters for different
-key lengths.
+can supply the \s-1DH\s0 parameters via a callback function.
.PP
-The \fBtmp_dh_callback\fR is called with the \fBkeylength\fR needed and
-the \fBis_export\fR information. The \fBis_export\fR flag is set, when the
-ephemeral \s-1DH\s0 key exchange is performed with an export cipher.
+Previous versions of the callback used \fBis_export\fR and \fBkeylength\fR
+parameters to control parameter generation for export and non-export
+cipher suites. Modern servers that do not support export ciphersuites
+are advised to either use \fISSL_CTX_set_tmp_dh()\fR in combination with
+\&\s-1SSL_OP_SINGLE_DH_USE,\s0 or alternatively, use the callback but ignore
+\&\fBkeylength\fR and \fBis_export\fR and simply supply at least 2048\-bit
+parameters in the callback.
.SH "EXAMPLES"
.IX Header "EXAMPLES"
-Handle \s-1DH\s0 parameters for key lengths of 512 and 1024 bits. (Error handling
+Setup \s-1DH\s0 parameters with a key length of 2048 bits. (Error handling
partly left out.)
.PP
-.Vb 5
-\& ...
-\& /* Set up ephemeral DH stuff */
-\& DH *dh_512 = NULL;
-\& DH *dh_1024 = NULL;
-\& FILE *paramfile;
+.Vb 2
+\& Command\-line parameter generation:
+\& $ openssl dhparam \-out dh_param_2048.pem 2048
\&
+\& Code for setting up parameters during server initialization:
+\&
+\& ...
+\& SSL_CTX ctx = SSL_CTX_new();
\& ...
-\& /* "openssl dhparam \-out dh_param_512.pem \-2 512" */
-\& paramfile = fopen("dh_param_512.pem", "r");
+\&
+\& /* Set up ephemeral DH parameters. */
+\& DH *dh_2048 = NULL;
+\& FILE *paramfile;
+\& paramfile = fopen("dh_param_2048.pem", "r");
\& if (paramfile) {
-\& dh_512 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
+\& dh_2048 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
\& fclose(paramfile);
+\& } else {
+\& /* Error. */
\& }
-\& /* "openssl dhparam \-out dh_param_1024.pem \-2 1024" */
-\& paramfile = fopen("dh_param_1024.pem", "r");
-\& if (paramfile) {
-\& dh_1024 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
-\& fclose(paramfile);
+\& if (dh_2048 == NULL) {
+\& /* Error. */
\& }
-\& ...
-\&
-\& /* "openssl dhparam \-C \-2 512" etc... */
-\& DH *get_dh512() { ... }
-\& DH *get_dh1024() { ... }
-\&
-\& DH *tmp_dh_callback(SSL *s, int is_export, int keylength)
-\& {
-\& DH *dh_tmp=NULL;
-\&
-\& switch (keylength) {
-\& case 512:
-\& if (!dh_512)
-\& dh_512 = get_dh512();
-\& dh_tmp = dh_512;
-\& break;
-\& case 1024:
-\& if (!dh_1024)
-\& dh_1024 = get_dh1024();
-\& dh_tmp = dh_1024;
-\& break;
-\& default:
-\& /* Generating a key on the fly is very costly, so use what is there */
-\& setup_dh_parameters_like_above();
-\& }
-\& return(dh_tmp);
+\& if (SSL_CTX_set_tmp_dh(ctx, dh_2048) != 1) {
+\& /* Error. */
\& }
+\& SSL_CTX_set_options(ctx, SSL_OP_SINGLE_DH_USE);
+\& ...
.Ve
.SH "RETURN VALUES"
.IX Header "RETURN VALUES"
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
index 55bd191..1a40aa4 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tmp_rsa_callback 3"
-.TH SSL_CTX_set_tmp_rsa_callback 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_tmp_rsa_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_verify.3 b/secure/lib/libssl/man/SSL_CTX_set_verify.3
index 923446d..2a9a49c 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_verify.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_verify.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_verify 3"
-.TH SSL_CTX_set_verify 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_set_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_use_certificate.3 b/secure/lib/libssl/man/SSL_CTX_use_certificate.3
index 78ead25..e2d60a7 100644
--- a/secure/lib/libssl/man/SSL_CTX_use_certificate.3
+++ b/secure/lib/libssl/man/SSL_CTX_use_certificate.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_use_certificate 3"
-.TH SSL_CTX_use_certificate 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_use_certificate 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 b/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
index 7c5ea3b..1b6b7ef 100644
--- a/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
+++ b/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_use_psk_identity_hint 3"
-.TH SSL_CTX_use_psk_identity_hint 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_CTX_use_psk_identity_hint 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_free.3 b/secure/lib/libssl/man/SSL_SESSION_free.3
index 98b777b..01856bb 100644
--- a/secure/lib/libssl/man/SSL_SESSION_free.3
+++ b/secure/lib/libssl/man/SSL_SESSION_free.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_free 3"
-.TH SSL_SESSION_free 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_SESSION_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
index 1bdb354..482f6af 100644
--- a/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_get_ex_new_index 3"
-.TH SSL_SESSION_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_SESSION_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_get_time.3 b/secure/lib/libssl/man/SSL_SESSION_get_time.3
index 1076c8c..75d4694 100644
--- a/secure/lib/libssl/man/SSL_SESSION_get_time.3
+++ b/secure/lib/libssl/man/SSL_SESSION_get_time.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_get_time 3"
-.TH SSL_SESSION_get_time 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_SESSION_get_time 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_accept.3 b/secure/lib/libssl/man/SSL_accept.3
index 60d1284..da8fa29 100644
--- a/secure/lib/libssl/man/SSL_accept.3
+++ b/secure/lib/libssl/man/SSL_accept.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_accept 3"
-.TH SSL_accept 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_accept 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_alert_type_string.3 b/secure/lib/libssl/man/SSL_alert_type_string.3
index d75509f..1c5e1bc 100644
--- a/secure/lib/libssl/man/SSL_alert_type_string.3
+++ b/secure/lib/libssl/man/SSL_alert_type_string.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_alert_type_string 3"
-.TH SSL_alert_type_string 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_alert_type_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_clear.3 b/secure/lib/libssl/man/SSL_clear.3
index 309810d..258bda0 100644
--- a/secure/lib/libssl/man/SSL_clear.3
+++ b/secure/lib/libssl/man/SSL_clear.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_clear 3"
-.TH SSL_clear 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_clear 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_connect.3 b/secure/lib/libssl/man/SSL_connect.3
index abeba2d..c90c6fd 100644
--- a/secure/lib/libssl/man/SSL_connect.3
+++ b/secure/lib/libssl/man/SSL_connect.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_connect 3"
-.TH SSL_connect 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_connect 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_do_handshake.3 b/secure/lib/libssl/man/SSL_do_handshake.3
index 61ab31e..a4deaec 100644
--- a/secure/lib/libssl/man/SSL_do_handshake.3
+++ b/secure/lib/libssl/man/SSL_do_handshake.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_do_handshake 3"
-.TH SSL_do_handshake 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_do_handshake 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_free.3 b/secure/lib/libssl/man/SSL_free.3
index 7d5e22e..1611011 100644
--- a/secure/lib/libssl/man/SSL_free.3
+++ b/secure/lib/libssl/man/SSL_free.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_free 3"
-.TH SSL_free 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_SSL_CTX.3 b/secure/lib/libssl/man/SSL_get_SSL_CTX.3
index ec42719..9354f9d 100644
--- a/secure/lib/libssl/man/SSL_get_SSL_CTX.3
+++ b/secure/lib/libssl/man/SSL_get_SSL_CTX.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_SSL_CTX 3"
-.TH SSL_get_SSL_CTX 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_SSL_CTX 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ciphers.3 b/secure/lib/libssl/man/SSL_get_ciphers.3
index 4786c94..9111624 100644
--- a/secure/lib/libssl/man/SSL_get_ciphers.3
+++ b/secure/lib/libssl/man/SSL_get_ciphers.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ciphers 3"
-.TH SSL_get_ciphers 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_ciphers 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_client_CA_list.3 b/secure/lib/libssl/man/SSL_get_client_CA_list.3
index 38a1dc7..4c5b67d 100644
--- a/secure/lib/libssl/man/SSL_get_client_CA_list.3
+++ b/secure/lib/libssl/man/SSL_get_client_CA_list.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_client_CA_list 3"
-.TH SSL_get_client_CA_list 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_client_CA_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_current_cipher.3 b/secure/lib/libssl/man/SSL_get_current_cipher.3
index 13ddc98..5f369a9 100644
--- a/secure/lib/libssl/man/SSL_get_current_cipher.3
+++ b/secure/lib/libssl/man/SSL_get_current_cipher.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_current_cipher 3"
-.TH SSL_get_current_cipher 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_current_cipher 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_default_timeout.3 b/secure/lib/libssl/man/SSL_get_default_timeout.3
index 2c2e15d..554e1a4 100644
--- a/secure/lib/libssl/man/SSL_get_default_timeout.3
+++ b/secure/lib/libssl/man/SSL_get_default_timeout.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_default_timeout 3"
-.TH SSL_get_default_timeout 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_default_timeout 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_error.3 b/secure/lib/libssl/man/SSL_get_error.3
index dead724..d3e6f4b 100644
--- a/secure/lib/libssl/man/SSL_get_error.3
+++ b/secure/lib/libssl/man/SSL_get_error.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_error 3"
-.TH SSL_get_error 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 b/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
index 78035a7..b250de2 100644
--- a/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
+++ b/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ex_data_X509_STORE_CTX_idx 3"
-.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_get_ex_new_index.3
index 18cc8a3..a14e591 100644
--- a/secure/lib/libssl/man/SSL_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_get_ex_new_index.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ex_new_index 3"
-.TH SSL_get_ex_new_index 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_fd.3 b/secure/lib/libssl/man/SSL_get_fd.3
index 3ef8028..120b921 100644
--- a/secure/lib/libssl/man/SSL_get_fd.3
+++ b/secure/lib/libssl/man/SSL_get_fd.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_fd 3"
-.TH SSL_get_fd 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 b/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
index 71febc7..cc2aaa6 100644
--- a/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
+++ b/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_peer_cert_chain 3"
-.TH SSL_get_peer_cert_chain 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_peer_cert_chain 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_peer_certificate.3 b/secure/lib/libssl/man/SSL_get_peer_certificate.3
index fc00428..3c7d50a 100644
--- a/secure/lib/libssl/man/SSL_get_peer_certificate.3
+++ b/secure/lib/libssl/man/SSL_get_peer_certificate.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_peer_certificate 3"
-.TH SSL_get_peer_certificate 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_peer_certificate 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_psk_identity.3 b/secure/lib/libssl/man/SSL_get_psk_identity.3
index c0c1b70..eb88b5f 100644
--- a/secure/lib/libssl/man/SSL_get_psk_identity.3
+++ b/secure/lib/libssl/man/SSL_get_psk_identity.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_psk_identity 3"
-.TH SSL_get_psk_identity 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_psk_identity 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_rbio.3 b/secure/lib/libssl/man/SSL_get_rbio.3
index cb85024..858b3e6 100644
--- a/secure/lib/libssl/man/SSL_get_rbio.3
+++ b/secure/lib/libssl/man/SSL_get_rbio.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_rbio 3"
-.TH SSL_get_rbio 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_rbio 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_session.3 b/secure/lib/libssl/man/SSL_get_session.3
index 4ba0908..7504532 100644
--- a/secure/lib/libssl/man/SSL_get_session.3
+++ b/secure/lib/libssl/man/SSL_get_session.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_session 3"
-.TH SSL_get_session 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_verify_result.3 b/secure/lib/libssl/man/SSL_get_verify_result.3
index b5d6f94..26950d1 100644
--- a/secure/lib/libssl/man/SSL_get_verify_result.3
+++ b/secure/lib/libssl/man/SSL_get_verify_result.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_verify_result 3"
-.TH SSL_get_verify_result 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_verify_result 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_version.3 b/secure/lib/libssl/man/SSL_get_version.3
index c01e1cf..c9e2615 100644
--- a/secure/lib/libssl/man/SSL_get_version.3
+++ b/secure/lib/libssl/man/SSL_get_version.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_version 3"
-.TH SSL_get_version 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_get_version 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_library_init.3 b/secure/lib/libssl/man/SSL_library_init.3
index 30969d3..08be353 100644
--- a/secure/lib/libssl/man/SSL_library_init.3
+++ b/secure/lib/libssl/man/SSL_library_init.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_library_init 3"
-.TH SSL_library_init 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_library_init 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_load_client_CA_file.3 b/secure/lib/libssl/man/SSL_load_client_CA_file.3
index ebe51bf..f27423b 100644
--- a/secure/lib/libssl/man/SSL_load_client_CA_file.3
+++ b/secure/lib/libssl/man/SSL_load_client_CA_file.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_load_client_CA_file 3"
-.TH SSL_load_client_CA_file 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_load_client_CA_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_new.3 b/secure/lib/libssl/man/SSL_new.3
index 4459826..01cd691 100644
--- a/secure/lib/libssl/man/SSL_new.3
+++ b/secure/lib/libssl/man/SSL_new.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_new 3"
-.TH SSL_new 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_pending.3 b/secure/lib/libssl/man/SSL_pending.3
index 4eda613..00a8e7c 100644
--- a/secure/lib/libssl/man/SSL_pending.3
+++ b/secure/lib/libssl/man/SSL_pending.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_pending 3"
-.TH SSL_pending 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_pending 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_read.3 b/secure/lib/libssl/man/SSL_read.3
index 4a2fde0..159c937 100644
--- a/secure/lib/libssl/man/SSL_read.3
+++ b/secure/lib/libssl/man/SSL_read.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_read 3"
-.TH SSL_read 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_read 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_rstate_string.3 b/secure/lib/libssl/man/SSL_rstate_string.3
index 1a60a40..7f0dc6d 100644
--- a/secure/lib/libssl/man/SSL_rstate_string.3
+++ b/secure/lib/libssl/man/SSL_rstate_string.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_rstate_string 3"
-.TH SSL_rstate_string 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_rstate_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_session_reused.3 b/secure/lib/libssl/man/SSL_session_reused.3
index fdcd4f8..14d9290 100644
--- a/secure/lib/libssl/man/SSL_session_reused.3
+++ b/secure/lib/libssl/man/SSL_session_reused.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_session_reused 3"
-.TH SSL_session_reused 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_session_reused 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_bio.3 b/secure/lib/libssl/man/SSL_set_bio.3
index 8ada003..668d2a8 100644
--- a/secure/lib/libssl/man/SSL_set_bio.3
+++ b/secure/lib/libssl/man/SSL_set_bio.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_bio 3"
-.TH SSL_set_bio 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_connect_state.3 b/secure/lib/libssl/man/SSL_set_connect_state.3
index 20791d8..9754edd 100644
--- a/secure/lib/libssl/man/SSL_set_connect_state.3
+++ b/secure/lib/libssl/man/SSL_set_connect_state.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_connect_state 3"
-.TH SSL_set_connect_state 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_connect_state 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_fd.3 b/secure/lib/libssl/man/SSL_set_fd.3
index aa6a36d..70fdf61 100644
--- a/secure/lib/libssl/man/SSL_set_fd.3
+++ b/secure/lib/libssl/man/SSL_set_fd.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_fd 3"
-.TH SSL_set_fd 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_session.3 b/secure/lib/libssl/man/SSL_set_session.3
index 2276d78..70c6c8f 100644
--- a/secure/lib/libssl/man/SSL_set_session.3
+++ b/secure/lib/libssl/man/SSL_set_session.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_session 3"
-.TH SSL_set_session 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_shutdown.3 b/secure/lib/libssl/man/SSL_set_shutdown.3
index 874bac1..ce1aa20 100644
--- a/secure/lib/libssl/man/SSL_set_shutdown.3
+++ b/secure/lib/libssl/man/SSL_set_shutdown.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_shutdown 3"
-.TH SSL_set_shutdown 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_verify_result.3 b/secure/lib/libssl/man/SSL_set_verify_result.3
index 48739ba..fd97c53 100644
--- a/secure/lib/libssl/man/SSL_set_verify_result.3
+++ b/secure/lib/libssl/man/SSL_set_verify_result.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_verify_result 3"
-.TH SSL_set_verify_result 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_set_verify_result 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_shutdown.3 b/secure/lib/libssl/man/SSL_shutdown.3
index 036d2e7..e88abb8 100644
--- a/secure/lib/libssl/man/SSL_shutdown.3
+++ b/secure/lib/libssl/man/SSL_shutdown.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_shutdown 3"
-.TH SSL_shutdown 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_state_string.3 b/secure/lib/libssl/man/SSL_state_string.3
index cc6eab1..3be5052 100644
--- a/secure/lib/libssl/man/SSL_state_string.3
+++ b/secure/lib/libssl/man/SSL_state_string.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_state_string 3"
-.TH SSL_state_string 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_state_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_want.3 b/secure/lib/libssl/man/SSL_want.3
index 9b43446..d3c4343 100644
--- a/secure/lib/libssl/man/SSL_want.3
+++ b/secure/lib/libssl/man/SSL_want.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_want 3"
-.TH SSL_want 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_want 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_write.3 b/secure/lib/libssl/man/SSL_write.3
index f56625c..f51bff5 100644
--- a/secure/lib/libssl/man/SSL_write.3
+++ b/secure/lib/libssl/man/SSL_write.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_write 3"
-.TH SSL_write 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SSL_write 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/d2i_SSL_SESSION.3 b/secure/lib/libssl/man/d2i_SSL_SESSION.3
index 6d25af6..38cd9c4 100644
--- a/secure/lib/libssl/man/d2i_SSL_SESSION.3
+++ b/secure/lib/libssl/man/d2i_SSL_SESSION.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_SSL_SESSION 3"
-.TH d2i_SSL_SESSION 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH d2i_SSL_SESSION 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/ssl.3 b/secure/lib/libssl/man/ssl.3
index e84383f..9b18701 100644
--- a/secure/lib/libssl/man/ssl.3
+++ b/secure/lib/libssl/man/ssl.3
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ssl 3"
-.TH ssl 3 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ssl 3 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/libexec/sftp-server/Makefile.depend b/secure/libexec/sftp-server/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/libexec/sftp-server/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/libexec/ssh-keysign/Makefile.depend b/secure/libexec/ssh-keysign/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/libexec/ssh-keysign/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/libexec/ssh-pkcs11-helper/Makefile.depend b/secure/libexec/ssh-pkcs11-helper/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/libexec/ssh-pkcs11-helper/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/bdes/Makefile.depend b/secure/usr.bin/bdes/Makefile.depend
new file mode 100644
index 0000000..fc0b633
--- /dev/null
+++ b/secure/usr.bin/bdes/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/openssl/Makefile.depend b/secure/usr.bin/openssl/Makefile.depend
new file mode 100644
index 0000000..67e2d76
--- /dev/null
+++ b/secure/usr.bin/openssl/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/openssl/man/CA.pl.1 b/secure/usr.bin/openssl/man/CA.pl.1
index 87627d6..f5a1c3b 100644
--- a/secure/usr.bin/openssl/man/CA.pl.1
+++ b/secure/usr.bin/openssl/man/CA.pl.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CA.PL 1"
-.TH CA.PL 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CA.PL 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/asn1parse.1 b/secure/usr.bin/openssl/man/asn1parse.1
index afea978f..53ce6ba 100644
--- a/secure/usr.bin/openssl/man/asn1parse.1
+++ b/secure/usr.bin/openssl/man/asn1parse.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1PARSE 1"
-.TH ASN1PARSE 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ASN1PARSE 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/c_rehash.1 b/secure/usr.bin/openssl/man/c_rehash.1
index 0a34ccd..3ae822b 100644
--- a/secure/usr.bin/openssl/man/c_rehash.1
+++ b/secure/usr.bin/openssl/man/c_rehash.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "C_REHASH 1"
-.TH C_REHASH 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH C_REHASH 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ca.1 b/secure/usr.bin/openssl/man/ca.1
index 1697883..223171e 100644
--- a/secure/usr.bin/openssl/man/ca.1
+++ b/secure/usr.bin/openssl/man/ca.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CA 1"
-.TH CA 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CA 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ciphers.1 b/secure/usr.bin/openssl/man/ciphers.1
index f1e2e32..f3c9c51 100644
--- a/secure/usr.bin/openssl/man/ciphers.1
+++ b/secure/usr.bin/openssl/man/ciphers.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CIPHERS 1"
-.TH CIPHERS 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CIPHERS 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/cms.1 b/secure/usr.bin/openssl/man/cms.1
index 55d7cf1..36355da 100644
--- a/secure/usr.bin/openssl/man/cms.1
+++ b/secure/usr.bin/openssl/man/cms.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS 1"
-.TH CMS 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CMS 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -171,6 +171,7 @@ cms \- CMS utility
[\fB\-print\fR]
[\fB\-CAfile file\fR]
[\fB\-CApath dir\fR]
+[\fB\-no_alt_chains\fR]
[\fB\-md digest\fR]
[\fB\-[cipher]\fR]
[\fB\-nointern\fR]
@@ -482,8 +483,8 @@ the relevant mail headers. These are included outside the signed
portion of a message so they may be included manually. If signing
then many S/MIME mail clients check the signers certificate's email
address matches that specified in the From: address.
-.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig\fR" 4
-.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig"
+.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig \-no_alt_chains\fR" 4
+.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains"
Set various certificate chain valiadition option. See the
\&\fBverify\fR manual page for details.
.SH "NOTES"
@@ -698,3 +699,5 @@ No revocation checking is done on the signer's certificate.
.IX Header "HISTORY"
The use of multiple \fB\-signer\fR options and the \fB\-resign\fR command were first
added in OpenSSL 1.0.0
+.PP
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/crl.1 b/secure/usr.bin/openssl/man/crl.1
index 70c3067..001fc82 100644
--- a/secure/usr.bin/openssl/man/crl.1
+++ b/secure/usr.bin/openssl/man/crl.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRL 1"
-.TH CRL 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CRL 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/crl2pkcs7.1 b/secure/usr.bin/openssl/man/crl2pkcs7.1
index 98f792e..18dcbf8 100644
--- a/secure/usr.bin/openssl/man/crl2pkcs7.1
+++ b/secure/usr.bin/openssl/man/crl2pkcs7.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRL2PKCS7 1"
-.TH CRL2PKCS7 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH CRL2PKCS7 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dgst.1 b/secure/usr.bin/openssl/man/dgst.1
index 4565e7e..9a842b5f 100644
--- a/secure/usr.bin/openssl/man/dgst.1
+++ b/secure/usr.bin/openssl/man/dgst.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DGST 1"
-.TH DGST 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DGST 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dhparam.1 b/secure/usr.bin/openssl/man/dhparam.1
index d377080..a428173 100644
--- a/secure/usr.bin/openssl/man/dhparam.1
+++ b/secure/usr.bin/openssl/man/dhparam.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DHPARAM 1"
-.TH DHPARAM 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DHPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -197,8 +197,10 @@ avoid small-subgroup attacks that may be possible otherwise.
check if the parameters are valid primes and generator.
.IP "\fB\-2\fR, \fB\-5\fR" 4
.IX Item "-2, -5"
-The generator to use, either 2 or 5. 2 is the default. If present then the
-input file is ignored and parameters are generated instead.
+The generator to use, either 2 or 5. If present then the
+input file is ignored and parameters are generated instead. If not
+present but \fBnumbits\fR is present, parameters are generated with the
+default generator 2.
.IP "\fB\-rand\fR \fIfile(s)\fR" 4
.IX Item "-rand file(s)"
a file or files containing random data used to seed the random number
@@ -209,9 +211,10 @@ all others.
.IP "\fInumbits\fR" 4
.IX Item "numbits"
this option specifies that a parameter set should be generated of size
-\&\fInumbits\fR. It must be the last option. If not present then a value of 512
-is used. If this option is present then the input file is ignored and
-parameters are generated instead.
+\&\fInumbits\fR. It must be the last option. If this option is present then
+the input file is ignored and parameters are generated instead. If
+this option is not present but a generator (\fB\-2\fR or \fB\-5\fR) is
+present, parameters are generated with a default length of 2048 bits.
.IP "\fB\-noout\fR" 4
.IX Item "-noout"
this option inhibits the output of the encoded version of the parameters.
diff --git a/secure/usr.bin/openssl/man/dsa.1 b/secure/usr.bin/openssl/man/dsa.1
index db8fff6..c1ddf93 100644
--- a/secure/usr.bin/openssl/man/dsa.1
+++ b/secure/usr.bin/openssl/man/dsa.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA 1"
-.TH DSA 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dsaparam.1 b/secure/usr.bin/openssl/man/dsaparam.1
index 21f2f28..a684d1a 100644
--- a/secure/usr.bin/openssl/man/dsaparam.1
+++ b/secure/usr.bin/openssl/man/dsaparam.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSAPARAM 1"
-.TH DSAPARAM 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH DSAPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ec.1 b/secure/usr.bin/openssl/man/ec.1
index d9e7499..bc72c67 100644
--- a/secure/usr.bin/openssl/man/ec.1
+++ b/secure/usr.bin/openssl/man/ec.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EC 1"
-.TH EC 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH EC 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ecparam.1 b/secure/usr.bin/openssl/man/ecparam.1
index bd29211..55b4bbb 100644
--- a/secure/usr.bin/openssl/man/ecparam.1
+++ b/secure/usr.bin/openssl/man/ecparam.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ECPARAM 1"
-.TH ECPARAM 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ECPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/enc.1 b/secure/usr.bin/openssl/man/enc.1
index 4fce370..ab1cdd1 100644
--- a/secure/usr.bin/openssl/man/enc.1
+++ b/secure/usr.bin/openssl/man/enc.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ENC 1"
-.TH ENC 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ENC 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/errstr.1 b/secure/usr.bin/openssl/man/errstr.1
index eef9e67..2cadb1e 100644
--- a/secure/usr.bin/openssl/man/errstr.1
+++ b/secure/usr.bin/openssl/man/errstr.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERRSTR 1"
-.TH ERRSTR 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH ERRSTR 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/gendsa.1 b/secure/usr.bin/openssl/man/gendsa.1
index d7489c0..926484f 100644
--- a/secure/usr.bin/openssl/man/gendsa.1
+++ b/secure/usr.bin/openssl/man/gendsa.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENDSA 1"
-.TH GENDSA 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH GENDSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/genpkey.1 b/secure/usr.bin/openssl/man/genpkey.1
index 209f4b7..2697f05 100644
--- a/secure/usr.bin/openssl/man/genpkey.1
+++ b/secure/usr.bin/openssl/man/genpkey.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENPKEY 1"
-.TH GENPKEY 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH GENPKEY 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/genrsa.1 b/secure/usr.bin/openssl/man/genrsa.1
index 4b50ce1..f4a7bab 100644
--- a/secure/usr.bin/openssl/man/genrsa.1
+++ b/secure/usr.bin/openssl/man/genrsa.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENRSA 1"
-.TH GENRSA 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH GENRSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/nseq.1 b/secure/usr.bin/openssl/man/nseq.1
index d1c1561..e6d86ea 100644
--- a/secure/usr.bin/openssl/man/nseq.1
+++ b/secure/usr.bin/openssl/man/nseq.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "NSEQ 1"
-.TH NSEQ 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH NSEQ 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ocsp.1 b/secure/usr.bin/openssl/man/ocsp.1
index 87735ff..7b8caec 100644
--- a/secure/usr.bin/openssl/man/ocsp.1
+++ b/secure/usr.bin/openssl/man/ocsp.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OCSP 1"
-.TH OCSP 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OCSP 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -165,6 +165,7 @@ ocsp \- Online Certificate Status Protocol utility
[\fB\-path\fR]
[\fB\-CApath dir\fR]
[\fB\-CAfile file\fR]
+[\fB\-no_alt_chains\fR]]
[\fB\-VAfile file\fR]
[\fB\-validity_period n\fR]
[\fB\-status_age n\fR]
@@ -261,6 +262,9 @@ connection timeout to the \s-1OCSP\s0 responder in seconds
.IX Item "-CAfile file, -CApath pathname"
file or pathname containing trusted \s-1CA\s0 certificates. These are used to verify
the signature on the \s-1OCSP\s0 response.
+.IP "\fB\-no_alt_chains\fR" 4
+.IX Item "-no_alt_chains"
+See \fBverify\fR manual page for details.
.IP "\fB\-verify_other file\fR" 4
.IX Item "-verify_other file"
file containing additional certificates to search when attempting to locate
@@ -483,3 +487,6 @@ second file.
\& openssl ocsp \-index demoCA/index.txt \-rsigner rcert.pem \-CA demoCA/cacert.pem
\& \-reqin req.der \-respout resp.der
.Ve
+.SH "HISTORY"
+.IX Header "HISTORY"
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/openssl.1 b/secure/usr.bin/openssl/man/openssl.1
index b0477a9..c554c76 100644
--- a/secure/usr.bin/openssl/man/openssl.1
+++ b/secure/usr.bin/openssl/man/openssl.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL 1"
-.TH OPENSSL 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH OPENSSL 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/passwd.1 b/secure/usr.bin/openssl/man/passwd.1
index e3804dc..65c491d 100644
--- a/secure/usr.bin/openssl/man/passwd.1
+++ b/secure/usr.bin/openssl/man/passwd.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PASSWD 1"
-.TH PASSWD 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PASSWD 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs12.1 b/secure/usr.bin/openssl/man/pkcs12.1
index a93795e..2caa333 100644
--- a/secure/usr.bin/openssl/man/pkcs12.1
+++ b/secure/usr.bin/openssl/man/pkcs12.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12 1"
-.TH PKCS12 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS12 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs7.1 b/secure/usr.bin/openssl/man/pkcs7.1
index cdc7ac7..ef3dc76 100644
--- a/secure/usr.bin/openssl/man/pkcs7.1
+++ b/secure/usr.bin/openssl/man/pkcs7.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7 1"
-.TH PKCS7 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS7 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs8.1 b/secure/usr.bin/openssl/man/pkcs8.1
index fb6ade1..441a8f8 100644
--- a/secure/usr.bin/openssl/man/pkcs8.1
+++ b/secure/usr.bin/openssl/man/pkcs8.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS8 1"
-.TH PKCS8 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKCS8 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkey.1 b/secure/usr.bin/openssl/man/pkey.1
index b5f23ef..a41c8dd 100644
--- a/secure/usr.bin/openssl/man/pkey.1
+++ b/secure/usr.bin/openssl/man/pkey.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEY 1"
-.TH PKEY 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKEY 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkeyparam.1 b/secure/usr.bin/openssl/man/pkeyparam.1
index af35471..e8ccec9 100644
--- a/secure/usr.bin/openssl/man/pkeyparam.1
+++ b/secure/usr.bin/openssl/man/pkeyparam.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEYPARAM 1"
-.TH PKEYPARAM 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKEYPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkeyutl.1 b/secure/usr.bin/openssl/man/pkeyutl.1
index fa4d67b..2025771 100644
--- a/secure/usr.bin/openssl/man/pkeyutl.1
+++ b/secure/usr.bin/openssl/man/pkeyutl.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEYUTL 1"
-.TH PKEYUTL 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH PKEYUTL 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rand.1 b/secure/usr.bin/openssl/man/rand.1
index 0b37959..2c0ac33 100644
--- a/secure/usr.bin/openssl/man/rand.1
+++ b/secure/usr.bin/openssl/man/rand.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND 1"
-.TH RAND 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RAND 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/req.1 b/secure/usr.bin/openssl/man/req.1
index b3b1ec8..29aa47f 100644
--- a/secure/usr.bin/openssl/man/req.1
+++ b/secure/usr.bin/openssl/man/req.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "REQ 1"
-.TH REQ 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH REQ 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rsa.1 b/secure/usr.bin/openssl/man/rsa.1
index 0e398b6..2301072 100644
--- a/secure/usr.bin/openssl/man/rsa.1
+++ b/secure/usr.bin/openssl/man/rsa.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA 1"
-.TH RSA 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rsautl.1 b/secure/usr.bin/openssl/man/rsautl.1
index 83c9e09..13220f9 100644
--- a/secure/usr.bin/openssl/man/rsautl.1
+++ b/secure/usr.bin/openssl/man/rsautl.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSAUTL 1"
-.TH RSAUTL 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH RSAUTL 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/s_client.1 b/secure/usr.bin/openssl/man/s_client.1
index 13c74ef..4cc8299f 100644
--- a/secure/usr.bin/openssl/man/s_client.1
+++ b/secure/usr.bin/openssl/man/s_client.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_CLIENT 1"
-.TH S_CLIENT 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH S_CLIENT 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -154,6 +154,7 @@ s_client \- SSL/TLS client program
[\fB\-pass arg\fR]
[\fB\-CApath directory\fR]
[\fB\-CAfile filename\fR]
+[\fB\-no_alt_chains\fR]
[\fB\-reconnect\fR]
[\fB\-pause\fR]
[\fB\-showcerts\fR]
@@ -236,8 +237,8 @@ also used when building the client certificate chain.
.IX Item "-CAfile file"
A file containing trusted certificates to use during server authentication
and to use when attempting to build the client certificate chain.
-.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig\fR" 4
-.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig"
+.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig \-no_alt_chains\fR" 4
+.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains"
Set various certificate chain valiadition option. See the
\&\fBverify\fR manual page for details.
.IP "\fB\-reconnect\fR" 4
@@ -434,3 +435,6 @@ information whenever a session is renegotiated.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIsess_id\fR\|(1), \fIs_server\fR\|(1), \fIciphers\fR\|(1)
+.SH "HISTORY"
+.IX Header "HISTORY"
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/s_server.1 b/secure/usr.bin/openssl/man/s_server.1
index 781954a..34eb434 100644
--- a/secure/usr.bin/openssl/man/s_server.1
+++ b/secure/usr.bin/openssl/man/s_server.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_SERVER 1"
-.TH S_SERVER 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH S_SERVER 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -168,6 +168,7 @@ s_server \- SSL/TLS server program
[\fB\-state\fR]
[\fB\-CApath directory\fR]
[\fB\-CAfile filename\fR]
+[\fB\-no_alt_chains\fR]
[\fB\-nocert\fR]
[\fB\-cipher cipherlist\fR]
[\fB\-serverpref\fR]
@@ -291,6 +292,9 @@ A file containing trusted certificates to use during client authentication
and to use when attempting to build the server certificate chain. The list
is also used in the list of acceptable client CAs passed to the client when
a certificate is requested.
+.IP "\fB\-no_alt_chains\fR" 4
+.IX Item "-no_alt_chains"
+See the \fBverify\fR manual page for details.
.IP "\fB\-state\fR" 4
.IX Item "-state"
prints out the \s-1SSL\s0 session states.
@@ -470,3 +474,6 @@ unknown cipher suites a client says it supports.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIsess_id\fR\|(1), \fIs_client\fR\|(1), \fIciphers\fR\|(1)
+.SH "HISTORY"
+.IX Header "HISTORY"
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/s_time.1 b/secure/usr.bin/openssl/man/s_time.1
index 89bb20d..79a19b6 100644
--- a/secure/usr.bin/openssl/man/s_time.1
+++ b/secure/usr.bin/openssl/man/s_time.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_TIME 1"
-.TH S_TIME 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH S_TIME 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/sess_id.1 b/secure/usr.bin/openssl/man/sess_id.1
index d45369d..f2f96bd 100644
--- a/secure/usr.bin/openssl/man/sess_id.1
+++ b/secure/usr.bin/openssl/man/sess_id.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SESS_ID 1"
-.TH SESS_ID 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SESS_ID 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/smime.1 b/secure/usr.bin/openssl/man/smime.1
index 10bb4e2..7236ff1 100644
--- a/secure/usr.bin/openssl/man/smime.1
+++ b/secure/usr.bin/openssl/man/smime.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME 1"
-.TH SMIME 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SMIME 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -151,6 +151,7 @@ smime \- S/MIME utility
[\fB\-pk7out\fR]
[\fB\-[cipher]\fR]
[\fB\-in file\fR]
+[\fB\-no_alt_chains\fR]
[\fB\-certfile file\fR]
[\fB\-signer file\fR]
[\fB\-recip file\fR]
@@ -356,8 +357,8 @@ the relevant mail headers. These are included outside the signed
portion of a message so they may be included manually. If signing
then many S/MIME mail clients check the signers certificate's email
address matches that specified in the From: address.
-.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig\fR" 4
-.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig"
+.IP "\fB\-purpose, \-ignore_critical, \-issuer_checks, \-crl_check, \-crl_check_all, \-policy_check, \-extended_crl, \-x509_strict, \-policy \-check_ss_sig \-no_alt_chains\fR" 4
+.IX Item "-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig -no_alt_chains"
Set various options of certificate chain verification. See
\&\fBverify\fR manual page for details.
.SH "NOTES"
@@ -548,3 +549,5 @@ structures may cause parsing errors.
.IX Header "HISTORY"
The use of multiple \fB\-signer\fR options and the \fB\-resign\fR command were first
added in OpenSSL 1.0.0
+.PP
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/speed.1 b/secure/usr.bin/openssl/man/speed.1
index c427c2b..30aa927 100644
--- a/secure/usr.bin/openssl/man/speed.1
+++ b/secure/usr.bin/openssl/man/speed.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SPEED 1"
-.TH SPEED 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SPEED 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/spkac.1 b/secure/usr.bin/openssl/man/spkac.1
index 91c175f..1780d32 100644
--- a/secure/usr.bin/openssl/man/spkac.1
+++ b/secure/usr.bin/openssl/man/spkac.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SPKAC 1"
-.TH SPKAC 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH SPKAC 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ts.1 b/secure/usr.bin/openssl/man/ts.1
index 0ae61eb..51ee65f 100644
--- a/secure/usr.bin/openssl/man/ts.1
+++ b/secure/usr.bin/openssl/man/ts.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "TS 1"
-.TH TS 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH TS 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/tsget.1 b/secure/usr.bin/openssl/man/tsget.1
index 019b5f3..946e16a 100644
--- a/secure/usr.bin/openssl/man/tsget.1
+++ b/secure/usr.bin/openssl/man/tsget.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "TSGET 1"
-.TH TSGET 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH TSGET 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/verify.1 b/secure/usr.bin/openssl/man/verify.1
index 2c3106f..8709a6c 100644
--- a/secure/usr.bin/openssl/man/verify.1
+++ b/secure/usr.bin/openssl/man/verify.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "VERIFY 1"
-.TH VERIFY 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH VERIFY 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -158,6 +158,7 @@ verify \- Utility to verify certificates.
[\fB\-extended_crl\fR]
[\fB\-use_deltas\fR]
[\fB\-policy_print\fR]
+[\fB\-no_alt_chains\fR]
[\fB\-untrusted file\fR]
[\fB\-help\fR]
[\fB\-issuer_checks\fR]
@@ -227,6 +228,13 @@ Set policy variable inhibit-any-policy (see \s-1RFC5280\s0).
.IP "\fB\-inhibit_map\fR" 4
.IX Item "-inhibit_map"
Set policy variable inhibit-policy-mapping (see \s-1RFC5280\s0).
+.IP "\fB\-no_alt_chains\fR" 4
+.IX Item "-no_alt_chains"
+When building a certificate chain, if the first certificate chain found is not
+trusted, then OpenSSL will continue to check to see if an alternative chain can
+be found that is trusted. With this option that behaviour is suppressed so that
+only the first chain found is ever used. Using this option will force the
+behaviour to match that of previous OpenSSL versions.
.IP "\fB\-policy_print\fR" 4
.IX Item "-policy_print"
Print out diagnostics related to policy processing.
@@ -477,3 +485,6 @@ Previous versions of this documentation swapped the meaning of the
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIx509\fR\|(1)
+.SH "HISTORY"
+.IX Header "HISTORY"
+The \-no_alt_chains options was first added to OpenSSL 1.0.1n and 1.0.2b.
diff --git a/secure/usr.bin/openssl/man/version.1 b/secure/usr.bin/openssl/man/version.1
index 5188c0a..77ee222 100644
--- a/secure/usr.bin/openssl/man/version.1
+++ b/secure/usr.bin/openssl/man/version.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "VERSION 1"
-.TH VERSION 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH VERSION 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/x509.1 b/secure/usr.bin/openssl/man/x509.1
index 46ea514..7d6dd90 100644
--- a/secure/usr.bin/openssl/man/x509.1
+++ b/secure/usr.bin/openssl/man/x509.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509 1"
-.TH X509 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/x509v3_config.1 b/secure/usr.bin/openssl/man/x509v3_config.1
index 5d331fc..1e1e63c 100644
--- a/secure/usr.bin/openssl/man/x509v3_config.1
+++ b/secure/usr.bin/openssl/man/x509v3_config.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.30)
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509V3_CONFIG 1"
-.TH X509V3_CONFIG 1 "2015-03-19" "1.0.1m" "OpenSSL"
+.TH X509V3_CONFIG 1 "2015-06-12" "1.0.1o" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/scp/Makefile.depend b/secure/usr.bin/scp/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/usr.bin/scp/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/sftp/Makefile.depend b/secure/usr.bin/sftp/Makefile.depend
new file mode 100644
index 0000000..8c545dd
--- /dev/null
+++ b/secure/usr.bin/sftp/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-add/Makefile.depend b/secure/usr.bin/ssh-add/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/usr.bin/ssh-add/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-agent/Makefile.depend b/secure/usr.bin/ssh-agent/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/usr.bin/ssh-agent/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-keygen/Makefile.depend b/secure/usr.bin/ssh-keygen/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/usr.bin/ssh-keygen/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-keyscan/Makefile.depend b/secure/usr.bin/ssh-keyscan/Makefile.depend
new file mode 100644
index 0000000..8531477
--- /dev/null
+++ b/secure/usr.bin/ssh-keyscan/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh/Makefile.depend b/secure/usr.bin/ssh/Makefile.depend
new file mode 100644
index 0000000..b8099fd
--- /dev/null
+++ b/secure/usr.bin/ssh/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/rpc \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.sbin/sshd/Makefile.depend b/secure/usr.sbin/sshd/Makefile.depend
new file mode 100644
index 0000000..d24b0be
--- /dev/null
+++ b/secure/usr.sbin/sshd/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libgssapi_krb5 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libldns \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libwrap \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/colldef/Makefile b/share/colldef/Makefile
index 4b68f1e..ab44994 100644
--- a/share/colldef/Makefile
+++ b/share/colldef/Makefile
@@ -109,7 +109,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/colldef/Makefile.depend b/share/colldef/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/colldef/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/dict/Makefile b/share/dict/Makefile
index d9e455d..e907407 100644
--- a/share/dict/Makefile
+++ b/share/dict/Makefile
@@ -1,8 +1,6 @@
# @(#)Makefile 8.1 (Berkeley) 6/5/93
# $FreeBSD$
-NO_OBJ=
-
# XXX MISSING: connectives words
FILES= README propernames web2 web2a freebsd
FILESDIR= ${BINDIR}/dict
diff --git a/share/dict/Makefile.depend b/share/dict/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/dict/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/IPv6/Makefile b/share/doc/IPv6/Makefile
index 62e160c..d815acc 100644
--- a/share/doc/IPv6/Makefile
+++ b/share/doc/IPv6/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= IMPLEMENTATION
FILESDIR= ${SHAREDIR}/doc/IPv6
diff --git a/share/doc/IPv6/Makefile.depend b/share/doc/IPv6/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/IPv6/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/atf/Makefile b/share/doc/atf/Makefile
index 1da915b..bfd7d06 100644
--- a/share/doc/atf/Makefile
+++ b/share/doc/atf/Makefile
@@ -29,8 +29,6 @@ ATF= ${.CURDIR}/../../../contrib/atf
.PATH: ${ATF}
.PATH: ${ATF}/doc
-NO_OBJ=
-
FILESGROUPS= TOP
TOPDIR= ${SHAREDIR}/doc/atf
diff --git a/share/doc/atf/Makefile.depend b/share/doc/atf/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/atf/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_ipw/Makefile b/share/doc/legal/intel_ipw/Makefile
index 8f4f822..18a2c12 100644
--- a/share/doc/legal/intel_ipw/Makefile
+++ b/share/doc/legal/intel_ipw/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/ipw/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_ipw
diff --git a/share/doc/legal/intel_ipw/Makefile.depend b/share/doc/legal/intel_ipw/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/legal/intel_ipw/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_iwi/Makefile b/share/doc/legal/intel_iwi/Makefile
index 8596237..6f0e6be 100644
--- a/share/doc/legal/intel_iwi/Makefile
+++ b/share/doc/legal/intel_iwi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwi/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_iwi
diff --git a/share/doc/legal/intel_iwi/Makefile.depend b/share/doc/legal/intel_iwi/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/legal/intel_iwi/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_iwn/Makefile b/share/doc/legal/intel_iwn/Makefile
index 9a29dfa..d2e04c9 100644
--- a/share/doc/legal/intel_iwn/Makefile
+++ b/share/doc/legal/intel_iwn/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwn/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_iwn
diff --git a/share/doc/legal/intel_iwn/Makefile.depend b/share/doc/legal/intel_iwn/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/legal/intel_iwn/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_wpi/Makefile b/share/doc/legal/intel_wpi/Makefile
index 81014be..06b4863 100644
--- a/share/doc/legal/intel_wpi/Makefile
+++ b/share/doc/legal/intel_wpi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/wpi/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_wpi
diff --git a/share/doc/legal/intel_wpi/Makefile.depend b/share/doc/legal/intel_wpi/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/legal/intel_wpi/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/realtek/Makefile b/share/doc/legal/realtek/Makefile
index 18bbef3..2d96c42 100644
--- a/share/doc/legal/realtek/Makefile
+++ b/share/doc/legal/realtek/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/urtwn/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/realtek
diff --git a/share/doc/legal/realtek/Makefile.depend b/share/doc/legal/realtek/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/share/doc/legal/realtek/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/llvm/Makefile b/share/doc/llvm/Makefile
index 37493bb..250fedd 100644
--- a/share/doc/llvm/Makefile
+++ b/share/doc/llvm/Makefile
@@ -6,8 +6,6 @@ SRCDIR= ${.CURDIR}/../../../contrib/llvm
.PATH: ${SRCDIR} ${SRCDIR}/lib/Support
-NO_OBJ=
-
FILESGROUPS= TOP
TOP= LICENSE.TXT COPYRIGHT.regex
TOPDIR= ${DOCDIR}/llvm
diff --git a/share/doc/llvm/Makefile.depend b/share/doc/llvm/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/doc/llvm/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/llvm/clang/Makefile b/share/doc/llvm/clang/Makefile
index 1b26d6a..727f750 100644
--- a/share/doc/llvm/clang/Makefile
+++ b/share/doc/llvm/clang/Makefile
@@ -4,8 +4,6 @@ SRCDIR= ${.CURDIR}/../../../../contrib/llvm/tools/clang
.PATH: ${SRCDIR}
-NO_OBJ=
-
FILESGROUPS= TOP
TOP= LICENSE.TXT
TOPDIR= ${DOCDIR}/llvm/clang
diff --git a/share/doc/llvm/clang/Makefile.depend b/share/doc/llvm/clang/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/doc/llvm/clang/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/pjdfstest/Makefile b/share/doc/pjdfstest/Makefile
index 21d72f3..bbcb28c 100644
--- a/share/doc/pjdfstest/Makefile
+++ b/share/doc/pjdfstest/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
FILESDIR= ${SHAREDIR}/doc/pjdfstest
FILES= README
diff --git a/share/doc/usd/13.viref/Makefile b/share/doc/usd/13.viref/Makefile
index 49226ba..a60e326 100644
--- a/share/doc/usd/13.viref/Makefile
+++ b/share/doc/usd/13.viref/Makefile
@@ -2,7 +2,6 @@
# $FreeBSD$
VOLUME= usd/13.viref
-SRCS= vi.ref-patched
EXTRA= ex.cmd.roff ref.so set.opt.roff vi.cmd.roff
MACROS= -me
CLEANFILES= vi.ref-patched index
@@ -15,18 +14,22 @@ vi.ref-patched: vi.ref
PRINTERDEVICE?= ascii
.for _dev in ${PRINTERDEVICE}
+SRCS+= vi.ref-${_dev}
EXTRA+= index.so.${_dev}
-CLEANFILES+= index.so.${_dev}
+CLEANFILES+= index.so.${_dev} vi.ref-${_dev}
+
+vi.ref-${_dev}: index.so.${_dev}
+ sed -e 's:^\.so index\.so\.\\\*\[\.T\]$$:${_dev}:' vi.ref-patched > ${.TARGET}
# Build index.so as a side-effect of building the paper.
-index.so.${_dev}: ${SRCS} ${EXTRA:Nindex.so.${_dev}}
+index.so.${_dev}: vi.ref-patched ${EXTRA:Nindex.so.${_dev}}
sed -e 's:^\.so index\.so\.\\\*\[\.T\]$$::' vi.ref-patched | \
${ROFF.${_dev}} -U -z
sed -e 's/MINUSSIGN/-/' \
-e 's/DOUBLEQUOTE/""/' \
-e "s/SQUOTE/'/" \
-e 's/ /__SPACE/g' < index | \
- sort -u '-t ' -k 1,1 -k 2n | awk -f ${SRCDIR}/merge.awk | \
+ sort -u '-t ' -k 1,1 -k 2n | awk -f ${.CURDIR}/merge.awk | \
sed -e 's/__SPACE/ /g' \
-e "s/^\\(['\\.]\\)/\\\\\&\\1/" > ${.TARGET}
.endfor
diff --git a/share/doc/usd/13.viref/merge.awk b/share/doc/usd/13.viref/merge.awk
new file mode 100644
index 0000000..e85f7d3
--- /dev/null
+++ b/share/doc/usd/13.viref/merge.awk
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# @(#)merge.awk 8.3 (Berkeley) 5/25/94
+#
+# merge index entries into one line per label
+$1 == prev {
+ printf ", %s", $2;
+ next;
+}
+{
+ if (NR != 1)
+ printf "\n";
+ printf "%s \t%s", $1, $2;
+ prev = $1;
+}
+END {
+ printf "\n"
+}
diff --git a/share/dtrace/toolkit/Makefile b/share/dtrace/toolkit/Makefile
index 663cc98..367b95e 100644
--- a/share/dtrace/toolkit/Makefile
+++ b/share/dtrace/toolkit/Makefile
@@ -12,6 +12,4 @@ SCRIPTS= ${DTRACETOOLKIT}/execsnoop \
SCRIPTSDIR= ${SHAREDIR}/dtrace/toolkit
-NO_OBJ=
-
.include <bsd.prog.mk>
diff --git a/share/dtrace/toolkit/Makefile.depend b/share/dtrace/toolkit/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/dtrace/toolkit/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/bhyve/vmrun.sh b/share/examples/bhyve/vmrun.sh
index 88cbd7c..58bfa4a 100755
--- a/share/examples/bhyve/vmrun.sh
+++ b/share/examples/bhyve/vmrun.sh
@@ -87,15 +87,15 @@ console=${DEFAULT_CONSOLE}
cpus=${DEFAULT_CPUS}
tap_total=0
disk_total=0
-apic_opt=""
gdbport=0
loader_opt=""
+bhyverun_opt="-H -A -P"
pass_total=0
while getopts ac:C:d:e:g:hH:iI:m:p:t: c ; do
case $c in
a)
- apic_opt="-a"
+ bhyverun_opt="${bhyverun_opt} -a"
;;
c)
cpus=${OPTARG}
@@ -163,6 +163,12 @@ if [ -n "${host_base}" ]; then
loader_opt="${loader_opt} -h ${host_base}"
fi
+# If PCI passthru devices are configured then guest memory must be wired
+if [ ${pass_total} -gt 0 ]; then
+ loader_opt="${loader_opt} -S"
+ bhyverun_opt="${bhyverun_opt} -S"
+fi
+
make_and_check_diskdev()
{
local virtio_diskdev="$1"
@@ -263,7 +269,7 @@ while [ 1 ]; do
i=$(($i + 1))
done
- ${FBSDRUN} -c ${cpus} -m ${memsize} ${apic_opt} -A -H -P \
+ ${FBSDRUN} -c ${cpus} -m ${memsize} ${bhyverun_opt} \
-g ${gdbport} \
-s 0:0,hostbridge \
-s 1:0,lpc \
diff --git a/share/examples/ipfilter/Makefile.depend b/share/examples/ipfilter/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/examples/ipfilter/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/libvgl/Makefile.depend b/share/examples/libvgl/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/share/examples/libvgl/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/pf/Makefile b/share/examples/pf/Makefile
index a6c4470..618f417 100644
--- a/share/examples/pf/Makefile
+++ b/share/examples/pf/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
FILES= faq-example1 faq-example2 faq-example3 \
ackpri queue1 queue2 queue3 queue4 \
pf.conf \
diff --git a/share/examples/pf/Makefile.depend b/share/examples/pf/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/examples/pf/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/APPLE/Makefile.depend b/share/i18n/csmapper/APPLE/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/APPLE/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/AST/Makefile.depend b/share/i18n/csmapper/AST/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/AST/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/BIG5/Makefile.depend b/share/i18n/csmapper/BIG5/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/BIG5/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/CNS/Makefile.depend b/share/i18n/csmapper/CNS/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/CNS/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/CP/Makefile.depend b/share/i18n/csmapper/CP/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/CP/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/EBCDIC/Makefile.depend b/share/i18n/csmapper/EBCDIC/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/EBCDIC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/GB/Makefile.depend b/share/i18n/csmapper/GB/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/GB/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/GEORGIAN/Makefile.depend b/share/i18n/csmapper/GEORGIAN/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/GEORGIAN/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/ISO-8859/Makefile.depend b/share/i18n/csmapper/ISO-8859/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/ISO-8859/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/ISO646/Makefile.depend b/share/i18n/csmapper/ISO646/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/i18n/csmapper/ISO646/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/JIS/Makefile.depend b/share/i18n/csmapper/JIS/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/JIS/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KAZAKH/Makefile.depend b/share/i18n/csmapper/KAZAKH/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/KAZAKH/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KOI/Makefile.depend b/share/i18n/csmapper/KOI/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/KOI/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KS/Makefile.depend b/share/i18n/csmapper/KS/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/KS/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/MISC/Makefile.depend b/share/i18n/csmapper/MISC/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/MISC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/Makefile.depend b/share/i18n/csmapper/Makefile.depend
new file mode 100644
index 0000000..b221179
--- /dev/null
+++ b/share/i18n/csmapper/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ share/i18n/csmapper/APPLE \
+ share/i18n/csmapper/AST \
+ share/i18n/csmapper/BIG5 \
+ share/i18n/csmapper/CNS \
+ share/i18n/csmapper/CP \
+ share/i18n/csmapper/EBCDIC \
+ share/i18n/csmapper/GB \
+ share/i18n/csmapper/GEORGIAN \
+ share/i18n/csmapper/ISO-8859 \
+ share/i18n/csmapper/ISO646 \
+ share/i18n/csmapper/JIS \
+ share/i18n/csmapper/KAZAKH \
+ share/i18n/csmapper/KOI \
+ share/i18n/csmapper/KS \
+ share/i18n/csmapper/MISC \
+ share/i18n/csmapper/TCVN \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/Makefile.inc b/share/i18n/csmapper/Makefile.inc
index 3ab5b0f..8ebd034 100644
--- a/share/i18n/csmapper/Makefile.inc
+++ b/share/i18n/csmapper/Makefile.inc
@@ -1,4 +1,9 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
CSMAPPERDIR?= /usr/share/i18n/csmapper
+.if ${MK_STAGING} == "yes"
+MKCSMAPPER= ${STAGE_HOST_OBJTOP}/usr/bin/mkcsmapper_static
+.endif
MKCSMAPPER?= ${.OBJDIR}/../../../usr.bin/mkcsmapper_static/mkcsmapper_static
diff --git a/share/i18n/csmapper/TCVN/Makefile.depend b/share/i18n/csmapper/TCVN/Makefile.depend
new file mode 100644
index 0000000..e2e5f90
--- /dev/null
+++ b/share/i18n/csmapper/TCVN/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/APPLE/Makefile.depend b/share/i18n/esdb/APPLE/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/APPLE/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/AST/Makefile.depend b/share/i18n/esdb/AST/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/AST/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/BIG5/Makefile.depend b/share/i18n/esdb/BIG5/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/BIG5/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/CP/Makefile.depend b/share/i18n/esdb/CP/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/CP/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/DEC/Makefile.depend b/share/i18n/esdb/DEC/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/DEC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/EBCDIC/Makefile.depend b/share/i18n/esdb/EBCDIC/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/EBCDIC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/EUC/Makefile.depend b/share/i18n/esdb/EUC/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/EUC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/GB/Makefile.depend b/share/i18n/esdb/GB/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/GB/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/GEORGIAN/Makefile.depend b/share/i18n/esdb/GEORGIAN/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/GEORGIAN/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO-2022/Makefile.depend b/share/i18n/esdb/ISO-2022/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/ISO-2022/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO-8859/Makefile.depend b/share/i18n/esdb/ISO-8859/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/ISO-8859/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO646/Makefile.depend b/share/i18n/esdb/ISO646/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/ISO646/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/KAZAKH/Makefile.depend b/share/i18n/esdb/KAZAKH/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/KAZAKH/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/KOI/Makefile.depend b/share/i18n/esdb/KOI/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/KOI/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/MISC/Makefile.depend b/share/i18n/esdb/MISC/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/MISC/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/Makefile.depend b/share/i18n/esdb/Makefile.depend
new file mode 100644
index 0000000..2b8adbf
--- /dev/null
+++ b/share/i18n/esdb/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ share/i18n/esdb/APPLE \
+ share/i18n/esdb/AST \
+ share/i18n/esdb/BIG5 \
+ share/i18n/esdb/CP \
+ share/i18n/esdb/DEC \
+ share/i18n/esdb/EBCDIC \
+ share/i18n/esdb/EUC \
+ share/i18n/esdb/GB \
+ share/i18n/esdb/GEORGIAN \
+ share/i18n/esdb/ISO-2022 \
+ share/i18n/esdb/ISO-8859 \
+ share/i18n/esdb/ISO646 \
+ share/i18n/esdb/KAZAKH \
+ share/i18n/esdb/KOI \
+ share/i18n/esdb/MISC \
+ share/i18n/esdb/TCVN \
+ share/i18n/esdb/UTF \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/Makefile.inc b/share/i18n/esdb/Makefile.inc
index 1554965..09886c7 100644
--- a/share/i18n/esdb/Makefile.inc
+++ b/share/i18n/esdb/Makefile.inc
@@ -1,6 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.PATH: ${.CURDIR}
ESDBDIR?= /usr/share/i18n/esdb
+.if ${MK_STAGING} == "yes"
+MKESDB= ${STAGE_HOST_OBJTOP}/usr/bin/mkesdb_static
+.endif
MKESDB?= ${.OBJDIR}/../../../usr.bin/mkesdb_static/mkesdb_static
diff --git a/share/i18n/esdb/TCVN/Makefile.depend b/share/i18n/esdb/TCVN/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/TCVN/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/UTF/Makefile.depend b/share/i18n/esdb/UTF/Makefile.depend
new file mode 100644
index 0000000..0f8bc72
--- /dev/null
+++ b/share/i18n/esdb/UTF/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man1/Makefile.depend b/share/man/man1/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man1/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man3/Makefile.depend b/share/man/man3/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man3/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index b892cbc..b21002a 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -869,6 +869,7 @@ MAN+= \
ufoma.4 \
uftdi.4 \
ugen.4 \
+ ugold.4 \
uhci.4 \
uhid.4 \
uhso.4 \
diff --git a/share/man/man4/Makefile.depend b/share/man/man4/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man4/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/aacraid.4 b/share/man/man4/aacraid.4
index 2ca830d..9172591 100644
--- a/share/man/man4/aacraid.4
+++ b/share/man/man4/aacraid.4
@@ -23,7 +23,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
-.Dd April 09, 2013
+.Dd June 19, 2015
.Dt AACRAID 4
.Os
.Sh NAME
@@ -58,8 +58,9 @@ The RAID containers are handled via the
bus.
The physical buses are represented by the
.Nm aacraidp?
-devices (beginning with aacraidp1). These devices enable the
-SCSI pass-thru interface and allows devices connected
+devices (beginning with aacraidp1).
+These devices enable the
+SCSI pass-passthrough interface and allows devices connected
to the card such as CD-ROMs to be available via the CAM
.Xr scsi 4
subsystem.
@@ -129,7 +130,7 @@ and are also queued for retrieval by a management application.
.Xr kldload 8
.Sh AUTHORS
.An Achim Leubner Aq Mt achim@FreeBSD.org
-.An Ed Maste Aq Mt emaste@FreeBSD.org
+.An \&Ed Maste Aq Mt emaste@FreeBSD.org
.An Scott Long Aq Mt scottl@FreeBSD.org
.Sh BUGS
The controller is not actually paused on suspend/resume.
diff --git a/share/man/man4/acpi_hp.4 b/share/man/man4/acpi_hp.4
index 2ea74cf..cf67385 100644
--- a/share/man/man4/acpi_hp.4
+++ b/share/man/man4/acpi_hp.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 8, 2010
+.Dd June 19, 2015
.Dt ACPI_HP 4
.Os
.Sh NAME
@@ -48,7 +48,7 @@ acpi_hp_load="YES"
The
.Nm
driver provides support for ACPI-controlled features found on HP laptops
-that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p).
+that use a WMI enabled BIOS (e.g., HP Compaq 8510p and 6510p).
.Pp
The main purpose of this driver is to provide an interface,
accessible via
@@ -58,7 +58,7 @@ accessible via
through which applications can determine and change the status of
various laptop components and BIOS settings.
.Pp
-.Ss Xr devd 8 Ss Events
+.Ss Xr devd 8 Events
Devd events received by
.Xr devd 8
provide the following information:
@@ -91,7 +91,7 @@ WWAN on air status changed to 0 (not on air)
.It Li 0xe1
WWAN on air status changed to 1 (on air)
.El
-.Ss Xr devfs 8 Ss Device
+.Ss Xr devfs 8 Device
You can read /dev/hpcmi to see your current BIOS settings.
The detail level can be adjusted by setting the sysctl
.Va cmi_detail
@@ -197,8 +197,7 @@ Interface to read BIOS settings
.Sh EXAMPLES
The following can be added to
.Xr devd.conf 5
-in order disable the LAN interface when WLAN on air and reenable if it's
-not:
+in order disable the LAN interface when WLAN on air and reenable if it is not:
.Bd -literal -offset indent
notify 0 {
match "system" "ACPI";
@@ -281,7 +280,10 @@ This driver is experimental and has only been tested on i386 on an
HP Compaq 8510p which featured all supported wireless devices (WWAN/BT/WLAN).
Expect undefined results when operating on different hardware.
.Pp
-Loading the driver is slow. Reading from /dev/hpcmi is even slower.
+Loading the driver is slow.
+Reading from
+.Pa /dev/hpcmi
+is even slower.
.Pp
Additional features like HP specific sensor readings or writing BIOS
settings are not supported.
diff --git a/share/man/man4/acpi_ibm.4 b/share/man/man4/acpi_ibm.4
index d566207..15a5bee 100644
--- a/share/man/man4/acpi_ibm.4
+++ b/share/man/man4/acpi_ibm.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 24, 2012
+.Dd June 19, 2015
.Dt ACPI_IBM 4
.Os
.Sh NAME
@@ -74,7 +74,7 @@ sysctl, is set to
.Va availmask
by default, a value representing all possible keypress events on the specific
ThinkPad model.
-.Ss Xr devd 8 Ss Events
+.Ss Xr devd 8 Events
Hotkey events received by
.Xr devd 8
provide the following information:
@@ -144,7 +144,7 @@ Mute
.It Li 0x18
Access IBM Button
.El
-.Ss Xr led 4 Ss Interface
+.Ss Xr led 4 Interface
The
.Nm
driver provides a
@@ -344,7 +344,7 @@ when
is set to 1.
Events are specified as a whitespace-separated list of event code in
hexadecimal or decimal form.
-Note that the event maybe handled twice (eg. Brightness up/down) if ACPI BIOS
+Note that the event maybe handled twice (e.g., Brightness up/down) if ACPI BIOS
already handled the event.
.El
.Pp
diff --git a/share/man/man4/acpi_panasonic.4 b/share/man/man4/acpi_panasonic.4
index 9ea36e4..6b0f350 100644
--- a/share/man/man4/acpi_panasonic.4
+++ b/share/man/man4/acpi_panasonic.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 25, 2012
+.Dd June 19, 2015
.Dt ACPI_PANASONIC 4
.Os
.Sh NAME
@@ -100,7 +100,7 @@ For the other events such as
mixer control and showing battery status,
.Xr devd 8
should take the role as described below.
-.Ss Xr devd 8 Ss Events
+.Ss Xr devd 8 Events
When notified to
.Xr devd 8 ,
the hotkey event provides the following information:
diff --git a/share/man/man4/ada.4 b/share/man/man4/ada.4
index 6f2964e..3a186ae 100644
--- a/share/man/man4/ada.4
+++ b/share/man/man4/ada.4
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 22, 2014
+.Dd June 19, 2015
.Dt ADA 4
.Os
.Sh NAME
@@ -45,14 +45,14 @@ The host adapter must also be separately configured into the system before an
.Tn ATA
direct access device can be configured.
.Sh COMMAND QUEUING
-Command queueing allows the device to process multiple transactions
+Command queuing allows the device to process multiple transactions
concurrently, often re-ordering them to reduce the number and length of
seeks.
.Tn ATA
-defines two types of queueing:
-.Tn TCQ (Tagged Command Queueing, PATA legacy)
+defines two types of queuing:
+.Tn TCQ (Tagged Command Queuing, PATA legacy)
and
-.Tn NCQ (Native Command Queueing, SATA) .
+.Tn NCQ (Native Command Queuing, SATA) .
The
.Nm
device driver takes full advantage of NCQ, when supported.
@@ -146,6 +146,16 @@ instead of
.Pa /etc/sysctl.conf .
The global default is currently 1.
The per-device default is to leave it as-is (follow global setting).
+.It Va kern.cam.ada.legacy_aliases
+.Pp
+This variable determines whether
+.Pa /dev/ad Ns Ar Y
+symbolic links are created,
+which tries to mimic old
+.Xr ata 4
+numbering.
+Set to 1 to enable legacy aliases symlinks, 0 to disable.
+The default is currently enabled.
.El
.Sh FILES
.Bl -tag -width ".Pa /dev/ada*" -compact
diff --git a/share/man/man4/bwn.4 b/share/man/man4/bwn.4
index 3dc43b4..cc27d8f 100644
--- a/share/man/man4/bwn.4
+++ b/share/man/man4/bwn.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 15, 2011
+.Dd June 11, 2015
.Dt BWN 4
.Os
.Sh NAME
@@ -69,8 +69,12 @@ The
port needs to be installed before
.Xr ifconfig 8
will work.
-Most cases you need to use bwn_v4_ucode module but if you are a
-LP (low power) PHY user please uses bwn_v4_lp_ucode module.
+In most cases the
+.Pa bwn_v4_ucode
+kernel module from the port should be used.
+However, if an LP (low power) PHY is being used, the
+.Pa bwn_v4_lp_ucode
+module should be used.
.Sh HARDWARE
The
.Nm
diff --git a/share/man/man4/man4.arm/Makefile.depend b/share/man/man4/man4.arm/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/man/man4/man4.arm/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.i386/Makefile.depend b/share/man/man4/man4.i386/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/man/man4/man4.i386/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.powerpc/Makefile.depend b/share/man/man4/man4.powerpc/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/man/man4/man4.powerpc/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.sparc64/Makefile.depend b/share/man/man4/man4.sparc64/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/man/man4/man4.sparc64/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/ugold.4 b/share/man/man4/ugold.4
new file mode 100644
index 0000000..f75440d
--- /dev/null
+++ b/share/man/man4/ugold.4
@@ -0,0 +1,60 @@
+.\" $OpenBSD: ugold.4,v 1.1 2013/09/06 08:39:39 mpi Exp $
+.\"
+.\" Copyright (c) 2013 Takayoshi SASANO <sasano@openbsd.org>
+.\" Copyright (c) 2013 Martin Pieuchot <mpi@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 11, 2015
+.Dt UGOLD 4
+.Os
+.Sh NAME
+.Nm ugold
+.Nd TEMPer gold HID thermometer
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines into
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb"
+.Cd "device ugold"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time,
+place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ugold_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for pcsensors TEMPer gold devices.
+.Pp
+The driver possesses a collection of sensor values which are
+made available through the
+.Xr sysctl 8
+interface.
+.Sh HARDWARE
+The following devices are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+RDing TEMPer1V1.2
+.El
+.Sh SEE ALSO
+.Xr usb 4 ,
+.Xr sysctl 8
diff --git a/share/man/man5/Makefile.depend b/share/man/man5/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man5/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index 8e8e786..cca7ea2 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,7 +1,7 @@
.\" DO NOT EDIT-- this file is automatically generated.
.\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
.\" $FreeBSD$
-.Dd May 30, 2015
+.Dd June 11, 2015
.Dt SRC.CONF 5
.Os
.Sh NAME
@@ -226,7 +226,7 @@ When set, it also enforces the following options:
Set to not build the Clang C/C++ compiler during the regular phase of the build.
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32 and sparc64/sparc64.
When set, it also enforces the following options:
.Pp
.Bl -item -compact
@@ -240,7 +240,7 @@ When set, it also enforces the following options:
Set to build the Clang C/C++ compiler during the normal phase of the build.
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
.It Va WITHOUT_CLANG_BOOTSTRAP
.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
Set to not build the Clang C/C++ compiler during the bootstrap phase of the build.
@@ -249,13 +249,13 @@ unless an alternative compiler is provided via
XCC.
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITH_CLANG_BOOTSTRAP
.\" from FreeBSD: head/tools/build/options/WITH_CLANG_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
Set to build the Clang C/C++ compiler during the bootstrap phase of the build.
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
.It Va WITH_CLANG_EXTRAS
.\" from FreeBSD: head/tools/build/options/WITH_CLANG_EXTRAS 231057 2012-02-05 23:56:22Z dim
Set to build additional clang and llvm tools, such as bugpoint.
@@ -282,7 +282,7 @@ and
.Pa /usr/bin/cpp .
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITH_CLANG_IS_CC
.\" from FreeBSD: head/tools/build/options/WITH_CLANG_IS_CC 235342 2012-05-12 16:12:36Z gjb
Set to install the Clang C/C++ compiler as
@@ -292,7 +292,7 @@ and
.Pa /usr/bin/cpp .
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
.It Va WITHOUT_CPP
.\" from FreeBSD: head/tools/build/options/WITHOUT_CPP 156932 2006-03-21 07:50:50Z ru
Set to not build
@@ -494,13 +494,13 @@ Set to not build games.
Set to not build and install gcc and g++ as part of the normal build process.
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
.It Va WITH_GCC
.\" from FreeBSD: head/tools/build/options/WITH_GCC 255326 2013-09-06 20:49:48Z zeising
Set to build and install gcc and g++.
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITHOUT_GCC_BOOTSTRAP
.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
Set to not build gcc and g++ as part of the bootstrap process.
@@ -509,13 +509,13 @@ unless an alternative compiler is provided via
XCC.
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
.It Va WITH_GCC_BOOTSTRAP
.\" from FreeBSD: head/tools/build/options/WITH_GCC_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
Set to build gcc and g++ as part of the bootstrap process.
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITHOUT_GCOV
.\" from FreeBSD: head/tools/build/options/WITHOUT_GCOV 156932 2006-03-21 07:50:50Z ru
Set to not build the
@@ -545,14 +545,14 @@ Do not build the GNU C++ stack (g++, libstdc++).
This is the default on platforms where clang is the system compiler.
.Pp
It is a default setting on
-amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
+amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv6hf, i386/i386 and pc98/i386.
.It Va WITH_GNUCXX
.\" from FreeBSD: head/tools/build/options/WITH_GNUCXX 255321 2013-09-06 20:08:03Z theraven
Build the GNU C++ stack (g++, libstdc++).
This is the default on platforms where gcc is the system compiler.
.Pp
It is a default setting on
-arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
.It Va WITHOUT_GNU_GREP_COMPAT
.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_GREP_COMPAT 273421 2014-10-21 20:44:33Z emaste
Set this option to omit the gnu extensions to grep from being included in
diff --git a/share/man/man6/Makefile.depend b/share/man/man6/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man6/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man7/Makefile.depend b/share/man/man7/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man7/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man8/Makefile.depend b/share/man/man8/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man8/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man9/Makefile.depend b/share/man/man9/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/man/man9/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man9/ifnet.9 b/share/man/man9/ifnet.9
index 0e55850..b165e2b 100644
--- a/share/man/man9/ifnet.9
+++ b/share/man/man9/ifnet.9
@@ -1172,7 +1172,7 @@ structure to be the first element in that list.
(A pointer to
this address structure is saved in the
.Vt ifnet
-structure and shall be accessed by the
+structure and is accessed by the
.Fn ifaddr_byindex
function.)
The
diff --git a/share/man/man9/pci_iov_schema.9 b/share/man/man9/pci_iov_schema.9
index 36c0189..52e5c8b 100644
--- a/share/man/man9/pci_iov_schema.9
+++ b/share/man/man9/pci_iov_schema.9
@@ -25,8 +25,8 @@
.\"
.\" $FreeBSD$
.\"
-.Dd May 28, 2015
-.Dt pci_iov_schema 9
+.Dd June 18, 2015
+.Dt PCI_IOV_SCHEMA 9
.Os
.Sh NAME
.Nm pci_iov_schema ,
@@ -67,7 +67,7 @@
.Fn pci_iov_schema_add_unicast_mac "nvlist_t *schema" "const char *name" \
"uint32_t flags" "const uint8_t *defaultVal"
.Sh DESCRIPTION
-The PCI Single-Root I/O Virtualization
+The PCI Single-Root I/O Virtualization
.Pq SR-IOV
configuration schema is a data
structure that describes the device-specific configuration parameters that a PF
@@ -147,9 +147,9 @@ the VF was allowed to change its MAC address, it would not be appropriate to
set this parameter as optional.
The PF driver must either allow the MAC to change or not, so it would be more
appropriate for the PF driver to document the default behaviour by specifying
-a default value in the schema
+a default value in the schema
.Po or potentially force the user to make the choice by setting the parameter
-to be required
+to be required
.Pc .
.Pp
Configuration parameters that have security implications must default to the
@@ -226,7 +226,7 @@ and having a
type.
Values of type
.Vt uint32_t
-are unsigned integers in the range 0 to
+are unsigned integers in the range 0 to
.Po 2**32 - 1 Pc ,
inclusive.
.Pp
@@ -240,7 +240,7 @@ and having a
type.
Values of type
.Vt uint64_t
-are unsigned integers in the range 0 to
+are unsigned integers in the range 0 to
.Po 2**64 - 1 Pc ,
inclusive.
.Pp
diff --git a/share/man/man9/sbuf.9 b/share/man/man9/sbuf.9
index f696307..0014884 100644
--- a/share/man/man9/sbuf.9
+++ b/share/man/man9/sbuf.9
@@ -56,7 +56,8 @@
.Nm sbuf_done ,
.Nm sbuf_delete ,
.Nm sbuf_start_section ,
-.Nm sbuf_end_section
+.Nm sbuf_end_section ,
+.Nm sbuf_hexdump
.Nd safe string composition
.Sh SYNOPSIS
.In sys/types.h
@@ -115,6 +116,14 @@
.Fn sbuf_start_section "struct sbuf *s" "ssize_t *old_lenp"
.Ft ssize_t
.Fn sbuf_end_section "struct sbuf *s" "ssize_t old_len" "size_t pad" "int c"
+.Ft void
+.Fo sbuf_hexdump
+.Fa "struct sbuf *sb"
+.Fa "void *ptr"
+.Fa "int length"
+.Fa "const char *hdr"
+.Fa "int flags"
+.Fc
.In sys/sysctl.h
.Ft struct sbuf *
.Fn sbuf_new_for_sysctl "struct sbuf *s" "char *buf" "int length" "struct sysctl_req *req"
@@ -455,6 +464,14 @@ and \-1 can be specified for
and
.Fa old_len
respectively.
+.Pp
+The
+.Fn sbuf_hexdump
+function prints an array of bytes to the supplied sbuf, along with an ASCII
+representation of the bytes if possible.
+See the
+.Xr hexdump 3
+man page for more details on the interface.
.Sh NOTES
If an operation caused an
.Fa sbuf
@@ -558,6 +575,7 @@ transmit_msg(sbuf_data(sb), sbuf_len(sb));
sbuf_delete(sb);
.Ed
.Sh SEE ALSO
+.Xr hexdump 3 ,
.Xr printf 3 ,
.Xr strcat 3 ,
.Xr strcpy 3 ,
diff --git a/share/man/man9/taskqueue.9 b/share/man/man9/taskqueue.9
index e2b105f..5f2bcf6 100644
--- a/share/man/man9/taskqueue.9
+++ b/share/man/man9/taskqueue.9
@@ -288,11 +288,11 @@ are enqueued on the taskqueue to finish.
Tasks posted to the taskqueue after
.Fn taskqueue_drain_all
begins processing,
-including pending enqueues scheduled by a previous call to
+including pending enqueues scheduled by a previous call to
.Fn taskqueue_enqueue_timeout ,
do not extend the wait time of
.Fn taskqueue_drain_all
-and may complete after
+and may complete after
.Fn taskqueue_drain_all
returns.
.Pp
diff --git a/share/me/Makefile.depend b/share/me/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/me/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/misc/Makefile b/share/misc/Makefile
index 16f803c..9ae988a 100644
--- a/share/misc/Makefile
+++ b/share/misc/Makefile
@@ -11,7 +11,6 @@ FILES= ascii birthtoken bsd-family-tree committers-doc.dot committers-ports.dot
scsi_modes \
organization.dot
-NO_OBJ=
FILESDIR= ${BINDIR}/misc
.if ${MK_USB} != "no"
diff --git a/share/misc/Makefile.depend b/share/misc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/misc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/mk/Makefile b/share/mk/Makefile
index c481a22..d8aea5c 100644
--- a/share/mk/Makefile
+++ b/share/mk/Makefile
@@ -4,6 +4,7 @@
.include <src.opts.mk>
FILES= \
+ auto.obj.mk \
bsd.README \
bsd.arch.inc.mk \
bsd.compiler.mk \
@@ -39,7 +40,16 @@ FILES= \
bsd.symver.mk \
bsd.sys.mk \
bsd.test.mk \
+ dirdeps.mk \
+ gendirdeps.mk \
+ install-new.mk \
+ meta.autodep.mk \
+ meta.stage.mk \
+ meta.subdir.mk \
+ meta.sys.mk \
+ stage-install.sh \
sys.mk \
+ sys.dependfile.mk \
version_gen.awk
NO_OBJ=
diff --git a/share/mk/atf.test.mk b/share/mk/atf.test.mk
index dffd466..6f99d88 100644
--- a/share/mk/atf.test.mk
+++ b/share/mk/atf.test.mk
@@ -22,28 +22,10 @@ ATF_TESTS_C?=
ATF_TESTS_CXX?=
ATF_TESTS_SH?=
-# Whether to allow using the deprecated ATF tools or not.
-#
-# If 'yes', this file will generate Atffiles when requested and will also
-# support using the deprecated atf-run tool to execute the tests.
-ALLOW_DEPRECATED_ATF_TOOLS?= no
-
-# Knob to control the handling of the Atffile for this Makefile.
-#
-# If 'yes', an Atffile exists in the source tree and is installed into
-# TESTSDIR.
-#
-# If 'auto', an Atffile is automatically generated based on the list of test
-# programs built by the Makefile and is installed into TESTSDIR. This is the
-# default and is sufficient in the majority of the cases.
-#
-# If 'no', no Atffile is installed.
-ATFFILE?= auto
-
# Path to the prefix of the installed ATF tools, if any.
#
# If atf-run and atf-report are installed from ports, we automatically define a
-# realtest target below to run the tests using these tools. The tools are
+# realregress target below to run the tests using these tools. The tools are
# searched for in the hierarchy specified by this variable.
ATF_PREFIX?= /usr/local
@@ -121,67 +103,3 @@ ${_T}: ${ATF_TESTS_SH_SRC_${_T}}
mv ${.TARGET}.tmp ${.TARGET}
.endfor
.endif
-
-.if ${ALLOW_DEPRECATED_ATF_TOOLS} != "no"
-
-.if ${ATFFILE:tl} != "no"
-FILES+= Atffile
-FILESDIR_Atffile= ${TESTSDIR}
-
-.if ${ATFFILE:tl} == "auto"
-CLEANFILES+= Atffile Atffile.tmp
-
-Atffile: Makefile
- @{ echo 'Content-Type: application/X-atf-atffile; version="1"'; \
- echo; \
- echo '# Automatically generated by atf-test.mk.'; \
- echo; \
- echo 'prop: test-suite = "'${TESTSUITE}'"'; \
- echo; \
- for tp in ${ATF_TESTS_C} ${ATF_TESTS_CXX} ${ATF_TESTS_SH} \
- ${TESTS_SUBDIRS}; \
- do \
- echo "tp: $${tp}"; \
- done; } >Atffile.tmp
- @mv Atffile.tmp Atffile
-.endif
-.endif
-
-ATF_REPORT?= ${ATF_PREFIX}/bin/atf-report
-ATF_RUN?= ${ATF_PREFIX}/bin/atf-run
-.if exists(${ATF_RUN}) && exists(${ATF_REPORT})
-# Definition of the "make test" target and supporting variables.
-#
-# This target, by necessity, can only work for native builds (i.e. a freeBSD
-# host building a release for the same system). The target runs ATF, which is
-# not in the toolchain, and the tests execute code built for the target host.
-#
-# Due to the dependencies of the binaries built by the source tree and how they
-# are used by tests, it is highly possible for a execution of "make test" to
-# report bogus results unless the new binaries are put in place.
-_TESTS_FIFO= ${.OBJDIR}/atf-run.fifo
-_TESTS_LOG= ${.OBJDIR}/atf-run.log
-CLEANFILES+= ${_TESTS_FIFO} ${_TESTS_LOG}
-realtest: .PHONY
- @set -e; \
- if [ -z "${TESTSDIR}" ]; then \
- echo "*** No TESTSDIR defined; nothing to do."; \
- exit 0; \
- fi; \
- cd ${DESTDIR}${TESTSDIR}; \
- rm -f ${_TESTS_FIFO}; \
- mkfifo ${_TESTS_FIFO}; \
- tee ${_TESTS_LOG} < ${_TESTS_FIFO} | ${TESTS_ENV} ${ATF_REPORT} & \
- set +e; \
- ${TESTS_ENV} ${ATF_RUN} >> ${_TESTS_FIFO}; \
- result=$${?}; \
- wait; \
- rm -f ${_TESTS_FIFO}; \
- echo; \
- echo "*** The verbatim output of atf-run has been saved to ${_TESTS_LOG}"; \
- echo "***"; \
- echo "*** WARNING: atf-run is deprecated; please install kyua instead"; \
- exit $${result}
-.endif
-
-.endif
diff --git a/share/mk/auto.obj.mk b/share/mk/auto.obj.mk
new file mode 100644
index 0000000..0c13ae5
--- /dev/null
+++ b/share/mk/auto.obj.mk
@@ -0,0 +1,65 @@
+# $FreeBSD$
+# $Id: auto.obj.mk,v 1.10 2015/04/16 16:59:00 sjg Exp $
+#
+# @(#) Copyright (c) 2004, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+ECHO_TRACE ?= echo
+
+.ifndef Mkdirs
+# A race condition in some versions of mkdir, means that it can bail
+# if another process made a dir that mkdir expected to.
+# We repeat the mkdir -p a number of times to try and work around this.
+# We stop looping as soon as the dir exists.
+# If we get to the end of the loop, a plain mkdir will issue an error.
+Mkdirs= Mkdirs() { \
+ for d in $$*; do \
+ for i in 1 2 3 4 5 6; do \
+ mkdir -p $$d; \
+ test -d $$d && return 0; \
+ done > /dev/null 2>&1; \
+ mkdir $$d || exit $$?; \
+ done; }
+.endif
+
+# if MKOBJDIRS is set to auto (and NOOBJ isn't defined) do some magic...
+# This will automatically create objdirs as needed.
+# Skip it if we are just doing 'clean'.
+.if ${MK_AUTO_OBJ:Uno} == "yes"
+MKOBJDIRS= auto
+.endif
+.if !defined(NOOBJ) && !defined(NO_OBJ) && ${MKOBJDIRS:Uno} == auto
+# Use __objdir here so it is easier to tweak without impacting
+# the logic.
+.if !empty(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX})
+__objdir?= ${MAKEOBJDIRPREFIX}${.CURDIR}
+.endif
+__objdir?= ${MAKEOBJDIR:Uobj}
+__objdir:= ${__objdir:tA}
+.if ${.OBJDIR} != ${__objdir}
+# We need to chdir, make the directory if needed
+.if !exists(${__objdir}/) && \
+ (${.TARGETS} == "" || ${.TARGETS:Nclean*:N*clean:Ndestroy*} != "")
+# This will actually make it...
+__objdir_made != echo ${__objdir}/; umask ${OBJDIR_UMASK:U002}; \
+ ${ECHO_TRACE} "[Creating objdir ${__objdir}...]" >&2; \
+ ${Mkdirs}; Mkdirs ${__objdir}
+__objdir:= ${__objdir:tA}
+.endif
+# This causes make to use the specified directory as .OBJDIR
+.OBJDIR: ${__objdir}
+.if ${.OBJDIR} != ${__objdir} && ${__objdir_made:Uno:M${__objdir}/*} != ""
+.error could not use ${__objdir}: .OBJDIR=${.OBJDIR}
+.endif
+.endif
+.endif
diff --git a/share/mk/bsd.compiler.mk b/share/mk/bsd.compiler.mk
index d68eb2b..dcdf598 100644
--- a/share/mk/bsd.compiler.mk
+++ b/share/mk/bsd.compiler.mk
@@ -25,8 +25,14 @@
.if !target(__<bsd.compiler.mk>__)
__<bsd.compiler.mk>__:
-.if !defined(COMPILER_TYPE) || !defined(COMPILER_VERSION)
+.if ${MACHINE} == "common"
+# common is a pseudo machine for architecture independent
+# generated files - thus there is no compiler.
+COMPILER_TYPE= none
+COMPILER_VERSION= 0
+.elif !defined(COMPILER_TYPE) || !defined(COMPILER_VERSION)
_v!= ${CC} --version 2>/dev/null || echo 0.0.0
+
.if !defined(COMPILER_TYPE)
. if ${CC:T:M*gcc*}
COMPILER_TYPE:= gcc
diff --git a/share/mk/bsd.crunchgen.mk b/share/mk/bsd.crunchgen.mk
index cc7f021..0f0edd3 100644
--- a/share/mk/bsd.crunchgen.mk
+++ b/share/mk/bsd.crunchgen.mk
@@ -106,11 +106,12 @@ $(CONF): Makefile
.endfor
.endfor
+CRUNCHGEN?= crunchgen
# XXX Make sure we don't pass -P to crunchgen(1).
.MAKEFLAGS:= ${.MAKEFLAGS:N-P}
.ORDER: $(OUTPUTS) objs
-$(OUTPUTS): $(CONF)
- MAKE=${MAKE} MAKEOBJDIRPREFIX=${CRUNCHOBJS} crunchgen -fq -m $(OUTMK) \
+$(OUTPUTS): $(CONF) .META
+ MAKE=${MAKE} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${CRUNCHGEN} -fq -m $(OUTMK) \
-c $(OUTC) $(CONF)
$(PROG): $(OUTPUTS) objs
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index 233a945..965f703 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -147,6 +147,15 @@ beforedepend: ${DHDRS}
beforebuild: ${DHDRS}
.endif
+.if ${MK_META_MODE} == "yes"
+.include <meta.autodep.mk>
+# this depend: bypasses that below
+# the dependency helps when bootstrapping
+depend: beforedepend ${DPSRCS} ${SRCS} afterdepend
+beforedepend:
+afterdepend: beforedepend
+.endif
+
.if !target(depend)
.if defined(SRCS)
depend: beforedepend ${DEPENDFILE} afterdepend
diff --git a/share/mk/bsd.doc.mk b/share/mk/bsd.doc.mk
index 836ace9..9c6b005 100644
--- a/share/mk/bsd.doc.mk
+++ b/share/mk/bsd.doc.mk
@@ -75,7 +75,7 @@ TRFLAGS+= -p
TRFLAGS+= -R
.endif
.if defined(USE_SOELIM)
-TRFLAGS+= -I${SRCDIR}
+TRFLAGS+= -I${.CURDIR}
.endif
.if defined(USE_TBL)
TRFLAGS+= -t
diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk
index 4178fbc..ef9ba6a 100644
--- a/share/mk/bsd.files.mk
+++ b/share/mk/bsd.files.mk
@@ -23,6 +23,11 @@ ${group}OWN?= ${SHAREOWN}
${group}GRP?= ${SHAREGRP}
${group}MODE?= ${SHAREMODE}
${group}DIR?= ${BINDIR}
+.if !make(buildincludes)
+STAGE_SETS+= ${group}
+.endif
+STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR}
+STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP}
_${group}FILES=
.for file in ${${group}}
@@ -38,6 +43,12 @@ ${group}NAME_${file:T}?= ${${group}NAME}
.else
${group}NAME_${file:T}?= ${file:T}
.endif
+.if !make(buildincludes)
+STAGE_AS_SETS+= ${group}
+.endif
+STAGE_AS_${file:T}= ${${group}NAME_${file:T}}
+stage_as.${group}: ${file}
+
installfiles-${group}: _${group}INS_${file:T}
_${group}INS_${file:T}: ${file}
${INSTALL} -o ${${group}OWN_${.ALLSRC:T}} \
@@ -49,6 +60,8 @@ _${group}FILES+= ${file}
.endif
.endfor
.if !empty(_${group}FILES)
+stage_files.${group}: ${_${group}FILES}
+
installfiles-${group}: _${group}INS
_${group}INS: ${_${group}FILES}
.if defined(${group}NAME)
@@ -67,4 +80,13 @@ _${group}INS: ${_${group}FILES}
realinstall: installfiles
.ORDER: beforeinstall installfiles
+.if ${MK_STAGING} != "no"
+.if !empty(STAGE_SETS)
+buildfiles: stage_files
+.if !empty(STAGE_AS_SETS)
+buildfiles: stage_as
+.endif
+.endif
+.endif
+
.endif # !target(__<bsd.files.mk>__)
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
index cc65baf..7637256 100644
--- a/share/mk/bsd.incs.mk
+++ b/share/mk/bsd.incs.mk
@@ -24,12 +24,15 @@ ${group}OWN?= ${BINOWN}
${group}GRP?= ${BINGRP}
${group}MODE?= ${NOBINMODE}
${group}DIR?= ${INCLUDEDIR}${PRIVATELIB:D/private/${LIB}}
+STAGE_SETS+= ${group}
+STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR}
+STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP}
_${group}INCS=
.for header in ${${group}}
.if defined(${group}OWN_${header:T}) || defined(${group}GRP_${header:T}) || \
defined(${group}MODE_${header:T}) || defined(${group}DIR_${header:T}) || \
- defined(${group}NAME_${header:T})
+ defined(${group}NAME_${header:T}) || defined(${group}NAME)
${group}OWN_${header:T}?= ${${group}OWN}
${group}GRP_${header:T}?= ${${group}GRP}
${group}MODE_${header:T}?= ${${group}MODE}
@@ -39,6 +42,11 @@ ${group}NAME_${header:T}?= ${${group}NAME}
.else
${group}NAME_${header:T}?= ${header:T}
.endif
+STAGE_AS_SETS+= ${group}
+STAGE_AS_${header:T}= ${${group}NAME_${header:T}}
+stage_as.${group}: ${header}
+stage_includes: stage_as.${group}
+
installincludes: _${group}INS_${header:T}
_${group}INS_${header:T}: ${header}
${INSTALL} -C -o ${${group}OWN_${.ALLSRC:T}} \
@@ -50,6 +58,9 @@ _${group}INCS+= ${header}
.endif
.endfor
.if !empty(_${group}INCS)
+stage_files.${group}: ${_${group}INCS}
+stage_includes: stage_files.${group}
+
installincludes: _${group}INS
_${group}INS: ${_${group}INCS}
.if defined(${group}NAME)
@@ -81,4 +92,14 @@ installincludes:
realinstall: installincludes
.ORDER: beforeinstall installincludes
+.if ${MK_STAGING} != "no" && !defined(_SKIP_BUILD)
+.if !defined(NO_STAGE_INCLUDES)
+staging: stage_includes
+.if !empty(INCSLINKS)
+staging: stage_symlinks
+STAGE_SYMLINKS.INCS= ${INCSLINKS}
+.endif
+.endif
+.endif
+
.endif # ${MK_TOOLCHAIN} != "no"
diff --git a/share/mk/bsd.init.mk b/share/mk/bsd.init.mk
index 59ed400..a7f90eb 100644
--- a/share/mk/bsd.init.mk
+++ b/share/mk/bsd.init.mk
@@ -9,9 +9,19 @@
.if !target(__<bsd.init.mk>__)
__<bsd.init.mk>__:
.include <bsd.opts.mk>
+.-include "local.init.mk"
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
.include <bsd.own.mk>
.MAIN: all
+
+.if ${.MAKE.LEVEL:U1} == 0 && ${BUILD_AT_LEVEL0:Uyes:tl} == "no" && !make(clean*)
+# this tells lib.mk and prog.mk to not actually build anything
+_SKIP_BUILD = not building at level 0
+.endif
+.if ${.MAKE.LEVEL} > 0 && !empty(_SKIP_BUILD)
+.warning ${_SKIP_BUILD}
+.endif
+
.endif # !target(__<bsd.init.mk>__)
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index d22e78c..f70cc95 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -126,8 +126,10 @@ PO_FLAG=-pg
${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
+.if !defined(_SKIP_BUILD)
all: beforebuild .WAIT
beforebuild: objwarn
+.endif
_LIBDIR:=${LIBDIR}
_SHLIBDIR:=${SHLIBDIR}
@@ -210,10 +212,40 @@ SOLINKOPTS+= -Wl,--warn-shared-textrel
beforelinking: ${SOBJS}
${SHLIB_NAME_FULL}: beforelinking
.endif
+
+.if defined(SHLIB_LINK)
+# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
+# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
+# prefix where shared objects will be installed by the install target.
+#
+# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating
+# ld(1) scripts. The crosstools' ld is configured to lookup libraries in an
+# alternative directory which is called "sysroot", so during buildworld binaries
+# won't be linked against the running system libraries but against the ones of
+# the current source tree. ${_LDSCRIPTROOT} behavior is twisted because of
+# the location where we store them:
+# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty
+# because ld(1) will manage to find them from sysroot;
+# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full
+# path, outside of sysroot.
+# Note that ld(1) scripts are generated both during buildworld and
+# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty
+# because on the target system, libraries are meant to be looked up from /.
+.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
+${SHLIB_LINK:R}.ld: ${.CURDIR}/${SHLIB_LDSCRIPT}
+ sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${_SHLIBDIR}/${SHLIB_NAME},g' \
+ -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${_LIBDIR},g' \
+ -e 's,/[^ ]*/,,g' \
+ ${.ALLSRC} > ${.TARGET}
+
+${SHLIB_NAME_FULL}: ${SHLIB_LINK:R}.ld
+.endif
+.endif
+
${SHLIB_NAME_FULL}: ${SOBJS}
@${ECHO} building shared library ${SHLIB_NAME}
@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
-.if defined(SHLIB_LINK)
+.if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld)
@${INSTALL_SYMLINK} ${SHLIB_NAME} ${SHLIB_LINK}
.endif
${_LD} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \
@@ -258,11 +290,15 @@ ${LINTLIB}: ${LINTOBJS}
.endif # !defined(INTERNALLIB)
+.if defined(_SKIP_BUILD)
+all:
+.else
all: ${_LIBS}
.if ${MK_MAN} != "no"
all: _manpages
.endif
+.endif
_EXTRADEPEND:
@TMP=_depend$$$$; \
@@ -318,32 +354,10 @@ _libinstall:
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}
.endif
.if defined(SHLIB_LINK)
-# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
-# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
-# prefix where shared objects will be installed by the install target.
-#
-# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating
-# ld(1) scripts. The crosstools' ld is configured to lookup libraries in an
-# alternative directory which is called "sysroot", so during buildworld binaries
-# won't be linked against the running system libraries but against the ones of
-# the current source tree. ${_LDSCRIPTROOT} behavior is twisted because of
-# the location where we store them:
-# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty
-# because ld(1) will manage to find them from sysroot;
-# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full
-# path, outside of sysroot.
-# Note that ld(1) scripts are generated both during buildworld and
-# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty
-# because on the target system, libraries are meant to be looked up from /.
-.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
- sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${_SHLIBDIR}/${SHLIB_NAME},g' \
- -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${_LIBDIR},g' \
- ${.CURDIR}/${SHLIB_LDSCRIPT} > ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld
+.if commands(${SHLIB_LINK:R}.ld)
${INSTALL} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld \
+ ${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \
${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
- rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld
-
.else
.if ${_SHLIBDIR} == ${_LIBDIR}
${INSTALL_SYMLINK} ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index 416993e..98c3a04 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -127,6 +127,22 @@ _manpages: ${MAN}
ZEXT= ${MCOMPRESS_EXT}
.if defined(MAN) && !empty(MAN)
+.if ${MK_STAGING_MAN} == "yes"
+staging: stage_files
+_mansets:= ${MAN:E:O:u:M*[1-9]:@s@man$s@}
+STAGE_SETS+= ${_mansets}
+.for _page in ${MAN}
+stage_files.man${_page:T:E}: ${_page}
+STAGE_DIR.man${_page:T:E}?= ${STAGE_OBJTOP}${MANDIR}${_page:T:E}${MANSUBDIR}
+.endfor
+.if !empty(MLINKS)
+STAGE_SETS+= mlinks
+staging: stage_links
+STAGE_LINKS.mlinks:= ${MLINKS:@f@${f:S,^,${MANDIR}${f:E}${MANSUBDIR}/,}@}
+stage_links.mlinks: ${_mansets:@s@stage_files.$s@}
+.endif
+.endif
+
CLEANFILES+= ${MAN:T:S/$/${MCOMPRESS_EXT}/g}
CLEANFILES+= ${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
.for __page in ${MAN}
diff --git a/share/mk/bsd.nls.mk b/share/mk/bsd.nls.mk
index 48093eb..bf8305c 100644
--- a/share/mk/bsd.nls.mk
+++ b/share/mk/bsd.nls.mk
@@ -61,13 +61,22 @@ NLSDIR?= ${SHAREDIR}/nls
#
# installation rules
#
+.if ${MK_STAGING_PROG} == "yes"
+.if !defined(_SKIP_BUILD)
+staging: stage_symlinks
+.endif
+STAGE_SYMLINKS.NLS= ${NLSSYMLINKS}
+STAGE_SYMLINKS_DIR.NLS= ${STAGE_OBJTOP}
+.else
+SYMLINKS+= ${NLSSYMLINKS}
+.endif
.for file in ${NLS}
NLSNAME_${file:T}= ${file:T:R}/${NLSNAME}.cat
.if defined(NLSLINKS_${file:R}) && !empty(NLSLINKS_${file:R})
NLSLINKS+= ${file:R}
.endif
.for dst in ${NLSLINKS_${file:R}}
-SYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
+NLSSYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
.endfor
.endfor
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
index a0cf1a2..f94181a 100644
--- a/share/mk/bsd.obj.mk
+++ b/share/mk/bsd.obj.mk
@@ -42,7 +42,16 @@
__<bsd.obj.mk>__:
.include <bsd.own.mk>
-.if defined(MAKEOBJDIRPREFIX)
+.if ${MK_AUTO_OBJ} == "yes"
+# it is done by now
+objwarn:
+obj:
+CANONICALOBJDIR= ${.OBJDIR}
+.if defined(NO_OBJ)
+# but this makefile does not want it!
+.OBJDIR: ${.CURDIR}
+.endif
+.elif defined(MAKEOBJDIRPREFIX)
CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
.elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != ""
CANONICALOBJDIR:=${MAKEOBJDIR}
@@ -148,4 +157,51 @@ cleandir: cleanobj
.include <bsd.subdir.mk>
+.if make(destroy*) && defined(OBJROOT)
+# this (rm -rf objdir) is much faster and more reliable than cleaning.
+
+# just in case we are playing games with these...
+_OBJDIR?= ${.OBJDIR}
+_CURDIR?= ${.CURDIR}
+
+# destroy almost everything
+destroy: destroy-all
+destroy-all:
+
+# just remove our objdir
+destroy-arch: .NOMETA
+.if ${_OBJDIR} != ${_CURDIR}
+ cd ${_CURDIR} && rm -rf ${_OBJDIR}
+.endif
+
+.if defined(HOST_OBJTOP)
+destroy-host: destroy.host
+destroy.host: .NOMETA
+ cd ${_CURDIR} && rm -rf ${HOST_OBJTOP}/${RELDIR:N.}
+.endif
+
+.if make(destroy-all) && ${RELDIR} == "."
+destroy-all: destroy-stage
+.endif
+
+# remove the stage tree
+destroy-stage: .NOMETA
+.if defined(STAGE_ROOT)
+ cd ${_CURDIR} && rm -rf ${STAGE_ROOT}
+.endif
+
+# allow parallel destruction
+_destroy_machine_list = common host ${ALL_MACHINE_LIST}
+.for m in ${_destroy_machine_list:O:u}
+destroy-all: destroy.$m
+.if !target(destroy.$m)
+destroy.$m: .NOMETA
+.if ${_OBJDIR} != ${_CURDIR}
+ cd ${_CURDIR} && rm -rf ${OBJROOT}$m*/${RELDIR:N.}
+.endif
+.endif
+.endfor
+
+.endif
+
.endif # !target(__<bsd.obj.mk>__)
diff --git a/share/mk/bsd.opts.mk b/share/mk/bsd.opts.mk
index a71b508..88f5196 100644
--- a/share/mk/bsd.opts.mk
+++ b/share/mk/bsd.opts.mk
@@ -68,8 +68,14 @@ __DEFAULT_YES_OPTIONS = \
__DEFAULT_NO_OPTIONS = \
CTF \
DEBUG_FILES \
- INSTALL_AS_USER
+ INSTALL_AS_USER \
+ STALE_STAGED
+# meta mode related
+__DEFAULT_DEPENDENT_OPTIONS = \
+ STAGING_MAN/STAGING \
+ STAGING_PROG/STAGING \
+
.include <bsd.mkopt.mk>
#
@@ -92,6 +98,10 @@ MK_${var}:=no
.endif
.endfor
+.if ${MK_STAGING} == "no"
+MK_STALE_STAGED= no
+.endif
+
.endif # !_WITHOUT_SRCCONF
.endif
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index 0e85b9c..20c66c4 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -140,7 +140,7 @@ _uid!= id -u
.if !defined(USER)
USER!= id -un
.endif
-_gid!= id -gn
+_gid!= id -g
.for x in BIN CONF DOC DTB INFO KMOD LIB MAN NLS SHARE
$xOWN= ${USER}
$xGRP= ${_gid}
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index 8366ade..f8f2265 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -141,11 +141,15 @@ MAN1= ${MAN}
.endif
.endif # defined(PROG)
+.if defined(_SKIP_BUILD)
+all:
+.else
all: beforebuild .WAIT ${PROG} ${SCRIPTS}
beforebuild: objwarn
.if ${MK_MAN} != "no"
all: _manpages
.endif
+.endif
.if defined(PROG)
CLEANFILES+= ${PROG}
@@ -218,6 +222,10 @@ SCRIPTSOWN?= ${BINOWN}
SCRIPTSGRP?= ${BINGRP}
SCRIPTSMODE?= ${BINMODE}
+STAGE_AS_SETS+= scripts
+stage_as.scripts: ${SCRIPTS}
+FLAGS.stage_as.scripts= -m ${SCRIPTSMODE}
+STAGE_FILES_DIR.scripts= ${STAGE_OBJTOP}
.for script in ${SCRIPTS}
.if defined(SCRIPTSNAME)
SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
@@ -228,6 +236,7 @@ SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
+STAGE_AS_${script:T}= ${SCRIPTSDIR_${script:T}}/${SCRIPTSNAME_${script:T}}
_scriptsinstall: _SCRIPTSINS_${script:T}
_SCRIPTSINS_${script:T}: ${script}
${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
diff --git a/share/mk/bsd.progs.mk b/share/mk/bsd.progs.mk
index 46abbb3..1237439 100644
--- a/share/mk/bsd.progs.mk
+++ b/share/mk/bsd.progs.mk
@@ -22,14 +22,10 @@ PROGS += ${PROGS_CXX}
# In meta mode, we can capture dependenices for _one_ of the progs.
# if makefile doesn't nominate one, we use the first.
-.if defined(.PARSEDIR)
.ifndef UPDATE_DEPENDFILE_PROG
UPDATE_DEPENDFILE_PROG = ${PROGS:[1]}
.export UPDATE_DEPENDFILE_PROG
.endif
-.else
-UPDATE_DEPENDFILE_PROG?= no
-.endif
.ifndef PROG
# They may have asked us to build just one
@@ -62,8 +58,6 @@ UPDATE_DEPENDFILE ?= yes
.endif
UPDATE_DEPENDFILE ?= NO
-# ensure that we don't clobber each other's dependencies
-DEPENDFILE?= .depend.${PROG}
# prog.mk will do the rest
.else
all: ${FILES} ${PROGS} ${SCRIPTS}
@@ -95,17 +89,17 @@ x.$p= PROG_CXX=$p
.endif
$p ${p}_p: .PHONY .MAKE
- (cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
- SUBDIR= PROG=$p \
- DEPENDFILE=.depend.$p .MAKE.DEPENDFILE=.depend.$p \
- ${x.$p})
+ (cd ${.CURDIR} && \
+ DEPENDFILE=.depend.$p \
+ ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
+ SUBDIR= PROG=$p ${x.$p})
.for t in ${PROGS_TARGETS:O:u}
$p.$t: .PHONY .MAKE
- (cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
- SUBDIR= PROG=$p \
- DEPENDFILE=.depend.$p .MAKE.DEPENDFILE=.depend.$p \
- ${x.$p} ${@:E})
+ (cd ${.CURDIR} && \
+ DEPENDFILE=.depend.$p \
+ ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
+ SUBDIR= PROG=$p ${x.$p} ${@:E})
.endfor
.endfor
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
index f76d5e1..e1b1276 100644
--- a/share/mk/bsd.subdir.mk
+++ b/share/mk/bsd.subdir.mk
@@ -34,6 +34,15 @@ __<bsd.subdir.mk>__:
.include <bsd.init.mk>
+.if !defined(NEED_SUBDIR)
+.if ${.MAKE.LEVEL} == 0 && ${MK_META_MODE} == "yes" && !empty(SUBDIR) && !(make(clean*) || make(destroy*))
+.include <meta.subdir.mk>
+# ignore this
+_SUBDIR:
+.endif
+.endif
+.if !target(_SUBDIR)
+
DISTRIBUTION?= base
.if !target(distribute)
distribute: .MAKE
@@ -122,6 +131,8 @@ ${__target}: .MAKE
.endif
.endfor
+.endif
+
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index bd1609e..28280fb 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -173,5 +173,113 @@ PHONY_NOTMAIN = afterdepend afterinstall all beforedepend beforeinstall \
realinstall regress subdir-all subdir-depend subdir-install \
tags whereobj
-.PHONY: ${PHONY_NOTMAIN}
-.NOTMAIN: ${PHONY_NOTMAIN}
+# we don't want ${PROG} to be PHONY
+.PHONY: ${PHONY_NOTMAIN:N${PROG:U}}
+.NOTMAIN: ${PHONY_NOTMAIN:Nall}
+
+.if ${MK_STAGING} != "no"
+.if defined(_SKIP_BUILD) || (!make(all) && !make(clean*))
+_SKIP_STAGING?= yes
+.endif
+.if ${_SKIP_STAGING:Uno} == "yes"
+staging stage_libs stage_files stage_as stage_links stage_symlinks:
+.else
+# allow targets like beforeinstall to be leveraged
+DESTDIR= ${STAGE_OBJTOP}
+_SHLIBDIRPREFIX= ${STAGE_OBJTOP}
+
+.if commands(beforeinstall)
+.if !empty(_LIBS) || ${MK_STAGING_PROG} != "no"
+staging: beforeinstall
+.endif
+.endif
+
+# normally only libs and includes are staged
+.if ${MK_STAGING_PROG} != "no"
+STAGE_DIR.prog= ${STAGE_OBJTOP}${BINDIR}
+
+.if !empty(PROG) || !empty(PROGS)
+.if defined(PROGNAME)
+STAGE_AS_SETS+= prog
+STAGE_AS_${PROG}= ${PROGNAME}
+stage_as.prog: ${PROG}
+.else
+STAGE_SETS+= prog
+stage_files.prog: ${PROG}
+staging: stage_files
+.endif
+.endif
+.endif
+
+.if !empty(_LIBS) && !defined(INTERNALLIB)
+.if defined(SHLIBDIR) && ${SHLIBDIR} != ${LIBDIR} && ${_LIBS:Uno:M*.so.*} != ""
+STAGE_SETS+= shlib
+STAGE_DIR.shlib= ${STAGE_OBJTOP}${SHLIBDIR}
+STAGE_FILES.shlib+= ${_LIBS:M*.so.*}
+stage_files.shlib: ${_LIBS:M*.so.*}
+.endif
+
+.if defined(SHLIB_LINK) && commands(${SHLIB_LINK:R}.ld)
+_LDSCRIPTROOT?= ${STAGE_OBJTOP}
+STAGE_AS_SETS+= ldscript
+STAGE_AS.ldscript+= ${SHLIB_LINK:R}.ld
+stage_as.ldscript: ${SHLIB_LINK:R}.ld
+STAGE_DIR.ldscript = ${STAGE_LIBDIR}
+STAGE_AS_${SHLIB_LINK:R}.ld:= ${SHLIB_LINK}
+NO_SHLIB_LINKS=
+.endif
+
+.if target(stage_files.shlib)
+stage_libs: ${_LIBS}
+.if defined(DEBUG_FLAGS) && target(${SHLIB_NAME}.symbols)
+stage_files.shlib: ${SHLIB_NAME}.symbols
+.endif
+.else
+stage_libs: ${_LIBS}
+.endif
+.if defined(SHLIB_NAME) && defined(DEBUG_FLAGS) && target(${SHLIB_NAME}.symbols)
+stage_libs: ${SHLIB_NAME}.symbols
+.endif
+
+.endif
+
+.if !empty(INCS) || !empty(INCSGROUPS) && target(buildincludes)
+.if !defined(NO_BEFOREBUILD_INCLUDES)
+stage_includes: buildincludes
+beforebuild: stage_includes
+.endif
+.endif
+
+.for t in stage_libs stage_files stage_as
+.if target($t)
+staging: $t
+.endif
+.endfor
+
+.if !empty(STAGE_AS_SETS)
+staging: stage_as
+.endif
+
+.if !empty(_LIBS) || ${MK_STAGING_PROG} != "no"
+
+.if !empty(LINKS)
+staging: stage_links
+.if ${MAKE_VERSION} < 20131001
+stage_links.links: ${_LIBS} ${PROG}
+.endif
+STAGE_SETS+= links
+STAGE_LINKS.links= ${LINKS}
+.endif
+
+.if !empty(SYMLINKS)
+staging: stage_symlinks
+STAGE_SETS+= links
+STAGE_SYMLINKS.links= ${SYMLINKS}
+.endif
+
+.endif
+
+.include <meta.stage.mk>
+.endif
+.endif
+
diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk
index b204a3c..65041ab 100644
--- a/share/mk/bsd.test.mk
+++ b/share/mk/bsd.test.mk
@@ -10,6 +10,10 @@
__<bsd.test.mk>__:
+.ifndef TESTSDIR
+.error "Please define TESTSDIR when including bsd.test.mk"
+.endif
+
# List of subdirectories containing tests into which to recurse. This has the
# same semantics as SUBDIR at build-time. However, the directories listed here
# get registered into the run-time test suite definitions so that the test
@@ -91,9 +95,30 @@ test: aftertest
.include <bsd.subdir.mk>
.endif
+.ifdef PROG
+# we came here via bsd.progs.mk below
+# parent will do staging.
+MK_STAGING= no
+.endif
+
.if !empty(PROGS) || !empty(PROGS_CXX) || !empty(SCRIPTS)
.include <bsd.progs.mk>
.endif
.include <bsd.files.mk>
+.if !defined(PROG) && ${MK_STAGING} != "no"
+.if !defined(_SKIP_BUILD)
+# this will handle staging if needed
+_SKIP_STAGING= no
+# but we don't want it to build anything
+_SKIP_BUILD=
+.endif
+.if !empty(PROGS)
+stage_files.prog: ${PROGS}
+.endif
+.include <bsd.prog.mk>
+.endif
+
+.if !target(objwarn)
.include <bsd.obj.mk>
+.endif
diff --git a/share/mk/dirdeps.mk b/share/mk/dirdeps.mk
new file mode 100644
index 0000000..c3c19d2
--- /dev/null
+++ b/share/mk/dirdeps.mk
@@ -0,0 +1,652 @@
+# $FreeBSD$
+# $Id: dirdeps.mk,v 1.54 2015/06/08 20:55:11 sjg Exp $
+
+# Copyright (c) 2010-2013, Juniper Networks, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Much of the complexity here is for supporting cross-building.
+# If a tree does not support that, simply using plain Makefile.depend
+# should provide sufficient clue.
+# Otherwise the recommendation is to use Makefile.depend.${MACHINE}
+# as expected below.
+
+# Note: this file gets multiply included.
+# This is what we do with DIRDEPS
+
+# DIRDEPS:
+# This is a list of directories - relative to SRCTOP, it is
+# normally only of interest to .MAKE.LEVEL 0.
+# In some cases the entry may be qualified with a .<machine>
+# or .<target_spec> suffix (see TARGET_SPEC_VARS below),
+# for example to force building something for the pseudo
+# machines "host" or "common" regardless of current ${MACHINE}.
+#
+# All unqualified entries end up being qualified with .${TARGET_SPEC}
+# and partially qualified (if TARGET_SPEC_VARS has multiple
+# entries) are also expanded to a full .<target_spec>.
+# The _DIRDEP_USE target uses the suffix to set TARGET_SPEC
+# correctly when visiting each entry.
+#
+# The fully qualified directory entries are used to construct a
+# dependency graph that will drive the build later.
+#
+# Also, for each fully qualified directory target, we will search
+# using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional
+# dependencies. We use Makefile.depend (default value for
+# .MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to
+# distinguish them from others.
+#
+# Each Makefile.depend file sets DEP_RELDIR to be the
+# the RELDIR (path relative to SRCTOP) for its directory, and
+# since each Makefile.depend file includes dirdeps.mk, this
+# processing is recursive and results in .MAKE.LEVEL 0 learning the
+# dependencies of the tree wrt the initial directory (_DEP_RELDIR).
+#
+# BUILD_AT_LEVEL0
+# Indicates whether .MAKE.LEVEL 0 builds anything:
+# if "no" sub-makes are used to build everything,
+# if "yes" sub-makes are only used to build for other machines.
+# It is best to use "no", but this can require fixing some
+# makefiles to not do anything at .MAKE.LEVEL 0.
+#
+# TARGET_SPEC_VARS
+# The default value is just MACHINE, and for most environments
+# this is sufficient. The _DIRDEP_USE target actually sets
+# both MACHINE and TARGET_SPEC to the suffix of the current
+# target so that in the general case TARGET_SPEC can be ignored.
+#
+# If more than MACHINE is needed then sys.mk needs to decompose
+# TARGET_SPEC and set the relevant variables accordingly.
+# It is important that MACHINE be included in and actually be
+# the first member of TARGET_SPEC_VARS. This allows other
+# variables to be considered optional, and some of the treatment
+# below relies on MACHINE being the first entry.
+# Note: TARGET_SPEC cannot contain any '.'s so the target
+# triple used by compiler folk won't work (directly anyway).
+#
+# For example:
+#
+# # Always list MACHINE first,
+# # other variables might be optional.
+# TARGET_SPEC_VARS = MACHINE TARGET_OS
+# .if ${TARGET_SPEC:Uno:M*,*} != ""
+# _tspec := ${TARGET_SPEC:S/,/ /g}
+# MACHINE := ${_tspec:[1]}
+# TARGET_OS := ${_tspec:[2]}
+# # etc.
+# # We need to stop that TARGET_SPEC affecting any submakes
+# # and deal with MACHINE=${TARGET_SPEC} in the environment.
+# TARGET_SPEC =
+# # export but do not track
+# .export-env TARGET_SPEC
+# .export ${TARGET_SPEC_VARS}
+# .for v in ${TARGET_SPEC_VARS:O:u}
+# .if empty($v)
+# .undef $v
+# .endif
+# .endfor
+# .endif
+# # make sure we know what TARGET_SPEC is
+# # as we may need it to find Makefile.depend*
+# TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+#
+
+# touch this at your peril
+_DIRDEP_USE_LEVEL?= 0
+.if ${.MAKE.LEVEL} == ${_DIRDEP_USE_LEVEL}
+# only the first instance is interested in all this
+
+# First off, we want to know what ${MACHINE} to build for.
+# This can be complicated if we are using a mixture of ${MACHINE} specific
+# and non-specific Makefile.depend*
+
+.if !target(_DIRDEP_USE)
+# do some setup we only need once
+_CURDIR ?= ${.CURDIR}
+_OBJDIR ?= ${.OBJDIR}
+
+now_utc = ${%s:L:gmtime}
+.if !defined(start_utc)
+start_utc := ${now_utc}
+.endif
+
+# make sure these are empty to start with
+_DEP_TARGET_SPEC =
+_DIRDEP_CHECKED =
+
+# If TARGET_SPEC_VARS is other than just MACHINE
+# it should be set by sys.mk or similar by now.
+# TARGET_SPEC must not contain any '.'s.
+TARGET_SPEC_VARS ?= MACHINE
+# this is what we started with
+TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+# this is what we mostly use below
+DEP_TARGET_SPEC = ${TARGET_SPEC_VARS:S,^,DEP_,:@v@${$v:U}@:ts,}
+# make sure we have defaults
+.for v in ${TARGET_SPEC_VARS}
+DEP_$v ?= ${$v}
+.endfor
+
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# Ok, this gets more complex (putting it mildly).
+# In order to stay sane, we need to ensure that all the build_dirs
+# we compute below are fully qualified wrt DEP_TARGET_SPEC.
+# The makefiles may only partially specify (eg. MACHINE only),
+# so we need to construct a set of modifiers to fill in the gaps.
+# jot 10 should output 1 2 3 .. 10
+JOT ?= jot
+_tspec_x := ${${JOT} ${TARGET_SPEC_VARS:[#]}:L:sh}
+# this handles unqualified entries
+M_dep_qual_fixes = C;(/[^/.,]+)$$;\1.$${DEP_TARGET_SPEC};
+# there needs to be at least one item missing for these to make sense
+.for i in ${_tspec_x:[2..-1]}
+_tspec_m$i := ${TARGET_SPEC_VARS:[2..$i]:@w@[^,]+@:ts,}
+_tspec_a$i := ,${TARGET_SPEC_VARS:[$i..-1]:@v@$$$${DEP_$v}@:ts,}
+M_dep_qual_fixes += C;(\.${_tspec_m$i})$$;\1${_tspec_a$i};
+.endfor
+.else
+# A harmless? default.
+M_dep_qual_fixes = U
+.endif
+
+.if !defined(.MAKE.DEPENDFILE_PREFERENCE)
+# .MAKE.DEPENDFILE_PREFERENCE makes the logic below neater?
+# you really want this set by sys.mk or similar
+.MAKE.DEPENDFILE_PREFERENCE = ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+.if ${.MAKE.DEPENDFILE:E} == "${TARGET_SPEC}"
+.if ${TARGET_SPEC} != ${MACHINE}
+.MAKE.DEPENDFILE_PREFERENCE += ${_CURDIR}/${.MAKE.DEPENDFILE:T:R}.$${MACHINE}
+.endif
+.MAKE.DEPENDFILE_PREFERENCE += ${_CURDIR}/${.MAKE.DEPENDFILE:T:R}
+.endif
+.endif
+
+_default_dependfile := ${.MAKE.DEPENDFILE_PREFERENCE:[1]:T}
+_machine_dependfiles := ${.MAKE.DEPENDFILE_PREFERENCE:T:M*${MACHINE}*}
+
+# for machine specific dependfiles we require ${MACHINE} to be at the end
+# also for the sake of sanity we require a common prefix
+.if !defined(.MAKE.DEPENDFILE_PREFIX)
+# knowing .MAKE.DEPENDFILE_PREFIX helps
+.if !empty(_machine_dependfiles)
+.MAKE.DEPENDFILE_PREFIX := ${_machine_dependfiles:[1]:T:R}
+.else
+.MAKE.DEPENDFILE_PREFIX := ${_default_dependfile:T}
+.endif
+.endif
+
+
+# this is how we identify non-machine specific dependfiles
+N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
+
+.endif # !target(_DIRDEP_USE)
+
+# if we were included recursively _DEP_TARGET_SPEC should be valid.
+.if empty(_DEP_TARGET_SPEC)
+# we may or may not have included a dependfile yet
+.if defined(.INCLUDEDFROMFILE)
+_last_dependfile := ${.INCLUDEDFROMFILE:M${.MAKE.DEPENDFILE_PREFIX}*}
+.else
+_last_dependfile := ${.MAKE.MAKEFILES:M*/${.MAKE.DEPENDFILE_PREFIX}*:[-1]}
+.endif
+.if ${_debug_reldir:U0}
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: _last_dependfile='${_last_dependfile}'
+.endif
+
+.if empty(_last_dependfile) || ${_last_dependfile:E:${N_notmachine}} == ""
+# this is all we have to work with
+DEP_MACHINE = ${TARGET_MACHINE:U${MACHINE}}
+_DEP_TARGET_SPEC := ${DEP_TARGET_SPEC}
+.else
+_DEP_TARGET_SPEC = ${_last_dependfile:${M_dep_qual_fixes:ts:}:E}
+.endif
+.if !empty(_last_dependfile)
+# record that we've read dependfile for this
+_DIRDEP_CHECKED += ${_CURDIR}.${TARGET_SPEC}
+.endif
+.endif
+
+# by now _DEP_TARGET_SPEC should be set, parse it.
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# we need to parse DEP_MACHINE may or may not contain more info
+_tspec := ${_DEP_TARGET_SPEC:S/,/ /g}
+.for i in ${_tspec_x}
+DEP_${TARGET_SPEC_VARS:[$i]} := ${_tspec:[$i]}
+.endfor
+.for v in ${TARGET_SPEC_VARS:O:u}
+.if empty(DEP_$v)
+.undef DEP_$v
+.endif
+.endfor
+.else
+DEP_MACHINE := ${_DEP_TARGET_SPEC}
+.endif
+
+# pickup customizations
+# as below you can use !target(_DIRDEP_USE) to protect things
+# which should only be done once.
+.-include "local.dirdeps.mk"
+
+# the first time we are included the _DIRDEP_USE target will not be defined
+# we can use this as a clue to do initialization and other one time things.
+.if !target(_DIRDEP_USE)
+# make sure this target exists
+dirdeps: beforedirdeps .WAIT
+beforedirdeps:
+
+# We normally expect to be included by Makefile.depend.*
+# which sets the DEP_* macros below.
+DEP_RELDIR ?= ${RELDIR}
+
+# this can cause lots of output!
+# set to a set of glob expressions that might match RELDIR
+DEBUG_DIRDEPS ?= no
+
+# remember the initial value of DEP_RELDIR - we test for it below.
+_DEP_RELDIR := ${DEP_RELDIR}
+
+# things we skip for host tools
+SKIP_HOSTDIR ?=
+
+NSkipHostDir = ${SKIP_HOSTDIR:N*.host*:S,$,.host*,:N.host*:S,^,${SRCTOP}/,:${M_ListToSkip}}
+
+# things we always skip
+# SKIP_DIRDEPS allows for adding entries on command line.
+SKIP_DIR += .host *.WAIT ${SKIP_DIRDEPS}
+SKIP_DIR.host += ${SKIP_HOSTDIR}
+
+DEP_SKIP_DIR = ${SKIP_DIR} \
+ ${SKIP_DIR.${DEP_TARGET_SPEC}:U} \
+ ${SKIP_DIR.${DEP_MACHINE}:U} \
+ ${SKIP_DIRDEPS.${DEP_MACHINE}:U}
+
+NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
+
+.if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
+# confine ourselves to the original dir
+DIRDEPS_FILTER += M${_DEP_RELDIR}*
+.endif
+
+# this is what we run below
+DIRDEP_MAKE?= ${.MAKE}
+
+# we suppress SUBDIR when visiting the leaves
+# we assume sys.mk will set MACHINE_ARCH
+# you can add extras to DIRDEP_USE_ENV
+# if there is no makefile in the target directory, we skip it.
+_DIRDEP_USE: .USE .MAKE
+ @for m in ${.MAKE.MAKEFILE_PREFERENCE}; do \
+ test -s ${.TARGET:R}/$$m || continue; \
+ echo "${TRACER}Checking ${.TARGET:R} for ${.TARGET:E} ..."; \
+ MACHINE_ARCH= NO_SUBDIR=1 ${DIRDEP_USE_ENV} \
+ TARGET_SPEC=${.TARGET:E} \
+ MACHINE=${.TARGET:E} \
+ ${DIRDEP_MAKE} -C ${.TARGET:R} || exit 1; \
+ break; \
+ done
+
+.ifdef ALL_MACHINES
+# this is how you limit it to only the machines we have been built for
+# previously.
+.if empty(ONLY_MACHINE_LIST)
+.if !empty(ALL_MACHINE_LIST)
+# ALL_MACHINE_LIST is the list of all legal machines - ignore anything else
+_machine_list != cd ${_CURDIR} && 'ls' -1 ${ALL_MACHINE_LIST:O:u:@m@${.MAKE.DEPENDFILE:T:R}.$m@} 2> /dev/null; echo
+.else
+_machine_list != 'ls' -1 ${_CURDIR}/${.MAKE.DEPENDFILE_PREFIX}.* 2> /dev/null; echo
+.endif
+_only_machines := ${_machine_list:${NIgnoreFiles:UN*.bak}:E:O:u}
+.else
+_only_machines := ${ONLY_MACHINE_LIST}
+.endif
+
+.if empty(_only_machines)
+# we must be boot-strapping
+_only_machines := ${TARGET_MACHINE:U${ALL_MACHINE_LIST:U${DEP_MACHINE}}}
+.endif
+
+.else # ! ALL_MACHINES
+# if ONLY_MACHINE_LIST is set, we are limited to that
+# if TARGET_MACHINE is set - it is really the same as ONLY_MACHINE_LIST
+# otherwise DEP_MACHINE is it - so DEP_MACHINE will match.
+_only_machines := ${ONLY_MACHINE_LIST:U${TARGET_MACHINE:U${DEP_MACHINE}}:M${DEP_MACHINE}}
+.endif
+
+.if !empty(NOT_MACHINE_LIST)
+_only_machines := ${_only_machines:${NOT_MACHINE_LIST:${M_ListToSkip}}}
+.endif
+
+# make sure we have a starting place?
+DIRDEPS ?= ${RELDIR}
+.endif # target
+
+# if repeatedly building the same target,
+# we can avoid the overhead of re-computing the tree dependencies.
+MK_DIRDEPS_CACHE ?= no
+BUILD_DIRDEPS_CACHE ?= no
+BUILD_DIRDEPS ?= yes
+
+.if !defined(NO_DIRDEPS)
+.if ${MK_DIRDEPS_CACHE} == "yes"
+# this is where we will cache all our work
+DIRDEPS_CACHE?= ${_OBJDIR}/dirdeps.cache${.TARGETS:Nall:O:u:ts-:S,/,_,g:S,^,.,:N.}
+
+# just ensure this exists
+build-dirdeps:
+
+M_oneperline = @x@\\${.newline} $$x@
+
+.if ${BUILD_DIRDEPS_CACHE} == "no"
+.if !target(dirdeps-cached)
+# we do this via sub-make
+BUILD_DIRDEPS = no
+
+dirdeps: dirdeps-cached
+dirdeps-cached: ${DIRDEPS_CACHE} .MAKE
+ @echo "${TRACER}Using ${DIRDEPS_CACHE}"
+ @MAKELEVEL=${.MAKE.LEVEL} ${.MAKE} -C ${_CURDIR} -f ${DIRDEPS_CACHE} \
+ dirdeps MK_DIRDEPS_CACHE=no BUILD_DIRDEPS=no
+
+# these should generally do
+BUILD_DIRDEPS_MAKEFILE ?= ${MAKEFILE}
+BUILD_DIRDEPS_TARGETS ?= ${.TARGETS}
+
+# we need the .meta file to ensure we update if
+# any of the Makefile.depend* changed.
+# We do not want to compare the command line though.
+${DIRDEPS_CACHE}: .META .NOMETA_CMP
+ +@{ echo '# Autogenerated - do NOT edit!'; echo; \
+ echo 'BUILD_DIRDEPS=no'; echo; \
+ echo '.include <dirdeps.mk>'; \
+ } > ${.TARGET}.new
+ +@MAKELEVEL=${.MAKE.LEVEL} DIRDEPS_CACHE=${DIRDEPS_CACHE} \
+ DIRDEPS="${DIRDEPS}" \
+ MAKEFLAGS= ${.MAKE} -C ${_CURDIR} -f ${BUILD_DIRDEPS_MAKEFILE} \
+ ${BUILD_DIRDEPS_TARGETS} BUILD_DIRDEPS_CACHE=yes \
+ .MAKE.DEPENDFILE=.none \
+ 3>&1 1>&2 | sed 's,${SRCTOP},$${SRCTOP},g' >> ${.TARGET}.new && \
+ mv ${.TARGET}.new ${.TARGET}
+
+.endif
+.elif !target(_count_dirdeps)
+# we want to capture the dirdeps count in the cache
+.END: _count_dirdeps
+_count_dirdeps: .NOMETA
+ @echo '.info $${.newline}$${TRACER}Makefiles read: total=${.MAKE.MAKEFILES:[#]} depend=${.MAKE.MAKEFILES:M*depend*:[#]} dirdeps=${.ALLTARGETS:M${SRCTOP}*:O:u:[#]}' >&3
+
+.endif
+.elif !make(dirdeps) && !target(_count_dirdeps)
+beforedirdeps: _count_dirdeps
+_count_dirdeps: .NOMETA
+ @echo "${TRACER}Makefiles read: total=${.MAKE.MAKEFILES:[#]} depend=${.MAKE.MAKEFILES:M*depend*:[#]} dirdeps=${.ALLTARGETS:M${SRCTOP}*:O:u:[#]} seconds=`expr ${now_utc} - ${start_utc}`"
+
+.endif
+.endif
+
+.if ${BUILD_DIRDEPS} == "yes"
+.if ${DEBUG_DIRDEPS:@x@${DEP_RELDIR:M$x}${${DEP_RELDIR}.${DEP_MACHINE}:L:M$x}@} != ""
+_debug_reldir = 1
+.else
+_debug_reldir = 0
+.endif
+.if ${DEBUG_DIRDEPS:@x@${DEP_RELDIR:M$x}${${DEP_RELDIR}.depend:L:M$x}@} != ""
+_debug_search = 1
+.else
+_debug_search = 0
+.endif
+
+# the rest is done repeatedly for every Makefile.depend we read.
+# if we are anything but the original dir we care only about the
+# machine type we were included for..
+
+.if ${DEP_RELDIR} == "."
+_this_dir := ${SRCTOP}
+.else
+_this_dir := ${SRCTOP}/${DEP_RELDIR}
+.endif
+
+# on rare occasions, there can be a need for extra help
+_dep_hack := ${_this_dir}/${.MAKE.DEPENDFILE_PREFIX}.inc
+.-include "${_dep_hack}"
+
+.if ${DEP_RELDIR} != ${_DEP_RELDIR} || ${DEP_TARGET_SPEC} != ${TARGET_SPEC}
+# this should be all
+_machines := ${DEP_MACHINE}
+.else
+# this is the machine list we actually use below
+_machines := ${_only_machines}
+
+.if defined(HOSTPROG) || ${DEP_MACHINE} == "host"
+# we need to build this guy's dependencies for host as well.
+_machines += host
+.endif
+
+_machines := ${_machines:O:u}
+.endif
+
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# we need to tweak _machines
+_dm := ${DEP_MACHINE}
+# apply the same filtering that we do when qualifying DIRDEPS.
+# M_dep_qual_fixes expects .${MACHINE}* so add (and remove) '.'
+_machines := ${_machines:@DEP_MACHINE@${DEP_TARGET_SPEC}@:S,^,.,:${M_dep_qual_fixes:ts:}:O:u:S,^.,,}
+DEP_MACHINE := ${_dm}
+.endif
+
+# reset each time through
+_build_dirs =
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# pickup other machines for this dir if necessary
+.if ${BUILD_AT_LEVEL0:Uyes} == "no"
+_build_dirs += ${_machines:@m@${_CURDIR}.$m@}
+.else
+_build_dirs += ${_machines:N${DEP_TARGET_SPEC}:@m@${_CURDIR}.$m@}
+.if ${DEP_TARGET_SPEC} == ${TARGET_SPEC}
+# pickup local dependencies now
+.-include <.depend>
+.endif
+.endif
+.endif
+
+.if ${_debug_reldir}
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: DIRDEPS='${DIRDEPS}'
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: _machines='${_machines}'
+.endif
+
+.if !empty(DIRDEPS)
+# these we reset each time through as they can depend on DEP_MACHINE
+DEP_DIRDEPS_FILTER = \
+ ${DIRDEPS_FILTER.${DEP_TARGET_SPEC}:U} \
+ ${DIRDEPS_FILTER.${DEP_MACHINE}:U} \
+ ${DIRDEPS_FILTER:U}
+.if empty(DEP_DIRDEPS_FILTER)
+# something harmless
+DEP_DIRDEPS_FILTER = U
+.endif
+
+# this is what we start with
+__depdirs := ${DIRDEPS:${NSkipDir}:${DEP_DIRDEPS_FILTER:ts:}:C,//+,/,g:O:u:@d@${SRCTOP}/$d@}
+
+# some entries may be qualified with .<machine>
+# the :M*/*/*.* just tries to limit the dirs we check to likely ones.
+# the ${d:E:M*/*} ensures we don't consider junos/usr.sbin/mgd
+__qual_depdirs := ${__depdirs:M*/*/*.*:@d@${exists($d):?:${"${d:E:M*/*}":?:${exists(${d:R}):?$d:}}}@}
+__unqual_depdirs := ${__depdirs:${__qual_depdirs:Uno:${M_ListToSkip}}}
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# if it was called out - we likely need it.
+__hostdpadd := ${DPADD:U.:M${HOST_OBJTOP}/*:S,${HOST_OBJTOP}/,,:H:${NSkipDir}:${DIRDEPS_FILTER:ts:}:S,$,.host,:N.*:@d@${SRCTOP}/$d@}
+__qual_depdirs += ${__hostdpadd}
+.endif
+
+.if ${_debug_reldir}
+.info depdirs=${__depdirs}
+.info qualified=${__qual_depdirs}
+.info unqualified=${__unqual_depdirs}
+.endif
+
+# _build_dirs is what we will feed to _DIRDEP_USE
+_build_dirs += \
+ ${__qual_depdirs:M*.host:${NSkipHostDir}:N.host} \
+ ${__qual_depdirs:N*.host} \
+ ${_machines:Mhost*:@m@${__unqual_depdirs:@d@$d.$m@}@:${NSkipHostDir}:N.host} \
+ ${_machines:Nhost*:@m@${__unqual_depdirs:@d@$d.$m@}@}
+
+# qualify everything now
+_build_dirs := ${_build_dirs:${M_dep_qual_fixes:ts:}:O:u}
+
+.endif # empty DIRDEPS
+
+# Normally if doing make -V something,
+# we do not want to waste time chasing DIRDEPS
+# but if we want to count the number of Makefile.depend* read, we do.
+.if ${.MAKEFLAGS:M-V${_V_READ_DIRDEPS}} == ""
+.if !empty(_build_dirs)
+.if ${BUILD_DIRDEPS_CACHE} == "yes"
+x!= { echo; echo '\# ${DEP_RELDIR}.${DEP_TARGET_SPEC}'; \
+ echo 'dirdeps: ${_build_dirs:${M_oneperline}}'; echo; } >&3; echo
+x!= { ${_build_dirs:@x@${target($x):?:echo '$x: _DIRDEP_USE';}@} echo; } >&3; echo
+.else
+# this makes it all happen
+dirdeps: ${_build_dirs}
+.endif
+${_build_dirs}: _DIRDEP_USE
+
+.if ${_debug_reldir}
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: needs: ${_build_dirs}
+.endif
+
+# this builds the dependency graph
+.for m in ${_machines}
+# it would be nice to do :N${.TARGET}
+.if !empty(__qual_depdirs)
+.for q in ${__qual_depdirs:${M_dep_qual_fixes:ts:}:E:O:u:N$m}
+.if ${_debug_reldir} || ${DEBUG_DIRDEPS:@x@${${DEP_RELDIR}.$m:L:M$x}${${DEP_RELDIR}.$q:L:M$x}@} != ""
+.info ${DEP_RELDIR}.$m: graph: ${_build_dirs:M*.$q}
+.endif
+.if ${BUILD_DIRDEPS_CACHE} == "yes"
+x!= { echo; echo '${_this_dir}.$m: ${_build_dirs:M*.$q:${M_oneperline}}'; echo; } >&3; echo
+.else
+${_this_dir}.$m: ${_build_dirs:M*.$q}
+.endif
+.endfor
+.endif
+.if ${_debug_reldir}
+.info ${DEP_RELDIR}.$m: graph: ${_build_dirs:M*.$m:N${_this_dir}.$m}
+.endif
+.if ${BUILD_DIRDEPS_CACHE} == "yes"
+x!= { echo; echo '${_this_dir}.$m: ${_build_dirs:M*.$m:N${_this_dir}.$m:${M_oneperline}}'; echo; } >&3; echo
+.else
+${_this_dir}.$m: ${_build_dirs:M*.$m:N${_this_dir}.$m}
+.endif
+.endfor
+
+.endif
+
+# Now find more dependencies - and recurse.
+.for d in ${_build_dirs}
+.if ${_DIRDEP_CHECKED:M$d} == ""
+# once only
+_DIRDEP_CHECKED += $d
+.if ${_debug_search}
+.info checking $d
+.endif
+# Note: _build_dirs is fully qualifed so d:R is always the directory
+.if exists(${d:R})
+# Warning: there is an assumption here that MACHINE is always
+# the first entry in TARGET_SPEC_VARS.
+# If TARGET_SPEC and MACHINE are insufficient, you have a problem.
+_m := ${.MAKE.DEPENDFILE_PREFERENCE:T:S;${TARGET_SPEC}$;${d:E};:S;${MACHINE};${d:E:C/,.*//};:@m@${exists(${d:R}/$m):?${d:R}/$m:}@:[1]}
+.if !empty(_m)
+# M_dep_qual_fixes isn't geared to Makefile.depend
+_qm := ${_m:C;(\.depend)$;\1.${d:E};:${M_dep_qual_fixes:ts:}}
+.if ${_debug_search}
+.info Looking for ${_qm}
+.endif
+# we pass _DEP_TARGET_SPEC to tell the next step what we want
+_DEP_TARGET_SPEC := ${d:E}
+# some makefiles may still look at this
+_DEP_MACHINE := ${d:E:C/,.*//}
+# set this "just in case"
+# we can skip :tA since we computed the path above
+DEP_RELDIR := ${_m:H:S,${SRCTOP}/,,}
+# and reset this
+DIRDEPS =
+.if ${_debug_reldir} && ${_qm} != ${_m}
+.info loading ${_m} for ${d:E}
+.endif
+.include <${_m}>
+.endif
+.endif
+.endif
+.endfor
+
+.endif # -V
+.endif # BUILD_DIRDEPS
+
+.elif ${.MAKE.LEVEL} > 42
+.error You should have stopped recursing by now.
+.else
+# we are building something
+DEP_RELDIR := ${RELDIR}
+_DEP_RELDIR := ${RELDIR}
+# pickup local dependencies
+.-include <.depend>
+.endif
+
+# bootstrapping new dependencies made easy?
+.if (make(bootstrap) || make(bootstrap-recurse)) && !target(bootstrap)
+
+.if exists(${.CURDIR}/${.MAKE.DEPENDFILE:T})
+# stop here
+${.TARGETS:Mboot*}:
+.else
+# find a Makefile.depend to use as _src
+_src != cd ${.CURDIR} && for m in ${.MAKE.DEPENDFILE_PREFERENCE:T:S,${MACHINE},*,}; do test -s $$m || continue; echo $$m; break; done; echo
+.if empty(_src)
+.error cannot find any of ${.MAKE.DEPENDFILE_PREFERENCE:T}
+.endif
+
+_src?= ${.MAKE.DEPENDFILE:T}
+
+bootstrap-this: .NOTMAIN
+ @echo Bootstrapping ${RELDIR}/${.MAKE.DEPENDFILE:T} from ${_src:T}
+ (cd ${.CURDIR} && sed 's,${_src:E},${MACHINE},g' ${_src} > ${.MAKE.DEPENDFILE:T})
+
+bootstrap: bootstrap-recurse
+bootstrap-recurse: bootstrap-this
+
+_mf := ${.PARSEFILE}
+bootstrap-recurse: .NOTMAIN .MAKE
+ @cd ${SRCTOP} && \
+ for d in `cd ${RELDIR} && ${.MAKE} -B -f ${"${.MAKEFLAGS:M-n}":?${_src}:${.MAKE.DEPENDFILE:T}} -V DIRDEPS`; do \
+ test -d $$d || d=$${d%.*}; \
+ test -d $$d || continue; \
+ echo "Checking $$d for bootstrap ..."; \
+ (cd $$d && ${.MAKE} -f ${_mf} bootstrap-recurse); \
+ done
+
+.endif
+.endif
diff --git a/share/mk/gendirdeps.mk b/share/mk/gendirdeps.mk
new file mode 100644
index 0000000..f0c177d
--- /dev/null
+++ b/share/mk/gendirdeps.mk
@@ -0,0 +1,347 @@
+# $FreeBSD$
+# $Id: gendirdeps.mk,v 1.27 2015/06/08 20:55:11 sjg Exp $
+
+# Copyright (c) 2010-2013, Juniper Networks, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#
+# This makefile [re]generates ${.MAKE.DEPENDFILE}
+#
+
+.include <install-new.mk>
+
+# Assumptions:
+# RELDIR is the relative path from ${SRCTOP} to ${_CURDIR}
+# (SRCTOP is ${SB}/src)
+# _CURDIR is the absolute version of ${.CURDIR}
+# _OBJDIR is the absolute version of ${.OBJDIR}
+# _objroot is realpath of ${_OBJTOP} without ${MACHINE}
+# this may be different from _OBJROOT if $SB/obj is a
+# symlink to another filesystem.
+# _objroot must be a prefix match for _objtop
+
+.MAIN: all
+
+# keep this simple
+.MAKE.MODE = compat
+
+all:
+
+_CURDIR ?= ${.CURDIR}
+_OBJDIR ?= ${.OBJDIR}
+_OBJTOP ?= ${OBJTOP}
+_OBJROOT ?= ${OBJROOT:U${_OBJTOP}}
+.if ${_OBJROOT:M*/}
+_slash=/
+.else
+_slash=
+.endif
+_objroot ?= ${_OBJROOT:tA}${_slash}
+
+_this = ${.PARSEDIR}/${.PARSEFILE}
+
+# remember what to make
+_DEPENDFILE := ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+
+# We do _not_ want to read our own output!
+.MAKE.DEPENDFILE = /dev/null
+
+# caller should have set this
+META_FILES ?= ${.MAKE.META.FILES}
+
+.if !empty(META_FILES)
+
+.if ${.MAKE.LEVEL} > 0 && !empty(GENDIRDEPS_FILTER)
+# so we can compare below
+.-include <${_DEPENDFILE}>
+# yes, I mean :U with no value
+_DIRDEPS := ${DIRDEPS:U:O:u}
+.endif
+
+META_FILES := ${META_FILES:T:O:u}
+.export META_FILES
+
+# pickup customizations
+.-include "local.gendirdeps.mk"
+
+# these are actually prefixes that we'll skip
+# they should all be absolute paths
+SKIP_GENDIRDEPS ?=
+.if !empty(SKIP_GENDIRDEPS)
+_skip_gendirdeps = egrep -v '^(${SKIP_GENDIRDEPS:O:u:ts|})' |
+.else
+_skip_gendirdeps =
+.endif
+
+# Below we will turn _{VAR} into ${VAR} which keeps this simple
+# GENDIRDEPS_FILTER_DIR_VARS is a list of dirs to be substiuted for.
+# GENDIRDEPS_FILTER_VARS is more general.
+# In each case order matters.
+.if !empty(GENDIRDEPS_FILTER_DIR_VARS)
+GENDIRDEPS_FILTER += ${GENDIRDEPS_FILTER_DIR_VARS:@v@S,${$v},_{${v}},@}
+.endif
+.if !empty(GENDIRDEPS_FILTER_VARS)
+GENDIRDEPS_FILTER += ${GENDIRDEPS_FILTER_VARS:@v@S,/${$v}/,/_{${v}}/,@:NS,//,*:u}
+.endif
+
+# this (*should* be set in meta.sys.mk)
+# is the script that extracts what we want.
+META2DEPS ?= ${.PARSEDIR}/meta2deps.sh
+META2DEPS := ${META2DEPS}
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != "" && ${DEBUG_GENDIRDEPS:Uno:Mmeta2d*} != ""
+_time = time
+_sh_x = sh -x
+_py_d = -ddd
+.else
+_time =
+_sh_x =
+_py_d =
+.endif
+
+.if ${META2DEPS:E} == "py"
+# we can afford to do this all the time.
+DPDEPS ?= no
+META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d}
+.if ${DPDEPS:tl} != "no"
+META2DEPS_CMD += -D ${DPDEPS}
+.endif
+META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' |
+.elif ${META2DEPS:E} == "sh"
+META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} OBJTOP=${_OBJTOP}
+.else
+META2DEPS_CMD ?= ${META2DEPS}
+.endif
+
+.if ${TARGET_OBJ_SPEC:U${MACHINE}} != ${MACHINE}
+META2DEPS_CMD += -T ${TARGET_OBJ_SPEC}
+.endif
+META2DEPS_CMD += \
+ -R ${RELDIR} -H ${HOST_TARGET} \
+ ${M2D_OBJROOTS:O:u:@o@-O $o@}
+
+
+M2D_OBJROOTS += ${OBJTOP} ${_OBJROOT} ${_objroot}
+.if defined(SB_OBJROOT)
+M2D_OBJROOTS += ${SB_OBJROOT}
+.endif
+.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} == ""
+# meta2deps.py only groks objroot
+# so we need to give it what it expects
+# and tell it not to add machine qualifiers
+META2DEPS_ARGS += MACHINE=none
+.endif
+.if defined(SB_BACKING_SB)
+META2DEPS_CMD += -S ${SB_BACKING_SB}/src
+M2D_OBJROOTS += ${SB_BACKING_SB}/${SB_OBJPREFIX}
+.endif
+
+# we are only interested in the dirs
+# sepecifically those we read something from.
+# we canonicalize them to keep things simple
+# if we are using a split-fs sandbox, it gets a little messier.
+_objtop := ${_OBJTOP:tA}
+dir_list != cd ${_OBJDIR} && \
+ ${META2DEPS_CMD} MACHINE=${MACHINE} \
+ SRCTOP=${SRCTOP} RELDIR=${RELDIR} CURDIR=${_CURDIR} \
+ ${META2DEPS_ARGS} \
+ ${META_FILES:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+ sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,'
+
+.if ${dir_list:M*ERROR\:*} != ""
+.warning ${dir_list:tW:C,.*(ERROR),\1,}
+.warning Skipping ${_DEPENDFILE:S,${SRCTOP}/,,}
+# we are not going to update anything
+.else
+dpadd_dir_list=
+.if !empty(DPADD)
+_nonlibs := ${DPADD:T:Nlib*:N*include}
+.if !empty(_nonlibs)
+ddep_list =
+.for f in ${_nonlibs:@x@${DPADD:M*/$x}@}
+.if exists($f.dirdep)
+ddep_list += $f.dirdep
+.elif exists(${f:H}.dirdep)
+ddep_list += ${f:H}.dirdep
+.else
+dir_list += ${f:H:tA}
+dpadd_dir_list += ${f:H:tA}
+.endif
+.endfor
+.if !empty(ddep_list)
+ddeps != cat ${ddep_list:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+ sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,;s,\.${MACHINE}$$,,'
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: raw_dir_list='${dir_list}'
+.info ${RELDIR}: ddeps='${ddeps}'
+.endif
+dir_list += ${ddeps}
+.endif
+.endif
+.endif
+
+# DIRDEPS represent things that had to have been built first
+# so they should all be undir OBJTOP.
+# Note that ${_OBJTOP}/bsd/include/machine will get reported
+# to us as $SRCTOP/bsd/sys/$MACHINE_ARCH/include meaning we
+# will want to visit bsd/include
+# so we add
+# ${"${dir_list:M*bsd/sys/${MACHINE_ARCH}/include}":?bsd/include:}
+# to GENDIRDEPS_DIR_LIST_XTRAS
+_objtops = ${OBJTOP} ${_OBJTOP} ${_objtop}
+_objtops := ${_objtops:O:u}
+dirdep_list = \
+ ${_objtops:@o@${dir_list:M$o*/*:C,$o[^/]*/,,}@} \
+ ${GENDIRDEPS_DIR_LIST_XTRAS}
+
+# sort longest first
+M2D_OBJROOTS := ${M2D_OBJROOTS:O:u:[-1..1]}
+
+# anything we use from an object dir other than ours
+# needs to be qualified with its .<machine> suffix
+# (we used the pseudo machine "host" for the HOST_TARGET).
+skip_ql= ${SRCTOP}* ${_objtops:@o@$o*@}
+.for o in ${M2D_OBJROOTS:${skip_ql:${M_ListToSkip}}}
+# we need := so only skip_ql to this point applies
+ql.$o := ${dir_list:${skip_ql:${M_ListToSkip}}:M$o*/*/*:C,$o([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
+qualdir_list += ${ql.$o}
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: o=$o ${ql.$o qualdir_list:L:@v@$v=${$v}@}
+.endif
+skip_ql+= $o*
+.endfor
+
+dirdep_list := ${dirdep_list:O:u}
+qualdir_list := ${qualdir_list:N*.${MACHINE}:O:u}
+
+DIRDEPS = \
+ ${dirdep_list:N${RELDIR}:N${RELDIR}/*} \
+ ${qualdir_list:N${RELDIR}.*:N${RELDIR}/*}
+
+# We only consider things below $RELDIR/ if they have a makefile.
+# This is the same test that _DIRDEP_USE applies.
+# We have do a double test with dirdep_list as it _may_ contain
+# qualified dirs - if we got anything from a stage dir.
+# qualdir_list we know are all qualified.
+# It would be nice do peform this check for all of DIRDEPS,
+# but we cannot assume that all of the tree is present,
+# in fact we can only assume that RELDIR is.
+DIRDEPS += \
+ ${dirdep_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/$d/$m):?$d:${exists(${SRCTOP}/${d:R}/$m):?$d:}}@}@} \
+ ${qualdir_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/${d:R}/$m):?$d:}@}@}
+
+DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:C,//+,/,g:O:u}
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
+.info ${RELDIR}: dir_list='${dir_list}'
+.info ${RELDIR}: dpadd_dir_list='${dpadd_dir_list}'
+.info ${RELDIR}: dirdep_list='${dirdep_list}'
+.info ${RELDIR}: qualdir_list='${qualdir_list}'
+.info ${RELDIR}: SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS}'
+.info ${RELDIR}: GENDIRDEPS_FILTER='${GENDIRDEPS_FILTER}'
+.info ${RELDIR}: FORCE_DPADD='${DPADD}'
+.info ${RELDIR}: DIRDEPS='${DIRDEPS}'
+.endif
+
+# SRC_DIRDEPS is for checkout logic
+src_dirdep_list = \
+ ${dir_list:M${SRCTOP}/*:S,${SRCTOP}/,,}
+
+SRC_DIRDEPS = \
+ ${src_dirdep_list:N${RELDIR}:N${RELDIR}/*:C,(/h)/.*,,}
+
+SRC_DIRDEPS := ${SRC_DIRDEPS:${GENDIRDEPS_SRC_FILTER:UN/*:ts:}:C,//+,/,g:O:u}
+
+# if you want to capture SRC_DIRDEPS in .MAKE.DEPENDFILE put
+# SRC_DIRDEPS_FILE = ${_DEPENDFILE}
+# in local.gendirdeps.mk
+.if ${SRC_DIRDEPS_FILE:Uno:tl} != "no"
+ECHO_SRC_DIRDEPS = echo 'SRC_DIRDEPS = \'; echo '${SRC_DIRDEPS:@d@ $d \\${.newline}@}'; echo;
+
+.if ${SRC_DIRDEPS_FILE:T} == ${_DEPENDFILE:T}
+_include_src_dirdeps = ${ECHO_SRC_DIRDEPS}
+.else
+all: ${SRC_DIRDEPS_FILE}
+.if !target(${SRC_DIRDEPS_FILE})
+${SRC_DIRDEPS_FILE}: ${META_FILES} ${_this} ${META2DEPS}
+ @(${ECHO_SRC_DIRDEPS}) > $@
+.endif
+.endif
+.endif
+_include_src_dirdeps ?=
+
+all: ${_DEPENDFILE}
+
+# if this is going to exist it would be there by now
+.if !exists(.depend)
+CAT_DEPEND = /dev/null
+.endif
+CAT_DEPEND ?= .depend
+
+.if !empty(_DIRDEPS) && ${DIRDEPS} != ${_DIRDEPS}
+# we may have changed a filter
+.PHONY: ${_DEPENDFILE}
+.endif
+
+# 'cat .depend' should suffice, but if we are mixing build modes
+# .depend may contain things we don't want.
+# The sed command at the end of the stream, allows for the filters
+# to output _{VAR} tokens which we will turn into proper ${VAR} references.
+${_DEPENDFILE}: ${CAT_DEPEND:M.depend} ${META_FILES:O:u:@m@${exists($m):?$m:}@} ${_this} ${META2DEPS}
+ @(${GENDIRDEPS_HEADER} echo '# Autogenerated - do NOT edit!'; echo; \
+ echo 'DIRDEPS = \'; \
+ echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
+ ${_include_src_dirdeps} \
+ echo '.include <dirdeps.mk>'; \
+ echo; \
+ echo '.if $${DEP_RELDIR} == $${_DEP_RELDIR}'; \
+ echo '# local dependencies - needed for -jN in clean tree'; \
+ [ -s ${CAT_DEPEND} ] && { grep : ${CAT_DEPEND} | grep -v '[/\\]'; }; \
+ echo '.endif' ) | sed 's,_\([{(]\),$$\1,g' > $@.new${.MAKE.PID}
+ @${InstallNew}; InstallNew -s $@.new${.MAKE.PID}
+
+.endif # meta2deps failed
+.elif !empty(SUBDIR)
+
+DIRDEPS := ${SUBDIR:S,^,${RELDIR}/,:O:u}
+
+all: ${_DEPENDFILE}
+
+${_DEPENDFILE}: ${MAKEFILE} ${_this}
+ @(${GENDIRDEPS_HEADER} echo '# Autogenerated - do NOT edit!'; echo; \
+ echo 'DIRDEPS = \'; \
+ echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
+ echo '.include <dirdeps.mk>'; \
+ echo ) | sed 's,_\([{(]\),$$\1,g' > $@.new
+ @${InstallNew}; InstallNew $@.new
+
+.else
+
+# nothing to do
+all ${_DEPENDFILE}:
+
+.endif
+${_DEPENDFILE}: .PRECIOUS
diff --git a/share/mk/host-target.mk b/share/mk/host-target.mk
new file mode 100644
index 0000000..754f1ec
--- /dev/null
+++ b/share/mk/host-target.mk
@@ -0,0 +1,36 @@
+# $FreeBSD$
+# RCSid:
+# $Id: host-target.mk,v 1.7 2014/05/16 17:54:52 sjg Exp $
+
+# Host platform information; may be overridden
+.if !defined(_HOST_OSNAME)
+_HOST_OSNAME != uname -s
+.export _HOST_OSNAME
+.endif
+.if !defined(_HOST_OSREL)
+_HOST_OSREL != uname -r
+.export _HOST_OSREL
+.endif
+.if !defined(_HOST_ARCH)
+_HOST_ARCH != uname -p 2>/dev/null || uname -m
+# uname -p may produce garbage on linux
+.if ${_HOST_ARCH:[\#]} > 1
+_HOST_ARCH != uname -m
+.endif
+.export _HOST_ARCH
+.endif
+.if !defined(HOST_MACHINE)
+HOST_MACHINE != uname -m
+.export HOST_MACHINE
+.endif
+
+HOST_OSMAJOR := ${_HOST_OSREL:C/[^0-9].*//}
+HOST_OSTYPE := ${_HOST_OSNAME}-${_HOST_OSREL:C/\([^\)]*\)//}-${_HOST_ARCH}
+HOST_OS := ${_HOST_OSNAME}
+host_os := ${_HOST_OSNAME:tl}
+HOST_TARGET := ${host_os}${HOST_OSMAJOR}-${_HOST_ARCH}
+
+# tr is insanely non-portable, accommodate the lowest common denominator
+TR ?= tr
+toLower = ${TR} 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'
+toUpper = ${TR} 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
diff --git a/share/mk/install-new.mk b/share/mk/install-new.mk
new file mode 100644
index 0000000..469e986
--- /dev/null
+++ b/share/mk/install-new.mk
@@ -0,0 +1,54 @@
+# $FreeBSD$
+# $Id: install-new.mk,v 1.3 2012/03/24 18:25:49 sjg Exp $
+#
+# @(#) Copyright (c) 2009, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !defined(InstallNew)
+
+# copy if src and target are different making a backup if desired
+CmpCp= CmpCp() { \
+ src=$$1 target=$$2 _bak=$$3; \
+ if ! test -s $$target || ! cmp -s $$target $$src; then \
+ trap "" 1 2 3 15; \
+ if test -s $$target; then \
+ if test "x$$_bak" != x; then \
+ rm -f $$target$$_bak; \
+ mv $$target $$target$$_bak; \
+ else \
+ rm -f $$target; \
+ fi; \
+ fi; \
+ cp $$src $$target; \
+ fi; }
+
+# If the .new file is different, we want it.
+# Note: this function will work as is for *.new$RANDOM"
+InstallNew= ${CmpCp}; InstallNew() { \
+ _t=-e; _bak=; \
+ while :; do \
+ case "$$1" in \
+ -?) _t=$$1; shift;; \
+ --bak) _bak=$$2; shift 2;; \
+ *) break;; \
+ esac; \
+ done; \
+ for new in "$$@"; do \
+ if test $$_t $$new; then \
+ target=`expr $$new : '\(.*\).new'`; \
+ CmpCp $$new $$target $$_bak; \
+ fi; \
+ rm -f $$new; \
+ done; :; }
+
+.endif
diff --git a/share/mk/local.autodep.mk b/share/mk/local.autodep.mk
new file mode 100644
index 0000000..8223fec
--- /dev/null
+++ b/share/mk/local.autodep.mk
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+.if ${.MAKE.DEPENDFILE:M*.${MACHINE}} == ""
+# by default only MACHINE0 does updates
+UPDATE_DEPENDFILE_MACHINE?= ${MACHINE0}
+.if ${MACHINE} != ${UPDATE_DEPENDFILE_MACHINE}
+UPDATE_DEPENDFILE= no
+.endif
+.endif
+
+CFLAGS+= ${CFLAGS_LAST}
+CXXFLAGS+= ${CXXFLAGS_LAST}
+LDFLAGS+= ${LDFLAGS_LAST}
+
+CLEANFILES+= .depend
+
+# handy for debugging
+.SUFFIXES: .S .c .cc .cpp .cpp-out
+
+
+.S.cpp-out .c.cpp-out: .NOMETA
+ @${CC} -E ${CFLAGS} ${.IMPSRC} | grep -v '^[[:space:]]*$$'
+
+.cc.cpp-out: .NOMETA
+ @${CXX} -E ${CXXFLAGS} ${.IMPSRC} | grep -v '^[[:space:]]*$$'
diff --git a/share/mk/local.dirdeps.mk b/share/mk/local.dirdeps.mk
new file mode 100644
index 0000000..d83e3e8
--- /dev/null
+++ b/share/mk/local.dirdeps.mk
@@ -0,0 +1,99 @@
+# $FreeBSD$
+.if !target(_DIRDEP_USE)
+# we are the 1st makefile
+
+.if !defined(MK_CLANG)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+
+# DEP_MACHINE is set before we get here, this may not be.
+DEP_RELDIR ?= ${RELDIR}
+
+.if ${.TARGETS:Uall:M*/*} && empty(DIRDEPS)
+# This little trick let's us do
+#
+# mk -f dirdeps.mk some/dir.i386,bsd
+#
+DIRDEPS := ${.TARGETS:M*/*}
+${.TARGETS:Nall}: all
+.endif
+
+# making universe is special
+.if defined(UNIVERSE_GUARD)
+# these should be done by now
+DIRDEPS_FILTER+= N*.host
+.endif
+
+# pseudo machines get no qualification
+.for m in host common
+M_dep_qual_fixes += C;($m),[^/.,]*$$;\1;
+.endfor
+
+#.info M_dep_qual_fixes=${M_dep_qual_fixes}
+# we want to supress these dependencies for host tools
+# but some libs are sadly needed.
+_need_host_libs= \
+ lib/libc++ \
+ lib/libcxxrt \
+ lib/libdwarf \
+ lib/libmd \
+
+N_host_libs:= ${cd ${SRCTOP} && echo lib/lib*:L:sh:${_need_host_libs:${M_ListToSkip}}:${M_ListToSkip}}
+DIRDEPS_FILTER.host = \
+ ${N_host_libs} \
+ Ninclude* \
+ Nlib/csu* \
+ Nlib/[mn]* \
+ Ngnu/lib/csu* \
+ Ngnu/lib/lib[a-r]* \
+ Nusr.bin/xinstall* \
+
+
+DIRDEPS_FILTER+= \
+ Nbin/cat.host \
+ ${DIRDEPS_FILTER.xtras:U}
+.endif
+
+# reset this each time
+DIRDEPS_FILTER.xtras=
+.if ${DEP_MACHINE:Npkgs*} != ""
+DIRDEPS_FILTER.xtras+= Nusr.bin/clang/clang.host
+.endif
+
+.if ${DEP_MACHINE} != "host"
+
+# this is how we can handle optional dependencies
+.if ${DEP_RELDIR} == "lib/libc"
+DIRDEPS += lib/libc_nonshared
+.if ${MK_SSP:Uno} != "no"
+DIRDEPS += gnu/lib/libssp/libssp_nonshared
+.endif
+.else
+DIRDEPS_FILTER.xtras+= Nlib/libc_nonshared
+.endif
+
+# some optional things
+.if ${MK_CTF} == "yes" && ${DEP_RELDIR:Mcddl/usr.bin/ctf*} == ""
+DIRDEPS += \
+ cddl/usr.bin/ctfconvert.host \
+ cddl/usr.bin/ctfmerge.host
+.endif
+
+.endif
+
+.if ${MK_CLANG} == "yes" && ${DEP_RELDIR:Nlib/clang/lib*:Nlib/libc*} == ""
+DIRDEPS+= lib/clang/include
+.endif
+
+.if ${MK_STAGING} == "yes"
+# we need targets/pseudo/stage to prep the stage tree
+.if ${DEP_RELDIR} != "targets/pseudo/stage"
+DIRDEPS += targets/pseudo/stage
+.endif
+.endif
+
+DEP_MACHINE_ARCH = ${MACHINE_ARCH.${DEP_MACHINE}}
+CSU_DIR.${DEP_MACHINE_ARCH} ?= csu/${DEP_MACHINE_ARCH}
+CSU_DIR := ${CSU_DIR.${DEP_MACHINE_ARCH}}
+BOOT_MACHINE_DIR:= ${BOOT_MACHINE_DIR.${DEP_MACHINE}}
+KERNEL_NAME:= ${KERNEL_NAME.${DEP_MACHINE}}
diff --git a/share/mk/local.gendirdeps.mk b/share/mk/local.gendirdeps.mk
new file mode 100644
index 0000000..47f463e
--- /dev/null
+++ b/share/mk/local.gendirdeps.mk
@@ -0,0 +1,50 @@
+# $FreeBSD$
+
+# we need a keyword, this noise is to prevent it being expanded
+GENDIRDEPS_HEADER= echo '\# ${FreeBSD:L:@v@$$$v$$ @:M*F*}';
+
+# supress optional/auto dependecies
+# local.dirdeps.mk will put them in if necessary
+GENDIRDEPS_FILTER+= \
+ Ngnu/lib/libssp/libssp_nonshared \
+ Ncddl/usr.bin/ctf* \
+ Nlib/clang/include \
+ Nlib/libc_nonshared \
+ Ntargets/pseudo/stage* \
+ Ntools/*
+
+.if ${RELDIR:Mtargets*} == ""
+.if ${RELDIR:Nusr.bin/clang/*:Ngnu/usr.bin/cc/*:Nlib/clang*} != ""
+GENDIRDEPS_FILTER.host+= \
+ Nusr.bin/clang/* \
+ Ngnu/usr.bin/cc/* \
+
+.endif
+GENDIRDEPS_FILTER+= \
+ Nusr.bin/clang/clang.host \
+ Ngnu/usr.bin/cc* \
+ Ngnu/usr.bin/binutils*.host \
+
+.endif
+
+GENDIRDEPS_FILTER+= ${GENDIRDEPS_FILTER.${MACHINE}:U}
+
+# gendirdeps.mk will turn _{VAR} into ${VAR} which keeps this simple
+# order of this list matters!
+GENDIRDEPS_FILTER_DIR_VARS+= \
+ CSU_DIR \
+ BOOT_MACHINE_DIR
+
+# order of this list matters!
+GENDIRDEPS_FILTER_VARS+= \
+ KERNEL_NAME \
+ MACHINE_CPUARCH \
+ MACHINE_ARCH \
+ MACHINE
+
+GENDIRDEPS_FILTER+= ${GENDIRDEPS_FILTER_DIR_VARS:@v@S,${$v},_{${v}},@}
+GENDIRDEPS_FILTER+= ${GENDIRDEPS_FILTER_VARS:@v@S,/${$v}/,/_{${v}}/,@:NS,//,*:u}
+
+# handle the non-standard way that gnu/usr.bin/groff/tmac is staged
+GENDIRDEPS_FILTER+= C,.*usr/share/tmac.*stage,gnu/usr.bin/groff/tmac,
+
diff --git a/share/mk/local.init.mk b/share/mk/local.init.mk
new file mode 100644
index 0000000..cf95063
--- /dev/null
+++ b/share/mk/local.init.mk
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+.if ${.MAKE.MODE:Unormal:Mmeta*} != ""
+.if !empty(SUBDIR) && !defined(LIB) && !defined(PROG) && ${.MAKE.MAKEFILES:M*bsd.prog.mk} == ""
+.if ${.MAKE.MODE:Mleaf*} != ""
+# we only want leaf dirs to build in meta mode... and we are not one
+.MAKE.MODE = normal
+.endif
+.endif
+.endif
+
+.if ${MK_SYSROOT} == "yes" && !empty(SYSROOT)
+CFLAGS_LAST+= --sysroot=${SYSROOT}
+CXXFLAGS_LAST+= --sysroot=${SYSROOT}
+LDADD+= --sysroot=${SYSROOT}
+.elif ${MK_STAGING} == "yes"
+CFLAGS+= -I${STAGE_INCLUDEDIR}
+LDADD+= -L${STAGE_LIBDIR}
+.endif
+.if ${MACHINE} == "host"
+# we cheat?
+LDADD+= -B/usr/lib
+CFLAGS_LAST+= -I/usr/include
+CXXFLAGS_LAST+= -I/usr/include
+.endif
+
+.if ${MACHINE} == "host"
+.if ${.MAKE.DEPENDFILE:E} != "host"
+UPDATE_DEPENDFILE?= no
+.endif
+HOST_CC?= /usr/bin/cc
+HOST_CFLAGS+= -DHOSTPROG
+CC= ${HOST_CC}
+CFLAGS+= ${HOST_CFLAGS}
+.endif
diff --git a/share/mk/local.meta.sys.mk b/share/mk/local.meta.sys.mk
new file mode 100644
index 0000000..2b7f81d
--- /dev/null
+++ b/share/mk/local.meta.sys.mk
@@ -0,0 +1,209 @@
+# $FreeBSD$
+
+# local configuration specific to meta mode
+# XXX some of this should be in meta.sys.mk
+# we assume that MK_META_MODE=yes
+
+# we need this until there is an alternative
+MK_INSTALL_AS_USER= yes
+
+.if empty(OBJROOT) || ${.MAKE.LEVEL} == 0
+.if !empty(SB)
+SB_OBJROOT ?= ${SB}/obj/
+# this is what we use below
+OBJROOT ?= ${SB_OBJROOT}
+.endif
+OBJROOT ?= ${SRCTOP:H}/obj/
+.if ${OBJROOT:M*/} != ""
+OBJROOT:= ${OBJROOT:tA}/
+.else
+OBJROOT:= ${OBJROOT:H:tA}/${OBJROOT:T}
+.endif
+.export OBJROOT SRCTOP
+
+# we need HOST_TARGET etc below.
+.include <host-target.mk>
+.export HOST_TARGET
+.endif
+
+# from src/Makefile (for universe)
+TARGET_ARCHES_arm?= arm armeb armv6 armv6eb
+TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32
+TARGET_ARCHES_powerpc?= powerpc powerpc64
+TARGET_ARCHES_pc98?= i386
+
+# some corner cases
+BOOT_MACHINE_DIR.amd64 = boot/i386
+MACHINE_ARCH.host = ${_HOST_ARCH}
+
+# the list of machines we support
+ALL_MACHINE_LIST?= amd64 arm i386 ia64 mips pc98 powerpc sparc64
+.for m in ${ALL_MACHINE_LIST:O:u}
+MACHINE_ARCH_LIST.$m?= ${TARGET_ARCHES_${m}:U$m}
+MACHINE_ARCH.$m?= ${MACHINE_ARCH_LIST.$m:[1]}
+BOOT_MACHINE_DIR.$m ?= boot/$m
+.endfor
+
+.ifndef _TARGET_SPEC
+.if empty(MACHINE_ARCH)
+.if !empty(TARGET_ARCH)
+MACHINE_ARCH= ${TARGET_ARCH}
+.else
+MACHINE_ARCH= ${MACHINE_ARCH.${MACHINE}}
+.endif
+.endif
+MACHINE_ARCH?= ${MACHINE_ARCH.${MACHINE}}
+MACHINE_ARCH:= ${MACHINE_ARCH}
+.else
+# we got here via dirdeps
+MACHINE_ARCH:= ${MACHINE_ARCH.${MACHINE}}
+.endif
+
+# now because for universe we want to potentially
+# build for multiple MACHINE_ARCH per MACHINE
+# we need more than MACHINE in TARGET_SPEC
+TARGET_SPEC_VARS= MACHINE MACHINE_ARCH
+# see dirdeps.mk
+.if ${TARGET_SPEC:Uno:M*,*} != ""
+_tspec := ${TARGET_SPEC:S/,/ /g}
+MACHINE := ${_tspec:[1]}
+MACHINE_ARCH := ${_tspec:[2]}
+# etc.
+# We need to stop that TARGET_SPEC affecting any submakes
+# and deal with MACHINE=${TARGET_SPEC} in the environment.
+TARGET_SPEC=
+# export but do not track
+.export-env TARGET_SPEC
+.export ${TARGET_SPEC_VARS}
+.for v in ${TARGET_SPEC_VARS:O:u}
+.if empty($v)
+.undef $v
+.endif
+.endfor
+.endif
+# make sure we know what TARGET_SPEC is
+# as we may need it to find Makefile.depend*
+TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+
+# to be consistent with src/Makefile just concatenate with '.'s
+TARGET_OBJ_SPEC:= ${TARGET_SPEC:S;,;.;g}
+OBJTOP:= ${OBJROOT}${TARGET_OBJ_SPEC}
+
+.if ${.CURDIR} == ${SRCTOP}
+RELDIR = .
+.elif ${.CURDIR:M${SRCTOP}/*}
+RELDIR := ${.CURDIR:S,${SRCTOP}/,,}
+.endif
+
+HOST_OBJTOP ?= ${OBJROOT}${HOST_TARGET}
+
+.if ${OBJTOP} == ${HOST_OBJTOP} || ${REQUESTED_MACHINE:U${MACHINE}} == "host"
+MACHINE= host
+.if ${TARGET_MACHINE:Uno} == ${HOST_TARGET}
+# not what we want
+TARGET_MACHINE= host
+.endif
+.endif
+.if ${MACHINE} == "host"
+OBJTOP := ${HOST_OBJTOP}
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+PYTHON ?= /usr/local/bin/python
+.export PYTHON
+# this works best if share/mk is ready for it.
+BUILD_AT_LEVEL0= no
+
+# we want to end up with a singe stage tree for all machines
+.if ${MK_STAGING} == "yes"
+.if empty(STAGE_ROOT)
+STAGE_ROOT?= ${OBJROOT}stage
+.export STAGE_ROOT
+.endif
+.endif
+.endif
+
+.if ${MK_STAGING} == "yes"
+.if ${MACHINE} == "host"
+STAGE_MACHINE= ${HOST_TARGET}
+.else
+STAGE_MACHINE:= ${TARGET_OBJ_SPEC}
+.endif
+STAGE_OBJTOP:= ${STAGE_ROOT}/${STAGE_MACHINE}
+STAGE_COMMON_OBJTOP:= ${STAGE_ROOT}/common
+STAGE_HOST_OBJTOP:= ${STAGE_ROOT}/${HOST_TARGET}
+
+STAGE_LIBDIR= ${STAGE_OBJTOP}${_LIBDIR:U${LIBDIR:U/lib}}
+STAGE_INCLUDEDIR= ${STAGE_OBJTOP}${INCLUDEDIR:U/usr/include}
+# this is not the same as INCLUDEDIR
+STAGE_INCSDIR= ${STAGE_OBJTOP}${INCSDIR:U/include}
+# the target is usually an absolute path
+STAGE_SYMLINKS_DIR= ${STAGE_OBJTOP}
+
+LDFLAGS_LAST+= -Wl,-rpath-link -Wl,${STAGE_LIBDIR}
+.if ${MK_SYSROOT} == "yes"
+SYSROOT?= ${STAGE_OBJTOP}/
+.else
+LDFLAGS_LAST+= -L${STAGE_LIBDIR}
+.endif
+
+.endif # MK_STAGING
+
+# this is sufficient for most of the tree.
+.MAKE.DEPENDFILE_DEFAULT = ${.MAKE.DEPENDFILE_PREFIX}
+
+# but if we have a machine qualified file it should be used in preference
+.MAKE.DEPENDFILE_PREFERENCE = \
+ ${.MAKE.DEPENDFILE_PREFIX}.${MACHINE} \
+ ${.MAKE.DEPENDFILE_PREFIX}
+
+.undef .MAKE.DEPENDFILE
+
+.include "sys.dependfile.mk"
+
+.if ${.MAKE.LEVEL} > 0 && ${MACHINE} == "host" && ${.MAKE.DEPENDFILE:E} != "host"
+# we can use this but should not update it.
+UPDATE_DEPENDFILE= NO
+.endif
+
+# define the list of places that contain files we are responsible for
+.MAKE.META.BAILIWICK = ${SB} ${OBJROOT} ${STAGE_ROOT}
+
+CSU_DIR.${MACHINE_ARCH} ?= csu/${MACHINE_ARCH}
+CSU_DIR := ${CSU_DIR.${MACHINE_ARCH}}
+
+.if !empty(TIME_STAMP)
+TRACER= ${TIME_STAMP} ${:U}
+.endif
+
+# toolchains can be a pain - especially bootstrappping them
+.if ${MACHINE} == "host"
+MK_SHARED_TOOLCHAIN= no
+.endif
+.ifdef WITH_TOOLSDIR
+TOOLSDIR?= ${HOST_OBJTOP}/tools
+.elif defined(STAGE_HOST_OBJTOP) && exists(${STAGE_HOST_OBJTOP}/usr/bin)
+TOOLSDIR?= ${STAGE_HOST_OBJTOP}
+.endif
+.if ${.MAKE.LEVEL} == 0 && exists(${TOOLSDIR}/usr/bin)
+PATH:= ${PATH:S,:, ,g:@d@${exists(${TOOLSDIR}$d):?${TOOLSDIR}$d:}@:ts:}:${PATH}
+.export PATH
+.if exists(${TOOLSDIR}/usr/bin/cc)
+HOST_CC?= ${TOOLSDIR}/usr/bin/cc
+CC?= ${TOOLSDIR}/usr/bin/cc
+CXX?= ${TOOLSDIR}/usr/bin/c++
+.export HOST_CC CC CXX
+.endif
+.endif
+
+.if ${MACHINE:Nhost:Ncommon} != "" && ${MACHINE} != ${HOST_MACHINE}
+# cross-building
+.if !defined(FREEBSD_REVISION)
+FREEBSD_REVISION!= sed -n '/^REVISION=/{s,.*=,,;s,",,g;p; }' ${SRCTOP}/sys/conf/newvers.sh
+.export FREEBSD_REVISION
+.endif
+CROSS_TARGET_FLAGS= -target ${MACHINE_ARCH}-unknown-freebsd${FREEBSD_REVISION}
+CFLAGS+= ${CROSS_TARGET_FLAGS}
+ACFLAGS+= ${CROSS_TARGET_FLAGS}
+LDFLAGS+= -Wl,-m -Wl,elf_${MACHINE_ARCH}_fbsd
+.endif
diff --git a/share/mk/local.sys.env.mk b/share/mk/local.sys.env.mk
new file mode 100644
index 0000000..ca3f7a0
--- /dev/null
+++ b/share/mk/local.sys.env.mk
@@ -0,0 +1,43 @@
+# $FreeBSD$
+
+# This makefile is for customizations that should be done early
+
+.if !defined(_TARGETS)
+# some things we do only once
+_TARGETS:= ${.TARGETS}
+.export _TARGETS
+.endif
+
+# some handy macros
+_this = ${.PARSEDIR:tA}/${.PARSEFILE}
+# some useful modifiers
+
+# A useful trick for testing multiple :M's against something
+# :L says to use the variable's name as its value - ie. literal
+# got = ${clean* destroy:${M_ListToMatch:S,V,.TARGETS,}}
+M_ListToMatch = L:@m@$${V:M$$m}@
+# match against our initial targets (see above)
+M_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,}
+
+# turn a list into a set of :N modifiers
+# NskipFoo = ${Foo:${M_ListToSkip}}
+M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N,
+
+# type should be a builtin in any sh since about 1980,
+# AUTOCONF := ${autoconf:L:${M_whence}}
+M_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g
+M_whence = ${M_type}:M/*:[1]
+
+# convert a path to a valid shell variable
+M_P2V = tu:C,[./-],_,g
+
+# these are handy
+# we can use this for a cheap timestamp at the start of a target's script,
+# but not at the end - since make will expand both at the same time.
+TIME_STAMP_FMT = @ %s [%Y-%m-%d %T]
+TIME_STAMP = ${TIME_STAMP_FMT:localtime}
+# this will produce the same output but as of when date(1) is run.
+TIME_STAMP_DATE = `date '+${TIME_STAMP_FMT}'`
+TIME_STAMP_END?= ${TIME_STAMP_DATE}
+
+.include "src.sys.env.mk"
diff --git a/share/mk/local.sys.mk b/share/mk/local.sys.mk
new file mode 100644
index 0000000..d542f8b
--- /dev/null
+++ b/share/mk/local.sys.mk
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+.if ${MK_META_MODE} == "yes"
+MAKE_PRINT_VAR_ON_ERROR+= \
+ .CURDIR \
+ .MAKE \
+ .OBJDIR \
+ .TARGETS \
+ DESTDIR \
+ LD_LIBRARY_PATH \
+ MACHINE \
+ MACHINE_ARCH \
+ MAKEOBJDIRPREFIX \
+ MAKESYSPATH \
+ MAKE_VERSION\
+ SRCTOP \
+ OBJTOP \
+ ${MAKE_PRINT_VAR_ON_ERROR_XTRAS}
+
+.if ${.MAKE.LEVEL} > 0
+MAKE_PRINT_VAR_ON_ERROR += .MAKE.MAKEFILES .PATH
+.endif
+.endif
+
+.include "src.sys.mk"
diff --git a/share/mk/meta.autodep.mk b/share/mk/meta.autodep.mk
new file mode 100644
index 0000000..548ba53
--- /dev/null
+++ b/share/mk/meta.autodep.mk
@@ -0,0 +1,294 @@
+# $FreeBSD$
+# $Id: meta.autodep.mk,v 1.36 2014/08/02 23:10:29 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+_this ?= ${.PARSEFILE}
+.if !target(__${_this}__)
+__${_this}__: .NOTMAIN
+
+.-include "local.autodep.mk"
+
+.if defined(SRCS)
+# it would be nice to be able to query .SUFFIXES
+OBJ_EXTENSIONS+= .o .po .lo .So
+
+# explicit dependencies help short-circuit .SUFFIX searches
+SRCS_DEP_FILTER+= N*.[hly]
+.for s in ${SRCS:${SRCS_DEP_FILTER:O:u:ts:}}
+.for e in ${OBJ_EXTENSIONS:O:u}
+.if !target(${s:T:R}$e)
+${s:T:R}$e: $s
+.endif
+.endfor
+.endfor
+.endif
+
+.if make(gendirdeps)
+# you are supposed to know what you are doing!
+UPDATE_DEPENDFILE = yes
+.elif !empty(.TARGETS) && !make(all)
+# do not update the *depend* files
+# unless we are building the entire directory or the default target.
+# NO means don't update .depend - or Makefile.depend*
+# no means update .depend but not Makefile.depend*
+UPDATE_DEPENDFILE = NO
+.elif ${.MAKEFLAGS:M-k} != ""
+# it is a bad idea to update anything
+UPDATE_DEPENDFILE = NO
+.endif
+
+_CURDIR ?= ${.CURDIR}
+_DEPENDFILE := ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+
+.if ${.MAKE.LEVEL} == 0
+.if ${BUILD_AT_LEVEL0:Uyes:tl} == "no"
+UPDATE_DEPENDFILE = NO
+.endif
+.endif
+.if !exists(${_DEPENDFILE})
+_bootstrap_dirdeps = yes
+.endif
+_bootstrap_dirdeps ?= no
+UPDATE_DEPENDFILE ?= yes
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} update=${UPDATE_DEPENDFILE}
+.endif
+
+.if !empty(XMAKE_META_FILE)
+.if exists(${.OBJDIR}/${XMAKE_META_FILE})
+# we cannot get accurate dependencies from an update build
+UPDATE_DEPENDFILE = NO
+.else
+META_XTRAS += ${XMAKE_META_FILE}
+.endif
+.endif
+
+.if ${_bootstrap_dirdeps} == "yes" || exists(${_DEPENDFILE})
+# if it isn't supposed to be touched by us the Makefile should have
+# UPDATE_DEPENDFILE = no
+WANT_UPDATE_DEPENDFILE ?= yes
+.endif
+
+.if ${WANT_UPDATE_DEPENDFILE:Uno:tl} != "no"
+.if ${.MAKE.MODE:Mmeta*} == "" || ${.MAKE.MODE:M*read*} != ""
+UPDATE_DEPENDFILE = no
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} update=${UPDATE_DEPENDFILE}
+.endif
+
+.if ${UPDATE_DEPENDFILE:tl} == "yes"
+# sometimes we want .meta files generated to aid debugging/error detection
+# but do not want to consider them for dependencies
+# for example the result of running configure
+# just make sure this is not empty
+META_FILE_FILTER ?= N.meta
+# never consider these
+META_FILE_FILTER += Ndirdeps.cache*
+
+.if !empty(DPADD)
+# if we have any non-libs in DPADD,
+# they probably need to be paid attention to
+.if !empty(DPLIBS)
+FORCE_DPADD = ${DPADD:${DPLIBS:${M_ListToSkip}}:${DPADD_LAST:${M_ListToSkip}}}
+.else
+_nonlibs := ${DPADD:T:Nlib*:N*include}
+.if !empty(_nonlibs)
+FORCE_DPADD += ${_nonlibs:@x@${DPADD:M*/$x}@}
+.endif
+.endif
+.endif
+
+.if !make(gendirdeps)
+.END: gendirdeps
+.endif
+
+# if we don't have OBJS, then .depend isn't useful
+.if !target(.depend) && (!empty(OBJS) || ${.ALLTARGETS:M*.o} != "")
+# some makefiles and/or targets contain
+# circular dependencies if you dig too deep
+# (as meta mode is apt to do)
+# so we provide a means of suppressing them.
+# the input to the loop below is target: dependency
+# with just one dependency per line.
+# Also some targets are not really local, or use random names.
+# Use local.autodep.mk to provide local additions!
+SUPPRESS_DEPEND += \
+ ${SB:S,/,_,g}* \
+ *:y.tab.c \
+ *.c:*.c \
+ *.h:*.h
+
+.NOPATH: .depend
+# we use ${.MAKE.META.CREATED} to trigger an update but
+# we process using ${.MAKE.META.FILES}
+# the double $$ defers initial evaluation
+# if necessary, we fake .po dependencies, just so the result
+# in Makefile.depend* is stable
+# The current objdir may be referred to in various ways
+OBJDIR_REFS += ${.OBJDIR} ${.OBJDIR:tA} ${_OBJDIR} ${RELOBJTOP}/${RELDIR}
+_depend = .depend
+# it would be nice to be able to get .SUFFIXES as ${.SUFFIXES}
+# we actually only care about the .SUFFIXES of files that might be
+# generated by tools like yacc.
+DEPEND_SUFFIXES += .c .h .cpp .hpp .cxx .hxx .cc .hh
+.depend: .NOMETA $${.MAKE.META.CREATED} ${_this}
+ @echo "Updating $@: ${.OODATE:T:[1..8]}"
+ @egrep -i '^R .*\.(${DEPEND_SUFFIXES:tl:O:u:S,^.,,:ts|})$$' /dev/null ${.MAKE.META.FILES:T:O:u:${META_FILE_FILTER:ts:}:M*o.meta} | \
+ sed -e 's, \./, ,${OBJDIR_REFS:O:u:@d@;s, $d/, ,@};/\//d' \
+ -e 's,^\([^/][^/]*\).meta...[0-9]* ,\1: ,' | \
+ sort -u | \
+ while read t d; do \
+ case "$$d:" in $$t) continue;; esac; \
+ case "$$t$$d" in ${SUPPRESS_DEPEND:U.:O:u:ts|}) continue;; esac; \
+ echo $$t $$d; \
+ done > $@.${.MAKE.PID}
+ @case "${.MAKE.META.FILES:T:M*.po.*}" in \
+ *.po.*) mv $@.${.MAKE.PID} $@;; \
+ *) { cat $@.${.MAKE.PID}; \
+ sed 's,\.So:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \
+ rm -f $@.${.MAKE.PID};; \
+ esac
+.else
+# make sure this exists
+.depend:
+# do _not_ assume that .depend is in any fit state for us to use
+CAT_DEPEND = /dev/null
+.if ${.MAKE.LEVEL} > 0
+.export CAT_DEPEND
+.endif
+_depend =
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} _depend=${_depend}
+.endif
+
+.if ${UPDATE_DEPENDFILE} == "yes"
+gendirdeps: ${_DEPENDFILE}
+.endif
+
+.if !target(${_DEPENDFILE})
+.if ${_bootstrap_dirdeps} == "yes"
+# We are boot-strapping a new directory
+# Use DPADD to seed DIRDEPS
+.if !empty(DPADD)
+# anything which matches ${_OBJROOT}* but not ${_OBJTOP}*
+# needs to be qualified in DIRDEPS
+# The pseudo machine "host" is used for HOST_TARGET
+DIRDEPS = \
+ ${DPADD:M${_OBJTOP}*:H:C,${_OBJTOP}[^/]*/,,:N.:O:u} \
+ ${DPADD:M${_OBJROOT}*:N${_OBJTOP}*:H:S,${_OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
+
+.endif
+.endif
+
+_gendirdeps_mutex =
+.if defined(NEED_GENDIRDEPS_MUTEX)
+# If a src dir gets built with multiple object dirs,
+# we need a mutex. Obviously, this is best avoided.
+# Note if .MAKE.DEPENDFILE is common for all ${MACHINE}
+# you either need to mutex, or ensure only one machine builds at a time!
+# lockf is an example of a suitable tool
+LOCKF ?= /usr/bin/lockf
+.if exists(${LOCKF})
+GENDIRDEPS_MUTEXER ?= ${LOCKF} -k
+.endif
+.if empty(GENDIRDEPS_MUTEXER)
+.error NEED_GENDIRDEPS_MUTEX defined, but GENDIRDEPS_MUTEXER not set
+.else
+_gendirdeps_mutex = ${GENDIRDEPS_MUTEXER} ${GENDIRDEPS_MUTEX:U${_CURDIR}/Makefile}
+.endif
+.endif
+
+# If we have META_XTRAS we most likely did not create them
+# but we need to behave as if we did.
+# Avoid adding glob patterns to .MAKE.META.CREATED though.
+.MAKE.META.CREATED += ${META_XTRAS:N*\**:O:u}
+
+.if make(gendirdeps)
+META_FILES = *.meta
+.elif ${OPTIMIZE_OBJECT_META_FILES:Uno:tl} == "no"
+META_FILES = ${.MAKE.META.FILES:T:N.depend*:O:u}
+.else
+# if we have 1000's of .o.meta, .So.meta etc we need only look at one set
+# it is left as an exercise for the reader to work out what this does
+META_FILES = ${.MAKE.META.FILES:T:N.depend*:N*o.meta:O:u} \
+ ${.MAKE.META.FILES:T:M*.${.MAKE.META.FILES:M*o.meta:R:E:O:u:[1]}.meta:O:u}
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,}: ${_depend} ${.PARSEDIR}/gendirdeps.mk ${META2DEPS} xtras=${META_XTRAS}
+.endif
+
+.if ${.MAKE.LEVEL} > 0 && !empty(GENDIRDEPS_FILTER)
+.export GENDIRDEPS_FILTER
+.endif
+
+# we might have .../ in MAKESYSPATH
+_makesyspath:= ${_PARSEDIR}
+${_DEPENDFILE}: ${_depend} ${.PARSEDIR}/gendirdeps.mk ${META2DEPS} $${.MAKE.META.CREATED}
+ @echo Checking $@: ${.OODATE:T:[1..8]}
+ @(cd . && \
+ SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS:O:u}' \
+ DPADD='${FORCE_DPADD:O:u}' ${_gendirdeps_mutex} \
+ MAKESYSPATH=${_makesyspath} \
+ ${.MAKE} -f gendirdeps.mk RELDIR=${RELDIR} _DEPENDFILE=${_DEPENDFILE} \
+ META_FILES='${META_XTRAS:T:O:u} ${META_FILES:T:O:u:${META_FILE_FILTER:ts:}}')
+ @test -s $@ && touch $@; :
+.endif
+
+.endif
+.endif
+
+.if ${_bootstrap_dirdeps} == "yes"
+.if ${BUILD_AT_LEVEL0:Uno} == "no"
+DIRDEPS+= ${RELDIR}.${TARGET_SPEC:U${MACHINE}}
+.endif
+# make sure this is included at least once
+.include <dirdeps.mk>
+.else
+${_DEPENDFILE}: .PRECIOUS
+.endif
+
+CLEANFILES += *.meta filemon.* *.db
+
+# these make it easy to gather some stats
+now_utc = ${%s:L:gmtime}
+start_utc := ${now_utc}
+
+meta_stats= meta=${empty(.MAKE.META.FILES):?0:${.MAKE.META.FILES:[#]}} \
+ created=${empty(.MAKE.META.CREATED):?0:${.MAKE.META.CREATED:[#]}}
+
+#.END: _reldir_finish
+.if target(gendirdeps)
+_reldir_finish: gendirdeps
+.endif
+_reldir_finish: .NOMETA
+ @echo "${TIME_STAMP} Finished ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
+
+#.ERROR: _reldir_failed
+_reldir_failed: .NOMETA
+ @echo "${TIME_STAMP} Failed ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
+
+.if defined(WITH_META_STATS) && ${.MAKE.LEVEL} > 0
+.END: _reldir_finish
+.ERROR: _reldir_failed
+.endif
+
+.endif
diff --git a/share/mk/meta.stage.mk b/share/mk/meta.stage.mk
new file mode 100644
index 0000000..467e339
--- /dev/null
+++ b/share/mk/meta.stage.mk
@@ -0,0 +1,289 @@
+# $FreeBSD$
+# $Id: meta.stage.mk,v 1.35 2015/05/20 06:40:33 sjg Exp $
+#
+# @(#) Copyright (c) 2011, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !target(__${.PARSEFILE}__)
+__${.PARSEFILE}__:
+
+.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} != ""
+# this is generally safer anyway
+_dirdep = ${RELDIR}.${MACHINE}
+.else
+_dirdep = ${RELDIR}
+.endif
+
+# this allows us to trace dependencies back to their src dir
+.dirdep:
+ @echo '${_dirdep}' > $@
+
+.if defined(NO_POSIX_SHELL) || ${type printf:L:sh:Mbuiltin} == ""
+_stage_file_basename = `basename $$f`
+_stage_target_dirname = `dirname $$t`
+.else
+_stage_file_basename = $${f\#\#*/}
+_stage_target_dirname = $${t%/*}
+.endif
+
+_OBJROOT ?= ${OBJROOT:U${OBJTOP:H}}
+.if ${_OBJROOT:M*/} != ""
+_objroot ?= ${_OBJROOT:tA}/
+.else
+_objroot ?= ${_OBJROOT:tA}
+.endif
+
+# make sure this is global
+_STAGED_DIRS ?=
+.export _STAGED_DIRS
+# add each dir we stage to to _STAGED_DIRS
+# and make sure we have absolute paths so that bmake
+# will match against .MAKE.META.BAILIWICK
+STAGE_DIR_FILTER = tA:@d@$${_STAGED_DIRS::+=$$d}$$d@
+# convert _STAGED_DIRS into suitable filters
+GENDIRDEPS_FILTER += Nnot-empty-is-important \
+ ${_STAGED_DIRS:O:u:M${OBJTOP}*:S,${OBJTOP}/,N,} \
+ ${_STAGED_DIRS:O:u:M${_objroot}*:N${OBJTOP}*:S,${_objroot},,:C,^([^/]+)/(.*),N\2.\1,:S,${HOST_TARGET},.host,}
+
+LN_CP_SCRIPT = LnCp() { \
+ rm -f $$2 2> /dev/null; \
+ ln $$1 $$2 2> /dev/null || \
+ cp -p $$1 $$2; }
+
+# a staging conflict should cause an error
+# a warning is handy when bootstapping different options.
+STAGE_CONFLICT?= ERROR
+.if ${STAGE_CONFLICT:tl} == "error"
+STAGE_CONFLICT_ACTION= exit 1;
+.else
+STAGE_CONFLICT_ACTION=
+.endif
+
+# it is an error for more than one src dir to try and stage
+# the same file
+STAGE_DIRDEP_SCRIPT = ${LN_CP_SCRIPT}; StageDirdep() { \
+ t=$$1; \
+ if [ -s $$t.dirdep ]; then \
+ cmp -s .dirdep $$t.dirdep && return; \
+ echo "${STAGE_CONFLICT}: $$t installed by `cat $$t.dirdep` not ${_dirdep}" >&2; \
+ ${STAGE_CONFLICT_ACTION} \
+ fi; \
+ LnCp .dirdep $$t.dirdep || exit 1; }
+
+# common logic for staging files
+# this all relies on RELDIR being set to a subdir of SRCTOP
+# we use ln(1) if we can, else cp(1)
+STAGE_FILE_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageFiles() { \
+ case "$$1" in "") return;; -m) mode=$$2; shift 2;; *) mode=;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ for f in "$$@"; do \
+ case "$$f" in */*) t=$$dest/${_stage_file_basename};; *) t=$$dest/$$f;; esac; \
+ StageDirdep $$t; \
+ LnCp $$f $$t || exit 1; \
+ [ -z "$$mode" ] || chmod $$mode $$t; \
+ done; :; }
+
+STAGE_LINKS_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageLinks() { \
+ case "$$1" in "") return;; --) shift;; -*) ldest= lnf=$$1; shift;; /*) ldest=$$1/;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ while test $$\# -ge 2; do \
+ l=$$ldest$$1; shift; \
+ t=$$dest/$$1; \
+ case "$$1" in */*) mkdir -p ${_stage_target_dirname};; esac; \
+ shift; \
+ StageDirdep $$t; \
+ rm -f $$t 2>/dev/null; \
+ ln $$lnf $$l $$t || exit 1; \
+ done; :; }
+
+STAGE_AS_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageAs() { \
+ case "$$1" in "") return;; -m) mode=$$2; shift 2;; *) mode=;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ while test $$\# -ge 2; do \
+ s=$$1; shift; \
+ t=$$dest/$$1; \
+ case "$$1" in */*) mkdir -p ${_stage_target_dirname};; esac; \
+ shift; \
+ StageDirdep $$t; \
+ LnCp $$s $$t || exit 1; \
+ [ -z "$$mode" ] || chmod $$mode $$t; \
+ done; :; }
+
+# this is simple, a list of the "staged" files depends on this,
+_STAGE_BASENAME_USE: .USE ${.TARGET:T}
+ @${STAGE_FILE_SCRIPT}; StageFiles ${.TARGET:H:${STAGE_DIR_FILTER}} ${.TARGET:T}
+
+_STAGE_AS_BASENAME_USE: .USE ${.TARGET:T}
+ @${STAGE_AS_SCRIPT}; StageAs ${.TARGET:H:${STAGE_DIR_FILTER}} ${.TARGET:T} ${STAGE_AS_${.TARGET:T}:U${.TARGET:T}}
+
+.if !empty(STAGE_INCSDIR)
+STAGE_TARGETS += stage_incs
+STAGE_INCS ?= ${.ALLSRC:N.dirdep}
+
+stage_includes: stage_incs
+stage_incs: .dirdep
+ @${STAGE_FILE_SCRIPT}; StageFiles ${STAGE_INCSDIR:${STAGE_DIR_FILTER}} ${STAGE_INCS}
+ @touch $@
+.endif
+
+.if !empty(STAGE_LIBDIR)
+STAGE_TARGETS += stage_libs
+
+STAGE_LIBS ?= ${.ALLSRC:N.dirdep}
+
+stage_libs: .dirdep
+ @${STAGE_FILE_SCRIPT}; StageFiles ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} ${STAGE_LIBS}
+.if !defined(NO_SHLIB_LINKS)
+.if !empty(SHLIB_LINKS)
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} \
+ ${SHLIB_LINKS:@t@${STAGE_LIBS:T:M$t.*} $t@}
+.elif !empty(SHLIB_LINK) && !empty(SHLIB_NAME)
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} ${SHLIB_NAME} ${SHLIB_LINK} ${SYMLINKS:T}
+.endif
+.endif
+ @touch $@
+.endif
+
+.if !empty(STAGE_DIR)
+STAGE_SETS += _default
+STAGE_DIR._default = ${STAGE_DIR}
+STAGE_LINKS_DIR._default = ${STAGE_LINKS_DIR:U${STAGE_OBJTOP}}
+STAGE_SYMLINKS_DIR._default = ${STAGE_SYMLINKS_DIR:U${STAGE_OBJTOP}}
+STAGE_FILES._default = ${STAGE_FILES}
+STAGE_LINKS._default = ${STAGE_LINKS}
+STAGE_SYMLINKS._default = ${STAGE_SYMLINKS}
+STAGE_FILES ?= ${.ALLSRC:N.dirdep:Nstage_*}
+STAGE_SYMLINKS ?= ${.ALLSRC:T:N.dirdep:Nstage_*}
+.endif
+
+.if !empty(STAGE_SETS)
+CLEANFILES += ${STAGE_SETS:@s@stage*$s@}
+
+# some makefiles need to populate multiple directories
+.for s in ${STAGE_SETS:O:u}
+STAGE_FILES.$s ?= ${.ALLSRC:N.dirdep}
+STAGE_SYMLINKS.$s ?= ${.ALLSRC:N.dirdep}
+STAGE_LINKS_DIR.$s ?= ${STAGE_OBJTOP}
+STAGE_SYMLINKS_DIR.$s ?= ${STAGE_OBJTOP}
+
+STAGE_TARGETS += stage_files
+.if $s != "_default"
+stage_files: stage_files.$s
+stage_files.$s: .dirdep
+.else
+stage_files: .dirdep
+.endif
+ @${STAGE_FILE_SCRIPT}; StageFiles ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_FILES.$s}
+ @touch $@
+
+STAGE_TARGETS += stage_links
+.if $s != "_default"
+stage_links: stage_links.$s
+stage_links.$s: .dirdep
+.else
+stage_links: .dirdep
+.endif
+ @${STAGE_LINKS_SCRIPT}; StageLinks ${STAGE_LINKS_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_LINKS.$s}
+ @touch $@
+
+STAGE_TARGETS += stage_symlinks
+.if $s != "_default"
+stage_symlinks: stage_symlinks.$s
+stage_symlinks.$s: .dirdep
+.else
+stage_symlinks: .dirdep
+.endif
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_SYMLINKS_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_SYMLINKS.$s}
+ @touch $@
+
+.endfor
+.endif
+
+.if !empty(STAGE_AS_SETS)
+CLEANFILES += ${STAGE_AS_SETS:@s@stage*$s@}
+
+STAGE_TARGETS += stage_as
+
+# sometimes things need to be renamed as they are staged
+# each ${file} will be staged as ${STAGE_AS_${file:T}}
+# one could achieve the same with SYMLINKS
+.for s in ${STAGE_AS_SETS:O:u}
+STAGE_AS.$s ?= ${.ALLSRC:N.dirdep}
+
+stage_as: stage_as.$s
+stage_as.$s: .dirdep
+ @${STAGE_AS_SCRIPT}; StageAs ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_AS.$s:@f@$f ${STAGE_AS_${f:tA}:U${STAGE_AS_${f:T}:U${f:T}}}@}
+ @touch $@
+
+.endfor
+.endif
+
+CLEANFILES += ${STAGE_TARGETS} stage_incs stage_includes
+
+# stage_*links usually needs to follow any others.
+.for t in ${STAGE_TARGETS:N*links:O:u}
+.ORDER: $t stage_links
+.ORDER: $t stage_symlinks
+.endfor
+
+# make sure this exists
+staging:
+
+# generally we want staging to wait until everything else is done
+STAGING_WAIT ?= .WAIT
+
+.if ${.MAKE.LEVEL} > 0
+all: ${STAGING_WAIT} staging
+.endif
+
+.if exists(${.PARSEDIR}/stage-install.sh) && !defined(STAGE_INSTALL)
+# this will run install(1) and then followup with .dirdep files.
+STAGE_INSTALL := sh ${.PARSEDIR:tA}/stage-install.sh INSTALL="${INSTALL}" OBJDIR=${.OBJDIR:tA}
+.endif
+
+# if ${INSTALL} gets run during 'all' assume it is for staging?
+.if ${.TARGETS:Nall} == "" && defined(STAGE_INSTALL)
+INSTALL := ${STAGE_INSTALL}
+.if target(beforeinstall)
+beforeinstall: .dirdep
+.endif
+.endif
+.NOPATH: ${STAGE_FILES}
+
+.if !empty(STAGE_TARGETS)
+MK_STALE_STAGED?= no
+.if ${MK_STALE_STAGED} == "yes"
+all: stale_staged
+# get a list of paths that we have just staged
+# get a list of paths that we have previously staged to those same dirs
+# anything in the 2nd list but not the first is stale - remove it.
+stale_staged: staging .NOMETA
+ @egrep '^[WL] .*${STAGE_OBJTOP}' /dev/null ${.MAKE.META.FILES:M*stage_*} | \
+ sed "/\.dirdep/d;s,.* '*\(${STAGE_OBJTOP}/[^ '][^ ']*\).*,\1," | \
+ sort > ${.TARGET}.staged1
+ @grep -l '${_dirdep}' /dev/null ${_STAGED_DIRS:M${STAGE_OBJTOP}*:O:u:@d@$d/*.dirdep@} | \
+ sed 's,\.dirdep,,' | sort > ${.TARGET}.staged2
+ @comm -13 ${.TARGET}.staged1 ${.TARGET}.staged2 > ${.TARGET}.stale
+ @test ! -s ${.TARGET}.stale || { \
+ echo "Removing stale staged files..."; \
+ sed 's,.*,& &.dirdep,' ${.TARGET}.stale | xargs rm -f; }
+
+.endif
+.endif
+.endif
diff --git a/share/mk/meta.subdir.mk b/share/mk/meta.subdir.mk
new file mode 100644
index 0000000..6a4db63
--- /dev/null
+++ b/share/mk/meta.subdir.mk
@@ -0,0 +1,80 @@
+# $FreeBSD$
+# $Id: meta.subdir.mk,v 1.10 2012/07/03 05:26:46 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !defined(NO_SUBDIR) && !empty(SUBDIR)
+.if make(destroy*) || make(clean*)
+.MAKE.MODE = compat
+.if !commands(destroy)
+.-include <bsd.obj.mk>
+.endif
+.elif ${.MAKE.LEVEL} == 0
+
+.MAIN: all
+
+.if !exists(${.CURDIR}/${.MAKE.DEPENDFILE:T}) || make(gendirdeps)
+# start with this
+DIRDEPS = ${SUBDIR:N.WAIT:O:u:@d@${RELDIR}/$d@}
+
+.if make(gendirdeps)
+.include <meta.autodep.mk>
+.else
+# this is the cunning bit
+# actually it is probably a bit risky
+# since we may pickup subdirs which are not relevant
+# the alternative is a walk through the tree though
+# which is difficult without a sub-make.
+
+.if defined(BOOTSTRAP_DEPENDFILES)
+_find_name = ${.MAKE.MAKEFILE_PREFERENCE:@m@-o -name $m@:S,^-o,,1}
+DIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@}
+.elif ${.MAKE.DEPENDFILE:E} == ${MACHINE} && defined(ALL_MACHINES)
+# we want to find Makefile.depend.* ie for all machines
+# and turn the dirs into dir.<machine>
+_find_name = -name '${.MAKE.DEPENDFILE:T:R}*'
+DIRDEPS = ${_subdeps:O:u:${NIgnoreFiles}:@d@${RELDIR}/${d:H}.${d:E}@:S,.${MACHINE}$,,:S,.depend$,,}
+.else
+# much simpler
+_find_name = -name ${.MAKE.DEPENDFILE:T}
+.if ${.MAKE.DEPENDFILE:E} == ${MACHINE}
+_find_name += -o -name ${.MAKE.DEPENDFILE:T:R}
+.endif
+DIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@}
+.endif
+
+_subdeps != cd ${.CURDIR} && \
+ find ${SUBDIR:N.WAIT} -type f \( ${_find_name} \) -print -o \
+ -name .svn -prune 2> /dev/null; echo
+
+.if empty(_subdeps)
+DIRDEPS =
+.else
+# clean up if needed
+DIRDEPS := ${DIRDEPS:S,^./,,:S,/./,/,g:${SUBDIREPS_FILTER:Uu}}
+.endif
+# we just dealt with it, if we leave it defined,
+# dirdeps.mk will compute some interesting combinations.
+.undef ALL_MACHINES
+
+DEP_RELDIR = ${RELDIR}
+.include <dirdeps.mk>
+.endif
+.endif
+.else
+all: .PHONY
+.endif
+
+.endif
diff --git a/share/mk/meta.sys.mk b/share/mk/meta.sys.mk
new file mode 100644
index 0000000..8a42b6c
--- /dev/null
+++ b/share/mk/meta.sys.mk
@@ -0,0 +1,143 @@
+# $FreeBSD$
+# $Id: meta.sys.mk,v 1.19 2014/08/02 23:16:02 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+# include this if you want to enable meta mode
+# for maximum benefit, requires filemon(4) driver.
+
+.if ${MAKE_VERSION:U0} > 20100901
+.if !target(.ERROR)
+
+.-include "local.meta.sys.mk"
+
+# absoulte path to what we are reading.
+_PARSEDIR = ${.PARSEDIR:tA}
+
+META_MODE += meta verbose
+.MAKE.MODE ?= ${META_MODE}
+
+.if ${.MAKE.LEVEL} == 0
+_make_mode := ${.MAKE.MODE} ${META_MODE}
+.if ${_make_mode:M*read*} != "" || ${_make_mode:M*nofilemon*} != ""
+# tell everyone we are not updating Makefile.depend*
+UPDATE_DEPENDFILE = NO
+.export UPDATE_DEPENDFILE
+.endif
+.if ${UPDATE_DEPENDFILE:Uyes:tl} == "no" && !exists(/dev/filemon)
+# we should not get upset
+META_MODE += nofilemon
+.export META_MODE
+.endif
+.endif
+
+.if !defined(NO_SILENT)
+.if ${MAKE_VERSION} > 20110818
+# only be silent when we have a .meta file
+META_MODE += silent=yes
+.else
+.SILENT:
+.endif
+.endif
+
+# make defaults .MAKE.DEPENDFILE to .depend
+# that won't work for us.
+.if ${.MAKE.DEPENDFILE} == ".depend"
+.undef .MAKE.DEPENDFILE
+.endif
+
+# if you don't cross build for multiple MACHINEs concurrently, then
+# .MAKE.DEPENDFILE = Makefile.depend
+# probably makes sense - you can set that in local.sys.mk
+.MAKE.DEPENDFILE ?= Makefile.depend.${MACHINE}
+
+# we use the pseudo machine "host" for the build host.
+# this should be taken care of before we get here
+.if ${OBJTOP:Ua} == ${HOST_OBJTOP:Ub}
+MACHINE = host
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+# it can be handy to know which MACHINE kicked off the build
+# for example, if using Makefild.depend for multiple machines,
+# allowing only MACHINE0 to update can keep things simple.
+MACHINE0 := ${MACHINE}
+.export MACHINE0
+
+.if defined(PYTHON) && exists(${PYTHON})
+# we prefer the python version of this - it is much faster
+META2DEPS ?= ${.PARSEDIR}/meta2deps.py
+.else
+META2DEPS ?= ${.PARSEDIR}/meta2deps.sh
+.endif
+META2DEPS := ${META2DEPS}
+.export META2DEPS
+.endif
+
+MAKE_PRINT_VAR_ON_ERROR += \
+ .ERROR_TARGET \
+ .ERROR_META_FILE \
+ .MAKE.LEVEL \
+ MAKEFILE \
+ .MAKE.MODE
+
+.if !defined(SB) && defined(SRCTOP)
+SB = ${SRCTOP:H}
+.endif
+ERROR_LOGDIR ?= ${SB}/error
+meta_error_log = ${ERROR_LOGDIR}/meta-${.MAKE.PID}.log
+
+# we are not interested in make telling us a failure happened elsewhere
+.ERROR: _metaError
+_metaError: .NOMETA .NOTMAIN
+ -@[ "${.ERROR_META_FILE}" ] && { \
+ grep -q 'failure has been detected in another branch' ${.ERROR_META_FILE} && exit 0; \
+ mkdir -p ${meta_error_log:H}; \
+ cp ${.ERROR_META_FILE} ${meta_error_log}; \
+ echo "ERROR: log ${meta_error_log}" >&2; }; :
+
+.endif
+
+# Are we, after all, in meta mode?
+.if ${.MAKE.MODE:Mmeta*} != ""
+MKDEP_MK = meta.autodep.mk
+
+# if we think we are updating dependencies,
+# then filemon had better be present
+.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !exists(/dev/filemon)
+.error ${.newline}ERROR: The filemon module (/dev/filemon) is not loaded.
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+# make sure dirdeps target exists and do it first
+all: dirdeps .WAIT
+dirdeps:
+.NOPATH: dirdeps
+
+.if defined(ALL_MACHINES)
+# the first .MAIN: is what counts
+# by default dirdeps is all we want at level0
+.MAIN: dirdeps
+# tell dirdeps.mk what we want
+BUILD_AT_LEVEL0 = no
+.endif
+.if ${.TARGETS:Nall} == ""
+# it works best if we do everything via sub-makes
+BUILD_AT_LEVEL0 ?= no
+.endif
+
+.endif
+.endif
+.endif
diff --git a/share/mk/meta2deps.py b/share/mk/meta2deps.py
new file mode 100755
index 0000000..f3a4799
--- /dev/null
+++ b/share/mk/meta2deps.py
@@ -0,0 +1,714 @@
+# $FreeBSD$
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+"""
+This script parses each "meta" file and extracts the
+information needed to deduce build and src dependencies.
+
+It works much the same as the original shell script, but is
+*much* more efficient.
+
+The parsing work is handled by the class MetaFile.
+We only pay attention to a subset of the information in the
+"meta" files. Specifically:
+
+'CWD' to initialize our notion.
+
+'C' to track chdir(2) on a per process basis
+
+'R' files read are what we really care about.
+ directories read, provide a clue to resolving
+ subsequent relative paths. That is if we cannot find
+ them relative to 'cwd', we check relative to the last
+ dir read.
+
+'W' files opened for write or read-write,
+ for filemon V3 and earlier.
+
+'E' files executed.
+
+'L' files linked
+
+'V' the filemon version, this record is used as a clue
+ that we have reached the interesting bit.
+
+"""
+
+"""
+RCSid:
+ $Id: meta2deps.py,v 1.18 2015/04/03 18:23:25 sjg Exp $
+
+ Copyright (c) 2011-2013, Juniper Networks, Inc.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""
+
+import os, re, sys
+
+def getv(dict, key, d=None):
+ """Lookup key in dict and return value or the supplied default."""
+ if key in dict:
+ return dict[key]
+ return d
+
+def resolve(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
+ """
+ Return an absolute path, resolving via cwd or last_dir if needed.
+ """
+ if path.endswith('/.'):
+ path = path[0:-2]
+ if len(path) > 0 and path[0] == '/':
+ return path
+ if path == '.':
+ return cwd
+ if path.startswith('./'):
+ return cwd + path[1:]
+ if last_dir == cwd:
+ last_dir = None
+ for d in [last_dir, cwd]:
+ if not d:
+ continue
+ p = '/'.join([d,path])
+ if debug > 2:
+ print("looking for:", p, end=' ', file=debug_out)
+ if not os.path.exists(p):
+ if debug > 2:
+ print("nope", file=debug_out)
+ p = None
+ continue
+ if debug > 2:
+ print("found:", p, file=debug_out)
+ return p
+ return None
+
+def abspath(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
+ """
+ Return an absolute path, resolving via cwd or last_dir if needed.
+ this gets called a lot, so we try to avoid calling realpath
+ until we know we have something.
+ """
+ rpath = resolve(path, cwd, last_dir, debug, debug_out)
+ if rpath:
+ path = rpath
+ if (path.find('/') < 0 or
+ path.find('./') > 0 or
+ path.endswith('/..') or
+ os.path.islink(path)):
+ return os.path.realpath(path)
+ return path
+
+def sort_unique(list, cmp=None, key=None, reverse=False):
+ list.sort(cmp, key, reverse)
+ nl = []
+ le = None
+ for e in list:
+ if e == le:
+ continue
+ nl.append(e)
+ return nl
+
+def add_trims(x):
+ return ['/' + x + '/',
+ '/' + x,
+ x + '/',
+ x]
+
+class MetaFile:
+ """class to parse meta files generated by bmake."""
+
+ conf = None
+ dirdep_re = None
+ host_target = None
+ srctops = []
+ objroots = []
+ excludes = []
+ seen = {}
+ obj_deps = []
+ src_deps = []
+ file_deps = []
+
+ def __init__(self, name, conf={}):
+ """if name is set we will parse it now.
+ conf can have the follwing keys:
+
+ SRCTOPS list of tops of the src tree(s).
+
+ CURDIR the src directory 'bmake' was run from.
+
+ RELDIR the relative path from SRCTOP to CURDIR
+
+ MACHINE the machine we built for.
+ set to 'none' if we are not cross-building.
+ More specifically if machine cannot be deduced from objdirs.
+
+ TARGET_SPEC
+ Sometimes MACHINE isn't enough.
+
+ HOST_TARGET
+ when we build for the pseudo machine 'host'
+ the object tree uses HOST_TARGET rather than MACHINE.
+
+ OBJROOTS a list of the common prefix for all obj dirs it might
+ end in '/' or '-'.
+
+ DPDEPS names an optional file to which per file dependencies
+ will be appended.
+ For example if 'some/path/foo.h' is read from SRCTOP
+ then 'DPDEPS_some/path/foo.h +=' "RELDIR" is output.
+ This can allow 'bmake' to learn all the dirs within
+ the tree that depend on 'foo.h'
+
+ EXCLUDES
+ A list of paths to ignore.
+ ccache(1) can otherwise be trouble.
+
+ debug desired debug level
+
+ debug_out open file to send debug output to (sys.stderr)
+
+ """
+
+ self.name = name
+ self.debug = getv(conf, 'debug', 0)
+ self.debug_out = getv(conf, 'debug_out', sys.stderr)
+
+ self.machine = getv(conf, 'MACHINE', '')
+ self.machine_arch = getv(conf, 'MACHINE_ARCH', '')
+ self.target_spec = getv(conf, 'TARGET_SPEC', '')
+ self.curdir = getv(conf, 'CURDIR')
+ self.reldir = getv(conf, 'RELDIR')
+ self.dpdeps = getv(conf, 'DPDEPS')
+ self.line = 0
+
+ if not self.conf:
+ # some of the steps below we want to do only once
+ self.conf = conf
+ self.host_target = getv(conf, 'HOST_TARGET')
+ for srctop in getv(conf, 'SRCTOPS', []):
+ if srctop[-1] != '/':
+ srctop += '/'
+ if not srctop in self.srctops:
+ self.srctops.append(srctop)
+ _srctop = os.path.realpath(srctop)
+ if _srctop[-1] != '/':
+ _srctop += '/'
+ if not _srctop in self.srctops:
+ self.srctops.append(_srctop)
+
+ trim_list = add_trims(self.machine)
+ if self.machine == 'host':
+ trim_list += add_trims(self.host_target)
+ if self.target_spec:
+ trim_list += add_trims(self.target_spec)
+
+ for objroot in getv(conf, 'OBJROOTS', []):
+ for e in trim_list:
+ if objroot.endswith(e):
+ # this is not what we want - fix it
+ objroot = objroot[0:-len(e)]
+ if e.endswith('/'):
+ objroot += '/'
+ if not objroot in self.objroots:
+ self.objroots.append(objroot)
+ _objroot = os.path.realpath(objroot)
+ if objroot[-1] == '/':
+ _objroot += '/'
+ if not _objroot in self.objroots:
+ self.objroots.append(_objroot)
+
+ # we want the longest match
+ self.srctops.sort(reverse=True)
+ self.objroots.sort(reverse=True)
+
+ self.excludes = getv(conf, 'EXCLUDES', [])
+
+ if self.debug:
+ print("host_target=", self.host_target, file=self.debug_out)
+ print("srctops=", self.srctops, file=self.debug_out)
+ print("objroots=", self.objroots, file=self.debug_out)
+ print("excludes=", self.excludes, file=self.debug_out)
+
+ self.dirdep_re = re.compile(r'([^/]+)/(.+)')
+
+ if self.dpdeps and not self.reldir:
+ if self.debug:
+ print("need reldir:", end=' ', file=self.debug_out)
+ if self.curdir:
+ srctop = self.find_top(self.curdir, self.srctops)
+ if srctop:
+ self.reldir = self.curdir.replace(srctop,'')
+ if self.debug:
+ print(self.reldir, file=self.debug_out)
+ if not self.reldir:
+ self.dpdeps = None # we cannot do it?
+
+ self.cwd = os.getcwd() # make sure this is initialized
+ self.last_dir = self.cwd
+
+ if name:
+ self.try_parse()
+
+ def reset(self):
+ """reset state if we are being passed meta files from multiple directories."""
+ self.seen = {}
+ self.obj_deps = []
+ self.src_deps = []
+ self.file_deps = []
+
+ def dirdeps(self, sep='\n'):
+ """return DIRDEPS"""
+ return sep.strip() + sep.join(self.obj_deps)
+
+ def src_dirdeps(self, sep='\n'):
+ """return SRC_DIRDEPS"""
+ return sep.strip() + sep.join(self.src_deps)
+
+ def file_depends(self, out=None):
+ """Append DPDEPS_${file} += ${RELDIR}
+ for each file we saw, to the output file."""
+ if not self.reldir:
+ return None
+ for f in sort_unique(self.file_deps):
+ print('DPDEPS_%s += %s' % (f, self.reldir), file=out)
+
+ def seenit(self, dir):
+ """rememer that we have seen dir."""
+ self.seen[dir] = 1
+
+ def add(self, list, data, clue=''):
+ """add data to list if it isn't already there."""
+ if data not in list:
+ list.append(data)
+ if self.debug:
+ print("%s: %sAdd: %s" % (self.name, clue, data), file=self.debug_out)
+
+ def find_top(self, path, list):
+ """the logical tree may be split across multiple trees"""
+ for top in list:
+ if path.startswith(top):
+ if self.debug > 2:
+ print("found in", top, file=self.debug_out)
+ return top
+ return None
+
+ def find_obj(self, objroot, dir, path, input):
+ """return path within objroot, taking care of .dirdep files"""
+ ddep = None
+ for ddepf in [path + '.dirdep', dir + '/.dirdep']:
+ if not ddep and os.path.exists(ddepf):
+ ddep = open(ddepf, 'r').readline().strip('# \n')
+ if self.debug > 1:
+ print("found %s: %s\n" % (ddepf, ddep), file=self.debug_out)
+ if ddep.endswith(self.machine):
+ ddep = ddep[0:-(1+len(self.machine))]
+ elif self.target_spec and ddep.endswith(self.target_spec):
+ ddep = ddep[0:-(1+len(self.target_spec))]
+
+ if not ddep:
+ # no .dirdeps, so remember that we've seen the raw input
+ self.seenit(input)
+ self.seenit(dir)
+ if self.machine == 'none':
+ if dir.startswith(objroot):
+ return dir.replace(objroot,'')
+ return None
+ m = self.dirdep_re.match(dir.replace(objroot,''))
+ if m:
+ ddep = m.group(2)
+ dmachine = m.group(1)
+ if dmachine != self.machine:
+ if not (self.machine == 'host' and
+ dmachine == self.host_target):
+ if self.debug > 2:
+ print("adding .%s to %s" % (dmachine, ddep), file=self.debug_out)
+ ddep += '.' + dmachine
+
+ return ddep
+
+ def try_parse(self, name=None, file=None):
+ """give file and line number causing exception"""
+ try:
+ self.parse(name, file)
+ except:
+ # give a useful clue
+ print('{}:{}: '.format(self.name, self.line), end=' ', file=sys.stderr)
+ raise
+
+ def parse(self, name=None, file=None):
+ """A meta file looks like:
+
+ # Meta data file "path"
+ CMD "command-line"
+ CWD "cwd"
+ TARGET "target"
+ -- command output --
+ -- filemon acquired metadata --
+ # buildmon version 3
+ V 3
+ C "pid" "cwd"
+ E "pid" "path"
+ F "pid" "child"
+ R "pid" "path"
+ W "pid" "path"
+ X "pid" "status"
+ D "pid" "path"
+ L "pid" "src" "target"
+ M "pid" "old" "new"
+ S "pid" "path"
+ # Bye bye
+
+ We go to some effort to avoid processing a dependency more than once.
+ Of the above record types only C,E,F,L,R,V and W are of interest.
+ """
+
+ version = 0 # unknown
+ if name:
+ self.name = name;
+ if file:
+ f = file
+ cwd = self.last_dir = self.cwd
+ else:
+ f = open(self.name, 'r')
+ skip = True
+ pid_cwd = {}
+ pid_last_dir = {}
+ last_pid = 0
+
+ self.line = 0
+ if self.curdir:
+ self.seenit(self.curdir) # we ignore this
+
+ interesting = 'CEFLRV'
+ for line in f:
+ self.line += 1
+ # ignore anything we don't care about
+ if not line[0] in interesting:
+ continue
+ if self.debug > 2:
+ print("input:", line, end=' ', file=self.debug_out)
+ w = line.split()
+
+ if skip:
+ if w[0] == 'V':
+ skip = False
+ version = int(w[1])
+ """
+ if version < 4:
+ # we cannot ignore 'W' records
+ # as they may be 'rw'
+ interesting += 'W'
+ """
+ elif w[0] == 'CWD':
+ self.cwd = cwd = self.last_dir = w[1]
+ self.seenit(cwd) # ignore this
+ if self.debug:
+ print("%s: CWD=%s" % (self.name, cwd), file=self.debug_out)
+ continue
+
+ pid = int(w[1])
+ if pid != last_pid:
+ if last_pid:
+ pid_cwd[last_pid] = cwd
+ pid_last_dir[last_pid] = self.last_dir
+ cwd = getv(pid_cwd, pid, self.cwd)
+ self.last_dir = getv(pid_last_dir, pid, self.cwd)
+ last_pid = pid
+
+ # process operations
+ if w[0] == 'F':
+ npid = int(w[2])
+ pid_cwd[npid] = cwd
+ pid_last_dir[npid] = cwd
+ last_pid = npid
+ continue
+ elif w[0] == 'C':
+ cwd = abspath(w[2], cwd, None, self.debug, self.debug_out)
+ if cwd.endswith('/.'):
+ cwd = cwd[0:-2]
+ self.last_dir = cwd
+ if self.debug > 1:
+ print("cwd=", cwd, file=self.debug_out)
+ continue
+
+ if w[2] in self.seen:
+ if self.debug > 2:
+ print("seen:", w[2], file=self.debug_out)
+ continue
+ # file operations
+ if w[0] in 'ML':
+ # these are special, tread src as read and
+ # target as write
+ self.parse_path(w[1].strip("'"), cwd, 'R', w)
+ self.parse_path(w[2].strip("'"), cwd, 'W', w)
+ continue
+ elif w[0] in 'ERWS':
+ path = w[2]
+ self.parse_path(path, cwd, w[0], w)
+
+ if not file:
+ f.close()
+
+ def parse_path(self, path, cwd, op=None, w=[]):
+ """look at a path for the op specified"""
+
+ if not op:
+ op = w[0]
+
+ # we are never interested in .dirdep files as dependencies
+ if path.endswith('.dirdep'):
+ return
+ for p in self.excludes:
+ if p and path.startswith(p):
+ if self.debug > 2:
+ print >> self.debug_out, "exclude:", p, path
+ return
+ # we don't want to resolve the last component if it is
+ # a symlink
+ path = resolve(path, cwd, self.last_dir, self.debug, self.debug_out)
+ if not path:
+ return
+ dir,base = os.path.split(path)
+ if dir in self.seen:
+ if self.debug > 2:
+ print("seen:", dir, file=self.debug_out)
+ return
+ # we can have a path in an objdir which is a link
+ # to the src dir, we may need to add dependencies for each
+ rdir = dir
+ dir = abspath(dir, cwd, self.last_dir, self.debug, self.debug_out)
+ if rdir == dir or rdir.find('./') > 0:
+ rdir = None
+ # now put path back together
+ path = '/'.join([dir,base])
+ if self.debug > 1:
+ print("raw=%s rdir=%s dir=%s path=%s" % (w[2], rdir, dir, path), file=self.debug_out)
+ if op in 'RWS':
+ if path in [self.last_dir, cwd, self.cwd, self.curdir]:
+ if self.debug > 1:
+ print("skipping:", path, file=self.debug_out)
+ return
+ if os.path.isdir(path):
+ if op in 'RW':
+ self.last_dir = path;
+ if self.debug > 1:
+ print("ldir=", self.last_dir, file=self.debug_out)
+ return
+
+ if op in 'ERW':
+ # finally, we get down to it
+ if dir == self.cwd or dir == self.curdir:
+ return
+ srctop = self.find_top(path, self.srctops)
+ if srctop:
+ if self.dpdeps:
+ self.add(self.file_deps, path.replace(srctop,''), 'file')
+ self.add(self.src_deps, dir.replace(srctop,''), 'src')
+ self.seenit(w[2])
+ self.seenit(dir)
+ if rdir and not rdir.startswith(srctop):
+ dir = rdir # for below
+ rdir = None
+ else:
+ return
+
+ objroot = None
+ for dir in [dir,rdir]:
+ if not dir:
+ continue
+ objroot = self.find_top(dir, self.objroots)
+ if objroot:
+ break
+ if objroot:
+ ddep = self.find_obj(objroot, dir, path, w[2])
+ if ddep:
+ self.add(self.obj_deps, ddep, 'obj')
+ else:
+ # don't waste time looking again
+ self.seenit(w[2])
+ self.seenit(dir)
+
+
+def main(argv, klass=MetaFile, xopts='', xoptf=None):
+ """Simple driver for class MetaFile.
+
+ Usage:
+ script [options] [key=value ...] "meta" ...
+
+ Options and key=value pairs contribute to the
+ dictionary passed to MetaFile.
+
+ -S "SRCTOP"
+ add "SRCTOP" to the "SRCTOPS" list.
+
+ -C "CURDIR"
+
+ -O "OBJROOT"
+ add "OBJROOT" to the "OBJROOTS" list.
+
+ -m "MACHINE"
+
+ -a "MACHINE_ARCH"
+
+ -H "HOST_TARGET"
+
+ -D "DPDEPS"
+
+ -d bumps debug level
+
+ """
+ import getopt
+
+ # import Psyco if we can
+ # it can speed things up quite a bit
+ have_psyco = 0
+ try:
+ import psyco
+ psyco.full()
+ have_psyco = 1
+ except:
+ pass
+
+ conf = {
+ 'SRCTOPS': [],
+ 'OBJROOTS': [],
+ 'EXCLUDES': [],
+ }
+
+ try:
+ machine = os.environ['MACHINE']
+ if machine:
+ conf['MACHINE'] = machine
+ machine_arch = os.environ['MACHINE_ARCH']
+ if machine_arch:
+ conf['MACHINE_ARCH'] = machine_arch
+ srctop = os.environ['SB_SRC']
+ if srctop:
+ conf['SRCTOPS'].append(srctop)
+ objroot = os.environ['SB_OBJROOT']
+ if objroot:
+ conf['OBJROOTS'].append(objroot)
+ except:
+ pass
+
+ debug = 0
+ output = True
+
+ opts, args = getopt.getopt(argv[1:], 'a:dS:C:O:R:m:D:H:qT:X:' + xopts)
+ for o, a in opts:
+ if o == '-a':
+ conf['MACHINE_ARCH'] = a
+ elif o == '-d':
+ debug += 1
+ elif o == '-q':
+ output = False
+ elif o == '-H':
+ conf['HOST_TARGET'] = a
+ elif o == '-S':
+ if a not in conf['SRCTOPS']:
+ conf['SRCTOPS'].append(a)
+ elif o == '-C':
+ conf['CURDIR'] = a
+ elif o == '-O':
+ if a not in conf['OBJROOTS']:
+ conf['OBJROOTS'].append(a)
+ elif o == '-R':
+ conf['RELDIR'] = a
+ elif o == '-D':
+ conf['DPDEPS'] = a
+ elif o == '-m':
+ conf['MACHINE'] = a
+ elif o == '-T':
+ conf['TARGET_SPEC'] = a
+ elif o == '-X':
+ if a not in conf['EXCLUDES']:
+ conf['EXCLUDES'].append(a)
+ elif xoptf:
+ xoptf(o, a, conf)
+
+ conf['debug'] = debug
+
+ # get any var=val assignments
+ eaten = []
+ for a in args:
+ if a.find('=') > 0:
+ k,v = a.split('=')
+ if k in ['SRCTOP','OBJROOT','SRCTOPS','OBJROOTS']:
+ if k == 'SRCTOP':
+ k = 'SRCTOPS'
+ elif k == 'OBJROOT':
+ k = 'OBJROOTS'
+ if v not in conf[k]:
+ conf[k].append(v)
+ else:
+ conf[k] = v
+ eaten.append(a)
+ continue
+ break
+
+ for a in eaten:
+ args.remove(a)
+
+ debug_out = getv(conf, 'debug_out', sys.stderr)
+
+ if debug:
+ print("config:", file=debug_out)
+ print("psyco=", have_psyco, file=debug_out)
+ for k,v in list(conf.items()):
+ print("%s=%s" % (k,v), file=debug_out)
+
+ m = None
+ for a in args:
+ if a.endswith('.meta'):
+ if not os.path.exists(a):
+ continue
+ m = klass(a, conf)
+ elif a.startswith('@'):
+ # there can actually multiple files per line
+ for line in open(a[1:]):
+ for f in line.strip().split():
+ if not os.path.exists(f):
+ continue
+ m = klass(f, conf)
+
+ if output and m:
+ print(m.dirdeps())
+
+ print(m.src_dirdeps('\nsrc:'))
+
+ dpdeps = getv(conf, 'DPDEPS')
+ if dpdeps:
+ m.file_depends(open(dpdeps, 'wb'))
+
+ return m
+
+if __name__ == '__main__':
+ try:
+ main(sys.argv)
+ except:
+ # yes, this goes to stdout
+ print("ERROR: ", sys.exc_info()[1])
+ raise
+
diff --git a/share/mk/meta2deps.sh b/share/mk/meta2deps.sh
new file mode 100755
index 0000000..c012fd3
--- /dev/null
+++ b/share/mk/meta2deps.sh
@@ -0,0 +1,404 @@
+# $FreeBSD$
+#!/bin/sh
+
+# NAME:
+# meta2deps.sh - extract useful info from .meta files
+#
+# SYNOPSIS:
+# meta2deps.sh SB="SB" "meta" ...
+#
+# DESCRIPTION:
+# This script looks each "meta" file and extracts the
+# information needed to deduce build and src dependencies.
+#
+# To do this, we extract the 'CWD' record as well as all the
+# syscall traces which describe 'R'ead, 'C'hdir and 'E'xec
+# syscalls.
+#
+# The typical meta file looks like::
+#.nf
+#
+# # Meta data file "path"
+# CMD "command-line"
+# CWD "cwd"
+# TARGET "target"
+# -- command output --
+# -- filemon acquired metadata --
+# # buildmon version 2
+# V 2
+# E "pid" "path"
+# R "pid" "path"
+# C "pid" "cwd"
+# R "pid" "path"
+# X "pid" "status"
+#.fi
+#
+# The fact that all the syscall entry lines start with a single
+# character make these files quite easy to process using sed(1).
+#
+# To simplify the logic the 'CWD' line is made to look like a
+# normal 'C'hdir entry, and "cwd" is remembered so that it can
+# be prefixed to any "path" which is not absolute.
+#
+# If the "path" being read ends in '.srcrel' it is the content
+# of (actually the first line of) that file that we are
+# interested in.
+#
+# Any "path" which lies outside of the sandbox "SB" is generally
+# not of interest and is ignored.
+#
+# The output, is a set of absolute paths with "SB" like:
+#.nf
+#
+# $SB/obj-i386/bsd/gnu/lib/csu
+# $SB/obj-i386/bsd/gnu/lib/libgcc
+# $SB/obj-i386/bsd/include
+# $SB/obj-i386/bsd/lib/csu/i386-elf
+# $SB/obj-i386/bsd/lib/libc
+# $SB/src/bsd/include
+# $SB/src/bsd/sys/i386/include
+# $SB/src/bsd/sys/sys
+# $SB/src/pan-release/rtsock
+# $SB/src/pfe-shared/include/jnx
+#.fi
+#
+# Which can then be further processed by 'gendirdeps.mk'
+#
+# If we are passed 'DPDEPS='"dpdeps", then for each src file
+# outside of "CURDIR" we read, we output a line like:
+#.nf
+#
+# DPDEPS_$path += $RELDIR
+#.fi
+#
+# with "$path" geting turned into reldir's, so that we can end
+# up with a list of all the directories which depend on each src
+# file in another directory. This can allow for efficient yet
+# complete testing of changes.
+
+
+# RCSid:
+# $Id: meta2deps.sh,v 1.9 2015/04/03 18:23:25 sjg Exp $
+
+# Copyright (c) 2010-2013, Juniper Networks, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+meta2src() {
+ cat /dev/null "$@" |
+ sed -n '/^R .*\.[chyl]$/s,^..[0-9]* ,,p' |
+ sort -u
+}
+
+meta2dirs() {
+ cat /dev/null "$@" |
+ sed -n '/^R .*\/.*\.[a-z0-9][^\/]*$/s,^..[0-9]* \(.*\)/[^/]*$,\1,p' |
+ sort -u
+}
+
+add_list() {
+ sep=' '
+ suffix=
+ while :
+ do
+ case "$1" in
+ "|") sep="$1"; shift;;
+ -s) suffix="$2"; shift 2;;
+ *) break;;
+ esac
+ done
+ name=$1
+ shift
+ eval list="\$$name"
+ for top in "$@"
+ do
+ case "$sep$list$sep" in
+ *"$sep$top$suffix$sep"*) continue;;
+ esac
+ list="${list:+$list$sep}$top$suffix"
+ done
+ eval "$name=\"$list\""
+}
+
+_excludes_f() {
+ egrep -v "$EXCLUDES"
+}
+
+meta2deps() {
+ DPDEPS=
+ SRCTOPS=$SRCTOP
+ OBJROOTS=
+ EXCLUDES=
+ while :
+ do
+ case "$1" in
+ *=*) eval export "$1"; shift;;
+ -a) MACHINE_ARCH=$2; shift 2;;
+ -m) MACHINE=$2; shift 2;;
+ -C) CURDIR=$2; shift 2;;
+ -H) HOST_TARGET=$2; shift 2;;
+ -S) add_list SRCTOPS $2; shift 2;;
+ -O) add_list OBJROOTS $2; shift 2;;
+ -X) add_list EXCLUDES '|' $2; shift 2;;
+ -R) RELDIR=$2; shift 2;;
+ -T) TARGET_SPEC=$2; shift 2;;
+ *) break;;
+ esac
+ done
+
+ _th= _o=
+ case "$MACHINE" in
+ host) _ht=$HOST_TARGET;;
+ esac
+
+ for o in $OBJROOTS
+ do
+ case "$MACHINE,/$o/" in
+ host,*$HOST_TARGET*) ;;
+ *$MACHINE*|*${TARGET_SPEC:-$MACHINE}*) ;;
+ *) add_list _o $o; continue;;
+ esac
+ for x in $_ht $TARGET_SPEC $MACHINE
+ do
+ case "$o" in
+ "") continue;;
+ */$x/) add_list _o ${o%$x/}; o=;;
+ */$x) add_list _o ${o%$x}; o=;;
+ *$x/) add_list _o ${o%$x/}; o=;;
+ *$x) add_list _o ${o%$x}; o=;;
+ esac
+ done
+ done
+ OBJROOTS="$_o"
+
+ case "$OBJTOP" in
+ "")
+ for o in $OBJROOTS
+ do
+ OBJTOP=$o${TARGET_SPEC:-$MACHINE}
+ break
+ done
+ ;;
+ esac
+ src_re=
+ obj_re=
+ add_list '|' -s '/*' src_re $SRCTOPS
+ add_list '|' -s '*' obj_re $OBJROOTS
+
+ [ -z "$RELDIR" ] && unset DPDEPS
+ tf=/tmp/m2d$$-$USER
+ rm -f $tf.*
+ trap 'rm -f $tf.*; trap 0' 0
+
+ > $tf.dirdep
+ > $tf.qual
+ > $tf.srcdep
+ > $tf.srcrel
+ > $tf.dpdeps
+
+ seenit=
+ seensrc=
+ lpid=
+ case "$EXCLUDES" in
+ "") _excludes=cat;;
+ *) _excludes=_excludes_f;;
+ esac
+ # handle @list files
+ case "$@" in
+ *@[!.]*)
+ for f in "$@"
+ do
+ case "$f" in
+ *.meta) cat $f;;
+ @*) xargs cat < ${f#@};;
+ *) cat $f;;
+ esac
+ done
+ ;;
+ *) cat /dev/null "$@";;
+ esac 2> /dev/null |
+ sed -e 's,^CWD,C C,;/^[CREFLM] /!d' -e "s,',,g" |
+ $_excludes |
+ while read op pid path junk
+ do
+ : op=$op pid=$pid path=$path
+ # we track cwd and ldir (of interest) per pid
+ # CWD is bmake's cwd
+ case "$lpid,$pid" in
+ ,C) CWD=$path cwd=$path ldir=$path
+ if [ -z "$SB" ]; then
+ SB=`echo $CWD | sed 's,/obj.*,,'`
+ fi
+ SRCTOP=${SRCTOP:-$SB/src}
+ continue
+ ;;
+ $pid,$pid) ;;
+ *)
+ case "$lpid" in
+ "") ;;
+ *) eval ldir_$lpid=$ldir cwd_$lpid=$cwd;;
+ esac
+ eval ldir=\${ldir_$pid:-$CWD} cwd=\${cwd_$pid:-$CWD}
+ lpid=$pid
+ ;;
+ esac
+
+ case "$op,$path" in
+ W,*srcrel|*.dirdep) continue;;
+ C,*)
+ case "$path" in
+ /*) cwd=$path;;
+ *) cwd=`cd $cwd/$path 2> /dev/null && /bin/pwd`;;
+ esac
+ # watch out for temp dirs that no longer exist
+ test -d ${cwd:-/dev/null/no/such} || cwd=$CWD
+ continue
+ ;;
+ F,*) eval cwd_$path=$cwd ldir_$path=$ldir
+ continue
+ ;;
+ *) dir=${path%/*}
+ case "$path" in
+ $src_re|$obj_re) ;;
+ /*/stage/*) ;;
+ /*) continue;;
+ *) for path in $ldir/$path $cwd/$path
+ do
+ test -e $path && break
+ done
+ dir=${path%/*}
+ ;;
+ esac
+ ;;
+ esac
+ # avoid repeating ourselves...
+ case "$DPDEPS,$seensrc," in
+ ,*)
+ case ",$seenit," in
+ *,$dir,*) continue;;
+ esac
+ ;;
+ *,$path,*) continue;;
+ esac
+ # canonicalize if needed
+ case "/$dir/" in
+ */../*|*/./*)
+ rdir=$dir
+ dir=`cd $dir 2> /dev/null && /bin/pwd`
+ seen="$rdir,$dir"
+ ;;
+ *) seen=$dir;;
+ esac
+ case "$dir" in
+ ${CURDIR:-.}|${CURDIR:-.}/*|"") continue;;
+ $src_re)
+ # avoid repeating ourselves...
+ case "$DPDEPS,$seensrc," in
+ ,*)
+ case ",$seenit," in
+ *,$dir,*) continue;;
+ esac
+ ;;
+ esac
+ ;;
+ *)
+ case ",$seenit," in
+ *,$dir,*) continue;;
+ esac
+ ;;
+ esac
+ if [ -d $path ]; then
+ case "$path" in
+ */..) ldir=${dir%/*};;
+ *) ldir=$path;;
+ esac
+ continue
+ fi
+ [ -f $path ] || continue
+ case "$dir" in
+ $CWD) continue;; # ignore
+ $src_re)
+ seenit="$seenit,$seen"
+ echo $dir >> $tf.srcdep
+ case "$DPDEPS,$reldir,$seensrc," in
+ ,*) ;;
+ *) seensrc="$seensrc,$path"
+ echo "DPDEPS_$dir/${path##*/} += $RELDIR" >> $tf.dpdeps
+ ;;
+ esac
+ continue
+ ;;
+ esac
+ # if there is a .dirdep we cannot skip
+ # just because we've seen the dir before.
+ if [ -s $path.dirdep ]; then
+ # this file contains:
+ # '# ${RELDIR}.<machine>'
+ echo $path.dirdep >> $tf.qual
+ continue
+ elif [ -s $dir.dirdep ]; then
+ echo $dir.dirdep >> $tf.qual
+ seenit="$seenit,$seen"
+ continue
+ fi
+ seenit="$seenit,$seen"
+ case "$dir" in
+ $obj_re)
+ echo $dir;;
+ esac
+ done > $tf.dirdep
+ _nl=echo
+ for f in $tf.dirdep $tf.qual $tf.srcdep
+ do
+ [ -s $f ] || continue
+ case $f in
+ *qual) # a list of .dirdep files
+ # we can prefix everything with $OBJTOP to
+ # tell gendirdeps.mk that these are
+ # DIRDEP entries, since they are already
+ # qualified with .<machine> as needed.
+ # We strip .$MACHINE though
+ xargs cat < $f | sort -u |
+ sed "s,^# ,,;s,^,$OBJTOP/,;s,\.${TARGET_SPEC:-$MACHINE}\$,,;s,\.$MACHINE\$,,"
+ ;;
+ *) sort -u $f;;
+ esac
+ _nl=:
+ done
+ if [ -s $tf.dpdeps ]; then
+ case "$DPDEPS" in
+ */*) ;;
+ *) echo > $DPDEPS;; # the echo is needed!
+ esac
+ sort -u $tf.dpdeps |
+ sed "s,${SRCTOP}/,,;s,${SB_BACKING_SB:-$SB}/src/,," >> $DPDEPS
+ fi
+ # ensure we produce _something_ else egrep -v gets upset
+ $_nl
+}
+
+case /$0 in
+*/meta2dep*) meta2deps "$@";;
+*/meta2dirs*) meta2dirs "$@";;
+*/meta2src*) meta2src "$@";;
+esac
diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
index e8c6dd2..4db46ab 100644
--- a/share/mk/src.libnames.mk
+++ b/share/mk/src.libnames.mk
@@ -123,6 +123,8 @@ _LIBRARIES= \
nv \
opie \
pam \
+ panel \
+ panelw \
pcap \
pcsclite \
pjdlog \
@@ -338,7 +340,7 @@ LIBIPFDIR= ${ROOTOBJDIR}/sbin/ipf/libipf
LIBIPF?= ${LIBIPFDIR}/libipf.a
LIBTELNETDIR= ${ROOTOBJDIR}/lib/libtelnet
-LIBTELNET?= ${LIBIPFDIR}/libtelnet.a
+LIBTELNET?= ${LIBTELNETDIR}/libtelnet.a
LIBCRONDIR= ${ROOTOBJDIR}/usr.sbin/cron/lib
LIBCRON?= ${LIBCRONDIR}/libcron.a
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index ed03a78..3331f6f 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -179,7 +179,6 @@ __DEFAULT_NO_OPTIONS = \
BSD_GREP \
CLANG_EXTRAS \
EISA \
- FMAKE \
HESIOD \
LLDB \
NAND \
@@ -219,9 +218,9 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC
# On x86 and arm64, clang is enabled, and will be installed as the default cc.
__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC
__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX
-.elif ${__TT} == "arm" && ${__T:Marm*eb*} == ""
-# On little-endian arm, clang is enabled, and it is installed as the default
-# cc, but since gcc is unable to build the full clang, disable it by default.
+.elif ${__TT} == "arm"
+# On arm, clang is enabled, and it is installed as the default cc, but
+# since gcc is unable to build the full clang, disable it by default.
__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_CC
__DEFAULT_NO_OPTIONS+=CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX
.elif ${__T:Mpowerpc*}
diff --git a/share/mk/src.sys.env.mk b/share/mk/src.sys.env.mk
new file mode 100644
index 0000000..0516075
--- /dev/null
+++ b/share/mk/src.sys.env.mk
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# early setup only see also src.sys.mk
+
+# make sure this is defined in a consistent manner
+SRCTOP:= ${.PARSEDIR:tA:H:H}
+
+# site customizations that do not depend on anything!
+SRC_ENV_CONF?= /etc/src-env.conf
+.if !empty(SRC_ENV_CONF) && !target(_src_env_conf_included_)
+.-include "${SRC_ENV_CONF}"
+_src_env_conf_included_: .NOTMAIN
+.endif
+
+# If we were found via .../share/mk we need to replace that
+# with ${.PARSEDIR:tA} so that we can be found by
+# sub-makes launched from objdir.
+.if ${.MAKEFLAGS:M.../share/mk} != ""
+.MAKEFLAGS:= ${.MAKEFLAGS:S,.../share/mk,${.PARSEDIR:tA},}
+.endif
+.if ${MAKESYSPATH:Uno:M*.../*} != ""
+MAKESYSPATH:= ${MAKESYSPATH:S,.../share/mk,${.PARSEDIR:tA},}
+.export MAKESYSPATH
+.endif
diff --git a/share/mk/src.sys.mk b/share/mk/src.sys.mk
index 5804810..81ecaf6 100644
--- a/share/mk/src.sys.mk
+++ b/share/mk/src.sys.mk
@@ -5,22 +5,13 @@
# to preserve historical (and useful) behavior. Changes here need to
# be reflected there so SRCCONF isn't included multiple times.
-# make sure this is defined in a consistent manner
-SRCTOP:= ${.PARSEDIR:tA:H:H}
-
# Allow user to configure things that only effect src tree builds.
SRCCONF?= /etc/src.conf
.if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_)
.sinclude "${SRCCONF}"
_srcconf_included_: .NOTMAIN
.endif
-# If we were found via .../share/mk we need to replace that
-# with ${.PARSEDIR:tA} so that we can be found by
-# sub-makes launched from objdir.
-.if ${.MAKEFLAGS:M.../share/mk} != ""
-.MAKEFLAGS:= ${.MAKEFLAGS:S,.../share/mk,${.PARSEDIR:tA},}
-.endif
-.if ${MAKESYSPATH:Uno:M*.../*} != ""
-MAKESYSPATH:= ${MAKESYSPATH:S,.../share/mk,${.PARSEDIR:tA},}
-.export MAKESYSPATH
-.endif
+
+# tempting, but bsd.compiler.mk causes problems this early
+# probably need to remove dependence on bsd.own.mk
+#.include "src.opts.mk"
diff --git a/share/mk/stage-install.sh b/share/mk/stage-install.sh
new file mode 100755
index 0000000..20b1ebb
--- /dev/null
+++ b/share/mk/stage-install.sh
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# NAME:
+# stage-install.sh - wrapper around install
+#
+# SYNOPSIS:
+# stage-install.sh [variable="value"] "args" "dest"
+#
+# DESCRIPTION:
+# This script is a wrapper around the normal install(1).
+# Its role is to add '.dirdep' files to the destination.
+# The variables we might use are:
+#
+# INSTALL
+# Path to actual install(1), default is
+# $REAL_INSTALL
+#
+# OBJDIR
+# Path to the dir where '.dirdep' was generated,
+# default is '.'
+#
+# _DIRDEP
+# Path to actual '.dirdep' file, default is
+# $OBJDIR/.dirdep
+#
+# The "args" and "dest" are passed as is to install(1), and if a
+# '.dirdep' file exists it will be linked or copied to each
+# "file".dirdep placed in "dest" or "dest".dirdep if it happed
+# to be a file rather than a directory.
+#
+# SEE ALSO:
+# meta.stage.mk
+#
+
+# RCSid:
+# $FreeBSD$
+# $Id: stage-install.sh,v 1.5 2013/04/19 16:32:24 sjg Exp $
+#
+# @(#) Copyright (c) 2013, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+INSTALL=${REAL_INSTALL:-install}
+OBJDIR=.
+
+while :
+do
+ case "$1" in
+ *=*) eval "$1"; shift;;
+ *) break;;
+ esac
+done
+
+# if .dirdep doesn't exist, just run install and be done
+_DIRDEP=${_DIRDEP:-$OBJDIR/.dirdep}
+[ -s $_DIRDEP ] && EXEC= || EXEC=exec
+$EXEC $INSTALL "$@" || exit 1
+
+# from meta.stage.mk
+LnCp() {
+ rm -f $2 2> /dev/null
+ ln $1 $2 2> /dev/null || cp -p $1 $2
+}
+
+StageDirdep() {
+ t=$1
+ if [ -s $t.dirdep ]; then
+ cmp -s $_DIRDEP $t.dirdep && return
+ echo "ERROR: $t installed by `cat $t.dirdep` not `cat $_DIRDEP`" >&2
+ exit 1
+ fi
+ LnCp $_DIRDEP $t.dirdep || exit 1
+}
+
+args="$@"
+while [ $# -gt 8 ]
+do
+ shift 8
+done
+eval dest=\$$#
+if [ -f $dest ]; then
+ # a file, there can be only one .dirdep needed
+ StageDirdep $dest
+elif [ -d $dest ]; then
+ for f in $args
+ do
+ test -f $f || continue
+ StageDirdep $dest/${f##*/}
+ done
+fi
diff --git a/share/mk/sys.dependfile.mk b/share/mk/sys.dependfile.mk
new file mode 100644
index 0000000..d12d939
--- /dev/null
+++ b/share/mk/sys.dependfile.mk
@@ -0,0 +1,58 @@
+# $FreeBSD$
+# $Id: sys.dependfile.mk,v 1.6 2014/08/02 18:02:06 sjg Exp $
+#
+# @(#) Copyright (c) 2012, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+# This only makes sense in meta mode.
+# This allows a mixture of auto generated as well as manually edited
+# dependency files, which can be differentiated by their names.
+# As per dirdeps.mk we only require:
+# 1. a common prefix
+# 2. that machine specific files end in .${MACHINE}
+#
+# The .MAKE.DEPENDFILE_PREFERENCE below is an example.
+
+# All depend file names should start with this
+.MAKE.DEPENDFILE_PREFIX ?= Makefile.depend
+
+.if !empty(.MAKE.DEPENDFILE) && \
+ ${.MAKE.DEPENDFILE:M${.MAKE.DEPENDFILE_PREFIX}*} == ""
+# let us do our thing below...
+.undef .MAKE.DEPENDFILE
+.endif
+
+# The order of preference: we will use the first one of these we find.
+# It usually makes sense to order from most specific to least.
+.MAKE.DEPENDFILE_PREFERENCE ?= \
+ ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}.${MACHINE} \
+ ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}
+
+# Normally the 1st entry is our default choice
+# Another useful default is ${.MAKE.DEPENDFILE_PREFIX}
+.MAKE.DEPENDFILE_DEFAULT ?= ${.MAKE.DEPENDFILE_PREFERENCE:[1]}
+
+_e := ${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}
+.if !empty(_e)
+.MAKE.DEPENDFILE := ${_e:[1]}
+.elif ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}} != "" && ${.MAKE.DEPENDFILE_DEFAULT:E} != ${MACHINE}
+# MACHINE specific depend files are supported, but *not* default.
+# If any already exist, we should follow suit.
+_aml = ${ALL_MACHINE_LIST:Uarm amd64 i386 powerpc:N${MACHINE}} ${MACHINE}
+# MACHINE must be the last entry in _aml ;-)
+_e := ${_aml:@MACHINE@${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}@}
+.if !empty(_e)
+.MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}:[1]}
+.endif
+.endif
+.MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_DEFAULT}
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 62ede89..d23d1d7 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -16,6 +16,35 @@ unix ?= We run FreeBSD, not UNIX.
MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
.endif
+
+# Some options we need now
+__DEFAULT_NO_OPTIONS= \
+ DIRDEPS_CACHE \
+ META_MODE \
+ META_FILES \
+
+
+__DEFAULT_DEPENDENT_OPTIONS= \
+ AUTO_OBJ/META_MODE \
+ STAGING/META_MODE \
+ SYSROOT/META_MODE
+
+.include <bsd.mkopt.mk>
+
+# early include for customization
+# see local.sys.mk below
+.-include <local.sys.env.mk>
+
+.if ${MK_META_MODE} == "yes"
+.-include <meta.sys.mk>
+.elif ${MK_META_FILES} == "yes" && ${.MAKEFLAGS:U:M-B} == ""
+.MAKE.MODE= meta verbose
+.endif
+.if ${MK_AUTO_OBJ} == "yes"
+# This needs to be done early - before .PATH is computed
+.-include <auto.obj.mk>
+.endif
+
# If the special target .POSIX appears (without prerequisites or
# commands) before the first noncomment line in the makefile, make shall
# process the makefile as specified by the Posix 1003.2 specification.
@@ -331,30 +360,14 @@ __MAKE_CONF?=/etc/make.conf
.include "${__MAKE_CONF}"
.endif
-# Setup anything for the FreeBSD source build, if we're building
-# inside the source tree. Needs to be after make.conf, but before
-# local stuff.
-.sinclude <src.sys.mk>
-
-# Set any local definitions first. Place this early, but it needs
-# MACHINE_CPUARCH to be defined.
-.sinclude <local.sys.mk>
+# late include for customization
+.-include <local.sys.mk>
.if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL)
SHELL= ${__MAKE_SHELL}
.SHELL: path=${__MAKE_SHELL}
.endif
-.if !defined(.PARSEDIR)
-# We are not bmake, which is more aggressive about searching .PATH
-# It is sometime necessary to curb its enthusiasm with .NOPATH
-# The following allows us to quietly ignore .NOPATH when not using bmake.
-.NOTMAIN: .NOPATH
-.NOPATH:
-
-# Toggle on warnings
-.WARN: dirsyntax
-.else # is bmake
# Tell bmake to expand -V VAR by default
.MAKE.EXPAND_VARIABLES= yes
@@ -371,7 +384,6 @@ SHELL= ${__MAKE_SHELL}
echoFlag=v errFlag=e \
path=${__MAKE_SHELL:U/bin/sh}
.endif
-.endif # bmake
.include <bsd.cpu.mk>
diff --git a/share/mklocale/Makefile b/share/mklocale/Makefile
index b7f551e..172d4d0 100644
--- a/share/mklocale/Makefile
+++ b/share/mklocale/Makefile
@@ -94,7 +94,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//:C/.+$/&./}${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/mklocale/Makefile.depend b/share/mklocale/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/mklocale/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/monetdef/Makefile b/share/monetdef/Makefile
index 4385d87..165e879 100644
--- a/share/monetdef/Makefile
+++ b/share/monetdef/Makefile
@@ -138,7 +138,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/monetdef/Makefile.depend b/share/monetdef/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/monetdef/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/msgdef/Makefile b/share/msgdef/Makefile
index 59a5383..3f22325 100644
--- a/share/msgdef/Makefile
+++ b/share/msgdef/Makefile
@@ -129,7 +129,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/msgdef/Makefile.depend b/share/msgdef/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/msgdef/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/numericdef/Makefile b/share/numericdef/Makefile
index baf99de..f7f97c0 100644
--- a/share/numericdef/Makefile
+++ b/share/numericdef/Makefile
@@ -124,7 +124,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/numericdef/Makefile.depend b/share/numericdef/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/numericdef/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/security/Makefile.depend b/share/security/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/share/security/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/sendmail/Makefile b/share/sendmail/Makefile
index 00427dc..8153d49 100644
--- a/share/sendmail/Makefile
+++ b/share/sendmail/Makefile
@@ -9,8 +9,6 @@ CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \)
DDIR= ${DESTDIR}/usr/share/sendmail
-NO_OBJ=
-
# Define SHARED to indicate whether you want symbolic links to the system
# source (``symlinks''), or a separate copy (``copies'')
SHARED?= copies
diff --git a/share/sendmail/Makefile.depend b/share/sendmail/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/sendmail/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/skel/Makefile b/share/skel/Makefile
index ffe8015..305a455 100644
--- a/share/skel/Makefile
+++ b/share/skel/Makefile
@@ -9,6 +9,5 @@ FILES1DIR= /usr/share/skel
FILES2DIR= /usr/share/skel
FILES1MODE= 0644
FILES2MODE= 0600
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/share/skel/Makefile.depend b/share/skel/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/skel/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/snmp/mibs/Makefile b/share/snmp/mibs/Makefile
index 8de73c9..8bee4c8 100644
--- a/share/snmp/mibs/Makefile
+++ b/share/snmp/mibs/Makefile
@@ -1,7 +1,6 @@
# $FreeBSD$
FILES= FREEBSD-MIB.txt
-NO_OBJ=
FILESDIR= ${SHAREDIR}/snmp/mibs
.include <bsd.prog.mk>
diff --git a/share/snmp/mibs/Makefile.depend b/share/snmp/mibs/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/snmp/mibs/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile
index bb5c6eb..c7c6a1b 100644
--- a/share/syscons/fonts/Makefile
+++ b/share/syscons/fonts/Makefile
@@ -32,6 +32,4 @@ FILES= armscii8-8x8.fnt armscii8-8x14.fnt armscii8-8x16.fnt \
FILESDIR= ${SHAREDIR}/syscons/fonts
-NO_OBJ=
-
.include <bsd.prog.mk>
diff --git a/share/syscons/fonts/Makefile.depend b/share/syscons/fonts/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/syscons/fonts/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/keymaps/Makefile b/share/syscons/keymaps/Makefile
index bcf7dcc..83ed4ae 100644
--- a/share/syscons/keymaps/Makefile
+++ b/share/syscons/keymaps/Makefile
@@ -52,6 +52,4 @@ FILES= INDEX.keymaps \
FILESDIR= ${SHAREDIR}/syscons/keymaps
-NO_OBJ=
-
.include <bsd.prog.mk>
diff --git a/share/syscons/keymaps/Makefile.depend b/share/syscons/keymaps/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/syscons/keymaps/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/scrnmaps/Makefile.depend b/share/syscons/scrnmaps/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/share/syscons/scrnmaps/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/tabset/Makefile.depend b/share/tabset/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/tabset/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/termcap/Makefile.depend b/share/termcap/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/termcap/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/timedef/Makefile b/share/timedef/Makefile
index 5a4060d..1e589d8 100644
--- a/share/timedef/Makefile
+++ b/share/timedef/Makefile
@@ -148,7 +148,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/timedef/Makefile.depend b/share/timedef/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/timedef/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/zoneinfo/Makefile.depend b/share/zoneinfo/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/share/zoneinfo/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/amd64/amd64/gdb_machdep.c b/sys/amd64/amd64/gdb_machdep.c
index 5775c8f..61ffad6 100644
--- a/sys/amd64/amd64/gdb_machdep.c
+++ b/sys/amd64/amd64/gdb_machdep.c
@@ -48,6 +48,8 @@ __FBSDID("$FreeBSD$");
void *
gdb_cpu_getreg(int regnum, size_t *regsz)
{
+ static uint32_t _kcodesel = GSEL(GCODE_SEL, SEL_KPL);
+ static uint32_t _kdatasel = GSEL(GDATA_SEL, SEL_KPL);
*regsz = gdb_cpu_regsz(regnum);
@@ -76,6 +78,8 @@ gdb_cpu_getreg(int regnum, size_t *regsz)
case 14: return (&kdb_thrctx->pcb_r14);
case 15: return (&kdb_thrctx->pcb_r15);
case 16: return (&kdb_thrctx->pcb_rip);
+ case 18: return (&_kcodesel);
+ case 19: return (&_kdatasel);
}
return (NULL);
}
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index 0836375..fa74eb2 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -257,8 +257,8 @@ trap(struct trapframe *frame)
td->td_pticks = 0;
td->td_frame = frame;
addr = frame->tf_rip;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
switch (type) {
case T_PRIVINFLT: /* privileged instruction fault */
diff --git a/sys/amd64/conf/NOTES b/sys/amd64/conf/NOTES
index e0fe465..97eefbf 100644
--- a/sys/amd64/conf/NOTES
+++ b/sys/amd64/conf/NOTES
@@ -17,6 +17,23 @@ profile 2
#
options KDTRACE_HOOKS
+# DTrace core
+# NOTE: introduces CDDL-licensed components into the kernel
+#device dtrace
+
+# DTrace modules
+#device dtrace_lockstat
+#device dtrace_profile
+#device dtrace_sdt
+#device dtrace_fbt
+#device dtrace_systrace
+#device dtrace_prototype
+#device dtnfscl
+#device dtmalloc
+
+# Alternatively include all the DTrace modules
+#device dtraceall
+
#####################################################################
# SMP OPTIONS:
diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h
index 1a4e5ab..f2de960 100644
--- a/sys/amd64/include/vmm.h
+++ b/sys/amd64/include/vmm.h
@@ -108,7 +108,6 @@ enum x2apic_state {
struct vm;
struct vm_exception;
-struct vm_memory_segment;
struct seg_desc;
struct vm_exit;
struct vm_run;
@@ -175,17 +174,33 @@ int vm_create(const char *name, struct vm **retvm);
void vm_destroy(struct vm *vm);
int vm_reinit(struct vm *vm);
const char *vm_name(struct vm *vm);
-int vm_malloc(struct vm *vm, vm_paddr_t gpa, size_t len);
+
+/*
+ * APIs that modify the guest memory map require all vcpus to be frozen.
+ */
+int vm_mmap_memseg(struct vm *vm, vm_paddr_t gpa, int segid, vm_ooffset_t off,
+ size_t len, int prot, int flags);
+int vm_alloc_memseg(struct vm *vm, int ident, size_t len, bool sysmem);
+void vm_free_memseg(struct vm *vm, int ident);
int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hpa);
int vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len);
-void *vm_gpa_hold(struct vm *, vm_paddr_t gpa, size_t len, int prot,
- void **cookie);
+int vm_assign_pptdev(struct vm *vm, int bus, int slot, int func);
+int vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func);
+
+/*
+ * APIs that inspect the guest memory map require only a *single* vcpu to
+ * be frozen. This acts like a read lock on the guest memory map since any
+ * modification requires *all* vcpus to be frozen.
+ */
+int vm_mmap_getnext(struct vm *vm, vm_paddr_t *gpa, int *segid,
+ vm_ooffset_t *segoff, size_t *len, int *prot, int *flags);
+int vm_get_memseg(struct vm *vm, int ident, size_t *len, bool *sysmem,
+ struct vm_object **objptr);
+void *vm_gpa_hold(struct vm *, int vcpuid, vm_paddr_t gpa, size_t len,
+ int prot, void **cookie);
void vm_gpa_release(void *cookie);
-int vm_gpabase2memseg(struct vm *vm, vm_paddr_t gpabase,
- struct vm_memory_segment *seg);
-int vm_get_memobj(struct vm *vm, vm_paddr_t gpa, size_t len,
- vm_offset_t *offset, struct vm_object **object);
-boolean_t vm_mem_allocated(struct vm *vm, vm_paddr_t gpa);
+bool vm_mem_allocated(struct vm *vm, int vcpuid, vm_paddr_t gpa);
+
int vm_get_register(struct vm *vm, int vcpu, int reg, uint64_t *retval);
int vm_set_register(struct vm *vm, int vcpu, int reg, uint64_t val);
int vm_get_seg_desc(struct vm *vm, int vcpu, int reg,
@@ -302,8 +317,6 @@ vcpu_should_yield(struct vm *vm, int vcpu)
void *vcpu_stats(struct vm *vm, int vcpu);
void vcpu_notify_event(struct vm *vm, int vcpuid, bool lapic_intr);
struct vmspace *vm_get_vmspace(struct vm *vm);
-int vm_assign_pptdev(struct vm *vm, int bus, int slot, int func);
-int vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func);
struct vatpic *vm_atpic(struct vm *vm);
struct vatpit *vm_atpit(struct vm *vm);
struct vpmtmr *vm_pmtmr(struct vm *vm);
diff --git a/sys/amd64/include/vmm_dev.h b/sys/amd64/include/vmm_dev.h
index 9d031a9..1af75a3 100644
--- a/sys/amd64/include/vmm_dev.h
+++ b/sys/amd64/include/vmm_dev.h
@@ -34,10 +34,22 @@ void vmmdev_init(void);
int vmmdev_cleanup(void);
#endif
-struct vm_memory_segment {
- vm_paddr_t gpa; /* in */
+struct vm_memmap {
+ vm_paddr_t gpa;
+ int segid; /* memory segment */
+ vm_ooffset_t segoff; /* offset into memory segment */
+ size_t len; /* mmap length */
+ int prot; /* RWX */
+ int flags;
+};
+#define VM_MEMMAP_F_WIRED 0x01
+#define VM_MEMMAP_F_IOMMU 0x02
+
+#define VM_MEMSEG_NAME(m) ((m)->name[0] != '\0' ? (m)->name : NULL)
+struct vm_memseg {
+ int segid;
size_t len;
- int wired;
+ char name[SPECNAMELEN + 1];
};
struct vm_register {
@@ -214,10 +226,14 @@ enum {
IOCNUM_REINIT = 5,
/* memory apis */
- IOCNUM_MAP_MEMORY = 10,
- IOCNUM_GET_MEMORY_SEG = 11,
+ IOCNUM_MAP_MEMORY = 10, /* deprecated */
+ IOCNUM_GET_MEMORY_SEG = 11, /* deprecated */
IOCNUM_GET_GPA_PMAP = 12,
IOCNUM_GLA2GPA = 13,
+ IOCNUM_ALLOC_MEMSEG = 14,
+ IOCNUM_GET_MEMSEG = 15,
+ IOCNUM_MMAP_MEMSEG = 16,
+ IOCNUM_MMAP_GETNEXT = 17,
/* register/state accessors */
IOCNUM_SET_REGISTER = 20,
@@ -278,10 +294,14 @@ enum {
_IOW('v', IOCNUM_SUSPEND, struct vm_suspend)
#define VM_REINIT \
_IO('v', IOCNUM_REINIT)
-#define VM_MAP_MEMORY \
- _IOWR('v', IOCNUM_MAP_MEMORY, struct vm_memory_segment)
-#define VM_GET_MEMORY_SEG \
- _IOWR('v', IOCNUM_GET_MEMORY_SEG, struct vm_memory_segment)
+#define VM_ALLOC_MEMSEG \
+ _IOW('v', IOCNUM_ALLOC_MEMSEG, struct vm_memseg)
+#define VM_GET_MEMSEG \
+ _IOWR('v', IOCNUM_GET_MEMSEG, struct vm_memseg)
+#define VM_MMAP_MEMSEG \
+ _IOW('v', IOCNUM_MMAP_MEMSEG, struct vm_memmap)
+#define VM_MMAP_GETNEXT \
+ _IOWR('v', IOCNUM_MMAP_GETNEXT, struct vm_memmap)
#define VM_SET_REGISTER \
_IOW('v', IOCNUM_SET_REGISTER, struct vm_register)
#define VM_GET_REGISTER \
diff --git a/sys/amd64/linux/linux_machdep.c b/sys/amd64/linux/linux_machdep.c
index d6174e6..451e4b4 100644
--- a/sys/amd64/linux/linux_machdep.c
+++ b/sys/amd64/linux/linux_machdep.c
@@ -251,7 +251,7 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
*/
PROC_LOCK(p);
p->p_vmspace->vm_maxsaddr = (char *)USRSTACK -
- lim_cur(p, RLIMIT_STACK);
+ lim_cur_proc(p, RLIMIT_STACK);
PROC_UNLOCK(p);
}
diff --git a/sys/amd64/linux32/linux32_machdep.c b/sys/amd64/linux32/linux32_machdep.c
index f9c11ca..1c54c5c 100644
--- a/sys/amd64/linux32/linux32_machdep.c
+++ b/sys/amd64/linux32/linux32_machdep.c
@@ -615,7 +615,7 @@ linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
*/
PROC_LOCK(p);
p->p_vmspace->vm_maxsaddr = (char *)LINUX32_USRSTACK -
- lim_cur(p, RLIMIT_STACK);
+ lim_cur_proc(p, RLIMIT_STACK);
PROC_UNLOCK(p);
}
diff --git a/sys/amd64/vmm/amd/svm.c b/sys/amd64/vmm/amd/svm.c
index b25d69d..6d44801 100644
--- a/sys/amd64/vmm/amd/svm.c
+++ b/sys/amd64/vmm/amd/svm.c
@@ -1477,7 +1477,7 @@ svm_vmexit(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit)
VCPU_CTR2(svm_sc->vm, vcpu, "nested page fault with "
"reserved bits set: info1(%#lx) info2(%#lx)",
info1, info2);
- } else if (vm_mem_allocated(svm_sc->vm, info2)) {
+ } else if (vm_mem_allocated(svm_sc->vm, vcpu, info2)) {
vmexit->exitcode = VM_EXITCODE_PAGING;
vmexit->u.paging.gpa = info2;
vmexit->u.paging.fault_type = npf_fault_type(info1);
diff --git a/sys/amd64/vmm/intel/vmx.c b/sys/amd64/vmm/intel/vmx.c
index f590586..517a374 100644
--- a/sys/amd64/vmm/intel/vmx.c
+++ b/sys/amd64/vmm/intel/vmx.c
@@ -2425,7 +2425,7 @@ vmx_exit_process(struct vmx *vmx, int vcpu, struct vm_exit *vmexit)
* this must be an instruction that accesses MMIO space.
*/
gpa = vmcs_gpa();
- if (vm_mem_allocated(vmx->vm, gpa) ||
+ if (vm_mem_allocated(vmx->vm, vcpu, gpa) ||
apic_access_fault(vmx, vcpu, gpa)) {
vmexit->exitcode = VM_EXITCODE_PAGING;
vmexit->inst_length = 0;
diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c
index b789f77..692190a 100644
--- a/sys/amd64/vmm/io/ppt.c
+++ b/sys/amd64/vmm/io/ppt.c
@@ -76,11 +76,17 @@ struct pptintr_arg { /* pptintr(pptintr_arg) */
uint64_t msg_data;
};
+struct pptseg {
+ vm_paddr_t gpa;
+ size_t len;
+ int wired;
+};
+
struct pptdev {
device_t dev;
struct vm *vm; /* owner of this device */
TAILQ_ENTRY(pptdev) next;
- struct vm_memory_segment mmio[MAX_MMIOSEGS];
+ struct pptseg mmio[MAX_MMIOSEGS];
struct {
int num_msgs; /* guest state */
@@ -207,14 +213,14 @@ static void
ppt_unmap_mmio(struct vm *vm, struct pptdev *ppt)
{
int i;
- struct vm_memory_segment *seg;
+ struct pptseg *seg;
for (i = 0; i < MAX_MMIOSEGS; i++) {
seg = &ppt->mmio[i];
if (seg->len == 0)
continue;
(void)vm_unmap_mmio(vm, seg->gpa, seg->len);
- bzero(seg, sizeof(struct vm_memory_segment));
+ bzero(seg, sizeof(struct pptseg));
}
}
@@ -324,7 +330,7 @@ ppt_is_mmio(struct vm *vm, vm_paddr_t gpa)
{
int i;
struct pptdev *ppt;
- struct vm_memory_segment *seg;
+ struct pptseg *seg;
TAILQ_FOREACH(ppt, &pptdev_list, next) {
if (ppt->vm != vm)
@@ -410,7 +416,7 @@ ppt_map_mmio(struct vm *vm, int bus, int slot, int func,
vm_paddr_t gpa, size_t len, vm_paddr_t hpa)
{
int i, error;
- struct vm_memory_segment *seg;
+ struct pptseg *seg;
struct pptdev *ppt;
ppt = ppt_find(bus, slot, func);
diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c
index 2c37a1a..0987059 100644
--- a/sys/amd64/vmm/vmm.c
+++ b/sys/amd64/vmm/vmm.c
@@ -119,12 +119,21 @@ struct vcpu {
#define vcpu_assert_locked(v) mtx_assert(&((v)->mtx), MA_OWNED)
struct mem_seg {
+ size_t len;
+ bool sysmem;
+ struct vm_object *object;
+};
+#define VM_MAX_MEMSEGS 2
+
+struct mem_map {
vm_paddr_t gpa;
size_t len;
- boolean_t wired;
- vm_object_t object;
+ vm_ooffset_t segoff;
+ int segid;
+ int prot;
+ int flags;
};
-#define VM_MAX_MEMORY_SEGMENTS 2
+#define VM_MAX_MEMMAPS 4
/*
* Initialization:
@@ -150,8 +159,8 @@ struct vm {
void *rendezvous_arg; /* (x) rendezvous func/arg */
vm_rendezvous_func_t rendezvous_func;
struct mtx rendezvous_mtx; /* (o) rendezvous lock */
- int num_mem_segs; /* (o) guest memory segments */
- struct mem_seg mem_segs[VM_MAX_MEMORY_SEGMENTS];
+ struct mem_map mem_maps[VM_MAX_MEMMAPS]; /* (i) guest address space */
+ struct mem_seg mem_segs[VM_MAX_MEMSEGS]; /* (o) guest memory regions */
struct vmspace *vmspace; /* (o) guest's address space */
char name[VM_MAX_NAMELEN]; /* (o) virtual machine name */
struct vcpu vcpu[VM_MAXCPU]; /* (i) guest vcpus */
@@ -222,6 +231,8 @@ TUNABLE_INT("hw.vmm.force_iommu", &vmm_force_iommu);
SYSCTL_INT(_hw_vmm, OID_AUTO, force_iommu, CTLFLAG_RDTUN, &vmm_force_iommu, 0,
"Force use of I/O MMU even if no passthrough devices were found.");
+static void vm_free_memmap(struct vm *vm, int ident);
+static bool sysmem_mapping(struct vm *vm, struct mem_map *mm);
static void vcpu_notify_event_locked(struct vcpu *vcpu, bool lapic_intr);
#ifdef KTR
@@ -442,7 +453,6 @@ vm_create(const char *name, struct vm **retvm)
vm = malloc(sizeof(struct vm), M_VM, M_WAITOK | M_ZERO);
strcpy(vm->name, name);
- vm->num_mem_segs = 0;
vm->vmspace = vmspace;
mtx_init(&vm->rendezvous_mtx, "vm rendezvous lock", 0, MTX_DEF);
@@ -453,18 +463,9 @@ vm_create(const char *name, struct vm **retvm)
}
static void
-vm_free_mem_seg(struct vm *vm, struct mem_seg *seg)
-{
-
- if (seg->object != NULL)
- vmm_mem_free(vm->vmspace, seg->gpa, seg->len);
-
- bzero(seg, sizeof(*seg));
-}
-
-static void
vm_cleanup(struct vm *vm, bool destroy)
{
+ struct mem_map *mm;
int i;
ppt_unassign_all(vm);
@@ -487,11 +488,23 @@ vm_cleanup(struct vm *vm, bool destroy)
VMCLEANUP(vm->cookie);
- if (destroy) {
- for (i = 0; i < vm->num_mem_segs; i++)
- vm_free_mem_seg(vm, &vm->mem_segs[i]);
+ /*
+ * System memory is removed from the guest address space only when
+ * the VM is destroyed. This is because the mapping remains the same
+ * across VM reset.
+ *
+ * Device memory can be relocated by the guest (e.g. using PCI BARs)
+ * so those mappings are removed on a VM reset.
+ */
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (destroy || !sysmem_mapping(vm, mm))
+ vm_free_memmap(vm, i);
+ }
- vm->num_mem_segs = 0;
+ if (destroy) {
+ for (i = 0; i < VM_MAX_MEMSEGS; i++)
+ vm_free_memseg(vm, i);
VMSPACE_FREE(vm->vmspace);
vm->vmspace = NULL;
@@ -549,146 +562,243 @@ vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len)
return (0);
}
-boolean_t
-vm_mem_allocated(struct vm *vm, vm_paddr_t gpa)
+/*
+ * Return 'true' if 'gpa' is allocated in the guest address space.
+ *
+ * This function is called in the context of a running vcpu which acts as
+ * an implicit lock on 'vm->mem_maps[]'.
+ */
+bool
+vm_mem_allocated(struct vm *vm, int vcpuid, vm_paddr_t gpa)
{
+ struct mem_map *mm;
int i;
- vm_paddr_t gpabase, gpalimit;
- for (i = 0; i < vm->num_mem_segs; i++) {
- gpabase = vm->mem_segs[i].gpa;
- gpalimit = gpabase + vm->mem_segs[i].len;
- if (gpa >= gpabase && gpa < gpalimit)
- return (TRUE); /* 'gpa' is regular memory */
+#ifdef INVARIANTS
+ int hostcpu, state;
+ state = vcpu_get_state(vm, vcpuid, &hostcpu);
+ KASSERT(state == VCPU_RUNNING && hostcpu == curcpu,
+ ("%s: invalid vcpu state %d/%d", __func__, state, hostcpu));
+#endif
+
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (mm->len != 0 && gpa >= mm->gpa && gpa < mm->gpa + mm->len)
+ return (true); /* 'gpa' is sysmem or devmem */
}
if (ppt_is_mmio(vm, gpa))
- return (TRUE); /* 'gpa' is pci passthru mmio */
+ return (true); /* 'gpa' is pci passthru mmio */
- return (FALSE);
+ return (false);
}
int
-vm_malloc(struct vm *vm, vm_paddr_t gpa, size_t len)
+vm_alloc_memseg(struct vm *vm, int ident, size_t len, bool sysmem)
{
- int available, allocated;
struct mem_seg *seg;
- vm_object_t object;
- vm_paddr_t g;
+ vm_object_t obj;
- if ((gpa & PAGE_MASK) || (len & PAGE_MASK) || len == 0)
+ if (ident < 0 || ident >= VM_MAX_MEMSEGS)
return (EINVAL);
-
- available = allocated = 0;
- g = gpa;
- while (g < gpa + len) {
- if (vm_mem_allocated(vm, g))
- allocated++;
- else
- available++;
- g += PAGE_SIZE;
- }
-
- /*
- * If there are some allocated and some available pages in the address
- * range then it is an error.
- */
- if (allocated && available)
+ if (len == 0 || (len & PAGE_MASK))
return (EINVAL);
- /*
- * If the entire address range being requested has already been
- * allocated then there isn't anything more to do.
- */
- if (allocated && available == 0)
- return (0);
-
- if (vm->num_mem_segs >= VM_MAX_MEMORY_SEGMENTS)
- return (E2BIG);
-
- seg = &vm->mem_segs[vm->num_mem_segs];
+ seg = &vm->mem_segs[ident];
+ if (seg->object != NULL) {
+ if (seg->len == len && seg->sysmem == sysmem)
+ return (EEXIST);
+ else
+ return (EINVAL);
+ }
- if ((object = vmm_mem_alloc(vm->vmspace, gpa, len)) == NULL)
+ obj = vm_object_allocate(OBJT_DEFAULT, len >> PAGE_SHIFT);
+ if (obj == NULL)
return (ENOMEM);
- seg->gpa = gpa;
seg->len = len;
- seg->object = object;
- seg->wired = FALSE;
+ seg->object = obj;
+ seg->sysmem = sysmem;
+ return (0);
+}
- vm->num_mem_segs++;
+int
+vm_get_memseg(struct vm *vm, int ident, size_t *len, bool *sysmem,
+ vm_object_t *objptr)
+{
+ struct mem_seg *seg;
+
+ if (ident < 0 || ident >= VM_MAX_MEMSEGS)
+ return (EINVAL);
+ seg = &vm->mem_segs[ident];
+ if (len)
+ *len = seg->len;
+ if (sysmem)
+ *sysmem = seg->sysmem;
+ if (objptr)
+ *objptr = seg->object;
return (0);
}
-static vm_paddr_t
-vm_maxmem(struct vm *vm)
+void
+vm_free_memseg(struct vm *vm, int ident)
{
- int i;
- vm_paddr_t gpa, maxmem;
+ struct mem_seg *seg;
- maxmem = 0;
- for (i = 0; i < vm->num_mem_segs; i++) {
- gpa = vm->mem_segs[i].gpa + vm->mem_segs[i].len;
- if (gpa > maxmem)
- maxmem = gpa;
+ KASSERT(ident >= 0 && ident < VM_MAX_MEMSEGS,
+ ("%s: invalid memseg ident %d", __func__, ident));
+
+ seg = &vm->mem_segs[ident];
+ if (seg->object != NULL) {
+ vm_object_deallocate(seg->object);
+ bzero(seg, sizeof(struct mem_seg));
}
- return (maxmem);
}
-static void
-vm_gpa_unwire(struct vm *vm)
+int
+vm_mmap_memseg(struct vm *vm, vm_paddr_t gpa, int segid, vm_ooffset_t first,
+ size_t len, int prot, int flags)
{
- int i, rv;
struct mem_seg *seg;
+ struct mem_map *m, *map;
+ vm_ooffset_t last;
+ int i, error;
- for (i = 0; i < vm->num_mem_segs; i++) {
- seg = &vm->mem_segs[i];
- if (!seg->wired)
- continue;
+ if (prot == 0 || (prot & ~(VM_PROT_ALL)) != 0)
+ return (EINVAL);
+
+ if (flags & ~VM_MEMMAP_F_WIRED)
+ return (EINVAL);
+
+ if (segid < 0 || segid >= VM_MAX_MEMSEGS)
+ return (EINVAL);
- rv = vm_map_unwire(&vm->vmspace->vm_map,
- seg->gpa, seg->gpa + seg->len,
- VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
- KASSERT(rv == KERN_SUCCESS, ("vm(%s) memory segment "
- "%#lx/%ld could not be unwired: %d",
- vm_name(vm), seg->gpa, seg->len, rv));
+ seg = &vm->mem_segs[segid];
+ if (seg->object == NULL)
+ return (EINVAL);
+
+ last = first + len;
+ if (first < 0 || first >= last || last > seg->len)
+ return (EINVAL);
+
+ if ((gpa | first | last) & PAGE_MASK)
+ return (EINVAL);
+
+ map = NULL;
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ m = &vm->mem_maps[i];
+ if (m->len == 0) {
+ map = m;
+ break;
+ }
+ }
- seg->wired = FALSE;
+ if (map == NULL)
+ return (ENOSPC);
+
+ error = vm_map_find(&vm->vmspace->vm_map, seg->object, first, &gpa,
+ len, 0, VMFS_NO_SPACE, prot, prot, 0);
+ if (error != KERN_SUCCESS)
+ return (EFAULT);
+
+ vm_object_reference(seg->object);
+
+ if (flags & VM_MEMMAP_F_WIRED) {
+ error = vm_map_wire(&vm->vmspace->vm_map, gpa, gpa + len,
+ VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
+ if (error != KERN_SUCCESS) {
+ vm_map_remove(&vm->vmspace->vm_map, gpa, gpa + len);
+ return (EFAULT);
+ }
}
+
+ map->gpa = gpa;
+ map->len = len;
+ map->segoff = first;
+ map->segid = segid;
+ map->prot = prot;
+ map->flags = flags;
+ return (0);
}
-static int
-vm_gpa_wire(struct vm *vm)
+int
+vm_mmap_getnext(struct vm *vm, vm_paddr_t *gpa, int *segid,
+ vm_ooffset_t *segoff, size_t *len, int *prot, int *flags)
{
- int i, rv;
- struct mem_seg *seg;
+ struct mem_map *mm, *mmnext;
+ int i;
- for (i = 0; i < vm->num_mem_segs; i++) {
- seg = &vm->mem_segs[i];
- if (seg->wired)
+ mmnext = NULL;
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (mm->len == 0 || mm->gpa < *gpa)
continue;
+ if (mmnext == NULL || mm->gpa < mmnext->gpa)
+ mmnext = mm;
+ }
- /* XXX rlimits? */
- rv = vm_map_wire(&vm->vmspace->vm_map,
- seg->gpa, seg->gpa + seg->len,
- VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
- if (rv != KERN_SUCCESS)
- break;
-
- seg->wired = TRUE;
+ if (mmnext != NULL) {
+ *gpa = mmnext->gpa;
+ if (segid)
+ *segid = mmnext->segid;
+ if (segoff)
+ *segoff = mmnext->segoff;
+ if (len)
+ *len = mmnext->len;
+ if (prot)
+ *prot = mmnext->prot;
+ if (flags)
+ *flags = mmnext->flags;
+ return (0);
+ } else {
+ return (ENOENT);
}
+}
- if (i < vm->num_mem_segs) {
- /*
- * Undo the wiring before returning an error.
- */
- vm_gpa_unwire(vm);
- return (EAGAIN);
+static void
+vm_free_memmap(struct vm *vm, int ident)
+{
+ struct mem_map *mm;
+ int error;
+
+ mm = &vm->mem_maps[ident];
+ if (mm->len) {
+ error = vm_map_remove(&vm->vmspace->vm_map, mm->gpa,
+ mm->gpa + mm->len);
+ KASSERT(error == KERN_SUCCESS, ("%s: vm_map_remove error %d",
+ __func__, error));
+ bzero(mm, sizeof(struct mem_map));
}
+}
- return (0);
+static __inline bool
+sysmem_mapping(struct vm *vm, struct mem_map *mm)
+{
+
+ if (mm->len != 0 && vm->mem_segs[mm->segid].sysmem)
+ return (true);
+ else
+ return (false);
+}
+
+static vm_paddr_t
+sysmem_maxaddr(struct vm *vm)
+{
+ struct mem_map *mm;
+ vm_paddr_t maxaddr;
+ int i;
+
+ maxaddr = 0;
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (sysmem_mapping(vm, mm)) {
+ if (maxaddr < mm->gpa + mm->len)
+ maxaddr = mm->gpa + mm->len;
+ }
+ }
+ return (maxaddr);
}
static void
@@ -696,20 +806,36 @@ vm_iommu_modify(struct vm *vm, boolean_t map)
{
int i, sz;
vm_paddr_t gpa, hpa;
- struct mem_seg *seg;
+ struct mem_map *mm;
void *vp, *cookie, *host_domain;
sz = PAGE_SIZE;
host_domain = iommu_host_domain();
- for (i = 0; i < vm->num_mem_segs; i++) {
- seg = &vm->mem_segs[i];
- KASSERT(seg->wired, ("vm(%s) memory segment %#lx/%ld not wired",
- vm_name(vm), seg->gpa, seg->len));
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (!sysmem_mapping(vm, mm))
+ continue;
- gpa = seg->gpa;
- while (gpa < seg->gpa + seg->len) {
- vp = vm_gpa_hold(vm, gpa, PAGE_SIZE, VM_PROT_WRITE,
+ if (map) {
+ KASSERT((mm->flags & VM_MEMMAP_F_IOMMU) == 0,
+ ("iommu map found invalid memmap %#lx/%#lx/%#x",
+ mm->gpa, mm->len, mm->flags));
+ if ((mm->flags & VM_MEMMAP_F_WIRED) == 0)
+ continue;
+ mm->flags |= VM_MEMMAP_F_IOMMU;
+ } else {
+ if ((mm->flags & VM_MEMMAP_F_IOMMU) == 0)
+ continue;
+ mm->flags &= ~VM_MEMMAP_F_IOMMU;
+ KASSERT((mm->flags & VM_MEMMAP_F_WIRED) != 0,
+ ("iommu unmap found invalid memmap %#lx/%#lx/%#x",
+ mm->gpa, mm->len, mm->flags));
+ }
+
+ gpa = mm->gpa;
+ while (gpa < mm->gpa + mm->len) {
+ vp = vm_gpa_hold(vm, -1, gpa, PAGE_SIZE, VM_PROT_WRITE,
&cookie);
KASSERT(vp != NULL, ("vm(%s) could not map gpa %#lx",
vm_name(vm), gpa));
@@ -751,10 +877,9 @@ vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func)
if (error)
return (error);
- if (ppt_assigned_devices(vm) == 0) {
+ if (ppt_assigned_devices(vm) == 0)
vm_iommu_unmap(vm);
- vm_gpa_unwire(vm);
- }
+
return (0);
}
@@ -764,23 +889,12 @@ vm_assign_pptdev(struct vm *vm, int bus, int slot, int func)
int error;
vm_paddr_t maxaddr;
- /*
- * Virtual machines with pci passthru devices get special treatment:
- * - the guest physical memory is wired
- * - the iommu is programmed to do the 'gpa' to 'hpa' translation
- *
- * We need to do this before the first pci passthru device is attached.
- */
+ /* Set up the IOMMU to do the 'gpa' to 'hpa' translation */
if (ppt_assigned_devices(vm) == 0) {
KASSERT(vm->iommu == NULL,
("vm_assign_pptdev: iommu must be NULL"));
- maxaddr = vm_maxmem(vm);
+ maxaddr = sysmem_maxaddr(vm);
vm->iommu = iommu_create_domain(maxaddr);
-
- error = vm_gpa_wire(vm);
- if (error)
- return (error);
-
vm_iommu_map(vm);
}
@@ -789,18 +903,43 @@ vm_assign_pptdev(struct vm *vm, int bus, int slot, int func)
}
void *
-vm_gpa_hold(struct vm *vm, vm_paddr_t gpa, size_t len, int reqprot,
+vm_gpa_hold(struct vm *vm, int vcpuid, vm_paddr_t gpa, size_t len, int reqprot,
void **cookie)
{
- int count, pageoff;
+ int i, count, pageoff;
+ struct mem_map *mm;
vm_page_t m;
-
+#ifdef INVARIANTS
+ /*
+ * All vcpus are frozen by ioctls that modify the memory map
+ * (e.g. VM_MMAP_MEMSEG). Therefore 'vm->memmap[]' stability is
+ * guaranteed if at least one vcpu is in the VCPU_FROZEN state.
+ */
+ int state;
+ KASSERT(vcpuid >= -1 || vcpuid < VM_MAXCPU, ("%s: invalid vcpuid %d",
+ __func__, vcpuid));
+ for (i = 0; i < VM_MAXCPU; i++) {
+ if (vcpuid != -1 && vcpuid != i)
+ continue;
+ state = vcpu_get_state(vm, i, NULL);
+ KASSERT(state == VCPU_FROZEN, ("%s: invalid vcpu state %d",
+ __func__, state));
+ }
+#endif
pageoff = gpa & PAGE_MASK;
if (len > PAGE_SIZE - pageoff)
panic("vm_gpa_hold: invalid gpa/len: 0x%016lx/%lu", gpa, len);
- count = vm_fault_quick_hold_pages(&vm->vmspace->vm_map,
- trunc_page(gpa), PAGE_SIZE, reqprot, &m, 1);
+ count = 0;
+ for (i = 0; i < VM_MAX_MEMMAPS; i++) {
+ mm = &vm->mem_maps[i];
+ if (sysmem_mapping(vm, mm) && gpa >= mm->gpa &&
+ gpa < mm->gpa + mm->len) {
+ count = vm_fault_quick_hold_pages(&vm->vmspace->vm_map,
+ trunc_page(gpa), PAGE_SIZE, reqprot, &m, 1);
+ break;
+ }
+ }
if (count == 1) {
*cookie = m;
@@ -822,50 +961,6 @@ vm_gpa_release(void *cookie)
}
int
-vm_gpabase2memseg(struct vm *vm, vm_paddr_t gpabase,
- struct vm_memory_segment *seg)
-{
- int i;
-
- for (i = 0; i < vm->num_mem_segs; i++) {
- if (gpabase == vm->mem_segs[i].gpa) {
- seg->gpa = vm->mem_segs[i].gpa;
- seg->len = vm->mem_segs[i].len;
- seg->wired = vm->mem_segs[i].wired;
- return (0);
- }
- }
- return (-1);
-}
-
-int
-vm_get_memobj(struct vm *vm, vm_paddr_t gpa, size_t len,
- vm_offset_t *offset, struct vm_object **object)
-{
- int i;
- size_t seg_len;
- vm_paddr_t seg_gpa;
- vm_object_t seg_obj;
-
- for (i = 0; i < vm->num_mem_segs; i++) {
- if ((seg_obj = vm->mem_segs[i].object) == NULL)
- continue;
-
- seg_gpa = vm->mem_segs[i].gpa;
- seg_len = vm->mem_segs[i].len;
-
- if (gpa >= seg_gpa && gpa < seg_gpa + seg_len) {
- *offset = gpa - seg_gpa;
- *object = seg_obj;
- vm_object_reference(seg_obj);
- return (0);
- }
- }
-
- return (EINVAL);
-}
-
-int
vm_get_register(struct vm *vm, int vcpu, int reg, uint64_t *retval)
{
@@ -2423,8 +2518,8 @@ vm_copy_setup(struct vm *vm, int vcpuid, struct vm_guest_paging *paging,
}
for (idx = 0; idx < nused; idx++) {
- hva = vm_gpa_hold(vm, copyinfo[idx].gpa, copyinfo[idx].len,
- prot, &cookie);
+ hva = vm_gpa_hold(vm, vcpuid, copyinfo[idx].gpa,
+ copyinfo[idx].len, prot, &cookie);
if (hva == NULL)
break;
copyinfo[idx].hva = hva;
diff --git a/sys/amd64/vmm/vmm_dev.c b/sys/amd64/vmm/vmm_dev.c
index e3e140a..4ef1482 100644
--- a/sys/amd64/vmm/vmm_dev.c
+++ b/sys/amd64/vmm/vmm_dev.c
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm.h>
#include <vm/pmap.h>
#include <vm/vm_map.h>
+#include <vm/vm_object.h>
#include <machine/vmparam.h>
#include <machine/vmm.h>
@@ -60,10 +61,19 @@ __FBSDID("$FreeBSD$");
#include "io/vhpet.h"
#include "io/vrtc.h"
+struct devmem_softc {
+ int segid;
+ char *name;
+ struct cdev *cdev;
+ struct vmmdev_softc *sc;
+ SLIST_ENTRY(devmem_softc) link;
+};
+
struct vmmdev_softc {
struct vm *vm; /* vm instance cookie */
struct cdev *cdev;
SLIST_ENTRY(vmmdev_softc) link;
+ SLIST_HEAD(, devmem_softc) devmem;
int flags;
};
#define VSC_LINKED 0x01
@@ -76,6 +86,63 @@ static MALLOC_DEFINE(M_VMMDEV, "vmmdev", "vmmdev");
SYSCTL_DECL(_hw_vmm);
+static int devmem_create_cdev(const char *vmname, int id, char *devmem);
+static void devmem_destroy(void *arg);
+
+static int
+vcpu_lock_one(struct vmmdev_softc *sc, int vcpu)
+{
+ int error;
+
+ if (vcpu < 0 || vcpu >= VM_MAXCPU)
+ return (EINVAL);
+
+ error = vcpu_set_state(sc->vm, vcpu, VCPU_FROZEN, true);
+ return (error);
+}
+
+static void
+vcpu_unlock_one(struct vmmdev_softc *sc, int vcpu)
+{
+ enum vcpu_state state;
+
+ state = vcpu_get_state(sc->vm, vcpu, NULL);
+ if (state != VCPU_FROZEN) {
+ panic("vcpu %s(%d) has invalid state %d", vm_name(sc->vm),
+ vcpu, state);
+ }
+
+ vcpu_set_state(sc->vm, vcpu, VCPU_IDLE, false);
+}
+
+static int
+vcpu_lock_all(struct vmmdev_softc *sc)
+{
+ int error, vcpu;
+
+ for (vcpu = 0; vcpu < VM_MAXCPU; vcpu++) {
+ error = vcpu_lock_one(sc, vcpu);
+ if (error)
+ break;
+ }
+
+ if (error) {
+ while (--vcpu >= 0)
+ vcpu_unlock_one(sc, vcpu);
+ }
+
+ return (error);
+}
+
+static void
+vcpu_unlock_all(struct vmmdev_softc *sc)
+{
+ int vcpu;
+
+ for (vcpu = 0; vcpu < VM_MAXCPU; vcpu++)
+ vcpu_unlock_one(sc, vcpu);
+}
+
static struct vmmdev_softc *
vmmdev_lookup(const char *name)
{
@@ -108,12 +175,16 @@ vmmdev_rw(struct cdev *cdev, struct uio *uio, int flags)
void *hpa, *cookie;
struct vmmdev_softc *sc;
- static char zerobuf[PAGE_SIZE];
-
- error = 0;
sc = vmmdev_lookup2(cdev);
if (sc == NULL)
- error = ENXIO;
+ return (ENXIO);
+
+ /*
+ * Get a read lock on the guest memory map by freezing any vcpu.
+ */
+ error = vcpu_lock_one(sc, VM_MAXCPU - 1);
+ if (error)
+ return (error);
prot = (uio->uio_rw == UIO_WRITE ? VM_PROT_WRITE : VM_PROT_READ);
while (uio->uio_resid > 0 && error == 0) {
@@ -129,10 +200,11 @@ vmmdev_rw(struct cdev *cdev, struct uio *uio, int flags)
* Since this device does not support lseek(2), dd(1) will
* read(2) blocks of data to simulate the lseek(2).
*/
- hpa = vm_gpa_hold(sc->vm, gpa, c, prot, &cookie);
+ hpa = vm_gpa_hold(sc->vm, VM_MAXCPU - 1, gpa, c, prot, &cookie);
if (hpa == NULL) {
if (uio->uio_rw == UIO_READ)
- error = uiomove(zerobuf, c, uio);
+ error = uiomove(__DECONST(void *, zero_region),
+ c, uio);
else
error = EFAULT;
} else {
@@ -140,6 +212,70 @@ vmmdev_rw(struct cdev *cdev, struct uio *uio, int flags)
vm_gpa_release(cookie);
}
}
+ vcpu_unlock_one(sc, VM_MAXCPU - 1);
+ return (error);
+}
+
+CTASSERT(sizeof(((struct vm_memseg *)0)->name) >= SPECNAMELEN + 1);
+
+static int
+get_memseg(struct vmmdev_softc *sc, struct vm_memseg *mseg)
+{
+ struct devmem_softc *dsc;
+ int error;
+ bool sysmem;
+
+ error = vm_get_memseg(sc->vm, mseg->segid, &mseg->len, &sysmem, NULL);
+ if (error || mseg->len == 0)
+ return (error);
+
+ if (!sysmem) {
+ SLIST_FOREACH(dsc, &sc->devmem, link) {
+ if (dsc->segid == mseg->segid)
+ break;
+ }
+ KASSERT(dsc != NULL, ("%s: devmem segment %d not found",
+ __func__, mseg->segid));
+ error = copystr(dsc->name, mseg->name, SPECNAMELEN + 1, NULL);
+ } else {
+ bzero(mseg->name, sizeof(mseg->name));
+ }
+
+ return (error);
+}
+
+static int
+alloc_memseg(struct vmmdev_softc *sc, struct vm_memseg *mseg)
+{
+ char *name;
+ int error;
+ bool sysmem;
+
+ error = 0;
+ name = NULL;
+ sysmem = true;
+
+ if (VM_MEMSEG_NAME(mseg)) {
+ sysmem = false;
+ name = malloc(SPECNAMELEN + 1, M_VMMDEV, M_WAITOK);
+ error = copystr(VM_MEMSEG_NAME(mseg), name, SPECNAMELEN + 1, 0);
+ if (error)
+ goto done;
+ }
+
+ error = vm_alloc_memseg(sc->vm, mseg->segid, mseg->len, sysmem);
+ if (error)
+ goto done;
+
+ if (VM_MEMSEG_NAME(mseg)) {
+ error = devmem_create_cdev(vm_name(sc->vm), mseg->segid, name);
+ if (error)
+ vm_free_memseg(sc->vm, mseg->segid);
+ else
+ name = NULL; /* freed when 'cdev' is destroyed */
+ }
+done:
+ free(name, M_VMMDEV);
return (error);
}
@@ -150,7 +286,6 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
int error, vcpu, state_changed, size;
cpuset_t *cpuset;
struct vmmdev_softc *sc;
- struct vm_memory_segment *seg;
struct vm_register *vmreg;
struct vm_seg_desc *vmsegdesc;
struct vm_run *vmrun;
@@ -177,6 +312,7 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
struct vm_intinfo *vmii;
struct vm_rtc_time *rtctime;
struct vm_rtc_data *rtcdata;
+ struct vm_memmap *mm;
sc = vmmdev_lookup2(cdev);
if (sc == NULL)
@@ -211,43 +347,41 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
* Assumes that the first field of the ioctl data is the vcpu.
*/
vcpu = *(int *)data;
- if (vcpu < 0 || vcpu >= VM_MAXCPU) {
- error = EINVAL;
- goto done;
- }
-
- error = vcpu_set_state(sc->vm, vcpu, VCPU_FROZEN, true);
+ error = vcpu_lock_one(sc, vcpu);
if (error)
goto done;
-
state_changed = 1;
break;
case VM_MAP_PPTDEV_MMIO:
case VM_BIND_PPTDEV:
case VM_UNBIND_PPTDEV:
- case VM_MAP_MEMORY:
+ case VM_ALLOC_MEMSEG:
+ case VM_MMAP_MEMSEG:
case VM_REINIT:
/*
* ioctls that operate on the entire virtual machine must
* prevent all vcpus from running.
*/
- error = 0;
- for (vcpu = 0; vcpu < VM_MAXCPU; vcpu++) {
- error = vcpu_set_state(sc->vm, vcpu, VCPU_FROZEN, true);
- if (error)
- break;
- }
-
- if (error) {
- while (--vcpu >= 0)
- vcpu_set_state(sc->vm, vcpu, VCPU_IDLE, false);
+ error = vcpu_lock_all(sc);
+ if (error)
goto done;
- }
-
state_changed = 2;
break;
+ case VM_GET_MEMSEG:
+ case VM_MMAP_GETNEXT:
+ /*
+ * Lock a vcpu to make sure that the memory map cannot be
+ * modified while it is being inspected.
+ */
+ vcpu = VM_MAXCPU - 1;
+ error = vcpu_lock_one(sc, vcpu);
+ if (error)
+ goto done;
+ state_changed = 1;
+ break;
+
default:
break;
}
@@ -372,15 +506,21 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
error = vatpic_set_irq_trigger(sc->vm,
isa_irq_trigger->atpic_irq, isa_irq_trigger->trigger);
break;
- case VM_MAP_MEMORY:
- seg = (struct vm_memory_segment *)data;
- error = vm_malloc(sc->vm, seg->gpa, seg->len);
+ case VM_MMAP_GETNEXT:
+ mm = (struct vm_memmap *)data;
+ error = vm_mmap_getnext(sc->vm, &mm->gpa, &mm->segid,
+ &mm->segoff, &mm->len, &mm->prot, &mm->flags);
break;
- case VM_GET_MEMORY_SEG:
- seg = (struct vm_memory_segment *)data;
- seg->len = 0;
- (void)vm_gpabase2memseg(sc->vm, seg->gpa, seg);
- error = 0;
+ case VM_MMAP_MEMSEG:
+ mm = (struct vm_memmap *)data;
+ error = vm_mmap_memseg(sc->vm, mm->gpa, mm->segid, mm->segoff,
+ mm->len, mm->prot, mm->flags);
+ break;
+ case VM_ALLOC_MEMSEG:
+ error = alloc_memseg(sc, (struct vm_memseg *)data);
+ break;
+ case VM_GET_MEMSEG:
+ error = get_memseg(sc, (struct vm_memseg *)data);
break;
case VM_GET_REGISTER:
vmreg = (struct vm_register *)data;
@@ -505,12 +645,10 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
break;
}
- if (state_changed == 1) {
- vcpu_set_state(sc->vm, vcpu, VCPU_IDLE, false);
- } else if (state_changed == 2) {
- for (vcpu = 0; vcpu < VM_MAXCPU; vcpu++)
- vcpu_set_state(sc->vm, vcpu, VCPU_IDLE, false);
- }
+ if (state_changed == 1)
+ vcpu_unlock_one(sc, vcpu);
+ else if (state_changed == 2)
+ vcpu_unlock_all(sc);
done:
/* Make sure that no handler returns a bogus value like ERESTART */
@@ -519,26 +657,79 @@ done:
}
static int
-vmmdev_mmap_single(struct cdev *cdev, vm_ooffset_t *offset,
- vm_size_t size, struct vm_object **object, int nprot)
+vmmdev_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_size_t mapsize,
+ struct vm_object **objp, int nprot)
{
- int error;
struct vmmdev_softc *sc;
+ vm_paddr_t gpa;
+ size_t len;
+ vm_ooffset_t segoff, first, last;
+ int error, found, segid;
+ bool sysmem;
+
+ first = *offset;
+ last = first + mapsize;
+ if ((nprot & PROT_EXEC) || first < 0 || first >= last)
+ return (EINVAL);
sc = vmmdev_lookup2(cdev);
- if (sc != NULL && (nprot & PROT_EXEC) == 0)
- error = vm_get_memobj(sc->vm, *offset, size, offset, object);
- else
- error = EINVAL;
+ if (sc == NULL) {
+ /* virtual machine is in the process of being created */
+ return (EINVAL);
+ }
+ /*
+ * Get a read lock on the guest memory map by freezing any vcpu.
+ */
+ error = vcpu_lock_one(sc, VM_MAXCPU - 1);
+ if (error)
+ return (error);
+
+ gpa = 0;
+ found = 0;
+ while (!found) {
+ error = vm_mmap_getnext(sc->vm, &gpa, &segid, &segoff, &len,
+ NULL, NULL);
+ if (error)
+ break;
+
+ if (first >= gpa && last <= gpa + len)
+ found = 1;
+ else
+ gpa += len;
+ }
+
+ if (found) {
+ error = vm_get_memseg(sc->vm, segid, &len, &sysmem, objp);
+ KASSERT(error == 0 && *objp != NULL,
+ ("%s: invalid memory segment %d", __func__, segid));
+ if (sysmem) {
+ vm_object_reference(*objp);
+ *offset = segoff + (first - gpa);
+ } else {
+ error = EINVAL;
+ }
+ }
+ vcpu_unlock_one(sc, VM_MAXCPU - 1);
return (error);
}
static void
vmmdev_destroy(void *arg)
{
-
struct vmmdev_softc *sc = arg;
+ struct devmem_softc *dsc;
+ int error;
+
+ error = vcpu_lock_all(sc);
+ KASSERT(error == 0, ("%s: error %d freezing vcpus", __func__, error));
+
+ while ((dsc = SLIST_FIRST(&sc->devmem)) != NULL) {
+ KASSERT(dsc->cdev == NULL, ("%s: devmem not free", __func__));
+ SLIST_REMOVE_HEAD(&sc->devmem, link);
+ free(dsc->name, M_VMMDEV);
+ free(dsc, M_VMMDEV);
+ }
if (sc->cdev != NULL)
destroy_dev(sc->cdev);
@@ -560,6 +751,7 @@ sysctl_vmm_destroy(SYSCTL_HANDLER_ARGS)
{
int error;
char buf[VM_MAX_NAMELEN];
+ struct devmem_softc *dsc;
struct vmmdev_softc *sc;
struct cdev *cdev;
@@ -578,22 +770,30 @@ sysctl_vmm_destroy(SYSCTL_HANDLER_ARGS)
/*
* The 'cdev' will be destroyed asynchronously when 'si_threadcount'
* goes down to 0 so we should not do it again in the callback.
+ *
+ * Setting 'sc->cdev' to NULL is also used to indicate that the VM
+ * is scheduled for destruction.
*/
cdev = sc->cdev;
sc->cdev = NULL;
mtx_unlock(&vmmdev_mtx);
/*
- * Schedule the 'cdev' to be destroyed:
+ * Schedule all cdevs to be destroyed:
*
- * - any new operations on this 'cdev' will return an error (ENXIO).
+ * - any new operations on the 'cdev' will return an error (ENXIO).
*
* - when the 'si_threadcount' dwindles down to zero the 'cdev' will
* be destroyed and the callback will be invoked in a taskqueue
* context.
+ *
+ * - the 'devmem' cdevs are destroyed before the virtual machine 'cdev'
*/
+ SLIST_FOREACH(dsc, &sc->devmem, link) {
+ KASSERT(dsc->cdev != NULL, ("devmem cdev already destroyed"));
+ destroy_dev_sched_cb(dsc->cdev, devmem_destroy, dsc);
+ }
destroy_dev_sched_cb(cdev, vmmdev_destroy, sc);
-
return (0);
}
SYSCTL_PROC(_hw_vmm, OID_AUTO, destroy, CTLTYPE_STRING | CTLFLAG_RW,
@@ -634,6 +834,7 @@ sysctl_vmm_create(SYSCTL_HANDLER_ARGS)
sc = malloc(sizeof(struct vmmdev_softc), M_VMMDEV, M_WAITOK | M_ZERO);
sc->vm = vm;
+ SLIST_INIT(&sc->devmem);
/*
* Lookup the name again just in case somebody sneaked in when we
@@ -687,3 +888,96 @@ vmmdev_cleanup(void)
return (error);
}
+
+static int
+devmem_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_size_t len,
+ struct vm_object **objp, int nprot)
+{
+ struct devmem_softc *dsc;
+ vm_ooffset_t first, last;
+ size_t seglen;
+ int error;
+ bool sysmem;
+
+ dsc = cdev->si_drv1;
+ if (dsc == NULL) {
+ /* 'cdev' has been created but is not ready for use */
+ return (ENXIO);
+ }
+
+ first = *offset;
+ last = *offset + len;
+ if ((nprot & PROT_EXEC) || first < 0 || first >= last)
+ return (EINVAL);
+
+ error = vcpu_lock_one(dsc->sc, VM_MAXCPU - 1);
+ if (error)
+ return (error);
+
+ error = vm_get_memseg(dsc->sc->vm, dsc->segid, &seglen, &sysmem, objp);
+ KASSERT(error == 0 && !sysmem && *objp != NULL,
+ ("%s: invalid devmem segment %d", __func__, dsc->segid));
+
+ vcpu_unlock_one(dsc->sc, VM_MAXCPU - 1);
+
+ if (seglen >= last) {
+ vm_object_reference(*objp);
+ return (0);
+ } else {
+ return (EINVAL);
+ }
+}
+
+static struct cdevsw devmemsw = {
+ .d_name = "devmem",
+ .d_version = D_VERSION,
+ .d_mmap_single = devmem_mmap_single,
+};
+
+static int
+devmem_create_cdev(const char *vmname, int segid, char *devname)
+{
+ struct devmem_softc *dsc;
+ struct vmmdev_softc *sc;
+ struct cdev *cdev;
+ int error;
+
+ error = make_dev_p(MAKEDEV_CHECKNAME, &cdev, &devmemsw, NULL,
+ UID_ROOT, GID_WHEEL, 0600, "vmm/%s.%s", vmname, devname);
+ if (error)
+ return (error);
+
+ dsc = malloc(sizeof(struct devmem_softc), M_VMMDEV, M_WAITOK | M_ZERO);
+
+ mtx_lock(&vmmdev_mtx);
+ sc = vmmdev_lookup(vmname);
+ KASSERT(sc != NULL, ("%s: vm %s softc not found", __func__, vmname));
+ if (sc->cdev == NULL) {
+ /* virtual machine is being created or destroyed */
+ mtx_unlock(&vmmdev_mtx);
+ free(dsc, M_VMMDEV);
+ destroy_dev_sched_cb(cdev, NULL, 0);
+ return (ENODEV);
+ }
+
+ dsc->segid = segid;
+ dsc->name = devname;
+ dsc->cdev = cdev;
+ dsc->sc = sc;
+ SLIST_INSERT_HEAD(&sc->devmem, dsc, link);
+ mtx_unlock(&vmmdev_mtx);
+
+ /* The 'cdev' is ready for use after 'si_drv1' is initialized */
+ cdev->si_drv1 = dsc;
+ return (0);
+}
+
+static void
+devmem_destroy(void *arg)
+{
+ struct devmem_softc *dsc = arg;
+
+ KASSERT(dsc->cdev, ("%s: devmem cdev already destroyed", __func__));
+ dsc->cdev = NULL;
+ dsc->sc = NULL;
+}
diff --git a/sys/amd64/vmm/vmm_instruction_emul.c b/sys/amd64/vmm/vmm_instruction_emul.c
index 758b7e8..6dadcc1 100644
--- a/sys/amd64/vmm/vmm_instruction_emul.c
+++ b/sys/amd64/vmm/vmm_instruction_emul.c
@@ -1677,12 +1677,12 @@ ptp_release(void **cookie)
}
static void *
-ptp_hold(struct vm *vm, vm_paddr_t ptpphys, size_t len, void **cookie)
+ptp_hold(struct vm *vm, int vcpu, vm_paddr_t ptpphys, size_t len, void **cookie)
{
void *ptr;
ptp_release(cookie);
- ptr = vm_gpa_hold(vm, ptpphys, len, VM_PROT_RW, cookie);
+ ptr = vm_gpa_hold(vm, vcpu, ptpphys, len, VM_PROT_RW, cookie);
return (ptr);
}
@@ -1729,7 +1729,8 @@ restart:
/* Zero out the lower 12 bits. */
ptpphys &= ~0xfff;
- ptpbase32 = ptp_hold(vm, ptpphys, PAGE_SIZE, &cookie);
+ ptpbase32 = ptp_hold(vm, vcpuid, ptpphys, PAGE_SIZE,
+ &cookie);
if (ptpbase32 == NULL)
goto error;
@@ -1788,7 +1789,8 @@ restart:
/* Zero out the lower 5 bits and the upper 32 bits */
ptpphys &= 0xffffffe0UL;
- ptpbase = ptp_hold(vm, ptpphys, sizeof(*ptpbase) * 4, &cookie);
+ ptpbase = ptp_hold(vm, vcpuid, ptpphys, sizeof(*ptpbase) * 4,
+ &cookie);
if (ptpbase == NULL)
goto error;
@@ -1811,7 +1813,7 @@ restart:
/* Zero out the lower 12 bits and the upper 12 bits */
ptpphys >>= 12; ptpphys <<= 24; ptpphys >>= 12;
- ptpbase = ptp_hold(vm, ptpphys, PAGE_SIZE, &cookie);
+ ptpbase = ptp_hold(vm, vcpuid, ptpphys, PAGE_SIZE, &cookie);
if (ptpbase == NULL)
goto error;
diff --git a/sys/amd64/vmm/vmm_mem.c b/sys/amd64/vmm/vmm_mem.c
index 1019f2b..c9be6c9 100644
--- a/sys/amd64/vmm/vmm_mem.c
+++ b/sys/amd64/vmm/vmm_mem.c
@@ -114,38 +114,6 @@ vmm_mmio_free(struct vmspace *vmspace, vm_paddr_t gpa, size_t len)
vm_map_remove(&vmspace->vm_map, gpa, gpa + len);
}
-vm_object_t
-vmm_mem_alloc(struct vmspace *vmspace, vm_paddr_t gpa, size_t len)
-{
- int error;
- vm_object_t obj;
-
- if (gpa & PAGE_MASK)
- panic("vmm_mem_alloc: invalid gpa %#lx", gpa);
-
- if (len == 0 || (len & PAGE_MASK) != 0)
- panic("vmm_mem_alloc: invalid allocation size %lu", len);
-
- obj = vm_object_allocate(OBJT_DEFAULT, len >> PAGE_SHIFT);
- if (obj != NULL) {
- error = vm_map_find(&vmspace->vm_map, obj, 0, &gpa, len, 0,
- VMFS_NO_SPACE, VM_PROT_ALL, VM_PROT_ALL, 0);
- if (error != KERN_SUCCESS) {
- vm_object_deallocate(obj);
- obj = NULL;
- }
- }
-
- return (obj);
-}
-
-void
-vmm_mem_free(struct vmspace *vmspace, vm_paddr_t gpa, size_t len)
-{
-
- vm_map_remove(&vmspace->vm_map, gpa, gpa + len);
-}
-
vm_paddr_t
vmm_mem_maxaddr(void)
{
diff --git a/sys/amd64/vmm/vmm_mem.h b/sys/amd64/vmm/vmm_mem.h
index a375070..7773faa 100644
--- a/sys/amd64/vmm/vmm_mem.h
+++ b/sys/amd64/vmm/vmm_mem.h
@@ -33,10 +33,8 @@ struct vmspace;
struct vm_object;
int vmm_mem_init(void);
-struct vm_object *vmm_mem_alloc(struct vmspace *, vm_paddr_t gpa, size_t size);
struct vm_object *vmm_mmio_alloc(struct vmspace *, vm_paddr_t gpa, size_t len,
vm_paddr_t hpa);
-void vmm_mem_free(struct vmspace *, vm_paddr_t gpa, size_t size);
void vmm_mmio_free(struct vmspace *, vm_paddr_t gpa, size_t size);
vm_paddr_t vmm_mem_maxaddr(void);
diff --git a/sys/arm/arm/bcopyinout.S b/sys/arm/arm/bcopyinout.S
index 8885717..c030e24 100644
--- a/sys/arm/arm/bcopyinout.S
+++ b/sys/arm/arm/bcopyinout.S
@@ -38,6 +38,7 @@
#include "assym.s"
+#include <machine/acle-compat.h>
#include <machine/asm.h>
#include <sys/errno.h>
@@ -54,7 +55,7 @@ __FBSDID("$FreeBSD$");
.text
.align 2
-#ifdef _ARM_ARCH_6
+#if __ARM_ARCH >= 6
#define GET_PCB(tmp) \
mrc p15, 0, tmp, c13, c0, 4; \
add tmp, tmp, #(TD_PCB)
diff --git a/sys/arm/arm/bcopyinout_xscale.S b/sys/arm/arm/bcopyinout_xscale.S
index ad61200..7a5abb5 100644
--- a/sys/arm/arm/bcopyinout_xscale.S
+++ b/sys/arm/arm/bcopyinout_xscale.S
@@ -38,11 +38,13 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+#include <machine/acle-compat.h>
+
.syntax unified
.text
.align 2
-#ifdef _ARM_ARCH_6
+#if __ARM_ARCH >= 6
#define GET_PCB(tmp) \
mrc p15, 0, tmp, c13, c0, 4; \
add tmp, tmp, #(TD_PCB)
diff --git a/sys/arm/arm/copystr.S b/sys/arm/arm/copystr.S
index d41525a..48c296b 100644
--- a/sys/arm/arm/copystr.S
+++ b/sys/arm/arm/copystr.S
@@ -39,6 +39,7 @@
*/
#include "assym.s"
+#include <machine/acle-compat.h>
#include <machine/asm.h>
#include <machine/armreg.h>
__FBSDID("$FreeBSD$");
@@ -48,7 +49,7 @@ __FBSDID("$FreeBSD$");
.text
.align 2
-#ifdef _ARM_ARCH_6
+#if __ARM_ARCH >= 6
#define GET_PCB(tmp) \
mrc p15, 0, tmp, c13, c0, 4; \
add tmp, tmp, #(TD_PCB)
diff --git a/sys/arm/arm/generic_timer.c b/sys/arm/arm/generic_timer.c
index 56db9ca..636ba75 100644
--- a/sys/arm/arm/generic_timer.c
+++ b/sys/arm/arm/generic_timer.c
@@ -34,6 +34,9 @@
* Cortex-A7, Cortex-A15, ARMv8 and later Generic Timer
*/
+#include "opt_acpi.h"
+#include "opt_platform.h"
+
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -51,12 +54,17 @@ __FBSDID("$FreeBSD$");
#include <machine/cpu.h>
#include <machine/intr.h>
+#ifdef FDT
#include <dev/fdt/fdt_common.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
+#endif
-#include <machine/bus.h>
+#ifdef DEV_ACPI
+#include <contrib/dev/acpica/include/acpi.h>
+#include <dev/acpica/acpivar.h>
+#endif
#define GT_CTRL_ENABLE (1 << 0)
#define GT_CTRL_INT_MASK (1 << 1)
@@ -247,8 +255,9 @@ arm_tmr_intr(void *arg)
return (FILTER_HANDLED);
}
+#ifdef FDT
static int
-arm_tmr_probe(device_t dev)
+arm_tmr_fdt_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
@@ -264,14 +273,62 @@ arm_tmr_probe(device_t dev)
return (ENXIO);
}
+#endif
+
+#ifdef DEV_ACPI
+static void
+arm_tmr_acpi_identify(driver_t *driver, device_t parent)
+{
+ ACPI_TABLE_GTDT *gtdt;
+ vm_paddr_t physaddr;
+ device_t dev;
+
+ physaddr = acpi_find_table(ACPI_SIG_GTDT);
+ if (physaddr == 0)
+ return;
+
+ gtdt = acpi_map_table(physaddr, ACPI_SIG_GTDT);
+ if (gtdt == NULL) {
+ device_printf(parent, "gic: Unable to map the GTDT\n");
+ return;
+ }
+
+ dev = BUS_ADD_CHILD(parent, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE,
+ "generic_timer", -1);
+ if (dev == NULL) {
+ device_printf(parent, "add gic child failed\n");
+ goto out;
+ }
+
+ BUS_SET_RESOURCE(parent, dev, SYS_RES_IRQ, 0,
+ gtdt->SecureEl1Interrupt, 1);
+ BUS_SET_RESOURCE(parent, dev, SYS_RES_IRQ, 1,
+ gtdt->NonSecureEl1Interrupt, 1);
+ BUS_SET_RESOURCE(parent, dev, SYS_RES_IRQ, 2,
+ gtdt->VirtualTimerInterrupt, 1);
+
+out:
+ acpi_unmap_table(gtdt);
+}
+
+static int
+arm_tmr_acpi_probe(device_t dev)
+{
+
+ device_set_desc(dev, "ARM Generic Timer");
+ return (BUS_PROBE_NOWILDCARD);
+}
+#endif
static int
arm_tmr_attach(device_t dev)
{
struct arm_tmr_softc *sc;
+#ifdef FDT
phandle_t node;
pcell_t clock;
+#endif
int error;
int i;
@@ -279,12 +336,17 @@ arm_tmr_attach(device_t dev)
if (arm_tmr_sc)
return (ENXIO);
+#ifdef FDT
/* Get the base clock frequency */
node = ofw_bus_get_node(dev);
- error = OF_getprop(node, "clock-frequency", &clock, sizeof(clock));
- if (error > 0) {
- sc->clkfreq = fdt32_to_cpu(clock);
+ if (node > 0) {
+ error = OF_getprop(node, "clock-frequency", &clock,
+ sizeof(clock));
+ if (error > 0) {
+ sc->clkfreq = fdt32_to_cpu(clock);
+ }
}
+#endif
if (sc->clkfreq == 0) {
/* Try to get clock frequency from timer */
@@ -339,24 +401,46 @@ arm_tmr_attach(device_t dev)
return (0);
}
-static device_method_t arm_tmr_methods[] = {
- DEVMETHOD(device_probe, arm_tmr_probe),
+#ifdef FDT
+static device_method_t arm_tmr_fdt_methods[] = {
+ DEVMETHOD(device_probe, arm_tmr_fdt_probe),
DEVMETHOD(device_attach, arm_tmr_attach),
{ 0, 0 }
};
-static driver_t arm_tmr_driver = {
+static driver_t arm_tmr_fdt_driver = {
"generic_timer",
- arm_tmr_methods,
+ arm_tmr_fdt_methods,
sizeof(struct arm_tmr_softc),
};
-static devclass_t arm_tmr_devclass;
+static devclass_t arm_tmr_fdt_devclass;
-EARLY_DRIVER_MODULE(timer, simplebus, arm_tmr_driver, arm_tmr_devclass, 0, 0,
- BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);
-EARLY_DRIVER_MODULE(timer, ofwbus, arm_tmr_driver, arm_tmr_devclass, 0, 0,
- BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);
+EARLY_DRIVER_MODULE(timer, simplebus, arm_tmr_fdt_driver, arm_tmr_fdt_devclass,
+ 0, 0, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);
+EARLY_DRIVER_MODULE(timer, ofwbus, arm_tmr_fdt_driver, arm_tmr_fdt_devclass,
+ 0, 0, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);
+#endif
+
+#ifdef DEV_ACPI
+static device_method_t arm_tmr_acpi_methods[] = {
+ DEVMETHOD(device_identify, arm_tmr_acpi_identify),
+ DEVMETHOD(device_probe, arm_tmr_acpi_probe),
+ DEVMETHOD(device_attach, arm_tmr_attach),
+ { 0, 0 }
+};
+
+static driver_t arm_tmr_acpi_driver = {
+ "generic_timer",
+ arm_tmr_acpi_methods,
+ sizeof(struct arm_tmr_softc),
+};
+
+static devclass_t arm_tmr_acpi_devclass;
+
+EARLY_DRIVER_MODULE(timer, acpi, arm_tmr_acpi_driver, arm_tmr_acpi_devclass,
+ 0, 0, BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE);
+#endif
void
DELAY(int usec)
diff --git a/sys/arm/arm/locore-v4.S b/sys/arm/arm/locore-v4.S
index d798e97..cc4f636 100644
--- a/sys/arm/arm/locore-v4.S
+++ b/sys/arm/arm/locore-v4.S
@@ -49,8 +49,7 @@ __FBSDID("$FreeBSD$");
*
* TODO: Fix the ARMv4/v5 case.
*/
-#if (defined(FLASHADDR) || defined(LOADERRAMADDR) || !defined(_ARM_ARCH_6)) && \
- !defined(PHYSADDR)
+#ifndef PHYSADDR
#error PHYSADDR must be defined for this configuration
#endif
diff --git a/sys/arm/arm/locore-v6.S b/sys/arm/arm/locore-v6.S
index 7d5ba97..cddcdab 100644
--- a/sys/arm/arm/locore-v6.S
+++ b/sys/arm/arm/locore-v6.S
@@ -240,7 +240,7 @@ ASENTRY_NP(init_mmu)
* - All is set to uncacheable memory
*/
ldr r0, =0xAAAAA
- mrc CP15_PRRR(r0)
+ mcr CP15_PRRR(r0)
mov r0, #0
mcr CP15_NMRR(r0)
#endif
diff --git a/sys/arm/arm/machdep.c b/sys/arm/arm/machdep.c
index 55b4cb9..99d4572 100644
--- a/sys/arm/arm/machdep.c
+++ b/sys/arm/arm/machdep.c
@@ -911,7 +911,7 @@ fake_preload_metadata(struct arm_boot_params *abp __unused)
void
pcpu0_init(void)
{
-#if ARM_ARCH_6 || ARM_ARCH_7A || defined(CPU_MV_PJ4B)
+#if __ARM_ARCH >= 6
set_curthread(&thread0);
#endif
pcpu_init(pcpup, 0, sizeof(struct pcpu));
diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c
index 833b42f..b15062c 100644
--- a/sys/arm/arm/trap-v6.c
+++ b/sys/arm/arm/trap-v6.c
@@ -395,8 +395,8 @@ abort_handler(struct trapframe *tf, int prefetch)
p = td->td_proc;
if (usermode) {
td->td_pticks = 0;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
}
/* Invoke the appropriate handler, if necessary. */
diff --git a/sys/arm/arm/trap.c b/sys/arm/arm/trap.c
index 26e7bf6..52a5baa 100644
--- a/sys/arm/arm/trap.c
+++ b/sys/arm/arm/trap.c
@@ -78,10 +78,6 @@
* Created : 28/11/94
*/
-#ifdef KDTRACE_HOOKS
-#include <sys/dtrace_bsd.h>
-#endif
-
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@@ -98,6 +94,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_map.h>
#include <vm/vm_extern.h>
+#include <machine/acle-compat.h>
#include <machine/cpu.h>
#include <machine/frame.h>
#include <machine/machdep.h>
@@ -108,6 +105,10 @@ __FBSDID("$FreeBSD$");
#include <sys/kdb.h>
#endif
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+#endif
+
extern char fusubailout[];
#ifdef DEBUG
@@ -214,8 +215,8 @@ abort_handler(struct trapframe *tf, int type)
if (user) {
td->td_pticks = 0;
td->td_frame = tf;
- if (td->td_ucred != td->td_proc->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != td->td_proc->p_cowgen)
+ thread_cow_update(td);
}
/* Grab the current pcb */
@@ -325,7 +326,7 @@ abort_handler(struct trapframe *tf, int type)
* location, so we can deal with those quickly. Otherwise we need to
* disassemble the faulting instruction to determine if it was a write.
*/
-#if ARM_ARCH_6 || ARM_ARCH_7A
+#if __ARM_ARCH >= 6
ftype = (fsr & FAULT_WNR) ? VM_PROT_READ | VM_PROT_WRITE : VM_PROT_READ;
#else
if (IS_PERMISSION_FAULT(fsr))
@@ -644,8 +645,8 @@ prefetch_abort_handler(struct trapframe *tf)
if (TRAP_USERMODE(tf)) {
td->td_frame = tf;
- if (td->td_ucred != td->td_proc->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != td->td_proc->p_cowgen)
+ thread_cow_update(td);
}
fault_pc = tf->tf_pc;
if (td->td_md.md_spinlock_count == 0) {
diff --git a/sys/arm/conf/BEAGLEBONE b/sys/arm/conf/BEAGLEBONE
index 38c6b4a..8b06d20 100644
--- a/sys/arm/conf/BEAGLEBONE
+++ b/sys/arm/conf/BEAGLEBONE
@@ -138,3 +138,11 @@ device fdt_pinctrl
# Flattened Device Tree
options FDT # Configure using FDT/DTB data
+
+# Comment following lines for boot console on serial port
+device vt
+device videomode
+device hdmi
+device ums
+device ukbd
+device kbdmux
diff --git a/sys/arm/conf/NOTES b/sys/arm/conf/NOTES
index 85a4c16..885bfd1 100644
--- a/sys/arm/conf/NOTES
+++ b/sys/arm/conf/NOTES
@@ -86,3 +86,26 @@ nodevice cxgbe
nodevice pcii
nodevice snd_cmi
nodevice tnt4882
+
+#
+# Enable the kernel DTrace hooks which are required to load the DTrace
+# kernel modules.
+#
+options KDTRACE_HOOKS
+
+# DTrace core
+# NOTE: introduces CDDL-licensed components into the kernel
+#device dtrace
+
+# DTrace modules
+#device dtrace_lockstat
+#device dtrace_profile
+#device dtrace_sdt
+#device dtrace_fbt
+#device dtrace_systrace
+#device dtrace_prototype
+#device dtnfscl
+#device dtmalloc
+
+# Alternatively include all the DTrace modules
+#device dtraceall
diff --git a/sys/arm/include/pcpu.h b/sys/arm/include/pcpu.h
index 4ce8b3a..73400c5 100644
--- a/sys/arm/include/pcpu.h
+++ b/sys/arm/include/pcpu.h
@@ -32,6 +32,7 @@
#ifdef _KERNEL
+#include <machine/acle-compat.h>
#include <machine/cpuconf.h>
#define ALT_STACK_SIZE 128
@@ -40,7 +41,7 @@ struct vmspace;
#endif /* _KERNEL */
-#ifdef VFP
+#if __ARM_ARCH >= 6
#define PCPU_MD_FIELDS \
unsigned int pc_vfpsid; \
unsigned int pc_vfpmvfr0; \
@@ -58,9 +59,8 @@ struct pcb;
struct pcpu;
extern struct pcpu *pcpup;
-#if ARM_ARCH_6 || ARM_ARCH_7A
-/* or ARM_TP_ADDRESS mark REMOVE ME NOTE */
+#if __ARM_ARCH >= 6
#define CPU_MASK (0xf)
#ifndef SMP
diff --git a/sys/arm/ti/am335x/am335x_lcd.c b/sys/arm/ti/am335x/am335x_lcd.c
index 501042a..1f38664 100644
--- a/sys/arm/ti/am335x/am335x_lcd.c
+++ b/sys/arm/ti/am335x/am335x_lcd.c
@@ -52,6 +52,10 @@ __FBSDID("$FreeBSD$");
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
+#include <arm/ti/am335x/hdmi.h>
+#include <dev/videomode/videomode.h>
+#include <dev/videomode/edidvar.h>
+
#include <dev/fb/fbreg.h>
#ifdef DEV_SC
#include <dev/syscons/syscons.h>
@@ -66,6 +70,7 @@ __FBSDID("$FreeBSD$");
#include "am335x_pwm.h"
#include "fb_if.h"
+#include "hdmi_if.h"
#define LCD_PID 0x00
#define LCD_CTRL 0x04
@@ -176,11 +181,20 @@ __FBSDID("$FreeBSD$");
#define LCD_WRITE4(_sc, reg, value) \
bus_write_4((_sc)->sc_mem_res, reg, value);
-
/* Backlight is controlled by eCAS interface on PWM unit 0 */
#define PWM_UNIT 0
#define PWM_PERIOD 100
+#define MODE_HBP(mode) ((mode)->htotal - (mode)->hsync_end)
+#define MODE_HFP(mode) ((mode)->hsync_start - (mode)->hdisplay)
+#define MODE_HSW(mode) ((mode)->hsync_end - (mode)->hsync_start)
+#define MODE_VBP(mode) ((mode)->vtotal - (mode)->vsync_end)
+#define MODE_VFP(mode) ((mode)->vsync_start - (mode)->vdisplay)
+#define MODE_VSW(mode) ((mode)->vsync_end - (mode)->vsync_start)
+
+#define MAX_PIXEL_CLOCK 126000
+#define MAX_BANDWIDTH (1280*1024*60)
+
struct am335x_lcd_softc {
device_t sc_dev;
struct fb_info sc_fb_info;
@@ -191,12 +205,18 @@ struct am335x_lcd_softc {
int sc_backlight;
struct sysctl_oid *sc_oid;
+ struct panel_info sc_panel;
+
/* Framebuffer */
bus_dma_tag_t sc_dma_tag;
bus_dmamap_t sc_dma_map;
size_t sc_fb_size;
bus_addr_t sc_fb_phys;
uint8_t *sc_fb_base;
+
+ /* HDMI framer */
+ phandle_t sc_hdmi_framer;
+ eventhandler_tag sc_hdmi_evh;
};
static void
@@ -214,13 +234,22 @@ am335x_fb_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int err)
static uint32_t
am335x_lcd_calc_divisor(uint32_t reference, uint32_t freq)
{
- uint32_t div;
+ uint32_t div, i;
+ uint32_t delta, min_delta;
+
+ min_delta = freq;
+ div = 255;
+
/* Raster mode case: divisors are in range from 2 to 255 */
- for (div = 2; div < 255; div++)
- if (reference/div <= freq)
- return (div);
+ for (i = 2; i < 255; i++) {
+ delta = abs(reference/i - freq);
+ if (delta < min_delta) {
+ div = i;
+ min_delta = delta;
+ }
+ }
- return (255);
+ return (div);
}
static int
@@ -229,7 +258,7 @@ am335x_lcd_sysctl_backlight(SYSCTL_HANDLER_ARGS)
struct am335x_lcd_softc *sc = (struct am335x_lcd_softc*)arg1;
int error;
int backlight;
-
+
backlight = sc->sc_backlight;
error = sysctl_handle_int(oidp, &backlight, 0, req);
@@ -251,6 +280,81 @@ am335x_lcd_sysctl_backlight(SYSCTL_HANDLER_ARGS)
return (error);
}
+static uint32_t
+am335x_mode_vrefresh(const struct videomode *mode)
+{
+ uint32_t refresh;
+
+ /* Calculate vertical refresh rate */
+ refresh = (mode->dot_clock * 1000 / mode->htotal);
+ refresh = (refresh + mode->vtotal / 2) / mode->vtotal;
+
+ if (mode->flags & VID_INTERLACE)
+ refresh *= 2;
+ if (mode->flags & VID_DBLSCAN)
+ refresh /= 2;
+
+ return refresh;
+}
+
+static int
+am335x_mode_is_valid(const struct videomode *mode)
+{
+ uint32_t hbp, hfp, hsw;
+ uint32_t vbp, vfp, vsw;
+
+ if (mode->dot_clock > MAX_PIXEL_CLOCK)
+ return (0);
+
+ if (mode->hdisplay & 0xf)
+ return (0);
+
+ if (mode->vdisplay > 2048)
+ return (0);
+
+ /* Check ranges for timing parameters */
+ hbp = MODE_HBP(mode) - 1;
+ hfp = MODE_HFP(mode) - 1;
+ hsw = MODE_HSW(mode) - 1;
+ vbp = MODE_VBP(mode);
+ vfp = MODE_VFP(mode);
+ vsw = MODE_VSW(mode) - 1;
+
+ if (hbp > 0x3ff)
+ return (0);
+ if (hfp > 0x3ff)
+ return (0);
+ if (hsw > 0x3ff)
+ return (0);
+
+ if (vbp > 0xff)
+ return (0);
+ if (vfp > 0xff)
+ return (0);
+ if (vsw > 0x3f)
+ return (0);
+ if (mode->vdisplay*mode->hdisplay*am335x_mode_vrefresh(mode)
+ > MAX_BANDWIDTH)
+ return (0);
+
+ return (1);
+}
+
+static void
+am335x_read_hdmi_property(device_t dev)
+{
+ phandle_t node;
+ phandle_t hdmi_xref;
+ struct am335x_lcd_softc *sc;
+
+ sc = device_get_softc(dev);
+ node = ofw_bus_get_node(dev);
+ if (OF_getencprop(node, "hdmi", &hdmi_xref, sizeof(hdmi_xref)) == -1)
+ sc->sc_hdmi_framer = 0;
+ else
+ sc->sc_hdmi_framer = hdmi_xref;
+}
+
static int
am335x_read_property(device_t dev, phandle_t node, const char *name, uint32_t *val)
{
@@ -343,44 +447,34 @@ out:
static int
am335x_read_panel_info(device_t dev, phandle_t node, struct panel_info *panel)
{
- int error;
phandle_t panel_info_node;
panel_info_node = ofw_bus_find_child(node, "panel-info");
if (panel_info_node == 0)
return (-1);
- error = 0;
-
- if ((error = am335x_read_property(dev, panel_info_node,
- "ac-bias", &panel->ac_bias)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "ac-bias", &panel->ac_bias);
- if ((error = am335x_read_property(dev, panel_info_node,
- "ac-bias-intrpt", &panel->ac_bias_intrpt)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "ac-bias-intrpt", &panel->ac_bias_intrpt);
- if ((error = am335x_read_property(dev, panel_info_node,
- "dma-burst-sz", &panel->dma_burst_sz)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "dma-burst-sz", &panel->dma_burst_sz);
- if ((error = am335x_read_property(dev, panel_info_node,
- "bpp", &panel->bpp)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "bpp", &panel->bpp);
- if ((error = am335x_read_property(dev, panel_info_node,
- "fdd", &panel->fdd)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "fdd", &panel->fdd);
- if ((error = am335x_read_property(dev, panel_info_node,
- "sync-edge", &panel->sync_edge)))
- goto out;
+ am335x_read_property(dev, panel_info_node,
+ "sync-edge", &panel->sync_edge);
- error = am335x_read_property(dev, panel_info_node,
+ am335x_read_property(dev, panel_info_node,
"sync-ctrl", &panel->sync_ctrl);
-out:
- return (error);
+ return (0);
}
static void
@@ -442,119 +536,75 @@ done:
reg = LCD_READ4(sc, LCD_END_OF_INT_IND);
}
-static int
-am335x_lcd_probe(device_t dev)
+static const struct videomode *
+am335x_lcd_pick_mode(struct edid_info *ei)
{
-#ifdef DEV_SC
- int err;
-#endif
-
- if (!ofw_bus_status_okay(dev))
- return (ENXIO);
+ const struct videomode *videomode;
+ const struct videomode *m;
+ int n;
- if (!ofw_bus_is_compatible(dev, "ti,am33xx-tilcdc"))
- return (ENXIO);
+ /* Get standard VGA as default */
+ videomode = NULL;
- device_set_desc(dev, "AM335x LCD controller");
+ /*
+ * Pick a mode.
+ */
+ if (ei->edid_preferred_mode != NULL) {
+ if (am335x_mode_is_valid(ei->edid_preferred_mode))
+ videomode = ei->edid_preferred_mode;
+ }
-#ifdef DEV_SC
- err = sc_probe_unit(device_get_unit(dev),
- device_get_flags(dev) | SC_AUTODETECT_KBD);
- if (err != 0)
- return (err);
-#endif
+ if (videomode == NULL) {
+ m = ei->edid_modes;
+
+ sort_modes(ei->edid_modes,
+ &ei->edid_preferred_mode,
+ ei->edid_nmodes);
+ for (n = 0; n < ei->edid_nmodes; n++)
+ if (am335x_mode_is_valid(&m[n])) {
+ videomode = &m[n];
+ break;
+ }
+ }
- return (BUS_PROBE_DEFAULT);
+ return videomode;
}
static int
-am335x_lcd_attach(device_t dev)
+am335x_lcd_configure(struct am335x_lcd_softc *sc)
{
- struct am335x_lcd_softc *sc;
- int rid;
int div;
- struct panel_info panel;
uint32_t reg, timing0, timing1, timing2;
- struct sysctl_ctx_list *ctx;
- struct sysctl_oid *tree;
uint32_t burst_log;
- int err;
size_t dma_size;
uint32_t hbp, hfp, hsw;
uint32_t vbp, vfp, vsw;
uint32_t width, height;
- phandle_t root, panel_node;
-
- sc = device_get_softc(dev);
- sc->sc_dev = dev;
-
- root = OF_finddevice("/");
- if (root == 0) {
- device_printf(dev, "failed to get FDT root node\n");
- return (ENXIO);
- }
-
- panel_node = fdt_find_compatible(root, "ti,tilcdc,panel", 1);
- if (panel_node == 0) {
- device_printf(dev, "failed to find compatible panel in FDT blob\n");
- return (ENXIO);
- }
-
- if (am335x_read_panel_info(dev, panel_node, &panel)) {
- device_printf(dev, "failed to read panel info\n");
- return (ENXIO);
- }
+ unsigned int ref_freq;
+ int err;
- if (am335x_read_timing(dev, panel_node, &panel)) {
- device_printf(dev, "failed to read timings\n");
+ /*
+ * try to adjust clock to get double of requested frequency
+ * HDMI/DVI displays are very sensitive to error in frequncy value
+ */
+ if (ti_prcm_clk_set_source_freq(LCDC_CLK, sc->sc_panel.panel_pxl_clk*2)) {
+ device_printf(sc->sc_dev, "can't set source frequency\n");
return (ENXIO);
}
- int ref_freq = 0;
- ti_prcm_clk_enable(LCDC_CLK);
if (ti_prcm_clk_get_source_freq(LCDC_CLK, &ref_freq)) {
- device_printf(dev, "Can't get reference frequency\n");
+ device_printf(sc->sc_dev, "can't get reference frequency\n");
return (ENXIO);
}
- rid = 0;
- sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
- RF_ACTIVE);
- if (!sc->sc_mem_res) {
- device_printf(dev, "cannot allocate memory window\n");
- return (ENXIO);
- }
-
- rid = 0;
- sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
- RF_ACTIVE);
- if (!sc->sc_irq_res) {
- bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
- device_printf(dev, "cannot allocate interrupt\n");
- return (ENXIO);
- }
-
- if (bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
- NULL, am335x_lcd_intr, sc,
- &sc->sc_intr_hl) != 0) {
- bus_release_resource(dev, SYS_RES_IRQ, rid,
- sc->sc_irq_res);
- bus_release_resource(dev, SYS_RES_MEMORY, rid,
- sc->sc_mem_res);
- device_printf(dev, "Unable to setup the irq handler.\n");
- return (ENXIO);
- }
-
- LCD_LOCK_INIT(sc);
-
/* Panle initialization */
- dma_size = round_page(panel.panel_width*panel.panel_height*panel.bpp/8);
+ dma_size = round_page(sc->sc_panel.panel_width*sc->sc_panel.panel_height*sc->sc_panel.bpp/8);
/*
* Now allocate framebuffer memory
*/
err = bus_dma_tag_create(
- bus_get_dma_tag(dev),
+ bus_get_dma_tag(sc->sc_dev),
4, 0, /* alignment, boundary */
BUS_SPACE_MAXADDR_32BIT, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
@@ -564,49 +614,49 @@ am335x_lcd_attach(device_t dev)
NULL, NULL, /* lockfunc, lockarg */
&sc->sc_dma_tag);
if (err)
- goto fail;
+ goto done;
err = bus_dmamem_alloc(sc->sc_dma_tag, (void **)&sc->sc_fb_base,
BUS_DMA_COHERENT, &sc->sc_dma_map);
if (err) {
- device_printf(dev, "cannot allocate framebuffer\n");
- goto fail;
+ device_printf(sc->sc_dev, "cannot allocate framebuffer\n");
+ goto done;
}
err = bus_dmamap_load(sc->sc_dma_tag, sc->sc_dma_map, sc->sc_fb_base,
dma_size, am335x_fb_dmamap_cb, &sc->sc_fb_phys, BUS_DMA_NOWAIT);
if (err) {
- device_printf(dev, "cannot load DMA map\n");
- goto fail;
+ device_printf(sc->sc_dev, "cannot load DMA map\n");
+ goto done;
}
/* Make sure it's blank */
- memset(sc->sc_fb_base, 0x00, dma_size);
+ memset(sc->sc_fb_base, 0x0, dma_size);
/* Calculate actual FB Size */
- sc->sc_fb_size = panel.panel_width*panel.panel_height*panel.bpp/8;
+ sc->sc_fb_size = sc->sc_panel.panel_width*sc->sc_panel.panel_height*sc->sc_panel.bpp/8;
/* Only raster mode is supported */
reg = CTRL_RASTER_MODE;
- div = am335x_lcd_calc_divisor(ref_freq, panel.panel_pxl_clk);
+ div = am335x_lcd_calc_divisor(ref_freq, sc->sc_panel.panel_pxl_clk);
reg |= (div << CTRL_DIV_SHIFT);
LCD_WRITE4(sc, LCD_CTRL, reg);
/* Set timing */
timing0 = timing1 = timing2 = 0;
- hbp = panel.panel_hbp - 1;
- hfp = panel.panel_hfp - 1;
- hsw = panel.panel_hsw - 1;
+ hbp = sc->sc_panel.panel_hbp - 1;
+ hfp = sc->sc_panel.panel_hfp - 1;
+ hsw = sc->sc_panel.panel_hsw - 1;
- vbp = panel.panel_vbp;
- vfp = panel.panel_vfp;
- vsw = panel.panel_vsw - 1;
+ vbp = sc->sc_panel.panel_vbp;
+ vfp = sc->sc_panel.panel_vfp;
+ vsw = sc->sc_panel.panel_vsw - 1;
- height = panel.panel_height - 1;
- width = panel.panel_width - 1;
+ height = sc->sc_panel.panel_height - 1;
+ width = sc->sc_panel.panel_width - 1;
/* Horizontal back porch */
timing0 |= (hbp & 0xff) << RASTER_TIMING_0_HBP_SHIFT;
@@ -636,22 +686,22 @@ am335x_lcd_attach(device_t dev)
<< RASTER_TIMING_2_LPP_B10_SHIFT;
/* clock signal settings */
- if (panel.sync_ctrl)
+ if (sc->sc_panel.sync_ctrl)
timing2 |= RASTER_TIMING_2_PHSVS;
- if (panel.sync_edge)
+ if (sc->sc_panel.sync_edge)
timing2 |= RASTER_TIMING_2_PHSVS_RISE;
else
timing2 |= RASTER_TIMING_2_PHSVS_FALL;
- if (panel.hsync_active == 0)
+ if (sc->sc_panel.hsync_active == 0)
timing2 |= RASTER_TIMING_2_IHS;
- if (panel.vsync_active == 0)
+ if (sc->sc_panel.vsync_active == 0)
timing2 |= RASTER_TIMING_2_IVS;
- if (panel.pixelclk_active == 0)
+ if (sc->sc_panel.pixelclk_active == 0)
timing2 |= RASTER_TIMING_2_IPC;
/* AC bias */
- timing2 |= (panel.ac_bias << RASTER_TIMING_2_ACB_SHIFT);
- timing2 |= (panel.ac_bias_intrpt << RASTER_TIMING_2_ACBI_SHIFT);
+ timing2 |= (sc->sc_panel.ac_bias << RASTER_TIMING_2_ACB_SHIFT);
+ timing2 |= (sc->sc_panel.ac_bias_intrpt << RASTER_TIMING_2_ACBI_SHIFT);
LCD_WRITE4(sc, LCD_RASTER_TIMING_0, timing0);
LCD_WRITE4(sc, LCD_RASTER_TIMING_1, timing1);
@@ -660,7 +710,7 @@ am335x_lcd_attach(device_t dev)
/* DMA settings */
reg = LCDDMA_CTRL_FB0_FB1;
/* Find power of 2 for current burst size */
- switch (panel.dma_burst_sz) {
+ switch (sc->sc_panel.dma_burst_sz) {
case 1:
burst_log = 0;
break;
@@ -690,11 +740,11 @@ am335x_lcd_attach(device_t dev)
/* Enable LCD */
reg = RASTER_CTRL_LCDTFT;
- reg |= (panel.fdd << RASTER_CTRL_REQDLY_SHIFT);
+ reg |= (sc->sc_panel.fdd << RASTER_CTRL_REQDLY_SHIFT);
reg |= (PALETTE_DATA_ONLY << RASTER_CTRL_PALMODE_SHIFT);
- if (panel.bpp >= 24)
+ if (sc->sc_panel.bpp >= 24)
reg |= RASTER_CTRL_TFT24;
- if (panel.bpp == 32)
+ if (sc->sc_panel.bpp == 32)
reg |= RASTER_CTRL_TFT24_UNPACKED;
LCD_WRITE4(sc, LCD_RASTER_CTRL, reg);
@@ -717,54 +767,241 @@ am335x_lcd_attach(device_t dev)
LCD_WRITE4(sc, LCD_SYSCONFIG,
SYSCONFIG_STANDBY_SMART | SYSCONFIG_IDLE_SMART);
- /* Init backlight interface */
- ctx = device_get_sysctl_ctx(sc->sc_dev);
- tree = device_get_sysctl_tree(sc->sc_dev);
- sc->sc_oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
- "backlight", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
- am335x_lcd_sysctl_backlight, "I", "LCD backlight");
- sc->sc_backlight = 0;
- /* Check if eCAS interface is available at this point */
- if (am335x_pwm_config_ecap(PWM_UNIT,
- PWM_PERIOD, PWM_PERIOD) == 0)
- sc->sc_backlight = 100;
-
sc->sc_fb_info.fb_name = device_get_nameunit(sc->sc_dev);
sc->sc_fb_info.fb_vbase = (intptr_t)sc->sc_fb_base;
sc->sc_fb_info.fb_pbase = sc->sc_fb_phys;
sc->sc_fb_info.fb_size = sc->sc_fb_size;
- sc->sc_fb_info.fb_bpp = sc->sc_fb_info.fb_depth = panel.bpp;
- sc->sc_fb_info.fb_stride = panel.panel_width*panel.bpp / 8;
- sc->sc_fb_info.fb_width = panel.panel_width;
- sc->sc_fb_info.fb_height = panel.panel_height;
+ sc->sc_fb_info.fb_bpp = sc->sc_fb_info.fb_depth = sc->sc_panel.bpp;
+ sc->sc_fb_info.fb_stride = sc->sc_panel.panel_width*sc->sc_panel.bpp / 8;
+ sc->sc_fb_info.fb_width = sc->sc_panel.panel_width;
+ sc->sc_fb_info.fb_height = sc->sc_panel.panel_height;
#ifdef DEV_SC
- err = (sc_attach_unit(device_get_unit(dev),
- device_get_flags(dev) | SC_AUTODETECT_KBD));
+ err = (sc_attach_unit(device_get_unit(sc->sc_dev),
+ device_get_flags(sc->sc_dev) | SC_AUTODETECT_KBD));
if (err) {
- device_printf(dev, "failed to attach syscons\n");
+ device_printf(sc->sc_dev, "failed to attach syscons\n");
goto fail;
}
am335x_lcd_syscons_setup((vm_offset_t)sc->sc_fb_base, sc->sc_fb_phys, &panel);
#else /* VT */
- device_t fbd = device_add_child(dev, "fbd",
- device_get_unit(dev));
- if (fbd == NULL) {
- device_printf(dev, "Failed to add fbd child\n");
- goto fail;
+ device_t fbd = device_add_child(sc->sc_dev, "fbd",
+ device_get_unit(sc->sc_dev));
+ if (fbd != NULL) {
+ if (device_probe_and_attach(fbd) != 0)
+ device_printf(sc->sc_dev, "failed to attach fbd device\n");
+ } else
+ device_printf(sc->sc_dev, "failed to add fbd child\n");
+#endif
+
+done:
+ return (err);
+}
+
+static void
+am335x_lcd_hdmi_event(void *arg)
+{
+ struct am335x_lcd_softc *sc;
+ const struct videomode *videomode;
+ struct videomode hdmi_mode;
+ device_t hdmi_dev;
+ uint8_t *edid;
+ uint32_t edid_len;
+ struct edid_info ei;
+
+ sc = arg;
+
+ /* Nothing to work with */
+ if (!sc->sc_hdmi_framer) {
+ device_printf(sc->sc_dev, "HDMI event without HDMI framer set\n");
+ return;
}
- if (device_probe_and_attach(fbd) != 0) {
- device_printf(dev, "Failed to attach fbd device\n");
- goto fail;
+
+ hdmi_dev = OF_device_from_xref(sc->sc_hdmi_framer);
+ if (!hdmi_dev) {
+ device_printf(sc->sc_dev, "no actual device for \"hdmi\" property\n");
+ return;
}
+
+ edid = NULL;
+ edid_len = 0;
+ if (HDMI_GET_EDID(hdmi_dev, &edid, &edid_len) != 0) {
+ device_printf(sc->sc_dev, "failed to get EDID info from HDMI framer\n");
+ return;
+ }
+
+ videomode = NULL;
+
+ if (edid_parse(edid, &ei) == 0) {
+ edid_print(&ei);
+ videomode = am335x_lcd_pick_mode(&ei);
+ } else
+ device_printf(sc->sc_dev, "failed to parse EDID\n");
+
+ /* Use standard VGA as fallback */
+ if (videomode == NULL)
+ videomode = pick_mode_by_ref(640, 480, 60);
+
+ if (videomode == NULL) {
+ device_printf(sc->sc_dev, "failed to find usable videomode");
+ return;
+ }
+
+ device_printf(sc->sc_dev, "detected videomode: %dx%d @ %dKHz\n", videomode->hdisplay,
+ videomode->vdisplay, am335x_mode_vrefresh(videomode));
+
+ sc->sc_panel.panel_width = videomode->hdisplay;
+ sc->sc_panel.panel_height = videomode->vdisplay;
+ sc->sc_panel.panel_hfp = videomode->hsync_start - videomode->hdisplay;
+ sc->sc_panel.panel_hbp = videomode->htotal - videomode->hsync_end;
+ sc->sc_panel.panel_hsw = videomode->hsync_end - videomode->hsync_start;
+ sc->sc_panel.panel_vfp = videomode->vsync_start - videomode->vdisplay;
+ sc->sc_panel.panel_vbp = videomode->vtotal - videomode->vsync_end;
+ sc->sc_panel.panel_vsw = videomode->vsync_end - videomode->vsync_start;
+ sc->sc_panel.pixelclk_active = 1;
+
+ /* logic for HSYNC should be reversed */
+ if (videomode->flags & VID_NHSYNC)
+ sc->sc_panel.hsync_active = 1;
+ else
+ sc->sc_panel.hsync_active = 0;
+
+ if (videomode->flags & VID_NVSYNC)
+ sc->sc_panel.vsync_active = 0;
+ else
+ sc->sc_panel.vsync_active = 1;
+
+ sc->sc_panel.panel_pxl_clk = videomode->dot_clock * 1000;
+
+ am335x_lcd_configure(sc);
+
+ memcpy(&hdmi_mode, videomode, sizeof(hdmi_mode));
+ hdmi_mode.hskew = videomode->hsync_end - videomode->hsync_start;
+ hdmi_mode.flags |= VID_HSKEW;
+
+ HDMI_SET_VIDEOMODE(hdmi_dev, &hdmi_mode);
+}
+
+static int
+am335x_lcd_probe(device_t dev)
+{
+#ifdef DEV_SC
+ int err;
#endif
- return (0);
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
-fail:
- return (err);
+ if (!ofw_bus_is_compatible(dev, "ti,am33xx-tilcdc"))
+ return (ENXIO);
+
+ device_set_desc(dev, "AM335x LCD controller");
+
+#ifdef DEV_SC
+ err = sc_probe_unit(device_get_unit(dev),
+ device_get_flags(dev) | SC_AUTODETECT_KBD);
+ if (err != 0)
+ return (err);
+#endif
+
+ return (BUS_PROBE_DEFAULT);
+}
+
+static int
+am335x_lcd_attach(device_t dev)
+{
+ struct am335x_lcd_softc *sc;
+
+ int err;
+ int rid;
+ struct sysctl_ctx_list *ctx;
+ struct sysctl_oid *tree;
+ phandle_t root, panel_node;
+
+ err = 0;
+ sc = device_get_softc(dev);
+ sc->sc_dev = dev;
+
+ am335x_read_hdmi_property(dev);
+
+ root = OF_finddevice("/");
+ if (root == 0) {
+ device_printf(dev, "failed to get FDT root node\n");
+ return (ENXIO);
+ }
+
+ sc->sc_panel.ac_bias = 255;
+ sc->sc_panel.ac_bias_intrpt = 0;
+ sc->sc_panel.dma_burst_sz = 16;
+ sc->sc_panel.bpp = 16;
+ sc->sc_panel.fdd = 128;
+ sc->sc_panel.sync_edge = 0;
+ sc->sc_panel.sync_ctrl = 1;
+
+ panel_node = fdt_find_compatible(root, "ti,tilcdc,panel", 1);
+ if (panel_node != 0) {
+ device_printf(dev, "using static panel info\n");
+ if (am335x_read_panel_info(dev, panel_node, &sc->sc_panel)) {
+ device_printf(dev, "failed to read panel info\n");
+ return (ENXIO);
+ }
+
+ if (am335x_read_timing(dev, panel_node, &sc->sc_panel)) {
+ device_printf(dev, "failed to read timings\n");
+ return (ENXIO);
+ }
+ }
+
+ ti_prcm_clk_enable(LCDC_CLK);
+
+ rid = 0;
+ sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+ RF_ACTIVE);
+ if (!sc->sc_mem_res) {
+ device_printf(dev, "cannot allocate memory window\n");
+ return (ENXIO);
+ }
+
+ rid = 0;
+ sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
+ RF_ACTIVE);
+ if (!sc->sc_irq_res) {
+ bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
+ device_printf(dev, "cannot allocate interrupt\n");
+ return (ENXIO);
+ }
+
+ if (bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
+ NULL, am335x_lcd_intr, sc,
+ &sc->sc_intr_hl) != 0) {
+ bus_release_resource(dev, SYS_RES_IRQ, rid,
+ sc->sc_irq_res);
+ bus_release_resource(dev, SYS_RES_MEMORY, rid,
+ sc->sc_mem_res);
+ device_printf(dev, "Unable to setup the irq handler.\n");
+ return (ENXIO);
+ }
+
+ LCD_LOCK_INIT(sc);
+
+ /* Init backlight interface */
+ ctx = device_get_sysctl_ctx(sc->sc_dev);
+ tree = device_get_sysctl_tree(sc->sc_dev);
+ sc->sc_oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+ "backlight", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
+ am335x_lcd_sysctl_backlight, "I", "LCD backlight");
+ sc->sc_backlight = 0;
+ /* Check if eCAS interface is available at this point */
+ if (am335x_pwm_config_ecap(PWM_UNIT,
+ PWM_PERIOD, PWM_PERIOD) == 0)
+ sc->sc_backlight = 100;
+
+ sc->sc_hdmi_evh = EVENTHANDLER_REGISTER(hdmi_event,
+ am335x_lcd_hdmi_event, sc, 0);
+
+ return (0);
}
static int
diff --git a/sys/arm/ti/am335x/am335x_lcd.h b/sys/arm/ti/am335x/am335x_lcd.h
index e3c82db..ed0779f 100644
--- a/sys/arm/ti/am335x/am335x_lcd.h
+++ b/sys/arm/ti/am335x/am335x_lcd.h
@@ -29,6 +29,7 @@
#define __AM335X_LCD_H__
struct panel_info {
+ /* Timing part */
uint32_t panel_width;
uint32_t panel_height;
uint32_t panel_hfp;
@@ -37,16 +38,17 @@ struct panel_info {
uint32_t panel_vfp;
uint32_t panel_vbp;
uint32_t panel_vsw;
+ uint32_t hsync_active;
+ uint32_t vsync_active;
+ uint32_t panel_pxl_clk;
+
uint32_t ac_bias;
uint32_t ac_bias_intrpt;
uint32_t dma_burst_sz;
uint32_t bpp;
uint32_t fdd;
- uint32_t hsync_active;
- uint32_t vsync_active;
uint32_t sync_edge;
uint32_t sync_ctrl;
- uint32_t panel_pxl_clk;
uint32_t pixelclk_active;
};
diff --git a/sys/arm/ti/am335x/am335x_pmic.c b/sys/arm/ti/am335x/am335x_pmic.c
index 06d4a1a..eefece8 100644
--- a/sys/arm/ti/am335x/am335x_pmic.c
+++ b/sys/arm/ti/am335x/am335x_pmic.c
@@ -131,7 +131,7 @@ am335x_pmic_intr(void *arg)
shutdown_nice(RB_POWEROFF);
if (int_reg.aci) {
snprintf(notify_buf, sizeof(notify_buf), "notify=0x%02x",
- status_reg.acpwr ? 1 : 0);
+ status_reg.acpwr);
devctl_notify_f("ACPI", "ACAD", "power", notify_buf, M_NOWAIT);
}
}
diff --git a/sys/arm/ti/am335x/am335x_prcm.c b/sys/arm/ti/am335x/am335x_prcm.c
index fa47f63..69fa6e2 100644
--- a/sys/arm/ti/am335x/am335x_prcm.c
+++ b/sys/arm/ti/am335x/am335x_prcm.c
@@ -151,6 +151,7 @@ static int am335x_clk_hsmmc_get_source_freq(struct ti_clock_dev *clkdev, unsign
static int am335x_clk_get_sysclk_freq(struct ti_clock_dev *clkdev, unsigned int *freq);
static int am335x_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int *freq);
static int am335x_clk_get_arm_disp_freq(struct ti_clock_dev *clkdev, unsigned int *freq);
+static int am335x_clk_set_arm_disp_freq(struct ti_clock_dev *clkdev, unsigned int freq);
static void am335x_prcm_reset(void);
static int am335x_clk_cpsw_activate(struct ti_clock_dev *clkdev);
static int am335x_clk_musb0_activate(struct ti_clock_dev *clkdev);
@@ -163,7 +164,8 @@ static int am335x_clk_pruss_activate(struct ti_clock_dev *clkdev);
.clk_deactivate = am335x_clk_noop_deactivate, \
.clk_set_source = am335x_clk_noop_set_source, \
.clk_accessible = NULL, \
- .clk_get_source_freq = NULL \
+ .clk_get_source_freq = NULL, \
+ .clk_set_source_freq = NULL \
}
#define AM335X_GENERIC_CLOCK_DEV(i) \
@@ -172,7 +174,8 @@ static int am335x_clk_pruss_activate(struct ti_clock_dev *clkdev);
.clk_deactivate = am335x_clk_generic_deactivate, \
.clk_set_source = am335x_clk_generic_set_source, \
.clk_accessible = NULL, \
- .clk_get_source_freq = NULL \
+ .clk_get_source_freq = NULL, \
+ .clk_set_source_freq = NULL \
}
#define AM335X_GPIO_CLOCK_DEV(i) \
@@ -181,7 +184,8 @@ static int am335x_clk_pruss_activate(struct ti_clock_dev *clkdev);
.clk_deactivate = am335x_clk_generic_deactivate, \
.clk_set_source = am335x_clk_generic_set_source, \
.clk_accessible = NULL, \
- .clk_get_source_freq = NULL \
+ .clk_get_source_freq = NULL, \
+ .clk_set_source_freq = NULL \
}
#define AM335X_MMCHS_CLOCK_DEV(i) \
@@ -190,7 +194,8 @@ static int am335x_clk_pruss_activate(struct ti_clock_dev *clkdev);
.clk_deactivate = am335x_clk_generic_deactivate, \
.clk_set_source = am335x_clk_generic_set_source, \
.clk_accessible = NULL, \
- .clk_get_source_freq = am335x_clk_hsmmc_get_source_freq \
+ .clk_get_source_freq = am335x_clk_hsmmc_get_source_freq, \
+ .clk_set_source_freq = NULL \
}
struct ti_clock_dev ti_am335x_clk_devmap[] = {
@@ -201,6 +206,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = am335x_clk_get_sysclk_freq,
+ .clk_set_source_freq = NULL,
},
/* MPU (ARM) core clocks */
{ .id = MPU_CLK,
@@ -209,6 +215,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = am335x_clk_get_arm_fclk_freq,
+ .clk_set_source_freq = NULL,
},
/* CPSW Ethernet Switch core clocks */
{ .id = CPSW_CLK,
@@ -217,6 +224,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = NULL,
+ .clk_set_source_freq = NULL,
},
/* Mentor USB HS controller core clocks */
@@ -226,6 +234,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = NULL,
+ .clk_set_source_freq = NULL,
},
/* LCD controller clocks */
@@ -235,6 +244,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = am335x_clk_get_arm_disp_freq,
+ .clk_set_source_freq = am335x_clk_set_arm_disp_freq,
},
/* UART */
@@ -296,6 +306,7 @@ struct ti_clock_dev ti_am335x_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = NULL,
+ .clk_set_source_freq = NULL,
},
/* RTC */
@@ -627,6 +638,8 @@ am335x_clk_get_sysclk_freq(struct ti_clock_dev *clkdev, unsigned int *freq)
#define DPLL_BYP_CLKSEL(reg) ((reg>>23) & 1)
#define DPLL_DIV(reg) ((reg & 0x7f)+1)
#define DPLL_MULT(reg) ((reg>>8) & 0x7FF)
+#define DPLL_MAX_MUL 0x800
+#define DPLL_MAX_DIV 0x80
static int
am335x_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int *freq)
@@ -662,6 +675,52 @@ am335x_clk_get_arm_disp_freq(struct ti_clock_dev *clkdev, unsigned int *freq)
return(0);
}
+static int
+am335x_clk_set_arm_disp_freq(struct ti_clock_dev *clkdev, unsigned int freq)
+{
+ uint32_t sysclk;
+ uint32_t mul, div;
+ uint32_t i, j;
+ unsigned int delta, min_delta;
+
+ am335x_clk_get_sysclk_freq(NULL, &sysclk);
+
+ /* Bypass mode */
+ prcm_write_4(CM_WKUP_CM_CLKMODE_DPLL_DISP, 0x4);
+
+ /* Make sure it's in bypass mode */
+ while (!(prcm_read_4(CM_WKUP_CM_IDLEST_DPLL_DISP)
+ & (1 << 8)))
+ DELAY(10);
+
+ /* Dumb and non-optimal implementation */
+ min_delta = freq;
+ for (i = 1; i < DPLL_MAX_MUL; i++) {
+ for (j = 1; j < DPLL_MAX_DIV; j++) {
+ delta = abs(freq - i*(sysclk/j));
+ if (delta < min_delta) {
+ mul = i;
+ div = j;
+ min_delta = delta;
+ }
+ if (min_delta == 0)
+ break;
+ }
+ }
+
+ prcm_write_4(CM_WKUP_CM_CLKSEL_DPLL_DISP, (mul << 8) | (div - 1));
+
+ /* Locked mode */
+ prcm_write_4(CM_WKUP_CM_CLKMODE_DPLL_DISP, 0x7);
+
+ int timeout = 10000;
+ while ((!(prcm_read_4(CM_WKUP_CM_IDLEST_DPLL_DISP)
+ & (1 << 0))) && timeout--)
+ DELAY(10);
+
+ return(0);
+}
+
static void
am335x_prcm_reset(void)
{
@@ -724,27 +783,10 @@ am335x_clk_lcdc_activate(struct ti_clock_dev *clkdev)
if (sc == NULL)
return (ENXIO);
- /* Bypass mode */
- prcm_write_4(CM_WKUP_CM_CLKMODE_DPLL_DISP, 0x4);
-
- /* Make sure it's in bypass mode */
- while (!(prcm_read_4(CM_WKUP_CM_IDLEST_DPLL_DISP)
- & (1 << 8)))
- DELAY(10);
-
/*
- * For now set frequency to 99*SYSFREQ/8 which is twice as
- * HDMI 1080p pixel clock (minimum LCDC freq divisor is 2)
+ * For now set frequency to 2*VGA_PIXEL_CLOCK
*/
- prcm_write_4(CM_WKUP_CM_CLKSEL_DPLL_DISP, (99 << 8) | 8);
-
- /* Locked mode */
- prcm_write_4(CM_WKUP_CM_CLKMODE_DPLL_DISP, 0x7);
-
- int timeout = 10000;
- while ((!(prcm_read_4(CM_WKUP_CM_IDLEST_DPLL_DISP)
- & (1 << 0))) && timeout--)
- DELAY(10);
+ am335x_clk_set_arm_disp_freq(clkdev, 25175000*2);
/*set MODULEMODE to ENABLE(2) */
prcm_write_4(CM_PER_LCDC_CLKCTRL, 2);
diff --git a/sys/arm/ti/am335x/files.am335x b/sys/arm/ti/am335x/files.am335x
index 277ee52..7293fd0 100644
--- a/sys/arm/ti/am335x/files.am335x
+++ b/sys/arm/ti/am335x/files.am335x
@@ -16,5 +16,8 @@ arm/ti/am335x/am335x_scm_padconf.c standard
arm/ti/am335x/am335x_usbss.c optional musb fdt
arm/ti/am335x/am335x_musb.c optional musb fdt
+arm/ti/am335x/hdmi_if.m optional hdmi
+arm/ti/am335x/tda19988.c optional hdmi
+
arm/ti/ti_edma3.c standard
arm/ti/cpsw/if_cpsw.c optional cpsw
diff --git a/sys/arm/ti/am335x/hdmi.h b/sys/arm/ti/am335x/hdmi.h
new file mode 100644
index 0000000..989d132
--- /dev/null
+++ b/sys/arm/ti/am335x/hdmi.h
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2015 Oleksandr Tymoshenko
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _HDMI_H_
+#define _HDMI_H_
+
+#include <sys/eventhandler.h>
+
+typedef void (*hdmi_event_hook)(void *, int);
+EVENTHANDLER_DECLARE(hdmi_event, hdmi_event_hook);
+
+#endif /* !_HDMI_H_ */
+
diff --git a/sys/arm/ti/am335x/hdmi_if.m b/sys/arm/ti/am335x/hdmi_if.m
new file mode 100644
index 0000000..e5c6080
--- /dev/null
+++ b/sys/arm/ti/am335x/hdmi_if.m
@@ -0,0 +1,50 @@
+#-
+# Copyright (c) 2015 Oleksandr Tymoshenko <gonzo@freebsd.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#include <sys/bus.h>
+#include <dev/videomode/videomode.h>
+#include <dev/videomode/edidvar.h>
+
+INTERFACE hdmi;
+
+#
+# Get EDID info
+#
+METHOD int get_edid {
+ device_t dev;
+ uint8_t **edid;
+ uint32_t *edid_length;
+};
+
+#
+# Set videomode
+#
+METHOD int set_videomode {
+ device_t dev;
+ const struct videomode *videomode;
+};
diff --git a/sys/arm/ti/am335x/tda19988.c b/sys/arm/ti/am335x/tda19988.c
new file mode 100644
index 0000000..83dcf43
--- /dev/null
+++ b/sys/arm/ti/am335x/tda19988.c
@@ -0,0 +1,810 @@
+/*-
+ * Copyright (c) 2015 Oleksandr Tymoshenko <gonzo@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+/*
+* NXP TDA19988 HDMI encoder
+*/
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/clock.h>
+#include <sys/time.h>
+#include <sys/bus.h>
+#include <sys/resource.h>
+#include <sys/rman.h>
+#include <sys/types.h>
+#include <sys/systm.h>
+
+#include <dev/iicbus/iicbus.h>
+#include <dev/iicbus/iiconf.h>
+
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <dev/videomode/videomode.h>
+#include <dev/videomode/edidvar.h>
+#include <arm/ti/am335x/hdmi.h>
+
+#include "iicbus_if.h"
+#include "hdmi_if.h"
+
+#define MKREG(page, addr) (((page) << 8) | (addr))
+
+#define REGPAGE(reg) (((reg) >> 8) & 0xff)
+#define REGADDR(reg) ((reg) & 0xff)
+
+#define TDA_VERSION MKREG(0x00, 0x00)
+#define TDA_MAIN_CNTRL0 MKREG(0x00, 0x01)
+#define MAIN_CNTRL0_SR (1 << 0)
+#define TDA_VERSION_MSB MKREG(0x00, 0x02)
+#define TDA_SOFTRESET MKREG(0x00, 0x0a)
+#define SOFTRESET_I2C (1 << 1)
+#define SOFTRESET_AUDIO (1 << 0)
+#define TDA_DDC_CTRL MKREG(0x00, 0x0b)
+#define DDC_ENABLE 0
+#define TDA_CCLK MKREG(0x00, 0x0c)
+#define CCLK_ENABLE 1
+#define TDA_INT_FLAGS_2 MKREG(0x00, 0x11)
+#define INT_FLAGS_2_EDID_BLK_RD (1 << 1)
+
+#define TDA_VIP_CNTRL_0 MKREG(0x00, 0x20)
+#define TDA_VIP_CNTRL_1 MKREG(0x00, 0x21)
+#define TDA_VIP_CNTRL_2 MKREG(0x00, 0x22)
+#define TDA_VIP_CNTRL_3 MKREG(0x00, 0x23)
+#define VIP_CNTRL_3_SYNC_HS (2 << 4)
+#define VIP_CNTRL_3_V_TGL (1 << 2)
+#define VIP_CNTRL_3_H_TGL (1 << 1)
+
+#define TDA_VIP_CNTRL_4 MKREG(0x00, 0x24)
+#define VIP_CNTRL_4_BLANKIT_NDE (0 << 2)
+#define VIP_CNTRL_4_BLANKIT_HS_VS (1 << 2)
+#define VIP_CNTRL_4_BLANKIT_NHS_VS (2 << 2)
+#define VIP_CNTRL_4_BLANKIT_HE_VE (3 << 2)
+#define VIP_CNTRL_4_BLC_NONE (0 << 0)
+#define VIP_CNTRL_4_BLC_RGB444 (1 << 0)
+#define VIP_CNTRL_4_BLC_YUV444 (2 << 0)
+#define VIP_CNTRL_4_BLC_YUV422 (3 << 0)
+#define TDA_VIP_CNTRL_5 MKREG(0x00, 0x25)
+#define VIP_CNTRL_5_SP_CNT(n) (((n) & 3) << 1)
+#define TDA_MUX_VP_VIP_OUT MKREG(0x00, 0x27)
+#define TDA_MAT_CONTRL MKREG(0x00, 0x80)
+#define MAT_CONTRL_MAT_BP (1 << 2)
+#define TDA_VIDFORMAT MKREG(0x00, 0xa0)
+#define TDA_REFPIX_MSB MKREG(0x00, 0xa1)
+#define TDA_REFPIX_LSB MKREG(0x00, 0xa2)
+#define TDA_REFLINE_MSB MKREG(0x00, 0xa3)
+#define TDA_REFLINE_LSB MKREG(0x00, 0xa4)
+#define TDA_NPIX_MSB MKREG(0x00, 0xa5)
+#define TDA_NPIX_LSB MKREG(0x00, 0xa6)
+#define TDA_NLINE_MSB MKREG(0x00, 0xa7)
+#define TDA_NLINE_LSB MKREG(0x00, 0xa8)
+#define TDA_VS_LINE_STRT_1_MSB MKREG(0x00, 0xa9)
+#define TDA_VS_LINE_STRT_1_LSB MKREG(0x00, 0xaa)
+#define TDA_VS_PIX_STRT_1_MSB MKREG(0x00, 0xab)
+#define TDA_VS_PIX_STRT_1_LSB MKREG(0x00, 0xac)
+#define TDA_VS_LINE_END_1_MSB MKREG(0x00, 0xad)
+#define TDA_VS_LINE_END_1_LSB MKREG(0x00, 0xae)
+#define TDA_VS_PIX_END_1_MSB MKREG(0x00, 0xaf)
+#define TDA_VS_PIX_END_1_LSB MKREG(0x00, 0xb0)
+#define TDA_VS_LINE_STRT_2_MSB MKREG(0x00, 0xb1)
+#define TDA_VS_LINE_STRT_2_LSB MKREG(0x00, 0xb2)
+#define TDA_VS_PIX_STRT_2_MSB MKREG(0x00, 0xb3)
+#define TDA_VS_PIX_STRT_2_LSB MKREG(0x00, 0xb4)
+#define TDA_VS_LINE_END_2_MSB MKREG(0x00, 0xb5)
+#define TDA_VS_LINE_END_2_LSB MKREG(0x00, 0xb6)
+#define TDA_VS_PIX_END_2_MSB MKREG(0x00, 0xb7)
+#define TDA_VS_PIX_END_2_LSB MKREG(0x00, 0xb8)
+#define TDA_HS_PIX_START_MSB MKREG(0x00, 0xb9)
+#define TDA_HS_PIX_START_LSB MKREG(0x00, 0xba)
+#define TDA_HS_PIX_STOP_MSB MKREG(0x00, 0xbb)
+#define TDA_HS_PIX_STOP_LSB MKREG(0x00, 0xbc)
+#define TDA_VWIN_START_1_MSB MKREG(0x00, 0xbd)
+#define TDA_VWIN_START_1_LSB MKREG(0x00, 0xbe)
+#define TDA_VWIN_END_1_MSB MKREG(0x00, 0xbf)
+#define TDA_VWIN_END_1_LSB MKREG(0x00, 0xc0)
+#define TDA_VWIN_START_2_MSB MKREG(0x00, 0xc1)
+#define TDA_VWIN_START_2_LSB MKREG(0x00, 0xc2)
+#define TDA_VWIN_END_2_MSB MKREG(0x00, 0xc3)
+#define TDA_VWIN_END_2_LSB MKREG(0x00, 0xc4)
+#define TDA_DE_START_MSB MKREG(0x00, 0xc5)
+#define TDA_DE_START_LSB MKREG(0x00, 0xc6)
+#define TDA_DE_STOP_MSB MKREG(0x00, 0xc7)
+#define TDA_DE_STOP_LSB MKREG(0x00, 0xc8)
+
+#define TDA_TBG_CNTRL_0 MKREG(0x00, 0xca)
+#define TBG_CNTRL_0_SYNC_ONCE (1 << 7)
+#define TBG_CNTRL_0_SYNC_MTHD (1 << 6)
+
+#define TDA_TBG_CNTRL_1 MKREG(0x00, 0xcb)
+#define TBG_CNTRL_1_DWIN_DIS (1 << 6)
+#define TBG_CNTRL_1_TGL_EN (1 << 2)
+#define TBG_CNTRL_1_V_TGL (1 << 1)
+#define TBG_CNTRL_1_H_TGL (1 << 0)
+
+#define TDA_HVF_CNTRL_0 MKREG(0x00, 0xe4)
+#define HVF_CNTRL_0_PREFIL_NONE (0 << 2)
+#define HVF_CNTRL_0_INTPOL_BYPASS (0 << 0)
+#define TDA_HVF_CNTRL_1 MKREG(0x00, 0xe5)
+#define HVF_CNTRL_1_VQR(x) (((x) & 3) << 2)
+#define HVF_CNTRL_1_VQR_FULL HVF_CNTRL_1_VQR(0)
+#define TDA_ENABLE_SPACE MKREG(0x00, 0xd6)
+#define TDA_RPT_CNTRL MKREG(0x00, 0xf0)
+
+#define TDA_PLL_SERIAL_1 MKREG(0x02, 0x00)
+#define PLL_SERIAL_1_SRL_MAN_IP (1 << 6)
+#define TDA_PLL_SERIAL_2 MKREG(0x02, 0x01)
+#define PLL_SERIAL_2_SRL_PR(x) (((x) & 0xf) << 4)
+#define PLL_SERIAL_2_SRL_NOSC(x) (((x) & 0x3) << 0)
+#define TDA_PLL_SERIAL_3 MKREG(0x02, 0x02)
+#define PLL_SERIAL_3_SRL_PXIN_SEL (1 << 4)
+#define PLL_SERIAL_3_SRL_DE (1 << 2)
+#define PLL_SERIAL_3_SRL_CCIR (1 << 0)
+#define TDA_SERIALIZER MKREG(0x02, 0x03)
+#define TDA_BUFFER_OUT MKREG(0x02, 0x04)
+#define TDA_PLL_SCG1 MKREG(0x02, 0x05)
+#define TDA_PLL_SCG2 MKREG(0x02, 0x06)
+#define TDA_PLL_SCGN1 MKREG(0x02, 0x07)
+#define TDA_PLL_SCGN2 MKREG(0x02, 0x08)
+#define TDA_PLL_SCGR1 MKREG(0x02, 0x09)
+#define TDA_PLL_SCGR2 MKREG(0x02, 0x0a)
+
+#define TDA_SEL_CLK MKREG(0x02, 0x11)
+#define SEL_CLK_ENA_SC_CLK (1 << 3)
+#define SEL_CLK_SEL_VRF_CLK(x) (((x) & 3) << 1)
+#define SEL_CLK_SEL_CLK1 (1 << 0)
+#define TDA_ANA_GENERAL MKREG(0x02, 0x12)
+
+#define TDA_EDID_DATA0 MKREG(0x09, 0x00)
+#define TDA_EDID_CTRL MKREG(0x09, 0xfa)
+#define TDA_DDC_ADDR MKREG(0x09, 0xfb)
+#define TDA_DDC_OFFS MKREG(0x09, 0xfc)
+#define TDA_DDC_SEGM_ADDR MKREG(0x09, 0xfd)
+#define TDA_DDC_SEGM MKREG(0x09, 0xfe)
+
+#define TDA_IF_VSP MKREG(0x10, 0x20)
+#define TDA_IF_AVI MKREG(0x10, 0x40)
+#define TDA_IF_SPD MKREG(0x10, 0x60)
+#define TDA_IF_AUD MKREG(0x10, 0x80)
+#define TDA_IF_MPS MKREG(0x10, 0xa0)
+
+#define TDA_ENC_CNTRL MKREG(0x11, 0x0d)
+#define ENC_CNTRL_DVI_MODE (0 << 2)
+#define ENC_CNTRL_HDMI_MODE (1 << 2)
+#define TDA_DIP_IF_FLAGS MKREG(0x11, 0x0f)
+#define DIP_IF_FLAGS_IF5 (1 << 5)
+#define DIP_IF_FLAGS_IF4 (1 << 4)
+#define DIP_IF_FLAGS_IF3 (1 << 3)
+#define DIP_IF_FLAGS_IF2 (1 << 2) /* AVI IF on page 10h */
+#define DIP_IF_FLAGS_IF1 (1 << 1)
+
+#define TDA_TX3 MKREG(0x12, 0x9a)
+#define TDA_TX4 MKREG(0x12, 0x9b)
+#define TX4_PD_RAM (1 << 1)
+#define TDA_HDCP_TX33 MKREG(0x12, 0xb8)
+#define HDCP_TX33_HDMI (1 << 1)
+
+#define TDA_CURPAGE_ADDR 0xff
+
+#define TDA_CEC_ENAMODS 0xff
+#define ENAMODS_RXSENS (1 << 2)
+#define ENAMODS_HDMI (1 << 1)
+#define TDA_CEC_FRO_IM_CLK_CTRL 0xfb
+#define CEC_FRO_IM_CLK_CTRL_GHOST_DIS (1 << 7)
+#define CEC_FRO_IM_CLK_CTRL_IMCLK_SEL (1 << 1)
+
+/* EDID reading */
+#define EDID_LENGTH 0x80
+#define MAX_READ_ATTEMPTS 100
+
+/* EDID fields */
+#define EDID_MODES0 35
+#define EDID_MODES1 36
+#define EDID_TIMING_START 38
+#define EDID_TIMING_END 54
+#define EDID_TIMING_X(v) (((v) + 31) * 8)
+#define EDID_FREQ(v) (((v) & 0x3f) + 60)
+#define EDID_RATIO(v) (((v) >> 6) & 0x3)
+#define EDID_RATIO_10x16 0
+#define EDID_RATIO_3x4 1
+#define EDID_RATIO_4x5 2
+#define EDID_RATIO_9x16 3
+
+#define TDA19988 0x0301
+
+struct tda19988_softc {
+ device_t sc_dev;
+ uint32_t sc_addr;
+ uint32_t sc_cec_addr;
+ uint16_t sc_version;
+ struct intr_config_hook enum_hook;
+ int sc_current_page;
+ uint8_t *sc_edid;
+ uint32_t sc_edid_len;
+};
+
+static int
+tda19988_set_page(struct tda19988_softc *sc, uint8_t page)
+{
+ uint8_t addr = TDA_CURPAGE_ADDR;
+ uint8_t cmd[2];
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_addr, IIC_M_WR, 2, cmd },
+ };
+
+ cmd[0] = addr;
+ cmd[1] = page;
+
+ result = (iicbus_transfer(sc->sc_dev, msg, 1));
+ if (result)
+ printf("tda19988_set_page failed: %d\n", result);
+ else
+ sc->sc_current_page = page;
+
+ return (result);
+}
+
+static int
+tda19988_cec_read(struct tda19988_softc *sc, uint8_t addr, uint8_t *data)
+{
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_cec_addr, IIC_M_WR, 1, &addr },
+ { sc->sc_cec_addr, IIC_M_RD, 1, data },
+ };
+
+ result = iicbus_transfer(sc->sc_dev, msg, 2);
+ if (result)
+ printf("tda19988_cec_read failed: %d\n", result);
+ return (result);
+}
+
+static int
+tda19988_cec_write(struct tda19988_softc *sc, uint8_t address, uint8_t data)
+{
+ uint8_t cmd[2];
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_cec_addr, IIC_M_WR, 2, cmd },
+ };
+
+ cmd[0] = address;
+ cmd[1] = data;
+
+ result = iicbus_transfer(sc->sc_dev, msg, 1);
+ if (result)
+ printf("tda19988_cec_write failed: %d\n", result);
+ return (result);
+}
+
+static int
+tda19988_block_read(struct tda19988_softc *sc, uint16_t addr, uint8_t *data, int len)
+{
+ uint8_t reg;
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_addr, IIC_M_WR, 1, &reg },
+ { sc->sc_addr, IIC_M_RD, len, data },
+ };
+
+ reg = REGADDR(addr);
+
+ if (sc->sc_current_page != REGPAGE(addr))
+ tda19988_set_page(sc, REGPAGE(addr));
+
+ result = (iicbus_transfer(sc->sc_dev, msg, 2));
+ if (result)
+ device_printf(sc->sc_dev, "tda19988_block_read failed: %d\n", result);
+ return (result);
+}
+
+static int
+tda19988_reg_read(struct tda19988_softc *sc, uint16_t addr, uint8_t *data)
+{
+ uint8_t reg;
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_addr, IIC_M_WR, 1, &reg },
+ { sc->sc_addr, IIC_M_RD, 1, data },
+ };
+
+ reg = REGADDR(addr);
+
+ if (sc->sc_current_page != REGPAGE(addr))
+ tda19988_set_page(sc, REGPAGE(addr));
+
+ result = (iicbus_transfer(sc->sc_dev, msg, 2));
+ if (result)
+ device_printf(sc->sc_dev, "tda19988_reg_read failed: %d\n", result);
+ return (result);
+}
+
+static int
+tda19988_reg_write(struct tda19988_softc *sc, uint16_t address, uint8_t data)
+{
+ uint8_t cmd[2];
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_addr, IIC_M_WR, 2, cmd },
+ };
+
+ cmd[0] = REGADDR(address);
+ cmd[1] = data;
+
+ if (sc->sc_current_page != REGPAGE(address))
+ tda19988_set_page(sc, REGPAGE(address));
+
+ result = iicbus_transfer(sc->sc_dev, msg, 1);
+ if (result)
+ device_printf(sc->sc_dev, "tda19988_reg_write failed: %d\n", result);
+
+ return (result);
+}
+
+static int
+tda19988_reg_write2(struct tda19988_softc *sc, uint16_t address, uint16_t data)
+{
+ uint8_t cmd[3];
+ int result;
+ struct iic_msg msg[] = {
+ { sc->sc_addr, IIC_M_WR, 3, cmd },
+ };
+
+ cmd[0] = REGADDR(address);
+ cmd[1] = (data >> 8);
+ cmd[2] = (data & 0xff);
+
+ if (sc->sc_current_page != REGPAGE(address))
+ tda19988_set_page(sc, REGPAGE(address));
+
+ result = iicbus_transfer(sc->sc_dev, msg, 1);
+ if (result)
+ device_printf(sc->sc_dev, "tda19988_reg_write2 failed: %d\n", result);
+
+ return (result);
+}
+
+static void
+tda19988_reg_set(struct tda19988_softc *sc, uint16_t addr, uint8_t flags)
+{
+ uint8_t data;
+
+ tda19988_reg_read(sc, addr, &data);
+ data |= flags;
+ tda19988_reg_write(sc, addr, data);
+}
+
+static void
+tda19988_reg_clear(struct tda19988_softc *sc, uint16_t addr, uint8_t flags)
+{
+ uint8_t data;
+
+ tda19988_reg_read(sc, addr, &data);
+ data &= ~flags;
+ tda19988_reg_write(sc, addr, data);
+}
+
+static int
+tda19988_probe(device_t dev)
+{
+
+ if (!ofw_bus_is_compatible(dev, "nxp,tda998x"))
+ return (ENXIO);
+
+ return (BUS_PROBE_DEFAULT);
+}
+
+static void
+tda19988_init_encoder(struct tda19988_softc *sc, const struct videomode *mode)
+{
+ uint16_t ref_pix, ref_line, n_pix, n_line;
+ uint16_t hs_pix_start, hs_pix_stop;
+ uint16_t vs1_pix_start, vs1_pix_stop;
+ uint16_t vs1_line_start, vs1_line_end;
+ uint16_t vs2_pix_start, vs2_pix_stop;
+ uint16_t vs2_line_start, vs2_line_end;
+ uint16_t vwin1_line_start, vwin1_line_end;
+ uint16_t vwin2_line_start, vwin2_line_end;
+ uint16_t de_start, de_stop;
+ uint8_t reg, div;
+
+ n_pix = mode->htotal;
+ n_line = mode->vtotal;
+
+ hs_pix_stop = mode->hsync_end - mode->hdisplay;
+ hs_pix_start = mode->hsync_start - mode->hdisplay;
+
+ de_stop = mode->htotal;
+ de_start = mode->htotal - mode->hdisplay;
+ ref_pix = hs_pix_start + 3;
+
+ if (mode->flags & VID_HSKEW)
+ ref_pix += mode->hskew;
+
+ if ((mode->flags & VID_INTERLACE) == 0) {
+ ref_line = 1 + mode->vsync_start - mode->vdisplay;
+ vwin1_line_start = mode->vtotal - mode->vdisplay - 1;
+ vwin1_line_end = vwin1_line_start + mode->vdisplay;
+
+ vs1_pix_start = vs1_pix_stop = hs_pix_start;
+ vs1_line_start = mode->vsync_start - mode->vdisplay;
+ vs1_line_end = vs1_line_start + mode->vsync_end - mode->vsync_start;
+
+ vwin2_line_start = vwin2_line_end = 0;
+ vs2_pix_start = vs2_pix_stop = 0;
+ vs2_line_start = vs2_line_end = 0;
+ } else {
+ ref_line = 1 + (mode->vsync_start - mode->vdisplay)/2;
+ vwin1_line_start = (mode->vtotal - mode->vdisplay)/2;
+ vwin1_line_end = vwin1_line_start + mode->vdisplay/2;
+
+ vs1_pix_start = vs1_pix_stop = hs_pix_start;
+ vs1_line_start = (mode->vsync_start - mode->vdisplay)/2;
+ vs1_line_end = vs1_line_start + (mode->vsync_end - mode->vsync_start)/2;
+
+ vwin2_line_start = vwin1_line_start + mode->vtotal/2;
+ vwin2_line_end = vwin2_line_start + mode->vdisplay/2;
+
+ vs2_pix_start = vs2_pix_stop = hs_pix_start + mode->htotal/2;
+ vs2_line_start = vs1_line_start + mode->vtotal/2 ;
+ vs2_line_end = vs2_line_start + (mode->vsync_end - mode->vsync_start)/2;
+ }
+
+ div = 148500 / mode->dot_clock;
+ if (div != 0) {
+ div--;
+ if (div > 3)
+ div = 3;
+ }
+
+ /* set HDMI HDCP mode off */
+ tda19988_reg_set(sc, TDA_TBG_CNTRL_1, TBG_CNTRL_1_DWIN_DIS);
+ tda19988_reg_clear(sc, TDA_HDCP_TX33, HDCP_TX33_HDMI);
+ tda19988_reg_write(sc, TDA_ENC_CNTRL, ENC_CNTRL_DVI_MODE);
+
+ /* no pre-filter or interpolator */
+ tda19988_reg_write(sc, TDA_HVF_CNTRL_0,
+ HVF_CNTRL_0_INTPOL_BYPASS | HVF_CNTRL_0_PREFIL_NONE);
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_5, VIP_CNTRL_5_SP_CNT(0));
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_4,
+ VIP_CNTRL_4_BLANKIT_NDE | VIP_CNTRL_4_BLC_NONE);
+
+ tda19988_reg_clear(sc, TDA_PLL_SERIAL_3, PLL_SERIAL_3_SRL_CCIR);
+ tda19988_reg_clear(sc, TDA_PLL_SERIAL_1, PLL_SERIAL_1_SRL_MAN_IP);
+ tda19988_reg_clear(sc, TDA_PLL_SERIAL_3, PLL_SERIAL_3_SRL_DE);
+ tda19988_reg_write(sc, TDA_SERIALIZER, 0);
+ tda19988_reg_write(sc, TDA_HVF_CNTRL_1, HVF_CNTRL_1_VQR_FULL);
+
+ tda19988_reg_write(sc, TDA_RPT_CNTRL, 0);
+ tda19988_reg_write(sc, TDA_SEL_CLK, SEL_CLK_SEL_VRF_CLK(0) |
+ SEL_CLK_SEL_CLK1 | SEL_CLK_ENA_SC_CLK);
+
+ tda19988_reg_write(sc, TDA_PLL_SERIAL_2, PLL_SERIAL_2_SRL_NOSC(div) |
+ PLL_SERIAL_2_SRL_PR(0));
+
+ tda19988_reg_set(sc, TDA_MAT_CONTRL, MAT_CONTRL_MAT_BP);
+
+ tda19988_reg_write(sc, TDA_ANA_GENERAL, 0x09);
+
+ tda19988_reg_clear(sc, TDA_TBG_CNTRL_0, TBG_CNTRL_0_SYNC_MTHD);
+
+ /*
+ * Sync on rising HSYNC/VSYNC
+ */
+ reg = VIP_CNTRL_3_SYNC_HS;
+ if (mode->flags & VID_NHSYNC)
+ reg |= VIP_CNTRL_3_H_TGL;
+ if (mode->flags & VID_NVSYNC)
+ reg |= VIP_CNTRL_3_V_TGL;
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_3, reg);
+
+ reg = TBG_CNTRL_1_TGL_EN;
+ if (mode->flags & VID_NHSYNC)
+ reg |= TBG_CNTRL_1_H_TGL;
+ if (mode->flags & VID_NVSYNC)
+ reg |= TBG_CNTRL_1_V_TGL;
+ tda19988_reg_write(sc, TDA_TBG_CNTRL_1, reg);
+
+ /* Program timing */
+ tda19988_reg_write(sc, TDA_VIDFORMAT, 0x00);
+
+ tda19988_reg_write2(sc, TDA_REFPIX_MSB, ref_pix);
+ tda19988_reg_write2(sc, TDA_REFLINE_MSB, ref_line);
+ tda19988_reg_write2(sc, TDA_NPIX_MSB, n_pix);
+ tda19988_reg_write2(sc, TDA_NLINE_MSB, n_line);
+
+ tda19988_reg_write2(sc, TDA_VS_LINE_STRT_1_MSB, vs1_line_start);
+ tda19988_reg_write2(sc, TDA_VS_PIX_STRT_1_MSB, vs1_pix_start);
+ tda19988_reg_write2(sc, TDA_VS_LINE_END_1_MSB, vs1_line_end);
+ tda19988_reg_write2(sc, TDA_VS_PIX_END_1_MSB, vs1_pix_stop);
+ tda19988_reg_write2(sc, TDA_VS_LINE_STRT_2_MSB, vs2_line_start);
+ tda19988_reg_write2(sc, TDA_VS_PIX_STRT_2_MSB, vs2_pix_start);
+ tda19988_reg_write2(sc, TDA_VS_LINE_END_2_MSB, vs2_line_end);
+ tda19988_reg_write2(sc, TDA_VS_PIX_END_2_MSB, vs2_pix_stop);
+ tda19988_reg_write2(sc, TDA_HS_PIX_START_MSB, hs_pix_start);
+ tda19988_reg_write2(sc, TDA_HS_PIX_STOP_MSB, hs_pix_stop);
+ tda19988_reg_write2(sc, TDA_VWIN_START_1_MSB, vwin1_line_start);
+ tda19988_reg_write2(sc, TDA_VWIN_END_1_MSB, vwin1_line_end);
+ tda19988_reg_write2(sc, TDA_VWIN_START_2_MSB, vwin2_line_start);
+ tda19988_reg_write2(sc, TDA_VWIN_END_2_MSB, vwin2_line_end);
+ tda19988_reg_write2(sc, TDA_DE_START_MSB, de_start);
+ tda19988_reg_write2(sc, TDA_DE_STOP_MSB, de_stop);
+
+ if (sc->sc_version == TDA19988)
+ tda19988_reg_write(sc, TDA_ENABLE_SPACE, 0x00);
+
+ /* must be last register set */
+ tda19988_reg_clear(sc, TDA_TBG_CNTRL_0, TBG_CNTRL_0_SYNC_ONCE);
+}
+
+static int
+tda19988_read_edid_block(struct tda19988_softc *sc, uint8_t *buf, int block)
+{
+ int attempt, err;
+ uint8_t data;
+
+ err = 0;
+
+ tda19988_reg_set(sc, TDA_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
+
+ /* Block 0 */
+ tda19988_reg_write(sc, TDA_DDC_ADDR, 0xa0);
+ tda19988_reg_write(sc, TDA_DDC_OFFS, (block % 2) ? 128 : 0);
+ tda19988_reg_write(sc, TDA_DDC_SEGM_ADDR, 0x60);
+ tda19988_reg_write(sc, TDA_DDC_SEGM, block / 2);
+
+ tda19988_reg_write(sc, TDA_EDID_CTRL, 1);
+ tda19988_reg_write(sc, TDA_EDID_CTRL, 0);
+
+ data = 0;
+ for (attempt = 0; attempt < MAX_READ_ATTEMPTS; attempt++) {
+ tda19988_reg_read(sc, TDA_INT_FLAGS_2, &data);
+ if (data & INT_FLAGS_2_EDID_BLK_RD)
+ break;
+ pause("EDID", 1);
+ }
+
+ if (attempt == MAX_READ_ATTEMPTS) {
+ err = -1;
+ goto done;
+ }
+
+ if (tda19988_block_read(sc, TDA_EDID_DATA0, buf, EDID_LENGTH) != 0) {
+ err = -1;
+ goto done;
+ }
+
+done:
+ tda19988_reg_clear(sc, TDA_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
+
+ return (err);
+}
+
+static int
+tda19988_read_edid(struct tda19988_softc *sc)
+{
+ int err;
+ int blocks, i;
+ uint8_t *buf;
+
+ err = 0;
+ if (sc->sc_version == TDA19988)
+ tda19988_reg_clear(sc, TDA_TX4, TX4_PD_RAM);
+
+ err = tda19988_read_edid_block(sc, sc->sc_edid, 0);
+ if (err)
+ goto done;
+
+ blocks = sc->sc_edid[0x7e];
+ if (blocks > 0) {
+ sc->sc_edid = realloc(sc->sc_edid,
+ EDID_LENGTH*(blocks+1), M_DEVBUF, M_WAITOK);
+ sc->sc_edid_len = EDID_LENGTH*(blocks+1);
+ for (i = 0; i < blocks; i++) {
+ /* TODO: check validity */
+ buf = sc->sc_edid + EDID_LENGTH*(i+1);
+ err = tda19988_read_edid_block(sc, buf, i);
+ if (err)
+ goto done;
+ }
+ }
+
+ EVENTHANDLER_INVOKE(hdmi_event, 0);
+done:
+ if (sc->sc_version == TDA19988)
+ tda19988_reg_set(sc, TDA_TX4, TX4_PD_RAM);
+
+ return (err);
+}
+
+static void
+tda19988_start(void *xdev)
+{
+ struct tda19988_softc *sc;
+ device_t dev = (device_t)xdev;
+ uint8_t data;
+ uint16_t version;
+
+ sc = device_get_softc(dev);
+
+ tda19988_cec_write(sc, TDA_CEC_ENAMODS, ENAMODS_RXSENS | ENAMODS_HDMI);
+ DELAY(1000);
+ tda19988_cec_read(sc, 0xfe, &data);
+
+ /* Reset core */
+ tda19988_reg_set(sc, TDA_SOFTRESET, 3);
+ DELAY(100);
+ tda19988_reg_clear(sc, TDA_SOFTRESET, 3);
+ DELAY(100);
+
+ /* reset transmitter: */
+ tda19988_reg_set(sc, TDA_MAIN_CNTRL0, MAIN_CNTRL0_SR);
+ tda19988_reg_clear(sc, TDA_MAIN_CNTRL0, MAIN_CNTRL0_SR);
+
+ /* PLL registers common configuration */
+ tda19988_reg_write(sc, TDA_PLL_SERIAL_1, 0x00);
+ tda19988_reg_write(sc, TDA_PLL_SERIAL_2, PLL_SERIAL_2_SRL_NOSC(1));
+ tda19988_reg_write(sc, TDA_PLL_SERIAL_3, 0x00);
+ tda19988_reg_write(sc, TDA_SERIALIZER, 0x00);
+ tda19988_reg_write(sc, TDA_BUFFER_OUT, 0x00);
+ tda19988_reg_write(sc, TDA_PLL_SCG1, 0x00);
+ tda19988_reg_write(sc, TDA_SEL_CLK, SEL_CLK_SEL_CLK1 | SEL_CLK_ENA_SC_CLK);
+ tda19988_reg_write(sc, TDA_PLL_SCGN1, 0xfa);
+ tda19988_reg_write(sc, TDA_PLL_SCGN2, 0x00);
+ tda19988_reg_write(sc, TDA_PLL_SCGR1, 0x5b);
+ tda19988_reg_write(sc, TDA_PLL_SCGR2, 0x00);
+ tda19988_reg_write(sc, TDA_PLL_SCG2, 0x10);
+
+ /* Write the default value MUX register */
+ tda19988_reg_write(sc, TDA_MUX_VP_VIP_OUT, 0x24);
+
+ version = 0;
+ tda19988_reg_read(sc, TDA_VERSION, &data);
+ version |= data;
+ tda19988_reg_read(sc, TDA_VERSION_MSB, &data);
+ version |= (data << 8);
+
+ /* Clear feature bits */
+ sc->sc_version = version & ~0x30;
+ switch (sc->sc_version) {
+ case TDA19988:
+ device_printf(dev, "TDA19988\n");
+ break;
+ default:
+ device_printf(dev, "Unknown device: %04x\n", sc->sc_version);
+ goto done;
+ }
+
+ tda19988_reg_write(sc, TDA_DDC_CTRL, DDC_ENABLE);
+ tda19988_reg_write(sc, TDA_TX3, 39);
+
+ tda19988_cec_write(sc, TDA_CEC_FRO_IM_CLK_CTRL,
+ CEC_FRO_IM_CLK_CTRL_GHOST_DIS | CEC_FRO_IM_CLK_CTRL_IMCLK_SEL);
+
+ if (tda19988_read_edid(sc) < 0) {
+ device_printf(dev, "failed to read EDID\n");
+ goto done;
+ }
+
+ /* Default values for RGB 4:4:4 mapping */
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_0, 0x23);
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_1, 0x45);
+ tda19988_reg_write(sc, TDA_VIP_CNTRL_2, 0x01);
+
+done:
+ config_intrhook_disestablish(&sc->enum_hook);
+}
+
+static int
+tda19988_attach(device_t dev)
+{
+ struct tda19988_softc *sc;
+ phandle_t node;
+
+ sc = device_get_softc(dev);
+
+ sc->sc_dev = dev;
+ sc->sc_addr = iicbus_get_addr(dev) << 1;
+ sc->sc_cec_addr = (0x34 << 1); /* hardcoded */
+ sc->sc_edid = malloc(EDID_LENGTH, M_DEVBUF, M_WAITOK | M_ZERO);
+ sc->sc_edid_len = EDID_LENGTH;
+
+ device_set_desc(dev, "NXP TDA19988 HDMI transmitter");
+
+ sc->enum_hook.ich_func = tda19988_start;
+ sc->enum_hook.ich_arg = dev;
+
+ if (config_intrhook_establish(&sc->enum_hook) != 0)
+ return (ENOMEM);
+
+ node = ofw_bus_get_node(dev);
+ OF_device_register_xref(OF_xref_from_node(node), dev);
+
+ return (0);
+}
+
+static int
+tda19988_detach(device_t dev)
+{
+
+ /* XXX: Do not let unload drive */
+ return (EBUSY);
+}
+
+static int
+tda19988_get_edid(device_t dev, uint8_t **edid, uint32_t *edid_len)
+{
+ struct tda19988_softc *sc;
+
+ sc = device_get_softc(dev);
+
+ if (sc->sc_edid) {
+ *edid = sc->sc_edid;
+ *edid_len = sc->sc_edid_len;
+ } else
+ return (ENXIO);
+
+ return (0);
+}
+
+static int
+tda19988_set_videomode(device_t dev, const struct videomode *mode)
+{
+ struct tda19988_softc *sc;
+
+ sc = device_get_softc(dev);
+
+ tda19988_init_encoder(sc, mode);
+
+ return (0);
+}
+
+static device_method_t tda_methods[] = {
+ DEVMETHOD(device_probe, tda19988_probe),
+ DEVMETHOD(device_attach, tda19988_attach),
+ DEVMETHOD(device_detach, tda19988_detach),
+
+ /* HDMI methods */
+ DEVMETHOD(hdmi_get_edid, tda19988_get_edid),
+ DEVMETHOD(hdmi_set_videomode, tda19988_set_videomode),
+ {0, 0},
+};
+
+static driver_t tda_driver = {
+ "tda",
+ tda_methods,
+ sizeof(struct tda19988_softc),
+};
+
+static devclass_t tda_devclass;
+
+DRIVER_MODULE(tda, iicbus, tda_driver, tda_devclass, 0, 0);
+MODULE_VERSION(tda, 1);
+MODULE_DEPEND(tda, iicbus, 1, 1, 1);
diff --git a/sys/arm/ti/am335x/tps65217x.h b/sys/arm/ti/am335x/tps65217x.h
index 96f16dd..cdeca25 100644
--- a/sys/arm/ti/am335x/tps65217x.h
+++ b/sys/arm/ti/am335x/tps65217x.h
@@ -34,7 +34,7 @@
* TPS65217 PMIC is a companion chip for AM335x SoC sitting on I2C bus
*/
-/* TPS65217 Reisters */
+/* TPS65217 Registers */
#define TPS65217_CHIPID_REG 0x00
struct tps65217_chipid_reg {
unsigned int rev:4;
diff --git a/sys/arm/ti/omap4/omap4_prcm_clks.c b/sys/arm/ti/omap4/omap4_prcm_clks.c
index 8b1cb6e..fc5fb97 100644
--- a/sys/arm/ti/omap4/omap4_prcm_clks.c
+++ b/sys/arm/ti/omap4/omap4_prcm_clks.c
@@ -217,7 +217,8 @@ static int omap4_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int
.clk_deactivate = omap4_clk_generic_deactivate, \
.clk_set_source = omap4_clk_generic_set_source, \
.clk_accessible = omap4_clk_generic_accessible, \
- .clk_get_source_freq = omap4_clk_generic_get_source_freq \
+ .clk_get_source_freq = omap4_clk_generic_get_source_freq, \
+ .clk_set_source_freq = NULL \
}
#define OMAP4_GPTIMER_CLOCK_DEV(i) \
@@ -226,7 +227,8 @@ static int omap4_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int
.clk_deactivate = omap4_clk_generic_deactivate, \
.clk_set_source = omap4_clk_gptimer_set_source, \
.clk_accessible = omap4_clk_generic_accessible, \
- .clk_get_source_freq = omap4_clk_gptimer_get_source_freq \
+ .clk_get_source_freq = omap4_clk_gptimer_get_source_freq, \
+ .clk_set_source_freq = NULL \
}
#define OMAP4_HSMMC_CLOCK_DEV(i) \
@@ -235,7 +237,8 @@ static int omap4_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int
.clk_deactivate = omap4_clk_generic_deactivate, \
.clk_set_source = omap4_clk_hsmmc_set_source, \
.clk_accessible = omap4_clk_generic_accessible, \
- .clk_get_source_freq = omap4_clk_hsmmc_get_source_freq \
+ .clk_get_source_freq = omap4_clk_hsmmc_get_source_freq, \
+ .clk_set_source_freq = NULL \
}
#define OMAP4_HSUSBHOST_CLOCK_DEV(i) \
@@ -244,7 +247,8 @@ static int omap4_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int
.clk_deactivate = omap4_clk_hsusbhost_deactivate, \
.clk_set_source = omap4_clk_hsusbhost_set_source, \
.clk_accessible = omap4_clk_hsusbhost_accessible, \
- .clk_get_source_freq = NULL \
+ .clk_get_source_freq = NULL, \
+ .clk_set_source_freq = NULL \
}
@@ -257,6 +261,7 @@ struct ti_clock_dev ti_omap4_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = omap4_clk_get_sysclk_freq,
+ .clk_set_source_freq = NULL,
},
/* MPU (ARM) core clocks */
{ .id = MPU_CLK,
@@ -265,6 +270,7 @@ struct ti_clock_dev ti_omap4_clk_devmap[] = {
.clk_set_source = NULL,
.clk_accessible = NULL,
.clk_get_source_freq = omap4_clk_get_arm_fclk_freq,
+ .clk_set_source_freq = NULL,
},
diff --git a/sys/arm/ti/ti_prcm.c b/sys/arm/ti/ti_prcm.c
index 3c073f9..c5ab9c7 100644
--- a/sys/arm/ti/ti_prcm.c
+++ b/sys/arm/ti/ti_prcm.c
@@ -285,7 +285,7 @@ ti_prcm_clk_set_source(clk_ident_t clk, clk_src_t clksrc)
* @clk: identifier for the module to enable, see ti_prcm.h for a list
* of possible modules.
* @freq: pointer to an integer that upon return will contain the src freq
- *
+ *
* This function returns the frequency of the source clock.
*
* The real work done to enable the clock is really done in the callback
@@ -319,6 +319,39 @@ ti_prcm_clk_get_source_freq(clk_ident_t clk, unsigned int *freq)
ret = clk_dev->clk_get_source_freq(clk_dev, freq);
else
ret = EINVAL;
-
+
+ return (ret);
+}
+
+/**
+ * ti_prcm_clk_set_source_freq - sets the source clock frequency as close to freq as possible
+ * @clk: identifier for the module to enable, see ti_prcm.h for a list
+ * of possible modules.
+ * @freq: requested freq
+ *
+ * LOCKING:
+ * Internally locks the driver context.
+ *
+ * RETURNS:
+ * Returns 0 on success or positive error code on failure.
+ */
+int
+ti_prcm_clk_set_source_freq(clk_ident_t clk, unsigned int freq)
+{
+ struct ti_clock_dev *clk_dev;
+ int ret;
+
+ clk_dev = ti_prcm_clk_dev(clk);
+
+ /* Sanity check we managed to find the clock */
+ if (clk_dev == NULL)
+ return (EINVAL);
+
+ /* Get the source frequency of the clock */
+ if (clk_dev->clk_set_source_freq)
+ ret = clk_dev->clk_set_source_freq(clk_dev, freq);
+ else
+ ret = EINVAL;
+
return (ret);
}
diff --git a/sys/arm/ti/ti_prcm.h b/sys/arm/ti/ti_prcm.h
index eaea990..c40439a 100644
--- a/sys/arm/ti/ti_prcm.h
+++ b/sys/arm/ti/ti_prcm.h
@@ -184,6 +184,8 @@ struct ti_clock_dev {
int (*clk_set_source)(struct ti_clock_dev *clkdev,
clk_src_t clksrc);
int (*clk_accessible)(struct ti_clock_dev *clkdev);
+ int (*clk_set_source_freq)(struct ti_clock_dev *clkdev,
+ unsigned int freq);
int (*clk_get_source_freq)(struct ti_clock_dev *clkdev,
unsigned int *freq);
};
@@ -194,6 +196,7 @@ int ti_prcm_clk_disable(clk_ident_t clk);
int ti_prcm_clk_accessible(clk_ident_t clk);
int ti_prcm_clk_disable_autoidle(clk_ident_t clk);
int ti_prcm_clk_set_source(clk_ident_t clk, clk_src_t clksrc);
+int ti_prcm_clk_set_source_freq(clk_ident_t clk, unsigned int freq);
int ti_prcm_clk_get_source_freq(clk_ident_t clk, unsigned int *freq);
void ti_prcm_reset(void);
diff --git a/sys/arm64/acpica/OsdEnvironment.c b/sys/arm64/acpica/OsdEnvironment.c
new file mode 100644
index 0000000..79dc212
--- /dev/null
+++ b/sys/arm64/acpica/OsdEnvironment.c
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2000,2001 Michael Smith
+ * Copyright (c) 2000 BSDi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/bus.h>
+#include <sys/sysctl.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/actables.h>
+
+static u_long acpi_root_phys;
+
+SYSCTL_ULONG(_machdep, OID_AUTO, acpi_root, CTLFLAG_RD, &acpi_root_phys, 0,
+ "The physical address of the RSDP");
+
+ACPI_STATUS
+AcpiOsInitialize(void)
+{
+
+ return (AE_OK);
+}
+
+ACPI_STATUS
+AcpiOsTerminate(void)
+{
+
+ return (AE_OK);
+}
+
+static u_long
+acpi_get_root_from_loader(void)
+{
+ long acpi_root;
+
+ if (resource_long_value("acpi", 0, "rsdp", &acpi_root) == 0)
+ return (acpi_root);
+
+ return (0);
+}
+
+ACPI_PHYSICAL_ADDRESS
+AcpiOsGetRootPointer(void)
+{
+
+ if (acpi_root_phys == 0)
+ acpi_root_phys = acpi_get_root_from_loader();
+
+ return (acpi_root_phys);
+}
diff --git a/sys/arm64/acpica/acpi_machdep.c b/sys/arm64/acpica/acpi_machdep.c
new file mode 100644
index 0000000..da07cfc
--- /dev/null
+++ b/sys/arm64/acpica/acpi_machdep.c
@@ -0,0 +1,217 @@
+/*-
+ * Copyright (c) 2001 Mitsuru IWASAKI
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+#include <contrib/dev/acpica/include/actables.h>
+
+#include <dev/acpica/acpivar.h>
+
+int
+acpi_machdep_init(device_t dev)
+{
+
+ return (0);
+}
+
+int
+acpi_machdep_quirks(int *quirks)
+{
+
+ return (0);
+}
+
+static void *
+map_table(vm_paddr_t pa, int offset, const char *sig)
+{
+ ACPI_TABLE_HEADER *header;
+ vm_offset_t length;
+ void *table;
+
+ header = pmap_mapbios(pa, sizeof(ACPI_TABLE_HEADER));
+ if (strncmp(header->Signature, sig, ACPI_NAME_SIZE) != 0) {
+ pmap_unmapbios((vm_offset_t)header, sizeof(ACPI_TABLE_HEADER));
+ return (NULL);
+ }
+ length = header->Length;
+ pmap_unmapbios((vm_offset_t)header, sizeof(ACPI_TABLE_HEADER));
+
+ table = pmap_mapbios(pa, length);
+ if (ACPI_FAILURE(AcpiTbChecksum(table, length))) {
+ if (bootverbose)
+ printf("ACPI: Failed checksum for table %s\n", sig);
+#if (ACPI_CHECKSUM_ABORT)
+ pmap_unmapbios(table, length);
+ return (NULL);
+#endif
+ }
+ return (table);
+}
+
+/*
+ * See if a given ACPI table is the requested table. Returns the
+ * length of the able if it matches or zero on failure.
+ */
+static int
+probe_table(vm_paddr_t address, const char *sig)
+{
+ ACPI_TABLE_HEADER *table;
+
+ table = pmap_mapbios(address, sizeof(ACPI_TABLE_HEADER));
+ if (table == NULL) {
+ if (bootverbose)
+ printf("ACPI: Failed to map table at 0x%jx\n",
+ (uintmax_t)address);
+ return (0);
+ }
+ if (bootverbose)
+ printf("Table '%.4s' at 0x%jx\n", table->Signature,
+ (uintmax_t)address);
+
+ if (strncmp(table->Signature, sig, ACPI_NAME_SIZE) != 0) {
+ pmap_unmapbios((vm_offset_t)table, sizeof(ACPI_TABLE_HEADER));
+ return (0);
+ }
+ pmap_unmapbios((vm_offset_t)table, sizeof(ACPI_TABLE_HEADER));
+ return (1);
+}
+
+/* Unmap a table previously mapped via acpi_map_table(). */
+void
+acpi_unmap_table(void *table)
+{
+ ACPI_TABLE_HEADER *header;
+
+ header = (ACPI_TABLE_HEADER *)table;
+ pmap_unmapbios((vm_offset_t)table, header->Length);
+}
+
+/*
+ * Try to map a table at a given physical address previously returned
+ * by acpi_find_table().
+ */
+void *
+acpi_map_table(vm_paddr_t pa, const char *sig)
+{
+
+ return (map_table(pa, 0, sig));
+}
+
+/*
+ * Return the physical address of the requested table or zero if one
+ * is not found.
+ */
+vm_paddr_t
+acpi_find_table(const char *sig)
+{
+ ACPI_PHYSICAL_ADDRESS rsdp_ptr;
+ ACPI_TABLE_RSDP *rsdp;
+ ACPI_TABLE_XSDT *xsdt;
+ ACPI_TABLE_HEADER *table;
+ vm_paddr_t addr;
+ int i, count;
+
+ if (resource_disabled("acpi", 0))
+ return (0);
+
+ /*
+ * Map in the RSDP. Since ACPI uses AcpiOsMapMemory() which in turn
+ * calls pmap_mapbios() to find the RSDP, we assume that we can use
+ * pmap_mapbios() to map the RSDP.
+ */
+ if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)
+ return (0);
+ rsdp = pmap_mapbios(rsdp_ptr, sizeof(ACPI_TABLE_RSDP));
+ if (rsdp == NULL) {
+ if (bootverbose)
+ printf("ACPI: Failed to map RSDP\n");
+ return (0);
+ }
+
+ addr = 0;
+ if (rsdp->Revision >= 2 && rsdp->XsdtPhysicalAddress != 0) {
+ /*
+ * AcpiOsGetRootPointer only verifies the checksum for
+ * the version 1.0 portion of the RSDP. Version 2.0 has
+ * an additional checksum that we verify first.
+ */
+ if (AcpiTbChecksum((UINT8 *)rsdp, ACPI_RSDP_XCHECKSUM_LENGTH)) {
+ if (bootverbose)
+ printf("ACPI: RSDP failed extended checksum\n");
+ return (0);
+ }
+ xsdt = map_table(rsdp->XsdtPhysicalAddress, 2, ACPI_SIG_XSDT);
+ if (xsdt == NULL) {
+ if (bootverbose)
+ printf("ACPI: Failed to map XSDT\n");
+ pmap_unmapbios((vm_offset_t)rsdp,
+ sizeof(ACPI_TABLE_RSDP));
+ return (0);
+ }
+ count = (xsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) /
+ sizeof(UINT64);
+ for (i = 0; i < count; i++)
+ if (probe_table(xsdt->TableOffsetEntry[i], sig)) {
+ addr = xsdt->TableOffsetEntry[i];
+ break;
+ }
+ acpi_unmap_table(xsdt);
+ }
+ pmap_unmapbios((vm_offset_t)rsdp, sizeof(ACPI_TABLE_RSDP));
+
+ if (addr == 0) {
+ if (bootverbose)
+ printf("ACPI: No %s table found\n", sig);
+ return (0);
+ }
+ if (bootverbose)
+ printf("%s: Found table at 0x%jx\n", sig, (uintmax_t)addr);
+
+ /*
+ * Verify that we can map the full table and that its checksum is
+ * correct, etc.
+ */
+ table = map_table(addr, 0, sig);
+ if (table == NULL)
+ return (0);
+ acpi_unmap_table(table);
+
+ return (addr);
+}
diff --git a/sys/arm64/acpica/acpi_wakeup.c b/sys/arm64/acpica/acpi_wakeup.c
new file mode 100644
index 0000000..7724fdd
--- /dev/null
+++ b/sys/arm64/acpica/acpi_wakeup.c
@@ -0,0 +1,61 @@
+/*-
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+
+/*
+ * ARM64TODO: Implement this.
+ */
+int
+acpi_sleep_machdep(struct acpi_softc *sc, int state)
+{
+
+ return (-1);
+}
+
+int
+acpi_wakeup_machdep(struct acpi_softc *sc, int state, int sleep_result,
+ int intr_enabled)
+{
+
+ /* ARM64TODO: We will need this with acpi_sleep_machdep */
+ KASSERT(sleep_result == -1,
+ ("acpi_wakeup_machdep: Invalid sleep result"));
+
+ return (sleep_result);
+}
diff --git a/sys/arm64/arm64/db_interface.c b/sys/arm64/arm64/db_interface.c
index 38834af..e40802f 100644
--- a/sys/arm64/arm64/db_interface.c
+++ b/sys/arm64/arm64/db_interface.c
@@ -156,13 +156,11 @@ db_write_bytes(vm_offset_t addr, size_t size, char *data)
}
*dst++ = *data++;
}
+ dsb(ish);
- dsb();
/* Clean D-cache and invalidate I-cache */
cpu_dcache_wb_range(addr, (vm_size_t)size);
cpu_icache_sync_range(addr, (vm_size_t)size);
- dsb();
- isb();
return (0);
}
diff --git a/sys/arm64/arm64/db_trace.c b/sys/arm64/arm64/db_trace.c
index 1e89bac..c606377 100644
--- a/sys/arm64/arm64/db_trace.c
+++ b/sys/arm64/arm64/db_trace.c
@@ -38,12 +38,7 @@ __FBSDID("$FreeBSD$");
#include <machine/armreg.h>
#include <machine/debug_monitor.h>
-
-struct unwind_state {
- uint64_t fp;
- uint64_t sp;
- uint64_t pc;
-};
+#include <machine/stack.h>
void
db_md_list_watchpoints()
@@ -67,22 +62,6 @@ db_md_set_watchpoint(db_expr_t addr, db_expr_t size)
HW_BREAKPOINT_RW));
}
-static int
-db_unwind_frame(struct unwind_state *frame)
-{
- uint64_t fp = frame->fp;
-
- if (fp == 0)
- return -1;
-
- frame->sp = fp + 0x10;
- /* FP to previous frame (X29) */
- frame->fp = *(uint64_t *)(fp);
- /* LR (X30) */
- frame->pc = *(uint64_t *)(fp + 8) - 4;
- return (0);
-}
-
static void
db_stack_trace_cmd(struct unwind_state *frame)
{
@@ -95,7 +74,7 @@ db_stack_trace_cmd(struct unwind_state *frame)
uint64_t pc = frame->pc;
int ret;
- ret = db_unwind_frame(frame);
+ ret = unwind_frame(frame);
if (ret < 0)
break;
diff --git a/sys/arm64/arm64/gic.c b/sys/arm64/arm64/gic.c
index 59fac99..7c0692e 100644
--- a/sys/arm64/arm64/gic.c
+++ b/sys/arm64/arm64/gic.c
@@ -51,11 +51,7 @@ __FBSDID("$FreeBSD$");
#include <machine/intr.h>
#include <machine/smp.h>
-#include <dev/fdt/fdt_common.h>
-#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_bus.h>
-#include <dev/ofw/ofw_bus_subr.h>
-
+#include <arm64/arm64/gic.h>
#include "pic_if.h"
@@ -102,18 +98,6 @@ __FBSDID("$FreeBSD$");
#define GICD_ICFGR_TRIG_EDGE (1 << 1)
#define GICD_ICFGR_TRIG_MASK 0x2
-struct arm_gic_softc {
- device_t gic_dev;
- struct resource * gic_res[3];
- bus_space_tag_t gic_c_bst;
- bus_space_tag_t gic_d_bst;
- bus_space_handle_t gic_c_bsh;
- bus_space_handle_t gic_d_bsh;
- uint8_t ver;
- struct mtx mutex;
- uint32_t nirqs;
-};
-
static struct resource_spec arm_gic_spec[] = {
{ SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Distributor registers */
{ SYS_RES_MEMORY, 1, RF_ACTIVE }, /* CPU Interrupt Intf. registers */
@@ -136,31 +120,6 @@ static pic_eoi_t gic_eoi;
static pic_mask_t gic_mask_irq;
static pic_unmask_t gic_unmask_irq;
-static struct ofw_compat_data compat_data[] = {
- {"arm,gic", true}, /* Non-standard, used in FreeBSD dts. */
- {"arm,gic-400", true},
- {"arm,cortex-a15-gic", true},
- {"arm,cortex-a9-gic", true},
- {"arm,cortex-a7-gic", true},
- {"arm,arm11mp-gic", true},
- {"brcm,brahma-b15-gic", true},
- {NULL, false}
-};
-
-static int
-arm_gic_probe(device_t dev)
-{
-
- if (!ofw_bus_status_okay(dev))
- return (ENXIO);
-
- if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
- return (ENXIO);
-
- device_set_desc(dev, "ARM Generic Interrupt Controller");
- return (BUS_PROBE_DEFAULT);
-}
-
#ifdef SMP
static void
gic_init_secondary(device_t dev)
@@ -367,7 +326,6 @@ arm_gic_ipi_clear(device_t dev, int ipi)
static device_method_t arm_gic_methods[] = {
/* Device interface */
- DEVMETHOD(device_probe, arm_gic_probe),
DEVMETHOD(device_attach, arm_gic_attach),
/* pic_if */
@@ -384,15 +342,5 @@ static device_method_t arm_gic_methods[] = {
{ 0, 0 }
};
-static driver_t arm_gic_driver = {
- "gic",
- arm_gic_methods,
- sizeof(struct arm_gic_softc),
-};
-
-static devclass_t arm_gic_devclass;
-
-EARLY_DRIVER_MODULE(gic, simplebus, arm_gic_driver, arm_gic_devclass, 0, 0,
- BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
-EARLY_DRIVER_MODULE(gic, ofwbus, arm_gic_driver, arm_gic_devclass, 0, 0,
- BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
+DEFINE_CLASS_0(gic, arm_gic_driver, arm_gic_methods,
+ sizeof(struct arm_gic_softc));
diff --git a/usr.bin/make/pathnames.h b/sys/arm64/arm64/gic.h
index 5fb4ceb..2660884 100644
--- a/usr.bin/make/pathnames.h
+++ b/sys/arm64/arm64/gic.h
@@ -1,6 +1,11 @@
/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 2011 The FreeBSD Foundation
+ * Copyright (c) 2014 Andrew Turner
+ * All rights reserved.
+ *
+ * Developed by Damjan Marion <damjan.marion@gmail.com>
+ *
+ * Based on OMAP4 GIC code by Ben Gray
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -10,14 +15,14 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * 3. The name of the company nor the name of the author may be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -26,31 +31,24 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)pathnames.h 8.2 (Berkeley) 4/28/95
* $FreeBSD$
*/
-#ifndef pathnames_h_235b888a
-#define pathnames_h_235b888a
-
-#ifndef PATH_OBJDIR
-#define PATH_OBJDIR "obj"
-#endif /* ! PATH_OBJDIR */
-
-#ifndef PATH_OBJDIRPREFIX
-#define PATH_OBJDIRPREFIX "/usr/obj"
-#endif /* ! PATH_OBJDIRPREFIX */
-
-#ifndef PATH_DEFSHELLDIR
-#define PATH_DEFSHELLDIR "/bin"
-#endif /* ! PATH_DEFSHELLDIR */
+#ifndef _ARM64_GIC_H_
+#define _ARM64_GIC_H_
-#ifndef PATH_DEFSYSMK
-#define PATH_DEFSYSMK "sys.mk"
-#endif /* ! PATH_DEFSYSMK */
+DECLARE_CLASS(arm_gic_driver);
-#ifndef PATH_DEFSYSPATH
-#define PATH_DEFSYSPATH "/usr/share/mk"
-#endif /* ! PATH_DEFSYSPATH */
+struct arm_gic_softc {
+ device_t gic_dev;
+ struct resource * gic_res[3];
+ bus_space_tag_t gic_c_bst;
+ bus_space_tag_t gic_d_bst;
+ bus_space_handle_t gic_c_bsh;
+ bus_space_handle_t gic_d_bsh;
+ uint8_t ver;
+ struct mtx mutex;
+ uint32_t nirqs;
+};
-#endif /* pathnames_h_235b888a */
+#endif
diff --git a/sys/arm64/arm64/gic_acpi.c b/sys/arm64/arm64/gic_acpi.c
new file mode 100644
index 0000000..ad26c0c
--- /dev/null
+++ b/sys/arm64/arm64/gic_acpi.c
@@ -0,0 +1,161 @@
+/*-
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+
+#include <machine/bus.h>
+
+#include <arm64/arm64/gic.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+
+struct arm_gic_acpi_softc {
+ struct arm_gic_softc gic_sc;
+ struct resource_list res;
+};
+
+struct madt_table_data {
+ device_t parent;
+ ACPI_MADT_GENERIC_DISTRIBUTOR *dist;
+ ACPI_MADT_GENERIC_INTERRUPT *intr;
+};
+
+static void
+madt_handler(ACPI_SUBTABLE_HEADER *entry, void *arg)
+{
+ struct madt_table_data *madt_data;
+
+ madt_data = (struct madt_table_data *)arg;
+
+ switch(entry->Type) {
+ case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
+ if (madt_data->intr != NULL) {
+ if (bootverbose)
+ device_printf(madt_data->parent,
+ "gic: Already have an interrupt table");
+ break;
+ }
+
+ madt_data->intr = (ACPI_MADT_GENERIC_INTERRUPT *)entry;
+ break;
+
+ case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
+ if (madt_data->dist != NULL) {
+ if (bootverbose)
+ device_printf(madt_data->parent,
+ "gic: Already have a distributor table");
+ break;
+ }
+
+ madt_data->dist = (ACPI_MADT_GENERIC_DISTRIBUTOR *)entry;
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void
+arm_gic_acpi_identify(driver_t *driver, device_t parent)
+{
+ struct madt_table_data madt_data;
+ ACPI_TABLE_MADT *madt;
+ vm_paddr_t physaddr;
+ device_t dev;
+
+ physaddr = acpi_find_table(ACPI_SIG_MADT);
+ if (physaddr == 0)
+ return;
+
+ madt = acpi_map_table(physaddr, ACPI_SIG_MADT);
+ if (madt == NULL) {
+ device_printf(parent, "gic: Unable to map the MADT\n");
+ return;
+ }
+
+ madt_data.parent = parent;
+ madt_data.dist = NULL;
+ madt_data.intr = NULL;
+
+ acpi_walk_subtables(madt + 1, (char *)madt + madt->Header.Length,
+ madt_handler, &madt_data);
+ if (madt_data.intr == NULL || madt_data.dist == NULL) {
+ device_printf(parent,
+ "No gic interrupt or distributor table\n");
+ goto out;
+ }
+
+ dev = BUS_ADD_CHILD(parent, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE,
+ "gic", -1);
+ if (dev == NULL) {
+ device_printf(parent, "add gic child failed\n");
+ goto out;
+ }
+
+ /* Add the MADT data */
+ BUS_SET_RESOURCE(parent, dev, SYS_RES_MEMORY, 0,
+ madt_data.dist->BaseAddress, PAGE_SIZE);
+ BUS_SET_RESOURCE(parent, dev, SYS_RES_MEMORY, 1,
+ madt_data.intr->BaseAddress, PAGE_SIZE);
+
+out:
+ acpi_unmap_table(madt);
+}
+
+static int
+arm_gic_acpi_probe(device_t dev)
+{
+
+ device_set_desc(dev, "ARM Generic Interrupt Controller");
+ return (BUS_PROBE_NOWILDCARD);
+}
+
+static device_method_t arm_gic_acpi_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_identify, arm_gic_acpi_identify),
+ DEVMETHOD(device_probe, arm_gic_acpi_probe),
+
+ DEVMETHOD_END
+};
+
+DEFINE_CLASS_1(gic, arm_gic_acpi_driver, arm_gic_acpi_methods,
+ sizeof(struct arm_gic_acpi_softc), arm_gic_driver);
+
+static devclass_t arm_gic_acpi_devclass;
+
+EARLY_DRIVER_MODULE(gic, acpi, arm_gic_acpi_driver,
+ arm_gic_acpi_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
diff --git a/sys/arm64/arm64/gic_fdt.c b/sys/arm64/arm64/gic_fdt.c
new file mode 100644
index 0000000..5b70624
--- /dev/null
+++ b/sys/arm64/arm64/gic_fdt.c
@@ -0,0 +1,87 @@
+/*-
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+
+#include <machine/bus.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <arm64/arm64/gic.h>
+
+static struct ofw_compat_data compat_data[] = {
+ {"arm,gic", true}, /* Non-standard, used in FreeBSD dts. */
+ {"arm,gic-400", true},
+ {"arm,cortex-a15-gic", true},
+ {"arm,cortex-a9-gic", true},
+ {"arm,cortex-a7-gic", true},
+ {"arm,arm11mp-gic", true},
+ {"brcm,brahma-b15-gic", true},
+ {NULL, false}
+};
+
+static int
+arm_gic_fdt_probe(device_t dev)
+{
+
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
+
+ if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
+ return (ENXIO);
+
+ device_set_desc(dev, "ARM Generic Interrupt Controller");
+ return (BUS_PROBE_DEFAULT);
+}
+
+static device_method_t arm_gic_fdt_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, arm_gic_fdt_probe),
+
+ DEVMETHOD_END
+};
+
+DEFINE_CLASS_1(gic, arm_gic_fdt_driver, arm_gic_fdt_methods,
+ sizeof(struct arm_gic_softc), arm_gic_driver);
+
+static devclass_t arm_gic_fdt_devclass;
+
+EARLY_DRIVER_MODULE(gic, simplebus, arm_gic_fdt_driver,
+ arm_gic_fdt_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
+EARLY_DRIVER_MODULE(gic, ofwbus, arm_gic_fdt_driver, arm_gic_fdt_devclass,
+ 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c
index 221b138..c36769d 100644
--- a/sys/arm64/arm64/machdep.c
+++ b/sys/arm64/arm64/machdep.c
@@ -392,6 +392,8 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate)
void
cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size)
{
+
+ pcpu->pc_acpi_id = 0xffffffff;
}
void
diff --git a/sys/arm64/arm64/nexus.c b/sys/arm64/arm64/nexus.c
index d6c6d2b..764012e 100644
--- a/sys/arm64/arm64/nexus.c
+++ b/sys/arm64/arm64/nexus.c
@@ -60,12 +60,17 @@ __FBSDID("$FreeBSD$");
#include <machine/resource.h>
#include <machine/intr.h>
+#include "opt_acpi.h"
#include "opt_platform.h"
#ifdef FDT
#include <dev/fdt/fdt_common.h>
#include "ofw_bus_if.h"
#endif
+#ifdef DEV_ACPI
+#include <contrib/dev/acpica/include/acpi.h>
+#include <dev/acpica/acpivar.h>
+#endif
extern struct bus_space memmap_bus;
@@ -78,9 +83,19 @@ struct nexus_device {
#define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev))
static struct rman mem_rman;
+static struct rman irq_rman;
-static int nexus_probe(device_t);
static int nexus_attach(device_t);
+
+#ifdef FDT
+static device_probe_t nexus_fdt_probe;
+static device_attach_t nexus_fdt_attach;
+#endif
+#ifdef DEV_ACPI
+static device_probe_t nexus_acpi_probe;
+static device_attach_t nexus_acpi_attach;
+#endif
+
static int nexus_print_child(device_t, device_t);
static device_t nexus_add_child(device_t, u_int, const char *, int);
static struct resource *nexus_alloc_resource(device_t, device_t, int, int *,
@@ -89,6 +104,8 @@ static int nexus_activate_resource(device_t, device_t, int, int,
struct resource *);
static int nexus_config_intr(device_t dev, int irq, enum intr_trigger trig,
enum intr_polarity pol);
+static struct resource_list *nexus_get_reslist(device_t, device_t);
+static int nexus_set_resource(device_t, device_t, int, int, u_long, u_long);
static int nexus_deactivate_resource(device_t, device_t, int, int,
struct resource *);
@@ -102,21 +119,18 @@ static int nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent,
#endif
static device_method_t nexus_methods[] = {
- /* Device interface */
- DEVMETHOD(device_probe, nexus_probe),
- DEVMETHOD(device_attach, nexus_attach),
/* Bus interface */
DEVMETHOD(bus_print_child, nexus_print_child),
DEVMETHOD(bus_add_child, nexus_add_child),
DEVMETHOD(bus_alloc_resource, nexus_alloc_resource),
DEVMETHOD(bus_activate_resource, nexus_activate_resource),
DEVMETHOD(bus_config_intr, nexus_config_intr),
+ DEVMETHOD(bus_get_resource_list, nexus_get_reslist),
+ DEVMETHOD(bus_set_resource, nexus_set_resource),
DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
DEVMETHOD(bus_setup_intr, nexus_setup_intr),
DEVMETHOD(bus_teardown_intr, nexus_teardown_intr),
-#ifdef FDT
- DEVMETHOD(ofw_bus_map_intr, nexus_ofw_map_intr),
-#endif
+
{ 0, 0 }
};
@@ -129,15 +143,6 @@ static driver_t nexus_driver = {
DRIVER_MODULE(nexus, root, nexus_driver, nexus_devclass, 0, 0);
static int
-nexus_probe(device_t dev)
-{
-
- device_quiet(dev); /* suppress attach message for neatness */
-
- return (BUS_PROBE_DEFAULT);
-}
-
-static int
nexus_attach(device_t dev)
{
@@ -146,15 +151,14 @@ nexus_attach(device_t dev)
mem_rman.rm_type = RMAN_ARRAY;
mem_rman.rm_descr = "I/O memory addresses";
if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0))
- panic("nexus_probe mem_rman");
-
- /* Add the ofwbus device */
- /* ARM64TODO: Alternatively add acpi */
- nexus_add_child(dev, 10, "ofwbus", 0);
+ panic("nexus_attach mem_rman");
+ irq_rman.rm_start = 0;
+ irq_rman.rm_end = ~0ul;
+ irq_rman.rm_type = RMAN_ARRAY;
+ irq_rman.rm_descr = "Interrupts";
+ if (rman_init(&irq_rman) || rman_manage_region(&irq_rman, 0, ~0))
+ panic("nexus_attach irq_rman");
- /*
- * First, deal with the children we know about already
- */
bus_generic_probe(dev);
bus_generic_attach(dev);
@@ -201,11 +205,34 @@ static struct resource *
nexus_alloc_resource(device_t bus, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)
{
+ struct nexus_device *ndev = DEVTONX(child);
struct resource *rv;
+ struct resource_list_entry *rle;
struct rman *rm;
int needactivate = flags & RF_ACTIVE;
+ /*
+ * If this is an allocation of the "default" range for a given
+ * RID, and we know what the resources for this device are
+ * (ie. they aren't maintained by a child bus), then work out
+ * the start/end values.
+ */
+ if ((start == 0UL) && (end == ~0UL) && (count == 1)) {
+ if (device_get_parent(child) != bus || ndev == NULL)
+ return(NULL);
+ rle = resource_list_find(&ndev->nx_resources, type, *rid);
+ if (rle == NULL)
+ return(NULL);
+ start = rle->start;
+ end = rle->end;
+ count = rle->count;
+ }
+
switch (type) {
+ case SYS_RES_IRQ:
+ rm = &irq_rman;
+ break;
+
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
rm = &mem_rman;
@@ -297,6 +324,28 @@ nexus_activate_resource(device_t bus, device_t child, int type, int rid,
return (0);
}
+static struct resource_list *
+nexus_get_reslist(device_t dev, device_t child)
+{
+ struct nexus_device *ndev = DEVTONX(child);
+
+ return (&ndev->nx_resources);
+}
+
+static int
+nexus_set_resource(device_t dev, device_t child, int type, int rid,
+ u_long start, u_long count)
+{
+ struct nexus_device *ndev = DEVTONX(child);
+ struct resource_list *rl = &ndev->nx_resources;
+
+ /* XXX this should return a success/failure indicator */
+ resource_list_add(rl, type, rid, start, start + count - 1, count);
+
+ return(0);
+}
+
+
static int
nexus_deactivate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
@@ -317,6 +366,41 @@ nexus_deactivate_resource(device_t bus, device_t child, int type, int rid,
}
#ifdef FDT
+static device_method_t nexus_fdt_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, nexus_fdt_probe),
+ DEVMETHOD(device_attach, nexus_fdt_attach),
+
+ /* OFW interface */
+ DEVMETHOD(ofw_bus_map_intr, nexus_ofw_map_intr),
+};
+
+#define nexus_baseclasses nexus_fdt_baseclasses
+DEFINE_CLASS_1(nexus, nexus_fdt_driver, nexus_fdt_methods, 1, nexus_driver);
+#undef nexus_baseclasses
+static devclass_t nexus_fdt_devclass;
+
+DRIVER_MODULE(nexus_fdt, root, nexus_fdt_driver, nexus_fdt_devclass, 0, 0);
+
+static int
+nexus_fdt_probe(device_t dev)
+{
+
+ if (OF_peer(0) == 0)
+ return (ENXIO);
+
+ device_quiet(dev);
+ return (BUS_PROBE_DEFAULT);
+}
+
+static int
+nexus_fdt_attach(device_t dev)
+{
+
+ nexus_add_child(dev, 10, "ofwbus", 0);
+ return (nexus_attach(dev));
+}
+
static int
nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells,
pcell_t *intr)
@@ -336,3 +420,37 @@ nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells,
}
#endif
+#ifdef DEV_ACPI
+static device_method_t nexus_acpi_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, nexus_acpi_probe),
+ DEVMETHOD(device_attach, nexus_acpi_attach),
+};
+
+#define nexus_baseclasses nexus_acpi_baseclasses
+DEFINE_CLASS_1(nexus, nexus_acpi_driver, nexus_acpi_methods, 1,
+ nexus_driver);
+#undef nexus_baseclasses
+static devclass_t nexus_acpi_devclass;
+
+DRIVER_MODULE(nexus_acpi, root, nexus_acpi_driver, nexus_acpi_devclass, 0, 0);
+
+static int
+nexus_acpi_probe(device_t dev)
+{
+
+ if (acpi_identify() != 0)
+ return (ENXIO);
+
+ device_quiet(dev);
+ return (BUS_PROBE_LOW_PRIORITY);
+}
+
+static int
+nexus_acpi_attach(device_t dev)
+{
+
+ nexus_add_child(dev, 10, "acpi", 0);
+ return (nexus_attach(dev));
+}
+#endif
diff --git a/usr.bin/make/proc.h b/sys/arm64/arm64/unwind.c
index a4ce6d3..13e0b54 100644
--- a/usr.bin/make/proc.h
+++ b/sys/arm64/arm64/unwind.c
@@ -1,6 +1,9 @@
/*-
- * Copyright (C) 2005 Max Okumoto.
- * All rights reserved.
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Semihalf under
+ * the sponsorship of the FreeBSD Foundation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -11,10 +14,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -22,32 +25,28 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
-#ifndef proc_h_458845848
-#define proc_h_458845848
-
-/**
- * Information used to create a new process.
- */
-typedef struct ProcStuff {
- int in; /* stdin for new process */
- int out; /* stdout for new process */
- int err; /* stderr for new process */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+#include <sys/param.h>
- int merge_errors; /* true if stderr is redirected to stdin */
- int pgroup; /* true if new process a process leader */
- int searchpath; /* true if binary should be found via $PATH */
+#include <machine/stack.h>
- char **argv;
- int argv_free; /* release argv after use */
- int errCheck;
+int
+unwind_frame(struct unwind_state *frame)
+{
+ uint64_t fp;
- pid_t child_pid;
-} ProcStuff;
+ fp = frame->fp;
+ if (fp == 0)
+ return (-1);
-void Proc_Exec(const ProcStuff *) __dead2;
+ frame->sp = fp + 0x10;
+ /* FP to previous frame (X29) */
+ frame->fp = *(uint64_t *)(fp);
+ /* LR (X30) */
+ frame->pc = *(uint64_t *)(fp + 8) - 4;
-#endif /* proc_h_458845848 */
+ return (0);
+}
diff --git a/sys/arm64/arm64/vfp.c b/sys/arm64/arm64/vfp.c
index 7ce59b8..5e44d5e 100644
--- a/sys/arm64/arm64/vfp.c
+++ b/sys/arm64/arm64/vfp.c
@@ -120,7 +120,7 @@ vfp_save_state(struct thread *td)
td->td_pcb->pcb_fpcr = fpcr;
td->td_pcb->pcb_fpsr = fpsr;
- dsb();
+ dsb(ish);
vfp_disable();
}
critical_exit();
diff --git a/sys/arm64/conf/GENERIC b/sys/arm64/conf/GENERIC
index 8e20d60..4eae4df 100644
--- a/sys/arm64/conf/GENERIC
+++ b/sys/arm64/conf/GENERIC
@@ -95,3 +95,4 @@ device psci # Support for ARM PSCI
device bpf # Berkeley packet filter
options FDT
+device acpi
diff --git a/usr.bin/make/for.h b/sys/arm64/include/acpica_machdep.h
index 0e43c4a..9a3434a 100644
--- a/usr.bin/make/for.h
+++ b/sys/arm64/include/acpica_machdep.h
@@ -1,12 +1,7 @@
/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
+ * Copyright (c) 2002 Mitsuru IWASAKI
* All rights reserved.
*
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -15,18 +10,11 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -38,13 +26,30 @@
* $FreeBSD$
*/
-#ifndef for_h_9d770f33
-#define for_h_9d770f33
+/******************************************************************************
+ *
+ * Name: acpica_machdep.h - arch-specific defines, etc.
+ * $Revision$
+ *
+ *****************************************************************************/
+
+#ifndef __ACPICA_MACHDEP_H__
+#define __ACPICA_MACHDEP_H__
+
+
+#ifdef _KERNEL
+
+/* Only use the reduced hardware model */
+#define ACPI_REDUCED_HARDWARE 1
+
+/* Section 5.2.10.1: global lock acquire/release functions */
+int acpi_acquire_global_lock(volatile uint32_t *);
+int acpi_release_global_lock(volatile uint32_t *);
-#include "util.h"
+void *acpi_map_table(vm_paddr_t pa, const char *sig);
+void acpi_unmap_table(void *table);
+vm_paddr_t acpi_find_table(const char *sig);
-Boolean For_For(char *);
-Boolean For_Eval(char *);
-void For_Run(int);
+#endif /* _KERNEL */
-#endif /* for_h_9d770f33 */
+#endif /* __ACPICA_MACHDEP_H__ */
diff --git a/sys/arm64/include/atomic.h b/sys/arm64/include/atomic.h
index f0f6c17..99252b8 100644
--- a/sys/arm64/include/atomic.h
+++ b/sys/arm64/include/atomic.h
@@ -29,13 +29,29 @@
#ifndef _MACHINE_ATOMIC_H_
#define _MACHINE_ATOMIC_H_
-#define isb() __asm __volatile("isb" : : : "memory")
-#define dsb() __asm __volatile("dsb sy" : : : "memory")
-#define dmb() __asm __volatile("dmb sy" : : : "memory")
+#define isb() __asm __volatile("isb" : : : "memory")
-#define mb() dmb()
-#define wmb() dmb()
-#define rmb() dmb()
+/*
+ * Options for DMB and DSB:
+ * oshld Outer Shareable, load
+ * oshst Outer Shareable, store
+ * osh Outer Shareable, all
+ * nshld Non-shareable, load
+ * nshst Non-shareable, store
+ * nsh Non-shareable, all
+ * ishld Inner Shareable, load
+ * ishst Inner Shareable, store
+ * ish Inner Shareable, all
+ * ld Full system, load
+ * st Full system, store
+ * sy Full system, all
+ */
+#define dsb(opt) __asm __volatile("dsb " __STRING(opt) : : : "memory")
+#define dmb(opt) __asm __volatile("dmb " __STRING(opt) : : : "memory")
+
+#define mb() dmb(sy) /* Full system memory barrier all */
+#define wmb() dmb(st) /* Full system memory barrier store */
+#define rmb() dmb(ld) /* Full system memory barrier load */
static __inline void
atomic_add_32(volatile uint32_t *p, uint32_t val)
diff --git a/sys/arm64/include/iodev.h b/sys/arm64/include/iodev.h
new file mode 100644
index 0000000..5521ff7
--- /dev/null
+++ b/sys/arm64/include/iodev.h
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _MACHINE_IODEV_H_
+#define _MACHINE_IODEV_H_
+
+#define iodev_read_1(a) \
+({ \
+ uint8_t val; \
+ __asm __volatile("ldrb %w0, [%1]" : "=&r" (val) : "r"(a)); \
+ val; \
+})
+
+#define iodev_read_2(a) \
+({ \
+ uint16_t val; \
+ __asm __volatile("ldrh %w0, [%1]" : "=&r" (val) : "r"(a)); \
+ val; \
+})
+
+#define iodev_read_4(a) \
+({ \
+ uint32_t val; \
+ __asm __volatile("ldr %w0, [%1]" : "=&r" (val) : "r"(a)); \
+ val; \
+})
+
+#define iodev_write_1(a, v) \
+ __asm __volatile("strb %w0, [%1]" :: "r" (v), "r"(a))
+
+#define iodev_write_2(a, v) \
+ __asm __volatile("strh %w0, [%1]" :: "r" (v), "r"(a))
+
+#define iodev_write_4(a, v) \
+ __asm __volatile("str %w0, [%1]" :: "r" (v), "r"(a))
+
+#endif /* _MACHINE_IODEV_H_ */
diff --git a/sys/arm64/include/pci_cfgreg.h b/sys/arm64/include/pci_cfgreg.h
new file mode 100644
index 0000000..da23dbe
--- /dev/null
+++ b/sys/arm64/include/pci_cfgreg.h
@@ -0,0 +1 @@
+/* $FreeBSD$ */
diff --git a/sys/arm64/include/pcpu.h b/sys/arm64/include/pcpu.h
index 6de3e89..19cd758 100644
--- a/sys/arm64/include/pcpu.h
+++ b/sys/arm64/include/pcpu.h
@@ -36,7 +36,8 @@
#define ALT_STACK_SIZE 128
#define PCPU_MD_FIELDS \
- char __pad[129]
+ u_int pc_acpi_id; /* ACPI CPU id */ \
+ char __pad[125]
#ifdef _KERNEL
diff --git a/sys/arm64/include/stack.h b/sys/arm64/include/stack.h
index 8131ce5..db0d4ab 100644
--- a/sys/arm64/include/stack.h
+++ b/sys/arm64/include/stack.h
@@ -32,4 +32,12 @@
#define INKERNEL(va) \
((va) >= VM_MIN_KERNEL_ADDRESS && (va) <= VM_MAX_KERNEL_ADDRESS)
+struct unwind_state {
+ uint64_t fp;
+ uint64_t sp;
+ uint64_t pc;
+};
+
+int unwind_frame(struct unwind_state *);
+
#endif /* !_MACHINE_STACK_H_ */
diff --git a/sys/boot/Makefile b/sys/boot/Makefile
index 2aa76b7..2607651 100644
--- a/sys/boot/Makefile
+++ b/sys/boot/Makefile
@@ -8,6 +8,8 @@ SUBDIR+= ficl
SUBDIR+= forth
.endif
+SUBDIR+= common
+
.include <bsd.arch.inc.mk>
# Pick the machine-dependent subdir based on the target architecture.
diff --git a/sys/boot/common/Makefile b/sys/boot/common/Makefile
new file mode 100644
index 0000000..fcca328
--- /dev/null
+++ b/sys/boot/common/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.include <src.opts.mk>
+
+MAN+= loader.8
+.if ${MK_ZFS} != "no"
+MAN+= zfsloader.8
+.endif
+
+.include <bsd.prog.mk>
diff --git a/sys/boot/common/Makefile.inc b/sys/boot/common/Makefile.inc
index 54e8617..d647fe3 100644
--- a/sys/boot/common/Makefile.inc
+++ b/sys/boot/common/Makefile.inc
@@ -68,8 +68,3 @@ CFLAGS+= -DBOOT_PROMPT_123
SRCS+= install.c
CFLAGS+=-I${.CURDIR}/../../../../lib/libstand
.endif
-
-MAN+= loader.8
-.if ${MK_ZFS} != "no"
-MAN+= zfsloader.8
-.endif
diff --git a/sys/boot/efi/libefi/Makefile.depend b/sys/boot/efi/libefi/Makefile.depend
new file mode 100644
index 0000000..c77da59
--- /dev/null
+++ b/sys/boot/efi/libefi/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/efi/loader/arch/arm64/exec.c b/sys/boot/efi/loader/arch/arm64/exec.c
index 1f72269..d13e97b 100644
--- a/sys/boot/efi/loader/arch/arm64/exec.c
+++ b/sys/boot/efi/loader/arch/arm64/exec.c
@@ -42,6 +42,15 @@ __FBSDID("$FreeBSD$");
#include "loader_efi.h"
#include "cache.h"
+#include "platform/acfreebsd.h"
+#include "acconfig.h"
+#define ACPI_SYSTEM_XFACE
+#include "actypes.h"
+#include "actbl.h"
+
+static EFI_GUID acpi_guid = ACPI_TABLE_GUID;
+static EFI_GUID acpi20_guid = ACPI_20_TABLE_GUID;
+
static int elf64_exec(struct preloaded_file *amp);
static int elf64_obj_exec(struct preloaded_file *amp);
@@ -64,12 +73,41 @@ elf64_exec(struct preloaded_file *fp)
vm_offset_t clean_addr;
size_t clean_size;
struct file_metadata *md;
+ ACPI_TABLE_RSDP *rsdp;
EFI_STATUS status;
EFI_PHYSICAL_ADDRESS addr;
Elf_Ehdr *ehdr;
- int err;
+ char buf[24];
+ int err, revision;
void (*entry)(vm_offset_t);
+ rsdp = efi_get_table(&acpi20_guid);
+ if (rsdp == NULL) {
+ rsdp = efi_get_table(&acpi_guid);
+ }
+ if (rsdp != NULL) {
+ sprintf(buf, "0x%016llx", (unsigned long long)rsdp);
+ setenv("hint.acpi.0.rsdp", buf, 1);
+ revision = rsdp->Revision;
+ if (revision == 0)
+ revision = 1;
+ sprintf(buf, "%d", revision);
+ setenv("hint.acpi.0.revision", buf, 1);
+ strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId));
+ buf[sizeof(rsdp->OemId)] = '\0';
+ setenv("hint.acpi.0.oem", buf, 1);
+ sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress);
+ setenv("hint.acpi.0.rsdt", buf, 1);
+ if (revision >= 2) {
+ /* XXX extended checksum? */
+ sprintf(buf, "0x%016llx",
+ (unsigned long long)rsdp->XsdtPhysicalAddress);
+ setenv("hint.acpi.0.xsdt", buf, 1);
+ sprintf(buf, "%d", rsdp->Length);
+ setenv("hint.acpi.0.xsdt_length", buf, 1);
+ }
+ }
+
if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
return(EFTYPE);
diff --git a/sys/boot/fdt/dts/arm/beaglebone-black.dts b/sys/boot/fdt/dts/arm/beaglebone-black.dts
index f5144dd..21cbf83 100644
--- a/sys/boot/fdt/dts/arm/beaglebone-black.dts
+++ b/sys/boot/fdt/dts/arm/beaglebone-black.dts
@@ -29,3 +29,25 @@
#include "am335x-boneblack.dts"
#include "beaglebone-common.dtsi"
+
+&i2c0 {
+ tda998x: hdmi-encoder {
+ compatible = "nxp,tda998x";
+ reg = <0x70>;
+
+ pinctrl-names = "default", "off";
+ pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
+ pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
+ status = "okay";
+ };
+};
+
+&lcdc {
+ hdmi = <&tda998x>;
+};
+
+/ {
+ hdmi {
+ status = "disabled";
+ };
+};
diff --git a/sys/boot/ficl/Makefile.depend b/sys/boot/ficl/Makefile.depend
new file mode 100644
index 0000000..ab9c549
--- /dev/null
+++ b/sys/boot/ficl/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libstand \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+softcore.o: softcore.c
+softcore.po: softcore.c
+.endif
diff --git a/sys/boot/i386/boot0/Makefile.depend b/sys/boot/i386/boot0/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/sys/boot/i386/boot0/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/boot0sio/Makefile.depend b/sys/boot/i386/boot0sio/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/sys/boot/i386/boot0sio/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/boot2/Makefile.depend b/sys/boot/i386/boot2/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/sys/boot/i386/boot2/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/loader/Makefile b/sys/boot/i386/loader/Makefile
index 6e735a4..ade6054 100644
--- a/sys/boot/i386/loader/Makefile
+++ b/sys/boot/i386/loader/Makefile
@@ -5,6 +5,7 @@ MK_SSP= no
LOADER?= loader
PROG= ${LOADER}.sym
+MAN=
INTERNALPROG=
NEWVERSWHAT?= "bootstrap loader" x86
diff --git a/sys/boot/i386/loader/Makefile.depend b/sys/boot/i386/loader/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/sys/boot/i386/loader/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/zfsloader/Makefile.depend b/sys/boot/i386/zfsloader/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/sys/boot/i386/zfsloader/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/mips/beri/loader/Makefile b/sys/boot/mips/beri/loader/Makefile
index d4292cc..a134f3d 100644
--- a/sys/boot/mips/beri/loader/Makefile
+++ b/sys/boot/mips/beri/loader/Makefile
@@ -31,6 +31,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
PROG?= loader
NEWVERSWHAT= "BERI loader" ${MACHINE_CPUARCH}
diff --git a/sys/boot/pc98/loader/Makefile b/sys/boot/pc98/loader/Makefile
index a001c20..9333f3c 100644
--- a/sys/boot/pc98/loader/Makefile
+++ b/sys/boot/pc98/loader/Makefile
@@ -2,6 +2,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
LOADER?= loader
PROG= ${LOADER}.sym
diff --git a/sys/boot/powerpc/kboot/Makefile b/sys/boot/powerpc/kboot/Makefile
index 0ca7d20..4601f29 100644
--- a/sys/boot/powerpc/kboot/Makefile
+++ b/sys/boot/powerpc/kboot/Makefile
@@ -2,6 +2,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
PROG= loader.kboot
NEWVERSWHAT= "kboot loader" ${MACHINE_ARCH}
diff --git a/sys/boot/powerpc/ofw/Makefile b/sys/boot/powerpc/ofw/Makefile
index 65b79ea..6a2fc70 100644
--- a/sys/boot/powerpc/ofw/Makefile
+++ b/sys/boot/powerpc/ofw/Makefile
@@ -2,6 +2,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
PROG= loader
NEWVERSWHAT= "Open Firmware loader" ${MACHINE_ARCH}
diff --git a/sys/boot/powerpc/ps3/Makefile b/sys/boot/powerpc/ps3/Makefile
index 3bb9cb3..861872f 100644
--- a/sys/boot/powerpc/ps3/Makefile
+++ b/sys/boot/powerpc/ps3/Makefile
@@ -2,6 +2,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
PROG= loader.ps3
NEWVERSWHAT= "Playstation 3 loader" ${MACHINE_ARCH}
diff --git a/sys/boot/sparc64/loader/Makefile b/sys/boot/sparc64/loader/Makefile
index ca2853c..5c9bfbb 100644
--- a/sys/boot/sparc64/loader/Makefile
+++ b/sys/boot/sparc64/loader/Makefile
@@ -2,6 +2,7 @@
.include <src.opts.mk>
MK_SSP= no
+MAN=
PROG?= loader
NEWVERSWHAT?= "bootstrap loader" sparc64
diff --git a/sys/boot/uboot/lib/copy.c b/sys/boot/uboot/lib/copy.c
index bb658e3..51416ac 100644
--- a/sys/boot/uboot/lib/copy.c
+++ b/sys/boot/uboot/lib/copy.c
@@ -118,6 +118,13 @@ uboot_loadaddr(u_int type, void *data, uint64_t addr)
this_block = eubldr;
this_size = eblock - eubldr;
}
+ } else if (subldr < sblock && eubldr < eblock) {
+ /* Loader is below or engulfs the sblock */
+ this_block = (eubldr < sblock) ? sblock : eubldr;
+ this_size = eblock - this_block;
+ } else {
+ this_block = 0;
+ this_size = 0;
}
if (biggest_size < this_size) {
biggest_block = this_block;
diff --git a/sys/boot/uboot/lib/glue.c b/sys/boot/uboot/lib/glue.c
index d01e33b..32c4df2 100644
--- a/sys/boot/uboot/lib/glue.c
+++ b/sys/boot/uboot/lib/glue.c
@@ -513,7 +513,7 @@ ub_env_enum(const char *last)
if (!syscall(API_ENV_ENUM, NULL, (uint32_t)last, (uint32_t)&env))
return (NULL);
- if (env == NULL)
+ if (env == NULL || last == env)
/* no more env. variables to enumerate */
return (NULL);
diff --git a/sys/cam/cam.c b/sys/cam/cam.c
index 939dd76..1f627ef 100644
--- a/sys/cam/cam.c
+++ b/sys/cam/cam.c
@@ -157,6 +157,56 @@ cam_strvis(u_int8_t *dst, const u_int8_t *src, int srclen, int dstlen)
*dst = '\0';
}
+void
+cam_strvis_sbuf(struct sbuf *sb, const u_int8_t *src, int srclen,
+ uint32_t flags)
+{
+
+ /* Trim leading/trailing spaces, nulls. */
+ while (srclen > 0 && src[0] == ' ')
+ src++, srclen--;
+ while (srclen > 0
+ && (src[srclen-1] == ' ' || src[srclen-1] == '\0'))
+ srclen--;
+
+ while (srclen > 0) {
+ if (*src < 0x20 || *src >= 0x80) {
+ /* SCSI-II Specifies that these should never occur. */
+ /* non-printable character */
+ switch (flags & CAM_STRVIS_FLAG_NONASCII_MASK) {
+ case CAM_STRVIS_FLAG_NONASCII_ESC:
+ sbuf_printf(sb, "\\%c%c%c",
+ ((*src & 0300) >> 6) + '0',
+ ((*src & 0070) >> 3) + '0',
+ ((*src & 0007) >> 0) + '0');
+ break;
+ case CAM_STRVIS_FLAG_NONASCII_RAW:
+ /*
+ * If we run into a NUL, just transform it
+ * into a space.
+ */
+ if (*src != 0x00)
+ sbuf_putc(sb, *src);
+ else
+ sbuf_putc(sb, ' ');
+ break;
+ case CAM_STRVIS_FLAG_NONASCII_SPC:
+ sbuf_putc(sb, ' ');
+ break;
+ case CAM_STRVIS_FLAG_NONASCII_TRIM:
+ default:
+ break;
+ }
+ } else {
+ /* normal character */
+ sbuf_putc(sb, *src);
+ }
+ src++;
+ srclen--;
+ }
+}
+
+
/*
* Compare string with pattern, returning 0 on match.
* Short pattern matches trailing blanks in name,
diff --git a/sys/cam/cam.h b/sys/cam/cam.h
index e08524b..63f83c7 100644
--- a/sys/cam/cam.h
+++ b/sys/cam/cam.h
@@ -342,6 +342,15 @@ typedef enum {
CAM_EAF_PRINT_RESULT = 0x20
} cam_error_ata_flags;
+typedef enum {
+ CAM_STRVIS_FLAG_NONE = 0x00,
+ CAM_STRVIS_FLAG_NONASCII_MASK = 0x03,
+ CAM_STRVIS_FLAG_NONASCII_TRIM = 0x00,
+ CAM_STRVIS_FLAG_NONASCII_RAW = 0x01,
+ CAM_STRVIS_FLAG_NONASCII_SPC = 0x02,
+ CAM_STRVIS_FLAG_NONASCII_ESC = 0x03
+} cam_strvis_flags;
+
struct cam_status_entry
{
cam_status status_code;
@@ -354,6 +363,7 @@ extern const int num_cam_status_entries;
extern int cam_sort_io_queues;
#endif
union ccb;
+struct sbuf;
#ifdef SYSCTL_DECL /* from sysctl.h */
SYSCTL_DECL(_kern_cam);
@@ -366,6 +376,8 @@ caddr_t cam_quirkmatch(caddr_t target, caddr_t quirk_table, int num_entries,
int entry_size, cam_quirkmatch_t *comp_func);
void cam_strvis(u_int8_t *dst, const u_int8_t *src, int srclen, int dstlen);
+void cam_strvis_sbuf(struct sbuf *sb, const u_int8_t *src, int srclen,
+ uint32_t flags);
int cam_strmatch(const u_int8_t *str, const u_int8_t *pattern, int str_len);
const struct cam_status_entry*
diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c
index 6276774..3d562d0 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -383,8 +383,8 @@ static int ctl_open(struct cdev *dev, int flags, int fmt, struct thread *td);
static int ctl_close(struct cdev *dev, int flags, int fmt, struct thread *td);
static void ctl_ioctl_online(void *arg);
static void ctl_ioctl_offline(void *arg);
-static int ctl_ioctl_lun_enable(void *arg, struct ctl_id targ_id, int lun_id);
-static int ctl_ioctl_lun_disable(void *arg, struct ctl_id targ_id, int lun_id);
+static int ctl_ioctl_lun_enable(void *arg, int lun_id);
+static int ctl_ioctl_lun_disable(void *arg, int lun_id);
static int ctl_ioctl_do_datamove(struct ctl_scsiio *ctsio);
static int ctl_serialize_other_sc_cmd(struct ctl_scsiio *ctsio);
static int ctl_ioctl_submit_wait(union ctl_io *io);
@@ -399,7 +399,7 @@ static int ctl_ioctl_fill_ooa(struct ctl_lun *lun, uint32_t *cur_fill_num,
static int ctl_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag,
struct thread *td);
static int ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *lun,
- struct ctl_be_lun *be_lun, struct ctl_id target_id);
+ struct ctl_be_lun *be_lun);
static int ctl_free_lun(struct ctl_lun *lun);
static void ctl_create_lun(struct ctl_be_lun *be_lun);
static struct ctl_port * ctl_io_port(struct ctl_io_hdr *io_hdr);
@@ -1128,13 +1128,6 @@ ctl_init(void)
softc->port_offset = (softc->ha_id - 1) * CTL_MAX_PORTS;
softc->persis_offset = softc->port_offset * CTL_MAX_INIT_PER_PORT;
- /*
- * XXX KDM need to figure out where we want to get our target ID
- * and WWID. Is it different on each port?
- */
- softc->target.id = 0;
- softc->target.wwid[0] = 0x12345678;
- softc->target.wwid[1] = 0x87654321;
STAILQ_INIT(&softc->lun_list);
STAILQ_INIT(&softc->pending_lun_queue);
STAILQ_INIT(&softc->fe_list);
@@ -1647,13 +1640,13 @@ ctl_create_iid(struct ctl_port *port, int iid, uint8_t *buf)
}
static int
-ctl_ioctl_lun_enable(void *arg, struct ctl_id targ_id, int lun_id)
+ctl_ioctl_lun_enable(void *arg, int lun_id)
{
return (0);
}
static int
-ctl_ioctl_lun_disable(void *arg, struct ctl_id targ_id, int lun_id)
+ctl_ioctl_lun_disable(void *arg, int lun_id)
{
return (0);
}
@@ -2478,28 +2471,9 @@ ctl_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag,
mtx_unlock(&softc->ctl_lock);
if (cmd == CTL_ENABLE_PORT) {
- struct ctl_lun *lun;
-
- STAILQ_FOREACH(lun, &softc->lun_list,
- links) {
- port->lun_enable(port->targ_lun_arg,
- lun->target,
- lun->lun);
- }
-
ctl_port_online(port);
} else if (cmd == CTL_DISABLE_PORT) {
- struct ctl_lun *lun;
-
ctl_port_offline(port);
-
- STAILQ_FOREACH(lun, &softc->lun_list,
- links) {
- port->lun_disable(
- port->targ_lun_arg,
- lun->target,
- lun->lun);
- }
}
mtx_lock(&softc->ctl_lock);
@@ -3560,26 +3534,22 @@ ctl_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag,
mtx_unlock(&softc->ctl_lock);
return (ENXIO);
}
+ mtx_unlock(&softc->ctl_lock); // XXX: port_enable sleeps
if (lm->plun < CTL_MAX_LUNS) {
if (lm->lun == UINT32_MAX)
retval = ctl_lun_map_unset(port, lm->plun);
else if (lm->lun < CTL_MAX_LUNS &&
softc->ctl_luns[lm->lun] != NULL)
retval = ctl_lun_map_set(port, lm->plun, lm->lun);
- else {
- mtx_unlock(&softc->ctl_lock);
+ else
return (ENXIO);
- }
} else if (lm->plun == UINT32_MAX) {
if (lm->lun == UINT32_MAX)
retval = ctl_lun_map_deinit(port);
else
retval = ctl_lun_map_init(port);
- } else {
- mtx_unlock(&softc->ctl_lock);
+ } else
return (ENXIO);
- }
- mtx_unlock(&softc->ctl_lock);
break;
}
default: {
@@ -3649,6 +3619,8 @@ ctl_port_idx(int port_num)
int
ctl_lun_map_init(struct ctl_port *port)
{
+ struct ctl_softc *softc = control_softc;
+ struct ctl_lun *lun;
uint32_t i;
if (port->lun_map == NULL)
@@ -3658,17 +3630,27 @@ ctl_lun_map_init(struct ctl_port *port)
return (ENOMEM);
for (i = 0; i < CTL_MAX_LUNS; i++)
port->lun_map[i] = UINT32_MAX;
+ if (port->status & CTL_PORT_STATUS_ONLINE) {
+ STAILQ_FOREACH(lun, &softc->lun_list, links)
+ port->lun_disable(port->targ_lun_arg, lun->lun);
+ }
return (0);
}
int
ctl_lun_map_deinit(struct ctl_port *port)
{
+ struct ctl_softc *softc = control_softc;
+ struct ctl_lun *lun;
if (port->lun_map == NULL)
return (0);
free(port->lun_map, M_CTL);
port->lun_map = NULL;
+ if (port->status & CTL_PORT_STATUS_ONLINE) {
+ STAILQ_FOREACH(lun, &softc->lun_list, links)
+ port->lun_enable(port->targ_lun_arg, lun->lun);
+ }
return (0);
}
@@ -3676,37 +3658,31 @@ int
ctl_lun_map_set(struct ctl_port *port, uint32_t plun, uint32_t glun)
{
int status;
+ uint32_t old;
if (port->lun_map == NULL) {
status = ctl_lun_map_init(port);
if (status != 0)
return (status);
}
+ old = port->lun_map[plun];
port->lun_map[plun] = glun;
+ if ((port->status & CTL_PORT_STATUS_ONLINE) && old >= CTL_MAX_LUNS)
+ port->lun_enable(port->targ_lun_arg, plun);
return (0);
}
int
ctl_lun_map_unset(struct ctl_port *port, uint32_t plun)
{
+ uint32_t old;
if (port->lun_map == NULL)
return (0);
+ old = port->lun_map[plun];
port->lun_map[plun] = UINT32_MAX;
- return (0);
-}
-
-int
-ctl_lun_map_unsetg(struct ctl_port *port, uint32_t glun)
-{
- int i;
-
- if (port->lun_map == NULL)
- return (0);
- for (i = 0; i < CTL_MAX_LUNS; i++) {
- if (port->lun_map[i] == glun)
- port->lun_map[i] = UINT32_MAX;
- }
+ if ((port->status & CTL_PORT_STATUS_ONLINE) && old < CTL_MAX_LUNS)
+ port->lun_disable(port->targ_lun_arg, plun);
return (0);
}
@@ -4532,10 +4508,9 @@ hex2bin(const char *str, uint8_t *buf, int buf_size)
*/
static int
ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *ctl_lun,
- struct ctl_be_lun *const be_lun, struct ctl_id target_id)
+ struct ctl_be_lun *const be_lun)
{
struct ctl_lun *nlun, *lun;
- struct ctl_port *port;
struct scsi_vpd_id_descriptor *desc;
struct scsi_vpd_id_t10 *t10id;
const char *eui, *naa, *scsiname, *vendor, *value;
@@ -4670,8 +4645,7 @@ ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *ctl_lun,
lun_number = ctl_ffz(ctl_softc->ctl_lun_mask, CTL_MAX_LUNS);
if (lun_number == -1) {
mtx_unlock(&ctl_softc->ctl_lock);
- printf("ctl: can't allocate LUN on target %ju, out of "
- "LUNs\n", (uintmax_t)target_id.id);
+ printf("ctl: can't allocate LUN, out of LUNs\n");
if (lun->flags & CTL_LUN_MALLOCED)
free(lun, M_CTL);
be_lun->lun_config_status(be_lun->be_lun,
@@ -4682,7 +4656,6 @@ ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *ctl_lun,
ctl_set_mask(ctl_softc->ctl_lun_mask, lun_number);
mtx_init(&lun->lun_lock, "CTL LUN", NULL, MTX_DEF);
- lun->target = target_id;
lun->lun = lun_number;
lun->be_lun = be_lun;
/*
@@ -4765,24 +4738,6 @@ ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *ctl_lun,
mtx_unlock(&ctl_softc->ctl_lock);
lun->be_lun->lun_config_status(lun->be_lun->be_lun, CTL_LUN_CONFIG_OK);
-
- /*
- * Run through each registered FETD and bring it online if it isn't
- * already. Enable the target ID if it hasn't been enabled, and
- * enable this particular LUN.
- */
- STAILQ_FOREACH(port, &ctl_softc->port_list, links) {
- int retval;
-
- retval = port->lun_enable(port->targ_lun_arg, target_id,lun_number);
- if (retval != 0) {
- printf("ctl_alloc_lun: FETD %s port %d returned error "
- "%d for lun_enable on target %ju lun %d\n",
- port->port_name, port->targ_port, retval,
- (uintmax_t)target_id.id, lun_number);
- } else
- port->status |= CTL_PORT_STATUS_LUN_ONLINE;
- }
return (0);
}
@@ -4796,7 +4751,6 @@ static int
ctl_free_lun(struct ctl_lun *lun)
{
struct ctl_softc *softc;
- struct ctl_port *port;
struct ctl_lun *nlun;
int i;
@@ -4804,9 +4758,6 @@ ctl_free_lun(struct ctl_lun *lun)
mtx_assert(&softc->ctl_lock, MA_OWNED);
- STAILQ_FOREACH(port, &softc->port_list, links)
- ctl_lun_map_unsetg(port, lun->lun);
-
STAILQ_REMOVE(&softc->lun_list, lun, ctl_lun, links);
ctl_clear_mask(softc->ctl_lun_mask, lun->lun);
@@ -4819,58 +4770,6 @@ ctl_free_lun(struct ctl_lun *lun)
softc->num_luns--;
/*
- * XXX KDM this scheme only works for a single target/multiple LUN
- * setup. It needs to be revamped for a multiple target scheme.
- *
- * XXX KDM this results in port->lun_disable() getting called twice,
- * once when ctl_disable_lun() is called, and a second time here.
- * We really need to re-think the LUN disable semantics. There
- * should probably be several steps/levels to LUN removal:
- * - disable
- * - invalidate
- * - free
- *
- * Right now we only have a disable method when communicating to
- * the front end ports, at least for individual LUNs.
- */
-#if 0
- STAILQ_FOREACH(port, &softc->port_list, links) {
- int retval;
-
- retval = port->lun_disable(port->targ_lun_arg, lun->target,
- lun->lun);
- if (retval != 0) {
- printf("ctl_free_lun: FETD %s port %d returned error "
- "%d for lun_disable on target %ju lun %jd\n",
- port->port_name, port->targ_port, retval,
- (uintmax_t)lun->target.id, (intmax_t)lun->lun);
- }
-
- if (STAILQ_FIRST(&softc->lun_list) == NULL) {
- port->status &= ~CTL_PORT_STATUS_LUN_ONLINE;
-
- retval = port->targ_disable(port->targ_lun_arg,lun->target);
- if (retval != 0) {
- printf("ctl_free_lun: FETD %s port %d "
- "returned error %d for targ_disable on "
- "target %ju\n", port->port_name,
- port->targ_port, retval,
- (uintmax_t)lun->target.id);
- } else
- port->status &= ~CTL_PORT_STATUS_TARG_ONLINE;
-
- if ((port->status & CTL_PORT_STATUS_TARG_ONLINE) != 0)
- continue;
-
-#if 0
- port->port_offline(port->onoff_arg);
- port->status &= ~CTL_PORT_STATUS_ONLINE;
-#endif
- }
- }
-#endif
-
- /*
* Tell the backend to free resources, if this LUN has a backend.
*/
atomic_subtract_int(&lun->be_lun->be->num_luns, 1);
@@ -4906,7 +4805,7 @@ ctl_create_lun(struct ctl_be_lun *be_lun)
/*
* ctl_alloc_lun() should handle all potential failure cases.
*/
- ctl_alloc_lun(softc, NULL, be_lun, softc->target);
+ ctl_alloc_lun(softc, NULL, be_lun);
}
int
@@ -4949,6 +4848,9 @@ ctl_enable_lun(struct ctl_be_lun *be_lun)
for (port = STAILQ_FIRST(&softc->port_list); port != NULL; port = nport) {
nport = STAILQ_NEXT(port, links);
+ if ((port->status & CTL_PORT_STATUS_ONLINE) == 0 ||
+ port->lun_map != NULL)
+ continue;
/*
* Drop the lock while we call the FETD's enable routine.
@@ -4956,20 +4858,14 @@ ctl_enable_lun(struct ctl_be_lun *be_lun)
* case of the internal initiator frontend.
*/
mtx_unlock(&softc->ctl_lock);
- retval = port->lun_enable(port->targ_lun_arg, lun->target,lun->lun);
+ retval = port->lun_enable(port->targ_lun_arg, lun->lun);
mtx_lock(&softc->ctl_lock);
if (retval != 0) {
printf("%s: FETD %s port %d returned error "
- "%d for lun_enable on target %ju lun %jd\n",
- __func__, port->port_name, port->targ_port, retval,
- (uintmax_t)lun->target.id, (intmax_t)lun->lun);
+ "%d for lun_enable on lun %jd\n",
+ __func__, port->port_name, port->targ_port,
+ retval, (intmax_t)lun->lun);
}
-#if 0
- else {
- /* NOTE: TODO: why does lun enable affect port status? */
- port->status |= CTL_PORT_STATUS_LUN_ONLINE;
- }
-#endif
}
mtx_unlock(&softc->ctl_lock);
@@ -4999,6 +4895,9 @@ ctl_disable_lun(struct ctl_be_lun *be_lun)
mtx_unlock(&lun->lun_lock);
STAILQ_FOREACH(port, &softc->port_list, links) {
+ if ((port->status & CTL_PORT_STATUS_ONLINE) == 0 ||
+ port->lun_map != NULL)
+ continue;
mtx_unlock(&softc->ctl_lock);
/*
* Drop the lock before we call the frontend's disable
@@ -5007,14 +4906,13 @@ ctl_disable_lun(struct ctl_be_lun *be_lun)
* XXX KDM what happens if the frontend list changes while
* we're traversing it? It's unlikely, but should be handled.
*/
- retval = port->lun_disable(port->targ_lun_arg, lun->target,
- lun->lun);
+ retval = port->lun_disable(port->targ_lun_arg, lun->lun);
mtx_lock(&softc->ctl_lock);
if (retval != 0) {
printf("%s: FETD %s port %d returned error "
- "%d for lun_disable on target %ju lun %jd\n",
- __func__, port->port_name, port->targ_port, retval,
- (uintmax_t)lun->target.id, (intmax_t)lun->lun);
+ "%d for lun_disable on lun %jd\n",
+ __func__, port->port_name, port->targ_port,
+ retval, (intmax_t)lun->lun);
}
}
@@ -9450,11 +9348,16 @@ ctl_report_luns(struct ctl_scsiio *ctsio)
well_known = 0;
cdb = (struct scsi_report_luns *)ctsio->cdb;
+ port = ctl_io_port(&ctsio->io_hdr);
CTL_DEBUG_PRINT(("ctl_report_luns\n"));
mtx_lock(&softc->ctl_lock);
- num_luns = softc->num_luns;
+ num_luns = 0;
+ for (targ_lun_id = 0; targ_lun_id < CTL_MAX_LUNS; targ_lun_id++) {
+ if (ctl_lun_map_from_port(port, targ_lun_id) < CTL_MAX_LUNS)
+ num_luns++;
+ }
mtx_unlock(&softc->ctl_lock);
switch (cdb->select_report) {
@@ -9497,7 +9400,6 @@ ctl_report_luns(struct ctl_scsiio *ctsio)
request_lun = (struct ctl_lun *)
ctsio->io_hdr.ctl_private[CTL_PRIV_LUN].ptr;
- port = ctl_io_port(&ctsio->io_hdr);
lun_datalen = sizeof(*lun_data) +
(num_luns * sizeof(struct scsi_report_luns_lundata));
diff --git a/sys/cam/ctl/ctl_frontend.c b/sys/cam/ctl/ctl_frontend.c
index c38e527..e22b9d4 100644
--- a/sys/cam/ctl/ctl_frontend.c
+++ b/sys/cam/ctl/ctl_frontend.c
@@ -301,6 +301,20 @@ ctl_port_set_wwns(struct ctl_port *port, int wwnn_valid, uint64_t wwnn,
void
ctl_port_online(struct ctl_port *port)
{
+ struct ctl_softc *softc = control_softc;
+ struct ctl_lun *lun;
+ uint32_t l;
+
+ if (port->lun_map) {
+ for (l = 0; l < CTL_MAX_LUNS; l++) {
+ if (ctl_lun_map_from_port(port, l) >= CTL_MAX_LUNS)
+ continue;
+ port->lun_enable(port->targ_lun_arg, l);
+ }
+ } else {
+ STAILQ_FOREACH(lun, &softc->lun_list, links)
+ port->lun_enable(port->targ_lun_arg, lun->lun);
+ }
port->port_online(port->onoff_arg);
/* XXX KDM need a lock here? */
port->status |= CTL_PORT_STATUS_ONLINE;
@@ -309,7 +323,21 @@ ctl_port_online(struct ctl_port *port)
void
ctl_port_offline(struct ctl_port *port)
{
+ struct ctl_softc *softc = control_softc;
+ struct ctl_lun *lun;
+ uint32_t l;
+
port->port_offline(port->onoff_arg);
+ if (port->lun_map) {
+ for (l = 0; l < CTL_MAX_LUNS; l++) {
+ if (ctl_lun_map_from_port(port, l) >= CTL_MAX_LUNS)
+ continue;
+ port->lun_disable(port->targ_lun_arg, l);
+ }
+ } else {
+ STAILQ_FOREACH(lun, &softc->lun_list, links)
+ port->lun_disable(port->targ_lun_arg, lun->lun);
+ }
/* XXX KDM need a lock here? */
port->status &= ~CTL_PORT_STATUS_ONLINE;
}
diff --git a/sys/cam/ctl/ctl_frontend.h b/sys/cam/ctl/ctl_frontend.h
index f1cc1c4..470d7a7 100644
--- a/sys/cam/ctl/ctl_frontend.h
+++ b/sys/cam/ctl/ctl_frontend.h
@@ -41,16 +41,14 @@
typedef enum {
CTL_PORT_STATUS_NONE = 0x00,
- CTL_PORT_STATUS_ONLINE = 0x01,
- CTL_PORT_STATUS_TARG_ONLINE = 0x02,
- CTL_PORT_STATUS_LUN_ONLINE = 0x04
+ CTL_PORT_STATUS_ONLINE = 0x01
} ctl_port_status;
typedef int (*fe_init_t)(void);
typedef void (*fe_shutdown_t)(void);
typedef void (*port_func_t)(void *onoff_arg);
typedef int (*port_info_func_t)(void *onoff_arg, struct sbuf *sb);
-typedef int (*lun_func_t)(void *arg, struct ctl_id targ_id, int lun_id);
+typedef int (*lun_func_t)(void *arg, int lun_id);
typedef int (*fe_ioctl_t)(struct cdev *dev, u_long cmd, caddr_t addr, int flag,
struct thread *td);
diff --git a/sys/cam/ctl/ctl_frontend_cam_sim.c b/sys/cam/ctl/ctl_frontend_cam_sim.c
index e779e48..3abc572 100644
--- a/sys/cam/ctl/ctl_frontend_cam_sim.c
+++ b/sys/cam/ctl/ctl_frontend_cam_sim.c
@@ -99,8 +99,8 @@ int cfcs_init(void);
static void cfcs_poll(struct cam_sim *sim);
static void cfcs_online(void *arg);
static void cfcs_offline(void *arg);
-static int cfcs_lun_enable(void *arg, struct ctl_id target_id, int lun_id);
-static int cfcs_lun_disable(void *arg, struct ctl_id target_id, int lun_id);
+static int cfcs_lun_enable(void *arg, int lun_id);
+static int cfcs_lun_disable(void *arg, int lun_id);
static void cfcs_datamove(union ctl_io *io);
static void cfcs_done(union ctl_io *io);
void cfcs_action(struct cam_sim *sim, union ccb *ccb);
@@ -303,12 +303,12 @@ cfcs_offline(void *arg)
}
static int
-cfcs_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
+cfcs_lun_enable(void *arg, int lun_id)
{
return (0);
}
static int
-cfcs_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
+cfcs_lun_disable(void *arg, int lun_id)
{
return (0);
}
diff --git a/sys/cam/ctl/ctl_frontend_internal.c b/sys/cam/ctl/ctl_frontend_internal.c
index 23bd0cf..4768292 100644
--- a/sys/cam/ctl/ctl_frontend_internal.c
+++ b/sys/cam/ctl/ctl_frontend_internal.c
@@ -144,7 +144,6 @@ typedef enum {
} cfi_lun_state;
struct cfi_lun {
- struct ctl_id target_id;
int lun_id;
struct scsi_inquiry_data inq_data;
uint64_t num_blocks;
@@ -192,8 +191,8 @@ int cfi_init(void);
void cfi_shutdown(void) __unused;
static void cfi_online(void *arg);
static void cfi_offline(void *arg);
-static int cfi_lun_enable(void *arg, struct ctl_id target_id, int lun_id);
-static int cfi_lun_disable(void *arg, struct ctl_id target_id, int lun_id);
+static int cfi_lun_enable(void *arg, int lun_id);
+static int cfi_lun_disable(void *arg, int lun_id);
static void cfi_datamove(union ctl_io *io);
static cfi_error_action cfi_checkcond_parse(union ctl_io *io,
struct cfi_lun_io *lun_io);
@@ -324,7 +323,7 @@ cfi_offline(void *arg)
}
static int
-cfi_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
+cfi_lun_enable(void *arg, int lun_id)
{
struct cfi_softc *softc;
struct cfi_lun *lun;
@@ -335,8 +334,7 @@ cfi_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
found = 0;
mtx_lock(&softc->lock);
STAILQ_FOREACH(lun, &softc->lun_list, links) {
- if ((lun->target_id.id == target_id.id)
- && (lun->lun_id == lun_id)) {
+ if (lun->lun_id == lun_id) {
found = 1;
break;
}
@@ -356,7 +354,6 @@ cfi_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
return (1);
}
- lun->target_id = target_id;
lun->lun_id = lun_id;
lun->cur_tag_num = 0;
lun->state = CFI_LUN_INQUIRY;
@@ -373,7 +370,7 @@ cfi_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
}
static int
-cfi_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
+cfi_lun_disable(void *arg, int lun_id)
{
struct cfi_softc *softc;
struct cfi_lun *lun;
@@ -391,8 +388,7 @@ cfi_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
*/
mtx_lock(&softc->lock);
STAILQ_FOREACH(lun, &softc->lun_list, links) {
- if ((lun->target_id.id == target_id.id)
- && (lun->lun_id == lun_id)) {
+ if (lun->lun_id == lun_id) {
found = 1;
break;
}
@@ -403,8 +399,7 @@ cfi_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
mtx_unlock(&softc->lock);
if (found == 0) {
- printf("%s: can't find target %ju lun %d\n", __func__,
- (uintmax_t)target_id.id, lun_id);
+ printf("%s: can't find lun %d\n", __func__, lun_id);
return (1);
}
@@ -700,7 +695,7 @@ cfi_init_io(union ctl_io *io, struct cfi_lun *lun,
io->io_hdr.nexus.initid.id = 7;
io->io_hdr.nexus.targ_port = lun->softc->port.targ_port;
- io->io_hdr.nexus.targ_target.id = lun->target_id.id;
+ io->io_hdr.nexus.targ_target.id = 0;
io->io_hdr.nexus.targ_lun = lun->lun_id;
io->io_hdr.retries = retries;
lun_io = (struct cfi_lun_io *)io->io_hdr.port_priv;
@@ -1008,8 +1003,7 @@ cfi_lun_probe(struct cfi_lun *lun, int have_lock)
M_CTL_CFI, M_NOWAIT);
if (dataptr == NULL) {
printf("%s: unable to allocate SCSI read capacity "
- "buffer for target %ju lun %d\n", __func__,
- (uintmax_t)lun->target_id.id, lun->lun_id);
+ "buffer for lun %d\n", __func__, lun->lun_id);
return;
}
if (lun->state == CFI_LUN_READCAPACITY) {
diff --git a/sys/cam/ctl/ctl_frontend_iscsi.c b/sys/cam/ctl/ctl_frontend_iscsi.c
index 2742c3d..652c961 100644
--- a/sys/cam/ctl/ctl_frontend_iscsi.c
+++ b/sys/cam/ctl/ctl_frontend_iscsi.c
@@ -147,10 +147,8 @@ int cfiscsi_init(void);
static void cfiscsi_online(void *arg);
static void cfiscsi_offline(void *arg);
static int cfiscsi_info(void *arg, struct sbuf *sb);
-static int cfiscsi_lun_enable(void *arg,
- struct ctl_id target_id, int lun_id);
-static int cfiscsi_lun_disable(void *arg,
- struct ctl_id target_id, int lun_id);
+static int cfiscsi_lun_enable(void *arg, int lun_id);
+static int cfiscsi_lun_disable(void *arg, int lun_id);
static int cfiscsi_ioctl(struct cdev *dev,
u_long cmd, caddr_t addr, int flag, struct thread *td);
static void cfiscsi_datamove(union ctl_io *io);
@@ -2373,14 +2371,14 @@ cfiscsi_target_find_or_create(struct cfiscsi_softc *softc, const char *name,
}
static int
-cfiscsi_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
+cfiscsi_lun_enable(void *arg, int lun_id)
{
return (0);
}
static int
-cfiscsi_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
+cfiscsi_lun_disable(void *arg, int lun_id)
{
return (0);
diff --git a/sys/cam/ctl/ctl_private.h b/sys/cam/ctl/ctl_private.h
index 428142c..8a00b5c 100644
--- a/sys/cam/ctl/ctl_private.h
+++ b/sys/cam/ctl/ctl_private.h
@@ -397,7 +397,6 @@ struct ctl_devid {
struct tpc_list;
struct ctl_lun {
struct mtx lun_lock;
- struct ctl_id target;
uint64_t lun;
ctl_lun_flags flags;
ctl_lun_serseq serseq;
@@ -460,7 +459,6 @@ struct ctl_softc {
struct mtx ctl_lock;
struct cdev *dev;
int open_count;
- struct ctl_id target;
int num_disks;
int num_luns;
ctl_gen_flags flags;
@@ -494,6 +492,7 @@ struct ctl_softc {
struct ctl_thread threads[CTL_MAX_THREADS];
TAILQ_HEAD(tpc_tokens, tpc_token) tpc_tokens;
struct callout tpc_timeout;
+ struct mtx tpc_lock;
};
#ifdef _KERNEL
@@ -507,7 +506,6 @@ int ctl_lun_map_init(struct ctl_port *port);
int ctl_lun_map_deinit(struct ctl_port *port);
int ctl_lun_map_set(struct ctl_port *port, uint32_t plun, uint32_t glun);
int ctl_lun_map_unset(struct ctl_port *port, uint32_t plun);
-int ctl_lun_map_unsetg(struct ctl_port *port, uint32_t glun);
uint32_t ctl_lun_map_from_port(struct ctl_port *port, uint32_t plun);
uint32_t ctl_lun_map_to_port(struct ctl_port *port, uint32_t glun);
int ctl_pool_create(struct ctl_softc *ctl_softc, const char *pool_name,
diff --git a/sys/cam/ctl/ctl_tpc.c b/sys/cam/ctl/ctl_tpc.c
index fee5b90..490cddd 100644
--- a/sys/cam/ctl/ctl_tpc.c
+++ b/sys/cam/ctl/ctl_tpc.c
@@ -167,6 +167,7 @@ tpc_timeout(void *arg)
}
/* Free inactive ROD tokens with expired timeout. */
+ mtx_lock(&softc->tpc_lock);
TAILQ_FOREACH_SAFE(token, &softc->tpc_tokens, links, ttoken) {
if (token->active ||
time_uptime < token->last_active + token->timeout + 1)
@@ -175,6 +176,7 @@ tpc_timeout(void *arg)
free(token->params, M_CTL);
free(token, M_CTL);
}
+ mtx_unlock(&softc->tpc_lock);
callout_schedule(&softc->tpc_timeout, hz);
}
@@ -182,6 +184,7 @@ void
ctl_tpc_init(struct ctl_softc *softc)
{
+ mtx_init(&softc->tpc_lock, "CTL TPC mutex", NULL, MTX_DEF);
TAILQ_INIT(&softc->tpc_tokens);
callout_init_mtx(&softc->tpc_timeout, &softc->ctl_lock, 0);
callout_reset(&softc->tpc_timeout, hz, tpc_timeout, softc);
@@ -195,13 +198,14 @@ ctl_tpc_shutdown(struct ctl_softc *softc)
callout_drain(&softc->tpc_timeout);
/* Free ROD tokens. */
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
while ((token = TAILQ_FIRST(&softc->tpc_tokens)) != NULL) {
TAILQ_REMOVE(&softc->tpc_tokens, token, links);
free(token->params, M_CTL);
free(token, M_CTL);
}
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
+ mtx_destroy(&softc->tpc_lock);
}
void
@@ -227,7 +231,7 @@ ctl_tpc_lun_shutdown(struct ctl_lun *lun)
}
/* Free ROD tokens for this LUN. */
- mtx_assert(&softc->ctl_lock, MA_OWNED);
+ mtx_lock(&softc->tpc_lock);
TAILQ_FOREACH_SAFE(token, &softc->tpc_tokens, links, ttoken) {
if (token->lun != lun->lun || token->active)
continue;
@@ -235,6 +239,7 @@ ctl_tpc_lun_shutdown(struct ctl_lun *lun)
free(token->params, M_CTL);
free(token, M_CTL);
}
+ mtx_unlock(&softc->tpc_lock);
}
int
@@ -1394,10 +1399,10 @@ done:
free(list->params, M_CTL);
list->params = NULL;
if (list->token) {
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
if (--list->token->active == 0)
list->token->last_active = time_uptime;
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
list->token = NULL;
}
mtx_lock(&lun->lun_lock);
@@ -1991,9 +1996,9 @@ ctl_populate_token(struct ctl_scsiio *ctsio)
list->curseg = 0;
list->completed = 1;
list->last_active = time_uptime;
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
TAILQ_INSERT_TAIL(&softc->tpc_tokens, token, links);
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
ctl_set_success(ctsio);
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
@@ -2100,7 +2105,7 @@ ctl_write_using_token(struct ctl_scsiio *ctsio)
return (CTL_RETVAL_COMPLETE);
}
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
TAILQ_FOREACH(token, &softc->tpc_tokens, links) {
if (memcmp(token->token, data->rod_token,
sizeof(data->rod_token)) == 0)
@@ -2112,7 +2117,7 @@ ctl_write_using_token(struct ctl_scsiio *ctsio)
if (data->flags & EC_WUT_DEL_TKN)
token->timeout = 0;
}
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
if (token == NULL) {
mtx_lock(&lun->lun_lock);
TAILQ_REMOVE(&lun->tpc_lists, list, links);
@@ -2254,10 +2259,10 @@ ctl_report_all_rod_tokens(struct ctl_scsiio *ctsio)
retval = CTL_RETVAL_COMPLETE;
tokens = 0;
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
TAILQ_FOREACH(token, &softc->tpc_tokens, links)
tokens++;
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
if (tokens > 512)
tokens = 512;
@@ -2282,7 +2287,7 @@ ctl_report_all_rod_tokens(struct ctl_scsiio *ctsio)
data = (struct scsi_report_all_rod_tokens_data *)ctsio->kern_data_ptr;
i = 0;
- mtx_lock(&softc->ctl_lock);
+ mtx_lock(&softc->tpc_lock);
TAILQ_FOREACH(token, &softc->tpc_tokens, links) {
if (i >= tokens)
break;
@@ -2290,7 +2295,7 @@ ctl_report_all_rod_tokens(struct ctl_scsiio *ctsio)
token->token, 96);
i++;
}
- mtx_unlock(&softc->ctl_lock);
+ mtx_unlock(&softc->tpc_lock);
scsi_ulto4b(sizeof(*data) - 4 + i * 96, data->available_data);
/*
printf("RART tokens=%d\n", i);
diff --git a/sys/cam/ctl/ctl_tpc_local.c b/sys/cam/ctl/ctl_tpc_local.c
index a8f675b..d0319ee 100644
--- a/sys/cam/ctl/ctl_tpc_local.c
+++ b/sys/cam/ctl/ctl_tpc_local.c
@@ -69,8 +69,8 @@ static int tpcl_init(void);
static void tpcl_shutdown(void);
static void tpcl_online(void *arg);
static void tpcl_offline(void *arg);
-static int tpcl_lun_enable(void *arg, struct ctl_id target_id, int lun_id);
-static int tpcl_lun_disable(void *arg, struct ctl_id target_id, int lun_id);
+static int tpcl_lun_enable(void *arg, int lun_id);
+static int tpcl_lun_disable(void *arg, int lun_id);
static void tpcl_datamove(union ctl_io *io);
static void tpcl_done(union ctl_io *io);
@@ -152,14 +152,14 @@ tpcl_offline(void *arg)
}
static int
-tpcl_lun_enable(void *arg, struct ctl_id target_id, int lun_id)
+tpcl_lun_enable(void *arg, int lun_id)
{
return (0);
}
static int
-tpcl_lun_disable(void *arg, struct ctl_id target_id, int lun_id)
+tpcl_lun_disable(void *arg, int lun_id)
{
return (0);
diff --git a/sys/cam/ctl/scsi_ctl.c b/sys/cam/ctl/scsi_ctl.c
index 74ec3df..6bd0196 100644
--- a/sys/cam/ctl/scsi_ctl.c
+++ b/sys/cam/ctl/scsi_ctl.c
@@ -104,10 +104,10 @@ struct ctlfe_lun_softc {
uint64_t ccbs_freed;
uint64_t ctios_sent;
uint64_t ctios_returned;
- uint64_t atios_sent;
- uint64_t atios_returned;
- uint64_t inots_sent;
- uint64_t inots_returned;
+ uint64_t atios_alloced;
+ uint64_t atios_freed;
+ uint64_t inots_alloced;
+ uint64_t inots_freed;
/* bus_dma_tag_t dma_tag; */
TAILQ_HEAD(, ccb_hdr) work_queue;
STAILQ_ENTRY(ctlfe_lun_softc) links;
@@ -202,10 +202,8 @@ static void ctlfedone(struct cam_periph *periph,
static void ctlfe_onoffline(void *arg, int online);
static void ctlfe_online(void *arg);
static void ctlfe_offline(void *arg);
-static int ctlfe_lun_enable(void *arg, struct ctl_id targ_id,
- int lun_id);
-static int ctlfe_lun_disable(void *arg, struct ctl_id targ_id,
- int lun_id);
+static int ctlfe_lun_enable(void *arg, int lun_id);
+static int ctlfe_lun_disable(void *arg, int lun_id);
static void ctlfe_dump_sim(struct cam_sim *sim);
static void ctlfe_dump_queue(struct ctlfe_lun_softc *softc);
static void ctlfe_datamove(union ctl_io *io);
@@ -546,6 +544,7 @@ ctlferegister(struct cam_periph *periph, void *arg)
status = CAM_RESRC_UNAVAIL;
break;
}
+ softc->atios_alloced++;
new_ccb->ccb_h.io_ptr = new_io;
xpt_setup_ccb(&new_ccb->ccb_h, periph->path, /*priority*/ 1);
@@ -553,7 +552,6 @@ ctlferegister(struct cam_periph *periph, void *arg)
new_ccb->ccb_h.cbfcnp = ctlfedone;
new_ccb->ccb_h.flags |= CAM_UNLOCKED;
xpt_action(new_ccb);
- softc->atios_sent++;
status = new_ccb->ccb_h.status;
if ((status & CAM_STATUS_MASK) != CAM_REQ_INPROG) {
ctl_free_io(new_io);
@@ -591,6 +589,7 @@ ctlferegister(struct cam_periph *periph, void *arg)
status = CAM_RESRC_UNAVAIL;
break;
}
+ softc->inots_alloced++;
new_ccb->ccb_h.io_ptr = new_io;
xpt_setup_ccb(&new_ccb->ccb_h, periph->path, /*priority*/ 1);
@@ -598,7 +597,6 @@ ctlferegister(struct cam_periph *periph, void *arg)
new_ccb->ccb_h.cbfcnp = ctlfedone;
new_ccb->ccb_h.flags |= CAM_UNLOCKED;
xpt_action(new_ccb);
- softc->inots_sent++;
status = new_ccb->ccb_h.status;
if ((status & CAM_STATUS_MASK) != CAM_REQ_INPROG) {
/*
@@ -650,10 +648,6 @@ ctlfeoninvalidate(struct cam_periph *periph)
* XXX KDM what do we do now?
*/
}
- xpt_print(periph->path, "LUN removed, %ju ATIOs outstanding, %ju "
- "INOTs outstanding, %d refs\n", softc->atios_sent -
- softc->atios_returned, softc->inots_sent -
- softc->inots_returned, periph->refcount);
bus_softc = softc->parent_softc;
mtx_lock(&bus_softc->lun_softc_mtx);
@@ -666,13 +660,20 @@ ctlfecleanup(struct cam_periph *periph)
{
struct ctlfe_lun_softc *softc;
- xpt_print(periph->path, "%s: Called\n", __func__);
-
softc = (struct ctlfe_lun_softc *)periph->softc;
- /*
- * XXX KDM is there anything else that needs to be done here?
- */
+ KASSERT(softc->ccbs_freed == softc->ccbs_alloced, ("%s: "
+ "ccbs_freed %ju != ccbs_alloced %ju", __func__,
+ softc->ccbs_freed, softc->ccbs_alloced));
+ KASSERT(softc->ctios_returned == softc->ctios_sent, ("%s: "
+ "ctios_returned %ju != ctios_sent %ju", __func__,
+ softc->ctios_returned, softc->ctios_sent));
+ KASSERT(softc->atios_freed == softc->atios_alloced, ("%s: "
+ "atios_freed %ju != atios_alloced %ju", __func__,
+ softc->atios_freed, softc->atios_alloced));
+ KASSERT(softc->inots_freed == softc->inots_alloced, ("%s: "
+ "inots_freed %ju != inots_alloced %ju", __func__,
+ softc->inots_freed, softc->inots_alloced));
free(softc, M_CTLFE);
}
@@ -845,15 +846,6 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
atio->ccb_h.target_lun = CAM_LUN_WILDCARD;
}
- if ((atio->ccb_h.status & CAM_DEV_QFRZN) != 0) {
- cam_release_devq(periph->path,
- /*relsim_flags*/0,
- /*reduction*/0,
- /*timeout*/0,
- /*getcount_only*/0);
- atio->ccb_h.status &= ~CAM_DEV_QFRZN;
- }
-
if (atio->ccb_h.func_code != XPT_ACCEPT_TARGET_IO) {
xpt_print(periph->path, "%s: func_code "
"is %#x\n", __func__,
@@ -871,7 +863,6 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
* Send the ATIO back down to the SIM.
*/
xpt_action((union ccb *)atio);
- softc->atios_sent++;
/*
* If we still have work to do, ask for
@@ -964,15 +955,6 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
xpt_action(start_ccb);
cam_periph_lock(periph);
- if ((atio->ccb_h.status & CAM_DEV_QFRZN) != 0) {
- cam_release_devq(periph->path,
- /*relsim_flags*/0,
- /*reduction*/0,
- /*timeout*/0,
- /*getcount_only*/0);
- atio->ccb_h.status &= ~CAM_DEV_QFRZN;
- }
-
/*
* If we still have work to do, ask for another CCB.
*/
@@ -989,11 +971,11 @@ ctlfe_free_ccb(struct cam_periph *periph, union ccb *ccb)
switch (ccb->ccb_h.func_code) {
case XPT_ACCEPT_TARGET_IO:
- softc->atios_returned++;
+ softc->atios_freed++;
break;
case XPT_IMMEDIATE_NOTIFY:
case XPT_NOTIFY_ACKNOWLEDGE:
- softc->inots_returned++;
+ softc->inots_freed++;
break;
default:
break;
@@ -1002,20 +984,20 @@ ctlfe_free_ccb(struct cam_periph *periph, union ccb *ccb)
ctl_free_io(ccb->ccb_h.io_ptr);
free(ccb, M_CTLFE);
- KASSERT(softc->atios_returned <= softc->atios_sent, ("%s: "
- "atios_returned %ju > atios_sent %ju", __func__,
- softc->atios_returned, softc->atios_sent));
- KASSERT(softc->inots_returned <= softc->inots_sent, ("%s: "
- "inots_returned %ju > inots_sent %ju", __func__,
- softc->inots_returned, softc->inots_sent));
+ KASSERT(softc->atios_freed <= softc->atios_alloced, ("%s: "
+ "atios_freed %ju > atios_alloced %ju", __func__,
+ softc->atios_freed, softc->atios_alloced));
+ KASSERT(softc->inots_freed <= softc->inots_alloced, ("%s: "
+ "inots_freed %ju > inots_alloced %ju", __func__,
+ softc->inots_freed, softc->inots_alloced));
/*
* If we have received all of our CCBs, we can release our
* reference on the peripheral driver. It will probably go away
* now.
*/
- if ((softc->atios_returned == softc->atios_sent)
- && (softc->inots_returned == softc->inots_sent)) {
+ if ((softc->atios_freed == softc->atios_alloced)
+ && (softc->inots_freed == softc->inots_alloced)) {
cam_periph_release_locked(periph);
}
}
@@ -1105,6 +1087,19 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
done_ccb->ccb_h.func_code);
#endif
+ /*
+ * At this point CTL has no known use case for device queue freezes.
+ * In case some SIM think different -- drop its freeze right here.
+ */
+ if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) {
+ cam_release_devq(periph->path,
+ /*relsim_flags*/0,
+ /*reduction*/0,
+ /*timeout*/0,
+ /*getcount_only*/0);
+ done_ccb->ccb_h.status &= ~CAM_DEV_QFRZN;
+ }
+
softc = (struct ctlfe_lun_softc *)periph->softc;
bus_softc = softc->parent_softc;
mtx = cam_periph_mtx(periph);
@@ -1135,8 +1130,6 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
atio = &done_ccb->atio;
- softc->atios_returned++;
-
resubmit:
/*
* Allocate a ctl_io, pass it to CTL, and wait for the
@@ -1291,7 +1284,6 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
if (periph->flags & CAM_PERIPH_INVALID) {
ctlfe_free_ccb(periph, (union ccb *)atio);
} else {
- softc->atios_sent++;
mtx_unlock(mtx);
xpt_action((union ccb *)atio);
return;
@@ -1418,14 +1410,9 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
union ctl_io *io;
struct ccb_immediate_notify *inot;
cam_status status;
- int frozen, send_ctl_io;
+ int send_ctl_io;
inot = &done_ccb->cin1;
-
- softc->inots_returned++;
-
- frozen = (done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0;
-
printf("%s: got XPT_IMMEDIATE_NOTIFY status %#x tag %#x "
"seq %#x\n", __func__, inot->ccb_h.status,
inot->tag_id, inot->seq_id);
@@ -1527,14 +1514,6 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
done_ccb->ccb_h.func_code = XPT_NOTIFY_ACKNOWLEDGE;
xpt_action(done_ccb);
}
-
- if (frozen != 0) {
- cam_release_devq(periph->path,
- /*relsim_flags*/ 0,
- /*opening reduction*/ 0,
- /*timeout*/ 0,
- /*getcount_only*/ 0);
- }
break;
}
case XPT_NOTIFY_ACKNOWLEDGE:
@@ -1543,7 +1522,6 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
*/
done_ccb->ccb_h.func_code = XPT_IMMEDIATE_NOTIFY;
xpt_action(done_ccb);
- softc->inots_sent++;
break;
case XPT_SET_SIM_KNOB:
case XPT_GET_SIM_KNOB:
@@ -1820,7 +1798,7 @@ ctlfe_offline(void *arg)
* CTL. So we only need to create a path/periph for this particular bus.
*/
static int
-ctlfe_lun_enable(void *arg, struct ctl_id targ_id, int lun_id)
+ctlfe_lun_enable(void *arg, int lun_id)
{
struct ctlfe_softc *bus_softc;
struct ctlfe_lun_softc *softc;
@@ -1831,8 +1809,7 @@ ctlfe_lun_enable(void *arg, struct ctl_id targ_id, int lun_id)
bus_softc = (struct ctlfe_softc *)arg;
status = xpt_create_path(&path, /*periph*/ NULL,
- bus_softc->path_id,
- targ_id.id, lun_id);
+ bus_softc->path_id, 0, lun_id);
/* XXX KDM need some way to return status to CTL here? */
if (status != CAM_REQ_CMP) {
printf("%s: could not create path, status %#x\n", __func__,
@@ -1883,7 +1860,7 @@ ctlfe_lun_enable(void *arg, struct ctl_id targ_id, int lun_id)
* on every bus that is attached to CTL.
*/
static int
-ctlfe_lun_disable(void *arg, struct ctl_id targ_id, int lun_id)
+ctlfe_lun_disable(void *arg, int lun_id)
{
struct ctlfe_softc *softc;
struct ctlfe_lun_softc *lun_softc;
@@ -1896,15 +1873,14 @@ ctlfe_lun_disable(void *arg, struct ctl_id targ_id, int lun_id)
path = lun_softc->periph->path;
- if ((xpt_path_target_id(path) == targ_id.id)
+ if ((xpt_path_target_id(path) == 0)
&& (xpt_path_lun_id(path) == lun_id)) {
break;
}
}
if (lun_softc == NULL) {
mtx_unlock(&softc->lun_softc_mtx);
- printf("%s: can't find target %d lun %d\n", __func__,
- targ_id.id, lun_id);
+ printf("%s: can't find lun %d\n", __func__, lun_id);
return (1);
}
cam_periph_acquire(lun_softc->periph);
@@ -2043,7 +2019,6 @@ ctlfe_done(union ctl_io *io)
if (periph->flags & CAM_PERIPH_INVALID) {
ctlfe_free_ccb(periph, ccb);
} else {
- softc->atios_sent++;
cam_periph_unlock(periph);
xpt_action(ccb);
return;
diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c
index a429259..8f27fd9 100644
--- a/sys/cam/scsi/scsi_all.c
+++ b/sys/cam/scsi/scsi_all.c
@@ -6453,6 +6453,830 @@ bailout:
return (retval);
}
+struct scsi_attrib_table_entry scsi_mam_attr_table[] = {
+ { SMA_ATTR_REM_CAP_PARTITION, SCSI_ATTR_FLAG_NONE,
+ "Remaining Capacity in Partition",
+ /*suffix*/ "MB", /*to_str*/ scsi_attrib_int_sbuf,/*parse_str*/ NULL },
+ { SMA_ATTR_MAX_CAP_PARTITION, SCSI_ATTR_FLAG_NONE,
+ "Maximum Capacity in Partition",
+ /*suffix*/"MB", /*to_str*/ scsi_attrib_int_sbuf, /*parse_str*/ NULL },
+ { SMA_ATTR_TAPEALERT_FLAGS, SCSI_ATTR_FLAG_HEX,
+ "TapeAlert Flags",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf, /*parse_str*/ NULL },
+ { SMA_ATTR_LOAD_COUNT, SCSI_ATTR_FLAG_NONE,
+ "Load Count",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf, /*parse_str*/ NULL },
+ { SMA_ATTR_MAM_SPACE_REMAINING, SCSI_ATTR_FLAG_NONE,
+ "MAM Space Remaining",
+ /*suffix*/"bytes", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_DEV_ASSIGNING_ORG, SCSI_ATTR_FLAG_NONE,
+ "Assigning Organization",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_FORMAT_DENSITY_CODE, SCSI_ATTR_FLAG_HEX,
+ "Format Density Code",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf, /*parse_str*/ NULL },
+ { SMA_ATTR_INITIALIZATION_COUNT, SCSI_ATTR_FLAG_NONE,
+ "Initialization Count",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf, /*parse_str*/ NULL },
+ { SMA_ATTR_VOLUME_ID, SCSI_ATTR_FLAG_NONE,
+ "Volume Identifier",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_VOLUME_CHANGE_REF, SCSI_ATTR_FLAG_HEX,
+ "Volume Change Reference",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_DEV_SERIAL_LAST_LOAD, SCSI_ATTR_FLAG_NONE,
+ "Device Vendor/Serial at Last Load",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_vendser_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_DEV_SERIAL_LAST_LOAD_1, SCSI_ATTR_FLAG_NONE,
+ "Device Vendor/Serial at Last Load - 1",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_vendser_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_DEV_SERIAL_LAST_LOAD_2, SCSI_ATTR_FLAG_NONE,
+ "Device Vendor/Serial at Last Load - 2",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_vendser_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_DEV_SERIAL_LAST_LOAD_3, SCSI_ATTR_FLAG_NONE,
+ "Device Vendor/Serial at Last Load - 3",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_vendser_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_TOTAL_MB_WRITTEN_LT, SCSI_ATTR_FLAG_NONE,
+ "Total MB Written in Medium Life",
+ /*suffix*/ "MB", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_TOTAL_MB_READ_LT, SCSI_ATTR_FLAG_NONE,
+ "Total MB Read in Medium Life",
+ /*suffix*/ "MB", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_TOTAL_MB_WRITTEN_CUR, SCSI_ATTR_FLAG_NONE,
+ "Total MB Written in Current/Last Load",
+ /*suffix*/ "MB", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_TOTAL_MB_READ_CUR, SCSI_ATTR_FLAG_NONE,
+ "Total MB Read in Current/Last Load",
+ /*suffix*/ "MB", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_FIRST_ENC_BLOCK, SCSI_ATTR_FLAG_NONE,
+ "Logical Position of First Encrypted Block",
+ /*suffix*/ NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_NEXT_UNENC_BLOCK, SCSI_ATTR_FLAG_NONE,
+ "Logical Position of First Unencrypted Block after First "
+ "Encrypted Block",
+ /*suffix*/ NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MEDIUM_USAGE_HIST, SCSI_ATTR_FLAG_NONE,
+ "Medium Usage History",
+ /*suffix*/ NULL, /*to_str*/ NULL,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_PART_USAGE_HIST, SCSI_ATTR_FLAG_NONE,
+ "Partition Usage History",
+ /*suffix*/ NULL, /*to_str*/ NULL,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_MANUF, SCSI_ATTR_FLAG_NONE,
+ "Medium Manufacturer",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_SERIAL, SCSI_ATTR_FLAG_NONE,
+ "Medium Serial Number",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_LENGTH, SCSI_ATTR_FLAG_NONE,
+ "Medium Length",
+ /*suffix*/"m", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_WIDTH, SCSI_ATTR_FLAG_FP | SCSI_ATTR_FLAG_DIV_10 |
+ SCSI_ATTR_FLAG_FP_1DIGIT,
+ "Medium Width",
+ /*suffix*/"mm", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_ASSIGNING_ORG, SCSI_ATTR_FLAG_NONE,
+ "Assigning Organization",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_DENSITY_CODE, SCSI_ATTR_FLAG_HEX,
+ "Medium Density Code",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_MANUF_DATE, SCSI_ATTR_FLAG_NONE,
+ "Medium Manufacture Date",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MAM_CAPACITY, SCSI_ATTR_FLAG_NONE,
+ "MAM Capacity",
+ /*suffix*/"bytes", /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_TYPE, SCSI_ATTR_FLAG_HEX,
+ "Medium Type",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_TYPE_INFO, SCSI_ATTR_FLAG_HEX,
+ "Medium Type Information",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MED_SERIAL_NUM, SCSI_ATTR_FLAG_NONE,
+ "Medium Serial Number",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_APP_VENDOR, SCSI_ATTR_FLAG_NONE,
+ "Application Vendor",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_APP_NAME, SCSI_ATTR_FLAG_NONE,
+ "Application Name",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_APP_VERSION, SCSI_ATTR_FLAG_NONE,
+ "Application Version",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_USER_MED_TEXT_LABEL, SCSI_ATTR_FLAG_NONE,
+ "User Medium Text Label",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_text_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_LAST_WRITTEN_TIME, SCSI_ATTR_FLAG_NONE,
+ "Date and Time Last Written",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_TEXT_LOCAL_ID, SCSI_ATTR_FLAG_HEX,
+ "Text Localization Identifier",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_BARCODE, SCSI_ATTR_FLAG_NONE,
+ "Barcode",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_HOST_OWNER_NAME, SCSI_ATTR_FLAG_NONE,
+ "Owning Host Textual Name",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_text_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_MEDIA_POOL, SCSI_ATTR_FLAG_NONE,
+ "Media Pool",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_text_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_PART_USER_LABEL, SCSI_ATTR_FLAG_NONE,
+ "Partition User Text Label",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_LOAD_UNLOAD_AT_PART, SCSI_ATTR_FLAG_NONE,
+ "Load/Unload at Partition",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_int_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_APP_FORMAT_VERSION, SCSI_ATTR_FLAG_NONE,
+ "Application Format Version",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_ascii_sbuf,
+ /*parse_str*/ NULL },
+ { SMA_ATTR_VOL_COHERENCY_INFO, SCSI_ATTR_FLAG_NONE,
+ "Volume Coherency Information",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_volcoh_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ff1, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Creation",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ff2, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM C3",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ff3, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM RW",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ff4, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM SDC List",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ff7, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Post Scan",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x0ffe, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Checksum",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17f1, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Creation",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17f2, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM C3",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17f3, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM RW",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17f4, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM SDC List",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17f7, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Post Scan",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+ { 0x17ff, SCSI_ATTR_FLAG_NONE,
+ "Spectra MLM Checksum",
+ /*suffix*/NULL, /*to_str*/ scsi_attrib_hexdump_sbuf,
+ /*parse_str*/ NULL },
+};
+
+/*
+ * Print out Volume Coherency Information (Attribute 0x080c).
+ * This field has two variable length members, including one at the
+ * beginning, so it isn't practical to have a fixed structure definition.
+ * This is current as of SSC4r03 (see section 4.2.21.3), dated March 25,
+ * 2013.
+ */
+int
+scsi_attrib_volcoh_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ size_t avail_len;
+ uint32_t field_size;
+ uint64_t tmp_val;
+ uint8_t *cur_ptr;
+ int retval;
+ int vcr_len, as_len;
+
+ retval = 0;
+ tmp_val = 0;
+
+ field_size = scsi_2btoul(hdr->length);
+ avail_len = valid_len - sizeof(*hdr);
+ if (field_size > avail_len) {
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Available "
+ "length of attribute ID 0x%.4x %zu < field "
+ "length %u", scsi_2btoul(hdr->id), avail_len,
+ field_size);
+ }
+ retval = 1;
+ goto bailout;
+ } else if (field_size == 0) {
+ /*
+ * It isn't clear from the spec whether a field length of
+ * 0 is invalid here. It probably is, but be lenient here
+ * to avoid inconveniencing the user.
+ */
+ goto bailout;
+ }
+ cur_ptr = hdr->attribute;
+ vcr_len = *cur_ptr;
+ cur_ptr++;
+
+ sbuf_printf(sb, "\n\tVolume Change Reference Value:");
+
+ switch (vcr_len) {
+ case 0:
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Volume Change "
+ "Reference value has length of 0");
+ }
+ retval = 1;
+ goto bailout;
+ break; /*NOTREACHED*/
+ case 1:
+ tmp_val = *cur_ptr;
+ break;
+ case 2:
+ tmp_val = scsi_2btoul(cur_ptr);
+ break;
+ case 3:
+ tmp_val = scsi_3btoul(cur_ptr);
+ break;
+ case 4:
+ tmp_val = scsi_4btoul(cur_ptr);
+ break;
+ case 8:
+ tmp_val = scsi_8btou64(cur_ptr);
+ break;
+ default:
+ sbuf_printf(sb, "\n");
+ sbuf_hexdump(sb, cur_ptr, vcr_len, NULL, 0);
+ break;
+ }
+ if (vcr_len <= 8)
+ sbuf_printf(sb, " 0x%jx\n", (uintmax_t)tmp_val);
+
+ cur_ptr += vcr_len;
+ tmp_val = scsi_8btou64(cur_ptr);
+ sbuf_printf(sb, "\tVolume Coherency Count: %ju\n", (uintmax_t)tmp_val);
+
+ cur_ptr += sizeof(tmp_val);
+ tmp_val = scsi_8btou64(cur_ptr);
+ sbuf_printf(sb, "\tVolume Coherency Set Identifier: 0x%jx\n",
+ (uintmax_t)tmp_val);
+
+ /*
+ * Figure out how long the Application Client Specific Information
+ * is and produce a hexdump.
+ */
+ cur_ptr += sizeof(tmp_val);
+ as_len = scsi_2btoul(cur_ptr);
+ cur_ptr += sizeof(uint16_t);
+ sbuf_printf(sb, "\tApplication Client Specific Information: ");
+ if (((as_len == SCSI_LTFS_VER0_LEN)
+ || (as_len == SCSI_LTFS_VER1_LEN))
+ && (strncmp(cur_ptr, SCSI_LTFS_STR_NAME, SCSI_LTFS_STR_LEN) == 0)) {
+ sbuf_printf(sb, "LTFS\n");
+ cur_ptr += SCSI_LTFS_STR_LEN + 1;
+ if (cur_ptr[SCSI_LTFS_UUID_LEN] != '\0')
+ cur_ptr[SCSI_LTFS_UUID_LEN] = '\0';
+ sbuf_printf(sb, "\tLTFS UUID: %s\n", cur_ptr);
+ cur_ptr += SCSI_LTFS_UUID_LEN + 1;
+ /* XXX KDM check the length */
+ sbuf_printf(sb, "\tLTFS Version: %d\n", *cur_ptr);
+ } else {
+ sbuf_printf(sb, "Unknown\n");
+ sbuf_hexdump(sb, cur_ptr, as_len, NULL, 0);
+ }
+
+bailout:
+ return (retval);
+}
+
+int
+scsi_attrib_vendser_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ size_t avail_len;
+ uint32_t field_size;
+ struct scsi_attrib_vendser *vendser;
+ cam_strvis_flags strvis_flags;
+ int retval = 0;
+
+ field_size = scsi_2btoul(hdr->length);
+ avail_len = valid_len - sizeof(*hdr);
+ if (field_size > avail_len) {
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Available "
+ "length of attribute ID 0x%.4x %zu < field "
+ "length %u", scsi_2btoul(hdr->id), avail_len,
+ field_size);
+ }
+ retval = 1;
+ goto bailout;
+ } else if (field_size == 0) {
+ /*
+ * A field size of 0 doesn't make sense here. The device
+ * can at least give you the vendor ID, even if it can't
+ * give you the serial number.
+ */
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "The length of "
+ "attribute ID 0x%.4x is 0",
+ scsi_2btoul(hdr->id));
+ }
+ retval = 1;
+ goto bailout;
+ }
+ vendser = (struct scsi_attrib_vendser *)hdr->attribute;
+
+ switch (output_flags & SCSI_ATTR_OUTPUT_NONASCII_MASK) {
+ case SCSI_ATTR_OUTPUT_NONASCII_TRIM:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_TRIM;
+ break;
+ case SCSI_ATTR_OUTPUT_NONASCII_RAW:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_RAW;
+ break;
+ case SCSI_ATTR_OUTPUT_NONASCII_ESC:
+ default:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_ESC;
+ break;;
+ }
+ cam_strvis_sbuf(sb, vendser->vendor, sizeof(vendser->vendor),
+ strvis_flags);
+ sbuf_putc(sb, ' ');
+ cam_strvis_sbuf(sb, vendser->serial_num, sizeof(vendser->serial_num),
+ strvis_flags);
+bailout:
+ return (retval);
+}
+
+int
+scsi_attrib_hexdump_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ uint32_t field_size;
+ ssize_t avail_len;
+ uint32_t print_len;
+ uint8_t *num_ptr;
+ int retval = 0;
+
+ field_size = scsi_2btoul(hdr->length);
+ avail_len = valid_len - sizeof(*hdr);
+ print_len = MIN(avail_len, field_size);
+ num_ptr = hdr->attribute;
+
+ if (print_len > 0) {
+ sbuf_printf(sb, "\n");
+ sbuf_hexdump(sb, num_ptr, print_len, NULL, 0);
+ }
+
+ return (retval);
+}
+
+int
+scsi_attrib_int_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ uint64_t print_number;
+ size_t avail_len;
+ uint32_t number_size;
+ int retval = 0;
+
+ number_size = scsi_2btoul(hdr->length);
+
+ avail_len = valid_len - sizeof(*hdr);
+ if (avail_len < number_size) {
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Available "
+ "length of attribute ID 0x%.4x %zu < field "
+ "length %u", scsi_2btoul(hdr->id), avail_len,
+ number_size);
+ }
+ retval = 1;
+ goto bailout;
+ }
+
+ switch (number_size) {
+ case 0:
+ /*
+ * We don't treat this as an error, since there may be
+ * scenarios where a device reports a field but then gives
+ * a length of 0. See the note in scsi_attrib_ascii_sbuf().
+ */
+ goto bailout;
+ break; /*NOTREACHED*/
+ case 1:
+ print_number = hdr->attribute[0];
+ break;
+ case 2:
+ print_number = scsi_2btoul(hdr->attribute);
+ break;
+ case 3:
+ print_number = scsi_3btoul(hdr->attribute);
+ break;
+ case 4:
+ print_number = scsi_4btoul(hdr->attribute);
+ break;
+ case 8:
+ print_number = scsi_8btou64(hdr->attribute);
+ break;
+ default:
+ /*
+ * If we wind up here, the number is too big to print
+ * normally, so just do a hexdump.
+ */
+ retval = scsi_attrib_hexdump_sbuf(sb, hdr, valid_len,
+ flags, output_flags,
+ error_str, error_str_len);
+ goto bailout;
+ break;
+ }
+
+ if (flags & SCSI_ATTR_FLAG_FP) {
+#ifndef _KERNEL
+ long double num_float;
+
+ num_float = (long double)print_number;
+
+ if (flags & SCSI_ATTR_FLAG_DIV_10)
+ num_float /= 10;
+
+ sbuf_printf(sb, "%.*Lf", (flags & SCSI_ATTR_FLAG_FP_1DIGIT) ?
+ 1 : 0, num_float);
+#else /* _KERNEL */
+ sbuf_printf(sb, "%ju", (flags & SCSI_ATTR_FLAG_DIV_10) ?
+ (print_number / 10) : print_number);
+#endif /* _KERNEL */
+ } else if (flags & SCSI_ATTR_FLAG_HEX) {
+ sbuf_printf(sb, "0x%jx", (uintmax_t)print_number);
+ } else
+ sbuf_printf(sb, "%ju", (uintmax_t)print_number);
+
+bailout:
+ return (retval);
+}
+
+int
+scsi_attrib_ascii_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ size_t avail_len;
+ uint32_t field_size, print_size;
+ int retval = 0;
+
+ avail_len = valid_len - sizeof(*hdr);
+ field_size = scsi_2btoul(hdr->length);
+ print_size = MIN(avail_len, field_size);
+
+ if (print_size > 0) {
+ cam_strvis_flags strvis_flags;
+
+ switch (output_flags & SCSI_ATTR_OUTPUT_NONASCII_MASK) {
+ case SCSI_ATTR_OUTPUT_NONASCII_TRIM:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_TRIM;
+ break;
+ case SCSI_ATTR_OUTPUT_NONASCII_RAW:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_RAW;
+ break;
+ case SCSI_ATTR_OUTPUT_NONASCII_ESC:
+ default:
+ strvis_flags = CAM_STRVIS_FLAG_NONASCII_ESC;
+ break;
+ }
+ cam_strvis_sbuf(sb, hdr->attribute, print_size, strvis_flags);
+ } else if (avail_len < field_size) {
+ /*
+ * We only report an error if the user didn't allocate
+ * enough space to hold the full value of this field. If
+ * the field length is 0, that is allowed by the spec.
+ * e.g. in SPC-4r37, section 7.4.2.2.5, VOLUME IDENTIFIER
+ * "This attribute indicates the current volume identifier
+ * (see SMC-3) of the medium. If the device server supports
+ * this attribute but does not have access to the volume
+ * identifier, the device server shall report this attribute
+ * with an attribute length value of zero."
+ */
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Available "
+ "length of attribute ID 0x%.4x %zu < field "
+ "length %u", scsi_2btoul(hdr->id), avail_len,
+ field_size);
+ }
+ retval = 1;
+ }
+
+ return (retval);
+}
+
+int
+scsi_attrib_text_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len)
+{
+ size_t avail_len;
+ uint32_t field_size, print_size;
+ int retval = 0;
+ int esc_text = 1;
+
+ avail_len = valid_len - sizeof(*hdr);
+ field_size = scsi_2btoul(hdr->length);
+ print_size = MIN(avail_len, field_size);
+
+ if ((output_flags & SCSI_ATTR_OUTPUT_TEXT_MASK) ==
+ SCSI_ATTR_OUTPUT_TEXT_RAW)
+ esc_text = 0;
+
+ if (print_size > 0) {
+ uint32_t i;
+
+ for (i = 0; i < print_size; i++) {
+ if (hdr->attribute[i] == '\0')
+ continue;
+ else if (((unsigned char)hdr->attribute[i] < 0x80)
+ || (esc_text == 0))
+ sbuf_putc(sb, hdr->attribute[i]);
+ else
+ sbuf_printf(sb, "%%%02x",
+ (unsigned char)hdr->attribute[i]);
+ }
+ } else if (avail_len < field_size) {
+ /*
+ * We only report an error if the user didn't allocate
+ * enough space to hold the full value of this field.
+ */
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Available "
+ "length of attribute ID 0x%.4x %zu < field "
+ "length %u", scsi_2btoul(hdr->id), avail_len,
+ field_size);
+ }
+ retval = 1;
+ }
+
+ return (retval);
+}
+
+struct scsi_attrib_table_entry *
+scsi_find_attrib_entry(struct scsi_attrib_table_entry *table,
+ size_t num_table_entries, uint32_t id)
+{
+ uint32_t i;
+
+ for (i = 0; i < num_table_entries; i++) {
+ if (table[i].id == id)
+ return (&table[i]);
+ }
+
+ return (NULL);
+}
+
+struct scsi_attrib_table_entry *
+scsi_get_attrib_entry(uint32_t id)
+{
+ return (scsi_find_attrib_entry(scsi_mam_attr_table,
+ sizeof(scsi_mam_attr_table) / sizeof(scsi_mam_attr_table[0]),
+ id));
+}
+
+int
+scsi_attrib_value_sbuf(struct sbuf *sb, uint32_t valid_len,
+ struct scsi_mam_attribute_header *hdr, uint32_t output_flags,
+ char *error_str, size_t error_str_len)
+{
+ int retval;
+
+ switch (hdr->byte2 & SMA_FORMAT_MASK) {
+ case SMA_FORMAT_ASCII:
+ retval = scsi_attrib_ascii_sbuf(sb, hdr, valid_len,
+ SCSI_ATTR_FLAG_NONE, output_flags, error_str,error_str_len);
+ break;
+ case SMA_FORMAT_BINARY:
+ if (scsi_2btoul(hdr->length) <= 8)
+ retval = scsi_attrib_int_sbuf(sb, hdr, valid_len,
+ SCSI_ATTR_FLAG_NONE, output_flags, error_str,
+ error_str_len);
+ else
+ retval = scsi_attrib_hexdump_sbuf(sb, hdr, valid_len,
+ SCSI_ATTR_FLAG_NONE, output_flags, error_str,
+ error_str_len);
+ break;
+ case SMA_FORMAT_TEXT:
+ retval = scsi_attrib_text_sbuf(sb, hdr, valid_len,
+ SCSI_ATTR_FLAG_NONE, output_flags, error_str,
+ error_str_len);
+ break;
+ default:
+ if (error_str != NULL) {
+ snprintf(error_str, error_str_len, "Unknown attribute "
+ "format 0x%x", hdr->byte2 & SMA_FORMAT_MASK);
+ }
+ retval = 1;
+ goto bailout;
+ break; /*NOTREACHED*/
+ }
+
+ sbuf_trim(sb);
+
+bailout:
+
+ return (retval);
+}
+
+void
+scsi_attrib_prefix_sbuf(struct sbuf *sb, uint32_t output_flags,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, const char *desc)
+{
+ int need_space = 0;
+ uint32_t len;
+ uint32_t id;
+
+ /*
+ * We can't do anything if we don't have enough valid data for the
+ * header.
+ */
+ if (valid_len < sizeof(*hdr))
+ return;
+
+ id = scsi_2btoul(hdr->id);
+ /*
+ * Note that we print out the value of the attribute listed in the
+ * header, regardless of whether we actually got that many bytes
+ * back from the device through the controller. A truncated result
+ * could be the result of a failure to ask for enough data; the
+ * header indicates how many bytes are allocated for this attribute
+ * in the MAM.
+ */
+ len = scsi_2btoul(hdr->length);
+
+ if ((output_flags & SCSI_ATTR_OUTPUT_FIELD_MASK) ==
+ SCSI_ATTR_OUTPUT_FIELD_NONE)
+ return;
+
+ if ((output_flags & SCSI_ATTR_OUTPUT_FIELD_DESC)
+ && (desc != NULL)) {
+ sbuf_printf(sb, "%s", desc);
+ need_space = 1;
+ }
+
+ if (output_flags & SCSI_ATTR_OUTPUT_FIELD_NUM) {
+ sbuf_printf(sb, "%s(0x%.4x)", (need_space) ? " " : "", id);
+ need_space = 0;
+ }
+
+ if (output_flags & SCSI_ATTR_OUTPUT_FIELD_SIZE) {
+ sbuf_printf(sb, "%s[%d]", (need_space) ? " " : "", len);
+ need_space = 0;
+ }
+ if (output_flags & SCSI_ATTR_OUTPUT_FIELD_RW) {
+ sbuf_printf(sb, "%s(%s)", (need_space) ? " " : "",
+ (hdr->byte2 & SMA_READ_ONLY) ? "RO" : "RW");
+ }
+ sbuf_printf(sb, ": ");
+}
+
+int
+scsi_attrib_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, struct scsi_attrib_table_entry *user_table,
+ size_t num_user_entries, int prefer_user_table,
+ uint32_t output_flags, char *error_str, int error_str_len)
+{
+ int retval;
+ struct scsi_attrib_table_entry *table1 = NULL, *table2 = NULL;
+ struct scsi_attrib_table_entry *entry = NULL;
+ size_t table1_size = 0, table2_size = 0;
+ uint32_t id;
+
+ retval = 0;
+
+ if (valid_len < sizeof(*hdr)) {
+ retval = 1;
+ goto bailout;
+ }
+
+ id = scsi_2btoul(hdr->id);
+
+ if (user_table != NULL) {
+ if (prefer_user_table != 0) {
+ table1 = user_table;
+ table1_size = num_user_entries;
+ table2 = scsi_mam_attr_table;
+ table2_size = sizeof(scsi_mam_attr_table) /
+ sizeof(scsi_mam_attr_table[0]);
+ } else {
+ table1 = scsi_mam_attr_table;
+ table1_size = sizeof(scsi_mam_attr_table) /
+ sizeof(scsi_mam_attr_table[0]);
+ table2 = user_table;
+ table2_size = num_user_entries;
+ }
+ } else {
+ table1 = scsi_mam_attr_table;
+ table1_size = sizeof(scsi_mam_attr_table) /
+ sizeof(scsi_mam_attr_table[0]);
+ }
+
+ entry = scsi_find_attrib_entry(table1, table1_size, id);
+ if (entry != NULL) {
+ scsi_attrib_prefix_sbuf(sb, output_flags, hdr, valid_len,
+ entry->desc);
+ if (entry->to_str == NULL)
+ goto print_default;
+ retval = entry->to_str(sb, hdr, valid_len, entry->flags,
+ output_flags, error_str, error_str_len);
+ goto bailout;
+ }
+ if (table2 != NULL) {
+ entry = scsi_find_attrib_entry(table2, table2_size, id);
+ if (entry != NULL) {
+ if (entry->to_str == NULL)
+ goto print_default;
+
+ scsi_attrib_prefix_sbuf(sb, output_flags, hdr,
+ valid_len, entry->desc);
+ retval = entry->to_str(sb, hdr, valid_len, entry->flags,
+ output_flags, error_str,
+ error_str_len);
+ goto bailout;
+ }
+ }
+
+ scsi_attrib_prefix_sbuf(sb, output_flags, hdr, valid_len, NULL);
+
+print_default:
+ retval = scsi_attrib_value_sbuf(sb, valid_len, hdr, output_flags,
+ error_str, error_str_len);
+bailout:
+ if (retval == 0) {
+ if ((entry != NULL)
+ && (entry->suffix != NULL))
+ sbuf_printf(sb, " %s", entry->suffix);
+
+ sbuf_trim(sb);
+ sbuf_printf(sb, "\n");
+ }
+
+ return (retval);
+}
+
void
scsi_test_unit_ready(struct ccb_scsiio *csio, u_int32_t retries,
void (*cbfcnp)(struct cam_periph *, union ccb *),
@@ -7403,6 +8227,74 @@ scsi_start_stop(struct ccb_scsiio *csio, u_int32_t retries,
timeout);
}
+void
+scsi_read_attribute(struct ccb_scsiio *csio, u_int32_t retries,
+ void (*cbfcnp)(struct cam_periph *, union ccb *),
+ u_int8_t tag_action, u_int8_t service_action,
+ uint32_t element, u_int8_t elem_type, int logical_volume,
+ int partition, u_int32_t first_attribute, int cache,
+ u_int8_t *data_ptr, u_int32_t length, int sense_len,
+ u_int32_t timeout)
+{
+ struct scsi_read_attribute *scsi_cmd;
+
+ scsi_cmd = (struct scsi_read_attribute *)&csio->cdb_io.cdb_bytes;
+ bzero(scsi_cmd, sizeof(*scsi_cmd));
+
+ scsi_cmd->opcode = READ_ATTRIBUTE;
+ scsi_cmd->service_action = service_action,
+ scsi_ulto2b(element, scsi_cmd->element);
+ scsi_cmd->elem_type = elem_type;
+ scsi_cmd->logical_volume = logical_volume;
+ scsi_cmd->partition = partition;
+ scsi_ulto2b(first_attribute, scsi_cmd->first_attribute);
+ scsi_ulto4b(length, scsi_cmd->length);
+ if (cache != 0)
+ scsi_cmd->cache |= SRA_CACHE;
+
+ cam_fill_csio(csio,
+ retries,
+ cbfcnp,
+ /*flags*/CAM_DIR_IN,
+ tag_action,
+ /*data_ptr*/data_ptr,
+ /*dxfer_len*/length,
+ sense_len,
+ sizeof(*scsi_cmd),
+ timeout);
+}
+
+void
+scsi_write_attribute(struct ccb_scsiio *csio, u_int32_t retries,
+ void (*cbfcnp)(struct cam_periph *, union ccb *),
+ u_int8_t tag_action, uint32_t element, int logical_volume,
+ int partition, int wtc, u_int8_t *data_ptr,
+ u_int32_t length, int sense_len, u_int32_t timeout)
+{
+ struct scsi_write_attribute *scsi_cmd;
+
+ scsi_cmd = (struct scsi_write_attribute *)&csio->cdb_io.cdb_bytes;
+ bzero(scsi_cmd, sizeof(*scsi_cmd));
+
+ scsi_cmd->opcode = WRITE_ATTRIBUTE;
+ if (wtc != 0)
+ scsi_cmd->byte2 = SWA_WTC;
+ scsi_ulto3b(element, scsi_cmd->element);
+ scsi_cmd->logical_volume = logical_volume;
+ scsi_cmd->partition = partition;
+ scsi_ulto4b(length, scsi_cmd->length);
+
+ cam_fill_csio(csio,
+ retries,
+ cbfcnp,
+ /*flags*/CAM_DIR_OUT,
+ tag_action,
+ /*data_ptr*/data_ptr,
+ /*dxfer_len*/length,
+ sense_len,
+ sizeof(*scsi_cmd),
+ timeout);
+}
void
scsi_persistent_reserve_in(struct ccb_scsiio *csio, uint32_t retries,
diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h
index f70b094..e446f6c 100644
--- a/sys/cam/scsi/scsi_all.h
+++ b/sys/cam/scsi/scsi_all.h
@@ -996,6 +996,216 @@ struct scsi_write_buffer
u_int8_t control;
};
+struct scsi_read_attribute
+{
+ u_int8_t opcode;
+ u_int8_t service_action;
+#define SRA_SA_ATTR_VALUES 0x00
+#define SRA_SA_ATTR_LIST 0x01
+#define SRA_SA_LOG_VOL_LIST 0x02
+#define SRA_SA_PART_LIST 0x03
+#define SRA_SA_RESTRICTED 0x04
+#define SRA_SA_SUPPORTED_ATTRS 0x05
+#define SRA_SA_MASK 0x1f
+ u_int8_t element[2];
+ u_int8_t elem_type;
+ u_int8_t logical_volume;
+ u_int8_t reserved1;
+ u_int8_t partition;
+ u_int8_t first_attribute[2];
+ u_int8_t length[4];
+ u_int8_t cache;
+#define SRA_CACHE 0x01
+ u_int8_t control;
+};
+
+struct scsi_write_attribute
+{
+ u_int8_t opcode;
+ u_int8_t byte2;
+#define SWA_WTC 0x01
+ u_int8_t element[3];
+ u_int8_t logical_volume;
+ u_int8_t reserved1;
+ u_int8_t partition;
+ u_int8_t reserved2[2];
+ u_int8_t length[4];
+ u_int8_t reserved3;
+ u_int8_t control;
+};
+
+
+struct scsi_read_attribute_values
+{
+ u_int8_t length[4];
+ u_int8_t attribute_0[0];
+};
+
+struct scsi_mam_attribute_header
+{
+ u_int8_t id[2];
+ /*
+ * Attributes obtained from SPC-4r36g (section 7.4.2.2) and
+ * SSC-4r03 (section 4.2.21).
+ */
+#define SMA_ATTR_ID_DEVICE_MIN 0x0000
+
+#define SMA_ATTR_REM_CAP_PARTITION 0x0000
+#define SMA_ATTR_MAX_CAP_PARTITION 0x0001
+#define SMA_ATTR_TAPEALERT_FLAGS 0x0002
+#define SMA_ATTR_LOAD_COUNT 0x0003
+#define SMA_ATTR_MAM_SPACE_REMAINING 0x0004
+
+#define SMA_ATTR_DEV_ASSIGNING_ORG 0x0005
+#define SMA_ATTR_FORMAT_DENSITY_CODE 0x0006
+#define SMA_ATTR_INITIALIZATION_COUNT 0x0007
+#define SMA_ATTR_VOLUME_ID 0x0008
+#define SMA_ATTR_VOLUME_CHANGE_REF 0x0009
+
+#define SMA_ATTR_DEV_SERIAL_LAST_LOAD 0x020a
+#define SMA_ATTR_DEV_SERIAL_LAST_LOAD_1 0x020b
+#define SMA_ATTR_DEV_SERIAL_LAST_LOAD_2 0x020c
+#define SMA_ATTR_DEV_SERIAL_LAST_LOAD_3 0x020d
+
+#define SMA_ATTR_TOTAL_MB_WRITTEN_LT 0x0220
+#define SMA_ATTR_TOTAL_MB_READ_LT 0x0221
+#define SMA_ATTR_TOTAL_MB_WRITTEN_CUR 0x0222
+#define SMA_ATTR_TOTAL_MB_READ_CUR 0x0223
+#define SMA_ATTR_FIRST_ENC_BLOCK 0x0224
+#define SMA_ATTR_NEXT_UNENC_BLOCK 0x0225
+
+#define SMA_ATTR_MEDIUM_USAGE_HIST 0x0340
+#define SMA_ATTR_PART_USAGE_HIST 0x0341
+
+#define SMA_ATTR_ID_DEVICE_MAX 0x03ff
+
+#define SMA_ATTR_ID_MEDIUM_MIN 0x0400
+
+#define SMA_ATTR_MED_MANUF 0x0400
+#define SMA_ATTR_MED_SERIAL 0x0401
+
+#define SMA_ATTR_MED_LENGTH 0x0402
+#define SMA_ATTR_MED_WIDTH 0x0403
+#define SMA_ATTR_MED_ASSIGNING_ORG 0x0404
+#define SMA_ATTR_MED_DENSITY_CODE 0x0405
+
+#define SMA_ATTR_MED_MANUF_DATE 0x0406
+#define SMA_ATTR_MAM_CAPACITY 0x0407
+#define SMA_ATTR_MED_TYPE 0x0408
+#define SMA_ATTR_MED_TYPE_INFO 0x0409
+#define SMA_ATTR_MED_SERIAL_NUM 0x040a
+
+#define SMA_ATTR_ID_MEDIUM_MAX 0x07ff
+
+#define SMA_ATTR_ID_HOST_MIN 0x0800
+
+#define SMA_ATTR_APP_VENDOR 0x0800
+#define SMA_ATTR_APP_NAME 0x0801
+#define SMA_ATTR_APP_VERSION 0x0802
+#define SMA_ATTR_USER_MED_TEXT_LABEL 0x0803
+#define SMA_ATTR_LAST_WRITTEN_TIME 0x0804
+#define SMA_ATTR_TEXT_LOCAL_ID 0x0805
+#define SMA_ATTR_BARCODE 0x0806
+#define SMA_ATTR_HOST_OWNER_NAME 0x0807
+#define SMA_ATTR_MEDIA_POOL 0x0808
+#define SMA_ATTR_PART_USER_LABEL 0x0809
+#define SMA_ATTR_LOAD_UNLOAD_AT_PART 0x080a
+#define SMA_ATTR_APP_FORMAT_VERSION 0x080b
+#define SMA_ATTR_VOL_COHERENCY_INFO 0x080c
+
+#define SMA_ATTR_ID_HOST_MAX 0x0bff
+
+#define SMA_ATTR_VENDOR_DEVICE_MIN 0x0c00
+#define SMA_ATTR_VENDOR_DEVICE_MAX 0x0fff
+#define SMA_ATTR_VENDOR_MEDIUM_MIN 0x1000
+#define SMA_ATTR_VENDOR_MEDIUM_MAX 0x13ff
+#define SMA_ATTR_VENDOR_HOST_MIN 0x1400
+#define SMA_ATTR_VENDOR_HOST_MAX 0x17ff
+ u_int8_t byte2;
+#define SMA_FORMAT_BINARY 0x00
+#define SMA_FORMAT_ASCII 0x01
+#define SMA_FORMAT_TEXT 0x02
+#define SMA_FORMAT_MASK 0x03
+#define SMA_READ_ONLY 0x80
+ u_int8_t length[2];
+ u_int8_t attribute[0];
+};
+
+struct scsi_attrib_list_header {
+ u_int8_t length[4];
+ u_int8_t first_attr_0[0];
+};
+
+struct scsi_attrib_lv_list {
+ u_int8_t length[2];
+ u_int8_t first_lv_number;
+ u_int8_t num_logical_volumes;
+};
+
+struct scsi_attrib_vendser {
+ uint8_t vendor[8];
+ uint8_t serial_num[32];
+};
+
+/*
+ * These values are used to decode the Volume Coherency Information
+ * Attribute (0x080c) for LTFS-format coherency information.
+ * Although the Application Client Specific lengths are different for
+ * Version 0 and Version 1, the data is in fact the same. The length
+ * difference was due to a code bug.
+ */
+#define SCSI_LTFS_VER0_LEN 42
+#define SCSI_LTFS_VER1_LEN 43
+#define SCSI_LTFS_UUID_LEN 36
+#define SCSI_LTFS_STR_NAME "LTFS"
+#define SCSI_LTFS_STR_LEN 4
+
+typedef enum {
+ SCSI_ATTR_FLAG_NONE = 0x00,
+ SCSI_ATTR_FLAG_HEX = 0x01,
+ SCSI_ATTR_FLAG_FP = 0x02,
+ SCSI_ATTR_FLAG_DIV_10 = 0x04,
+ SCSI_ATTR_FLAG_FP_1DIGIT = 0x08
+} scsi_attrib_flags;
+
+typedef enum {
+ SCSI_ATTR_OUTPUT_NONE = 0x00,
+ SCSI_ATTR_OUTPUT_TEXT_MASK = 0x03,
+ SCSI_ATTR_OUTPUT_TEXT_RAW = 0x00,
+ SCSI_ATTR_OUTPUT_TEXT_ESC = 0x01,
+ SCSI_ATTR_OUTPUT_TEXT_RSV1 = 0x02,
+ SCSI_ATTR_OUTPUT_TEXT_RSV2 = 0x03,
+ SCSI_ATTR_OUTPUT_NONASCII_MASK = 0x0c,
+ SCSI_ATTR_OUTPUT_NONASCII_TRIM = 0x00,
+ SCSI_ATTR_OUTPUT_NONASCII_ESC = 0x04,
+ SCSI_ATTR_OUTPUT_NONASCII_RAW = 0x08,
+ SCSI_ATTR_OUTPUT_NONASCII_RSV1 = 0x0c,
+ SCSI_ATTR_OUTPUT_FIELD_MASK = 0xf0,
+ SCSI_ATTR_OUTPUT_FIELD_ALL = 0xf0,
+ SCSI_ATTR_OUTPUT_FIELD_NONE = 0x00,
+ SCSI_ATTR_OUTPUT_FIELD_DESC = 0x10,
+ SCSI_ATTR_OUTPUT_FIELD_NUM = 0x20,
+ SCSI_ATTR_OUTPUT_FIELD_SIZE = 0x40,
+ SCSI_ATTR_OUTPUT_FIELD_RW = 0x80
+} scsi_attrib_output_flags;
+
+struct sbuf;
+
+struct scsi_attrib_table_entry
+{
+ u_int32_t id;
+ u_int32_t flags;
+ const char *desc;
+ const char *suffix;
+ int (*to_str)(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+ int (*parse_str)(char *str, struct scsi_mam_attribute_header *hdr,
+ uint32_t alloc_len, uint32_t flags, char *error_str,
+ int error_str_len);
+};
+
struct scsi_rw_6
{
u_int8_t opcode;
@@ -1750,6 +1960,8 @@ struct ata_pass_16 {
#define READ_16 0x88
#define COMPARE_AND_WRITE 0x89
#define WRITE_16 0x8A
+#define READ_ATTRIBUTE 0x8C
+#define WRITE_ATTRIBUTE 0x8D
#define WRITE_VERIFY_16 0x8E
#define VERIFY_16 0x8F
#define SYNCHRONIZE_CACHE_16 0x91
@@ -3272,8 +3484,6 @@ struct cam_device;
extern const char *scsi_sense_key_text[];
-struct sbuf;
-
__BEGIN_DECLS
void scsi_sense_desc(int sense_key, int asc, int ascq,
struct scsi_inquiry_data *inq_data,
@@ -3465,6 +3675,63 @@ int scsi_parse_transportid(char *transportid_str,
#endif
char *error_str, int error_str_len);
+
+int scsi_attrib_volcoh_sbuf(struct sbuf *sb,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+int scsi_attrib_vendser_sbuf(struct sbuf *sb,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+int scsi_attrib_hexdump_sbuf(struct sbuf *sb,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+int scsi_attrib_int_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+int scsi_attrib_ascii_sbuf(struct sbuf *sb,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+int scsi_attrib_text_sbuf(struct sbuf *sb,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, uint32_t flags,
+ uint32_t output_flags, char *error_str,
+ int error_str_len);
+
+struct scsi_attrib_table_entry *scsi_find_attrib_entry(
+ struct scsi_attrib_table_entry *table,
+ size_t num_table_entries, uint32_t id);
+
+struct scsi_attrib_table_entry *scsi_get_attrib_entry(uint32_t id);
+
+int scsi_attrib_value_sbuf(struct sbuf *sb, uint32_t valid_len,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t output_flags, char *error_str,
+ size_t error_str_len);
+
+void scsi_attrib_prefix_sbuf(struct sbuf *sb, uint32_t output_flags,
+ struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len, const char *desc);
+
+int scsi_attrib_sbuf(struct sbuf *sb, struct scsi_mam_attribute_header *hdr,
+ uint32_t valid_len,
+ struct scsi_attrib_table_entry *user_table,
+ size_t num_user_entries, int prefer_user_table,
+ uint32_t output_flags, char *error_str, int error_str_len);
+
void scsi_test_unit_ready(struct ccb_scsiio *csio, u_int32_t retries,
void (*cbfcnp)(struct cam_periph *,
union ccb *),
@@ -3659,6 +3926,18 @@ void scsi_start_stop(struct ccb_scsiio *csio, u_int32_t retries,
void (*cbfcnp)(struct cam_periph *, union ccb *),
u_int8_t tag_action, int start, int load_eject,
int immediate, u_int8_t sense_len, u_int32_t timeout);
+void scsi_read_attribute(struct ccb_scsiio *csio, u_int32_t retries,
+ void (*cbfcnp)(struct cam_periph *, union ccb *),
+ u_int8_t tag_action, u_int8_t service_action,
+ uint32_t element, u_int8_t elem_type,
+ int logical_volume, int partition,
+ u_int32_t first_attribute, int cache, u_int8_t *data_ptr,
+ u_int32_t length, int sense_len, u_int32_t timeout);
+void scsi_write_attribute(struct ccb_scsiio *csio, u_int32_t retries,
+ void (*cbfcnp)(struct cam_periph *, union ccb *),
+ u_int8_t tag_action, uint32_t element,
+ int logical_volume, int partition, int wtc, u_int8_t *data_ptr,
+ u_int32_t length, int sense_len, u_int32_t timeout);
void scsi_security_protocol_in(struct ccb_scsiio *csio, uint32_t retries,
void (*cbfcnp)(struct cam_periph *, union ccb *),
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
index 30ca7b9..affda74 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
@@ -1826,7 +1826,7 @@ arc_hdr_destroy(arc_buf_hdr_t *hdr)
if (l2hdr != NULL) {
trim_map_free(l2hdr->b_dev->l2ad_vdev, l2hdr->b_daddr,
- hdr->b_size, 0);
+ l2hdr->b_asize, 0);
list_remove(l2hdr->b_dev->l2ad_buflist, hdr);
arc_buf_l2_cdata_free(hdr);
ARCSTAT_INCR(arcstat_l2_size, -hdr->b_size);
@@ -3868,7 +3868,7 @@ arc_release(arc_buf_t *buf, void *tag)
vdev_space_update(l2hdr->b_dev->l2ad_vdev,
-l2hdr->b_asize, 0, 0);
trim_map_free(l2hdr->b_dev->l2ad_vdev, l2hdr->b_daddr,
- hdr->b_size, 0);
+ l2hdr->b_asize, 0);
kmem_free(l2hdr, sizeof (l2arc_buf_hdr_t));
ARCSTAT_INCR(arcstat_l2_size, -buf_size);
mutex_exit(&l2arc_buflist_mtx);
@@ -4813,7 +4813,7 @@ l2arc_write_done(zio_t *zio)
bytes_dropped += abl2->b_asize;
hdr->b_l2hdr = NULL;
trim_map_free(abl2->b_dev->l2ad_vdev, abl2->b_daddr,
- hdr->b_size, 0);
+ abl2->b_asize, 0);
kmem_free(abl2, sizeof (l2arc_buf_hdr_t));
ARCSTAT_INCR(arcstat_l2_size, -hdr->b_size);
}
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
index ea3c688..2b55290 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
*/
@@ -1298,6 +1298,16 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx)
dbuf_dirty_record_t *dr, **drp;
ASSERT(txg != 0);
+
+ /*
+ * Due to our use of dn_nlevels below, this can only be called
+ * in open context, unless we are operating on the MOS.
+ * From syncing context, dn_nlevels may be different from the
+ * dn_nlevels used when dbuf was dirtied.
+ */
+ ASSERT(db->db_objset ==
+ dmu_objset_pool(db->db_objset)->dp_meta_objset ||
+ txg != spa_syncing_txg(dmu_objset_spa(db->db_objset)));
ASSERT(db->db_blkid != DMU_BONUS_BLKID);
ASSERT0(db->db_level);
ASSERT(MUTEX_HELD(&db->db_mtx));
@@ -1320,11 +1330,8 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx)
ASSERT(db->db.db_size != 0);
- /*
- * Any space we accounted for in dp_dirty_* will be cleaned up by
- * dsl_pool_sync(). This is relatively rare so the discrepancy
- * is not a big deal.
- */
+ dsl_pool_undirty_space(dmu_objset_pool(dn->dn_objset),
+ dr->dr_accounted, txg);
*drp = dr->dr_next;
@@ -1339,7 +1346,7 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx)
list_remove(&dr->dr_parent->dt.di.dr_children, dr);
mutex_exit(&dr->dr_parent->dt.di.dr_mtx);
} else if (db->db_blkid == DMU_SPILL_BLKID ||
- db->db_level+1 == dn->dn_nlevels) {
+ db->db_level + 1 == dn->dn_nlevels) {
ASSERT(db->db_blkptr == NULL || db->db_parent == dn->dn_dbuf);
mutex_enter(&dn->dn_mtx);
list_remove(&dn->dn_dirty_records[txg & TXG_MASK], dr);
@@ -1356,11 +1363,6 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx)
VERIFY(arc_buf_remove_ref(dr->dt.dl.dr_data, db));
}
- if (db->db_level != 0) {
- mutex_destroy(&dr->dt.di.dr_mtx);
- list_destroy(&dr->dt.di.dr_children);
- }
-
kmem_free(dr, sizeof (dbuf_dirty_record_t));
ASSERT(db->db_dirtycnt > 0);
@@ -2318,7 +2320,7 @@ dbuf_sync_indirect(dbuf_dirty_record_t *dr, dmu_tx_t *tx)
zio = dr->dr_zio;
mutex_enter(&dr->dt.di.dr_mtx);
- dbuf_sync_list(&dr->dt.di.dr_children, tx);
+ dbuf_sync_list(&dr->dt.di.dr_children, db->db_level - 1, tx);
ASSERT(list_head(&dr->dt.di.dr_children) == NULL);
mutex_exit(&dr->dt.di.dr_mtx);
zio_nowait(zio);
@@ -2464,7 +2466,7 @@ dbuf_sync_leaf(dbuf_dirty_record_t *dr, dmu_tx_t *tx)
}
void
-dbuf_sync_list(list_t *list, dmu_tx_t *tx)
+dbuf_sync_list(list_t *list, int level, dmu_tx_t *tx)
{
dbuf_dirty_record_t *dr;
@@ -2481,6 +2483,10 @@ dbuf_sync_list(list_t *list, dmu_tx_t *tx)
DMU_META_DNODE_OBJECT);
break;
}
+ if (dr->dr_dbuf->db_blkid != DMU_BONUS_BLKID &&
+ dr->dr_dbuf->db_blkid != DMU_SPILL_BLKID) {
+ VERIFY3U(dr->dr_dbuf->db_level, ==, level);
+ }
list_remove(list, dr);
if (dr->dr_dbuf->db_level > 0)
dbuf_sync_indirect(dr, tx);
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
index adee4f8..fd6e800 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
@@ -855,6 +855,10 @@ dmu_send_estimate(dsl_dataset_t *ds, dsl_dataset_t *fromds, uint64_t *sizep)
if (!dsl_dataset_is_snapshot(ds))
return (SET_ERROR(EINVAL));
+ /* fromsnap, if provided, must be a snapshot */
+ if (fromds != NULL && !dsl_dataset_is_snapshot(fromds))
+ return (SET_ERROR(EINVAL));
+
/*
* fromsnap must be an earlier snapshot from the same fs as tosnap,
* or the origin's fs.
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
index 1f42704..dff9fab 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
*/
#include <sys/dmu.h>
@@ -686,7 +686,7 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t object, uint64_t off, uint64_t len)
uint64_t ibyte = i << shift;
err = dnode_next_offset(dn, 0, &ibyte, 2, 1, 0);
i = ibyte >> shift;
- if (err == ESRCH)
+ if (err == ESRCH || i > end)
break;
if (err) {
tx->tx_err = err;
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
index 938b5d6..a6e0197 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -1492,6 +1492,16 @@ out:
rw_downgrade(&dn->dn_struct_rwlock);
}
+static void
+dnode_dirty_l1(dnode_t *dn, uint64_t l1blkid, dmu_tx_t *tx)
+{
+ dmu_buf_impl_t *db = dbuf_hold_level(dn, 1, l1blkid, FTAG);
+ if (db != NULL) {
+ dmu_buf_will_dirty(&db->db, tx);
+ dbuf_rele(db, FTAG);
+ }
+}
+
void
dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx)
{
@@ -1612,27 +1622,67 @@ dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx)
nblks += 1;
/*
- * Dirty the first and last indirect blocks, as they (and/or their
- * parents) will need to be written out if they were only
- * partially freed. Interior indirect blocks will be themselves freed,
- * by free_children(), so they need not be dirtied. Note that these
- * interior blocks have already been prefetched by dmu_tx_hold_free().
+ * Dirty all the indirect blocks in this range. Note that only
+ * the first and last indirect blocks can actually be written
+ * (if they were partially freed) -- they must be dirtied, even if
+ * they do not exist on disk yet. The interior blocks will
+ * be freed by free_children(), so they will not actually be written.
+ * Even though these interior blocks will not be written, we
+ * dirty them for two reasons:
+ *
+ * - It ensures that the indirect blocks remain in memory until
+ * syncing context. (They have already been prefetched by
+ * dmu_tx_hold_free(), so we don't have to worry about reading
+ * them serially here.)
+ *
+ * - The dirty space accounting will put pressure on the txg sync
+ * mechanism to begin syncing, and to delay transactions if there
+ * is a large amount of freeing. Even though these indirect
+ * blocks will not be written, we could need to write the same
+ * amount of space if we copy the freed BPs into deadlists.
*/
if (dn->dn_nlevels > 1) {
uint64_t first, last;
first = blkid >> epbs;
- if (db = dbuf_hold_level(dn, 1, first, FTAG)) {
- dmu_buf_will_dirty(&db->db, tx);
- dbuf_rele(db, FTAG);
- }
+ dnode_dirty_l1(dn, first, tx);
if (trunc)
last = dn->dn_maxblkid >> epbs;
else
last = (blkid + nblks - 1) >> epbs;
- if (last > first && (db = dbuf_hold_level(dn, 1, last, FTAG))) {
- dmu_buf_will_dirty(&db->db, tx);
- dbuf_rele(db, FTAG);
+ if (last != first)
+ dnode_dirty_l1(dn, last, tx);
+
+ int shift = dn->dn_datablkshift + dn->dn_indblkshift -
+ SPA_BLKPTRSHIFT;
+ for (uint64_t i = first + 1; i < last; i++) {
+ /*
+ * Set i to the blockid of the next non-hole
+ * level-1 indirect block at or after i. Note
+ * that dnode_next_offset() operates in terms of
+ * level-0-equivalent bytes.
+ */
+ uint64_t ibyte = i << shift;
+ int err = dnode_next_offset(dn, DNODE_FIND_HAVELOCK,
+ &ibyte, 2, 1, 0);
+ i = ibyte >> shift;
+ if (i >= last)
+ break;
+
+ /*
+ * Normally we should not see an error, either
+ * from dnode_next_offset() or dbuf_hold_level()
+ * (except for ESRCH from dnode_next_offset).
+ * If there is an i/o error, then when we read
+ * this block in syncing context, it will use
+ * ZIO_FLAG_MUSTSUCCEED, and thus hang/panic according
+ * to the "failmode" property. dnode_next_offset()
+ * doesn't have a flag to indicate MUSTSUCCEED.
+ */
+ if (err != 0)
+ break;
+
+ dnode_dirty_l1(dn, i, tx);
}
}
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
index 63bfc94..418d318 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -712,7 +712,7 @@ dnode_sync(dnode_t *dn, dmu_tx_t *tx)
mutex_exit(&dn->dn_mtx);
}
- dbuf_sync_list(list, tx);
+ dbuf_sync_list(list, dn->dn_phys->dn_nlevels - 1, tx);
if (!DMU_OBJECT_IS_SPECIAL(dn->dn_object)) {
ASSERT3P(list_head(list), ==, NULL);
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
index 8700f4c..7c89454 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
@@ -2256,6 +2256,8 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
return (error);
ASSERT(spa->spa_root_vdev == rvd);
+ ASSERT3U(spa->spa_min_ashift, >=, SPA_MINBLOCKSHIFT);
+ ASSERT3U(spa->spa_max_ashift, <=, SPA_MAXBLOCKSHIFT);
if (type != SPA_IMPORT_ASSEMBLE) {
ASSERT(spa_guid(spa) == pool_guid);
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
index d072dc3..994fb1c 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
*/
@@ -719,6 +719,9 @@ spa_add(const char *name, nvlist_t *config, const char *altroot)
spa->spa_debug = ((zfs_flags & ZFS_DEBUG_SPA) != 0);
+ spa->spa_min_ashift = INT_MAX;
+ spa->spa_max_ashift = 0;
+
/*
* As a pool is being created, treat all features as disabled by
* setting SPA_FEATURE_DISABLED for all entries in the feature
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
index 8be8ed6b..319406a 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
@@ -287,7 +287,7 @@ void dbuf_evict(dmu_buf_impl_t *db);
void dbuf_setdirty(dmu_buf_impl_t *db, dmu_tx_t *tx);
void dbuf_unoverride(dbuf_dirty_record_t *dr);
-void dbuf_sync_list(list_t *list, dmu_tx_t *tx);
+void dbuf_sync_list(list_t *list, int level, dmu_tx_t *tx);
void dbuf_release_bp(dmu_buf_impl_t *db);
void dbuf_free_range(struct dnode *dn, uint64_t start, uint64_t end,
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
index d1737e1..c656013 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
*/
@@ -147,6 +147,8 @@ struct spa {
objset_t *spa_meta_objset; /* copy of dp->dp_meta_objset */
txg_list_t spa_vdev_txg_list; /* per-txg dirty vdev list */
vdev_t *spa_root_vdev; /* top-level vdev container */
+ int spa_min_ashift; /* of vdevs in normal class */
+ int spa_max_ashift; /* of vdevs in normal class */
uint64_t spa_config_guid; /* config pool guid */
uint64_t spa_load_guid; /* spa_load initialized guid */
uint64_t spa_last_synced_guid; /* last synced guid */
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
index e7515d5..c14ac21 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
*/
#ifndef _SYS_VDEV_IMPL_H
@@ -225,7 +225,7 @@ struct vdev {
boolean_t vdev_isl2cache; /* was a l2cache device */
vdev_queue_t vdev_queue; /* I/O deadline schedule queue */
vdev_cache_t vdev_cache; /* physical block cache */
- spa_aux_vdev_t *vdev_aux; /* for l2cache vdevs */
+ spa_aux_vdev_t *vdev_aux; /* for l2cache and spares vdevs */
zio_t *vdev_probe_zio; /* root of current probe */
vdev_aux_t vdev_label_aux; /* on-disk aux state */
struct trim_map *vdev_trimmap; /* map on outstanding trims */
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
index a3ec38e..c434f0c 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
@@ -21,8 +21,8 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
* Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
*/
@@ -278,8 +278,9 @@ vdev_add_child(vdev_t *pvd, vdev_t *cvd)
size_t oldsize, newsize;
uint64_t id = cvd->vdev_id;
vdev_t **newchild;
+ spa_t *spa = cvd->vdev_spa;
- ASSERT(spa_config_held(cvd->vdev_spa, SCL_ALL, RW_WRITER) == SCL_ALL);
+ ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL);
ASSERT(cvd->vdev_parent == NULL);
cvd->vdev_parent = pvd;
@@ -1398,6 +1399,17 @@ vdev_open(vdev_t *vd)
}
/*
+ * Track the min and max ashift values for normal data devices.
+ */
+ if (vd->vdev_top == vd && vd->vdev_ashift != 0 &&
+ !vd->vdev_islog && vd->vdev_aux == NULL) {
+ if (vd->vdev_ashift > spa->spa_max_ashift)
+ spa->spa_max_ashift = vd->vdev_ashift;
+ if (vd->vdev_ashift < spa->spa_min_ashift)
+ spa->spa_min_ashift = vd->vdev_ashift;
+ }
+
+ /*
* If a leaf vdev has a DTL, and seems healthy, then kick off a
* resilver. But don't do this if we are doing a reopen for a scrub,
* since this would just restart the scrub we are already doing.
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
index 5800db0..e3b6581 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
@@ -25,12 +25,11 @@
* All rights reserved.
* Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
* Copyright 2014 Xin Li <delphij@FreeBSD.org>. All rights reserved.
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2014, Joyent, Inc. All rights reserved.
* Copyright (c) 2011, 2014 by Delphix. All rights reserved.
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
- * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -5240,6 +5239,7 @@ zfs_ioc_smb_acl(zfs_cmd_t *zc)
static int
zfs_ioc_hold(const char *pool, nvlist_t *args, nvlist_t *errlist)
{
+ nvpair_t *pair;
nvlist_t *holds;
int cleanup_fd = -1;
int error;
@@ -5249,6 +5249,19 @@ zfs_ioc_hold(const char *pool, nvlist_t *args, nvlist_t *errlist)
if (error != 0)
return (SET_ERROR(EINVAL));
+ /* make sure the user didn't pass us any invalid (empty) tags */
+ for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL;
+ pair = nvlist_next_nvpair(holds, pair)) {
+ char *htag;
+
+ error = nvpair_value_string(pair, &htag);
+ if (error != 0)
+ return (SET_ERROR(error));
+
+ if (strlen(htag) == 0)
+ return (SET_ERROR(EINVAL));
+ }
+
if (nvlist_lookup_int32(args, "cleanup_fd", &cleanup_fd) == 0) {
error = zfs_onexit_fd_hold(cleanup_fd, &minor);
if (error != 0)
@@ -5362,11 +5375,19 @@ zfs_ioc_space_snaps(const char *lastsnap, nvlist_t *innvl, nvlist_t *outnvl)
return (error);
error = dsl_dataset_hold(dp, lastsnap, FTAG, &new);
+ if (error == 0 && !dsl_dataset_is_snapshot(new)) {
+ dsl_dataset_rele(new, FTAG);
+ error = SET_ERROR(EINVAL);
+ }
if (error != 0) {
dsl_pool_rele(dp, FTAG);
return (error);
}
error = dsl_dataset_hold(dp, firstsnap, FTAG, &old);
+ if (error == 0 && !dsl_dataset_is_snapshot(old)) {
+ dsl_dataset_rele(old, FTAG);
+ error = SET_ERROR(EINVAL);
+ }
if (error != 0) {
dsl_dataset_rele(new, FTAG);
dsl_pool_rele(dp, FTAG);
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
index 5bd6725..1038a87 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -5734,8 +5734,6 @@ zfs_getpages(struct vnode *vp, vm_page_t *m, int count, int reqpage)
object = mreq->object;
error = 0;
- KASSERT(vp->v_object == object, ("mismatching object"));
-
if (pcount > 1 && zp->z_blksz > PAGESIZE) {
startoff = rounddown(IDX_TO_OFF(mreq->pindex), zp->z_blksz);
reqstart = OFF_TO_IDX(round_page(startoff));
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index e3b314f..3d30082 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -1797,7 +1797,6 @@ log:
void
zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
{
- zfsvfs_t zfsvfs;
uint64_t moid, obj, sa_obj, version;
uint64_t sense = ZFS_CASE_SENSITIVE;
uint64_t norm = 0;
@@ -1805,6 +1804,7 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
int error;
int i;
znode_t *rootzp = NULL;
+ zfsvfs_t *zfsvfs;
vattr_t vattr;
znode_t *zp;
zfs_acl_ids_t acl_ids;
@@ -1880,7 +1880,7 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
vattr.va_uid = crgetuid(cr);
vattr.va_gid = crgetgid(cr);
- bzero(&zfsvfs, sizeof (zfsvfs_t));
+ zfsvfs = kmem_zalloc(sizeof (zfsvfs_t), KM_SLEEP);
rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP);
ASSERT(!POINTER_IS_VALID(rootzp->z_zfsvfs));
@@ -1889,15 +1889,15 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
rootzp->z_atime_dirty = 0;
rootzp->z_is_sa = USE_SA(version, os);
- zfsvfs.z_os = os;
- zfsvfs.z_parent = &zfsvfs;
- zfsvfs.z_version = version;
- zfsvfs.z_use_fuids = USE_FUIDS(version, os);
- zfsvfs.z_use_sa = USE_SA(version, os);
- zfsvfs.z_norm = norm;
+ zfsvfs->z_os = os;
+ zfsvfs->z_parent = zfsvfs;
+ zfsvfs->z_version = version;
+ zfsvfs->z_use_fuids = USE_FUIDS(version, os);
+ zfsvfs->z_use_sa = USE_SA(version, os);
+ zfsvfs->z_norm = norm;
error = sa_setup(os, sa_obj, zfs_attr_table, ZPL_END,
- &zfsvfs.z_attr_table);
+ &zfsvfs->z_attr_table);
ASSERT(error == 0);
@@ -1906,16 +1906,16 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
* insensitive.
*/
if (sense == ZFS_CASE_INSENSITIVE || sense == ZFS_CASE_MIXED)
- zfsvfs.z_norm |= U8_TEXTPREP_TOUPPER;
+ zfsvfs->z_norm |= U8_TEXTPREP_TOUPPER;
- mutex_init(&zfsvfs.z_znodes_lock, NULL, MUTEX_DEFAULT, NULL);
- list_create(&zfsvfs.z_all_znodes, sizeof (znode_t),
+ mutex_init(&zfsvfs->z_znodes_lock, NULL, MUTEX_DEFAULT, NULL);
+ list_create(&zfsvfs->z_all_znodes, sizeof (znode_t),
offsetof(znode_t, z_link_node));
for (i = 0; i != ZFS_OBJ_MTX_SZ; i++)
- mutex_init(&zfsvfs.z_hold_mtx[i], NULL, MUTEX_DEFAULT, NULL);
+ mutex_init(&zfsvfs->z_hold_mtx[i], NULL, MUTEX_DEFAULT, NULL);
- rootzp->z_zfsvfs = &zfsvfs;
+ rootzp->z_zfsvfs = zfsvfs;
VERIFY(0 == zfs_acl_ids_create(rootzp, IS_ROOT_NODE, &vattr,
cr, NULL, &acl_ids));
zfs_mknode(rootzp, &vattr, tx, cr, IS_ROOT_NODE, &zp, &acl_ids);
@@ -1932,12 +1932,13 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
* Create shares directory
*/
- error = zfs_create_share_dir(&zfsvfs, tx);
+ error = zfs_create_share_dir(zfsvfs, tx);
ASSERT(error == 0);
for (i = 0; i != ZFS_OBJ_MTX_SZ; i++)
- mutex_destroy(&zfsvfs.z_hold_mtx[i]);
+ mutex_destroy(&zfsvfs->z_hold_mtx[i]);
+ kmem_free(zfsvfs, sizeof (zfsvfs_t));
}
#endif /* _KERNEL */
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
index afda3e4..ae4d00c 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
*/
@@ -1264,19 +1264,23 @@ zio_write_bp_init(zio_t *zio)
return (ZIO_PIPELINE_CONTINUE);
} else {
/*
- * Round up compressed size to MINBLOCKSIZE and
- * zero the tail.
+ * Round up compressed size up to the ashift
+ * of the smallest-ashift device, and zero the tail.
+ * This ensures that the compressed size of the BP
+ * (and thus compressratio property) are correct,
+ * in that we charge for the padding used to fill out
+ * the last sector.
*/
- size_t rounded =
- P2ROUNDUP(psize, (size_t)SPA_MINBLOCKSIZE);
- if (rounded > psize) {
- bzero((char *)cbuf + psize, rounded - psize);
- psize = rounded;
- }
- if (psize == lsize) {
+ ASSERT3U(spa->spa_min_ashift, >=, SPA_MINBLOCKSHIFT);
+ size_t rounded = (size_t)P2ROUNDUP(psize,
+ 1ULL << spa->spa_min_ashift);
+ if (rounded >= lsize) {
compress = ZIO_COMPRESS_OFF;
zio_buf_free(cbuf, lsize);
+ psize = lsize;
} else {
+ bzero((char *)cbuf + psize, rounded - psize);
+ psize = rounded;
zio_push_transform(zio, cbuf,
psize, lsize, NULL);
}
diff --git a/sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h b/sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h
index 3003514..aa84f36 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h
+++ b/sys/cddl/contrib/opensolaris/uts/common/sys/sysmacros.h
@@ -32,6 +32,9 @@
#include <sys/param.h>
#include <sys/isa_defs.h>
+#if defined(__FreeBSD__) && defined(_KERNEL)
+#include <sys/libkern.h>
+#endif
#ifdef __cplusplus
extern "C" {
@@ -382,6 +385,9 @@ extern unsigned char bcd_to_byte[256];
static __inline int
highbit(ulong_t i)
{
+#if defined(__FreeBSD__) && defined(_KERNEL) && defined(HAVE_INLINE_FLSL)
+ return (flsl(i));
+#else
register int h = 1;
if (i == 0)
@@ -407,6 +413,7 @@ highbit(ulong_t i)
h += 1;
}
return (h);
+#endif
}
/*
@@ -416,6 +423,9 @@ highbit(ulong_t i)
static __inline int
highbit64(uint64_t i)
{
+#if defined(__FreeBSD__) && defined(_KERNEL) && defined(HAVE_INLINE_FLSLL)
+ return (flsll(i));
+#else
int h = 1;
if (i == 0)
@@ -439,6 +449,7 @@ highbit64(uint64_t i)
h += 1;
}
return (h);
+#endif
}
#ifdef __cplusplus
diff --git a/sys/cddl/dev/dtrace/arm/dtrace_asm.S b/sys/cddl/dev/dtrace/arm/dtrace_asm.S
index 06e91d2..fd0ce6c 100644
--- a/sys/cddl/dev/dtrace/arm/dtrace_asm.S
+++ b/sys/cddl/dev/dtrace/arm/dtrace_asm.S
@@ -28,7 +28,6 @@
#define _ASM
#define _LOCORE
-#define LOCORE
#include <sys/cpuvar_defs.h>
#include <sys/dtrace.h>
diff --git a/sys/compat/linux/linux_event.c b/sys/compat/linux/linux_event.c
index 4031588..fcb5753 100644
--- a/sys/compat/linux/linux_event.c
+++ b/sys/compat/linux/linux_event.c
@@ -260,6 +260,8 @@ epoll_to_kevent(struct thread *td, struct file *epfp,
*kev_flags |= EV_CLEAR;
if ((levents & LINUX_EPOLLERR) != 0)
*kev_flags |= EV_ERROR;
+ if ((levents & LINUX_EPOLLRDHUP) != 0)
+ *kev_flags |= EV_EOF;
/* flags related to what event is registered */
if ((levents & LINUX_EPOLL_EVRD) != 0) {
@@ -309,6 +311,8 @@ kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event)
switch (kevent->filter) {
case EVFILT_READ:
l_event->events = LINUX_EPOLLIN|LINUX_EPOLLRDNORM|LINUX_EPOLLPRI;
+ if ((kevent->flags & EV_EOF) != 0)
+ l_event->events |= LINUX_EPOLLRDHUP;
break;
case EVFILT_WRITE:
l_event->events = LINUX_EPOLLOUT|LINUX_EPOLLWRNORM;
diff --git a/sys/compat/linux/linux_event.h b/sys/compat/linux/linux_event.h
index 0c030ad..9b7d37b 100644
--- a/sys/compat/linux/linux_event.h
+++ b/sys/compat/linux/linux_event.h
@@ -49,7 +49,7 @@
|LINUX_EPOLLHUP|LINUX_EPOLLERR|LINUX_EPOLLPRI)
#define LINUX_EPOLL_EVWR (LINUX_EPOLLOUT|LINUX_EPOLLWRNORM)
#define LINUX_EPOLL_EVSUP (LINUX_EPOLLET|LINUX_EPOLLONESHOT \
- |LINUX_EPOLL_EVRD|LINUX_EPOLL_EVWR)
+ |LINUX_EPOLL_EVRD|LINUX_EPOLL_EVWR|LINUX_EPOLLRDHUP)
#define LINUX_EPOLL_CTL_ADD 1
#define LINUX_EPOLL_CTL_DEL 2
diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c
index 9251a20..1e5e37a 100644
--- a/sys/compat/linux/linux_file.c
+++ b/sys/compat/linux/linux_file.c
@@ -348,8 +348,7 @@ getdents_common(struct thread *td, struct linux_getdents64_args *args,
} else
justone = 0;
- error = getvnode(td->td_proc->p_fd, args->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, args->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
diff --git a/sys/compat/linux/linux_fork.c b/sys/compat/linux/linux_fork.c
index 0fd47fd..394c26f 100644
--- a/sys/compat/linux/linux_fork.c
+++ b/sys/compat/linux/linux_fork.c
@@ -298,7 +298,7 @@ linux_clone_thread(struct thread *td, struct linux_clone_args *args)
__rangeof(struct thread, td_startcopy, td_endcopy));
newtd->td_proc = p;
- newtd->td_ucred = crhold(td->td_ucred);
+ thread_cow_get(newtd, td);
/* create the emuldata */
linux_proc_init(td, newtd, args->flags);
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index 65d27ba..fa5feaf 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -383,7 +383,7 @@ linux_uselib(struct thread *td, struct linux_uselib_args *args)
*/
PROC_LOCK(td->td_proc);
if (a_out->a_text > maxtsiz ||
- a_out->a_data + bss_size > lim_cur(td->td_proc, RLIMIT_DATA) ||
+ a_out->a_data + bss_size > lim_cur_proc(td->td_proc, RLIMIT_DATA) ||
racct_set(td->td_proc, RACCT_DATA, a_out->a_data +
bss_size) != 0) {
PROC_UNLOCK(td->td_proc);
@@ -1420,7 +1420,6 @@ int
linux_old_getrlimit(struct thread *td, struct linux_old_getrlimit_args *args)
{
struct l_rlimit rlim;
- struct proc *p = td->td_proc;
struct rlimit bsd_rlim;
u_int which;
@@ -1437,9 +1436,7 @@ linux_old_getrlimit(struct thread *td, struct linux_old_getrlimit_args *args)
if (which == -1)
return (EINVAL);
- PROC_LOCK(p);
- lim_rlimit(p, which, &bsd_rlim);
- PROC_UNLOCK(p);
+ lim_rlimit(td, which, &bsd_rlim);
#ifdef COMPAT_LINUX32
rlim.rlim_cur = (unsigned int)bsd_rlim.rlim_cur;
@@ -1464,7 +1461,6 @@ int
linux_getrlimit(struct thread *td, struct linux_getrlimit_args *args)
{
struct l_rlimit rlim;
- struct proc *p = td->td_proc;
struct rlimit bsd_rlim;
u_int which;
@@ -1481,9 +1477,7 @@ linux_getrlimit(struct thread *td, struct linux_getrlimit_args *args)
if (which == -1)
return (EINVAL);
- PROC_LOCK(p);
- lim_rlimit(p, which, &bsd_rlim);
- PROC_UNLOCK(p);
+ lim_rlimit(td, which, &bsd_rlim);
rlim.rlim_cur = (l_ulong)bsd_rlim.rlim_cur;
rlim.rlim_max = (l_ulong)bsd_rlim.rlim_max;
@@ -2204,7 +2198,7 @@ linux_prlimit64(struct thread *td, struct linux_prlimit64_args *args)
if (args->old != NULL) {
PROC_LOCK(p);
- lim_rlimit(p, which, &rlim);
+ lim_rlimit_proc(p, which, &rlim);
PROC_UNLOCK(p);
if (rlim.rlim_cur == RLIM_INFINITY)
lrlim.rlim_cur = LINUX_RLIM_INFINITY;
diff --git a/sys/compat/svr4/imgact_svr4.c b/sys/compat/svr4/imgact_svr4.c
index f3bb09e..e61b49b 100644
--- a/sys/compat/svr4/imgact_svr4.c
+++ b/sys/compat/svr4/imgact_svr4.c
@@ -109,7 +109,7 @@ exec_svr4_imgact(imgp)
*/
PROC_LOCK(imgp->proc);
if (a_out->a_text > maxtsiz ||
- a_out->a_data + bss_size > lim_cur(imgp->proc, RLIMIT_DATA) ||
+ a_out->a_data + bss_size > lim_cur_proc(imgp->proc, RLIMIT_DATA) ||
racct_set(imgp->proc, RACCT_DATA, a_out->a_data + bss_size) != 0) {
PROC_UNLOCK(imgp->proc);
return (ENOMEM);
diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c
index c0da170..ec4504e 100644
--- a/sys/compat/svr4/svr4_misc.c
+++ b/sys/compat/svr4/svr4_misc.c
@@ -262,8 +262,7 @@ svr4_sys_getdents64(td, uap)
DPRINTF(("svr4_sys_getdents64(%d, *, %d)\n",
uap->fd, uap->nbytes));
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
@@ -442,8 +441,7 @@ svr4_sys_getdents(td, uap)
if (uap->nbytes < 0)
return (EINVAL);
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
@@ -622,7 +620,7 @@ svr4_sys_fchroot(td, uap)
struct thread *td;
struct svr4_sys_fchroot_args *uap;
{
- struct filedesc *fdp = td->td_proc->p_fd;
+ cap_rights_t rights;
struct vnode *vp;
struct file *fp;
int error;
@@ -630,7 +628,7 @@ svr4_sys_fchroot(td, uap)
if ((error = priv_check(td, PRIV_VFS_FCHROOT)) != 0)
return error;
/* XXX: we have the chroot priv... what cap might we need? all? */
- if ((error = getvnode(fdp, uap->fd, 0, &fp)) != 0)
+ if ((error = getvnode(td, uap->fd, cap_rights_init(&rights), &fp)) != 0)
return error;
vp = fp->f_vnode;
VREF(vp);
@@ -910,9 +908,7 @@ svr4_sys_ulimit(td, uap)
switch (uap->cmd) {
case SVR4_GFILLIM:
- PROC_LOCK(td->td_proc);
- *retval = lim_cur(td->td_proc, RLIMIT_FSIZE) / 512;
- PROC_UNLOCK(td->td_proc);
+ *retval = lim_cur(td, RLIMIT_FSIZE) / 512;
if (*retval == -1)
*retval = 0x7fffffff;
return 0;
@@ -922,17 +918,13 @@ svr4_sys_ulimit(td, uap)
struct rlimit krl;
krl.rlim_cur = uap->newlimit * 512;
- PROC_LOCK(td->td_proc);
- krl.rlim_max = lim_max(td->td_proc, RLIMIT_FSIZE);
- PROC_UNLOCK(td->td_proc);
+ krl.rlim_max = lim_max(td, RLIMIT_FSIZE);
error = kern_setrlimit(td, RLIMIT_FSIZE, &krl);
if (error)
return error;
- PROC_LOCK(td->td_proc);
- *retval = lim_cur(td->td_proc, RLIMIT_FSIZE);
- PROC_UNLOCK(td->td_proc);
+ *retval = lim_cur(td, RLIMIT_FSIZE);
if (*retval == -1)
*retval = 0x7fffffff;
return 0;
@@ -943,9 +935,7 @@ svr4_sys_ulimit(td, uap)
struct vmspace *vm = td->td_proc->p_vmspace;
register_t r;
- PROC_LOCK(td->td_proc);
- r = lim_cur(td->td_proc, RLIMIT_DATA);
- PROC_UNLOCK(td->td_proc);
+ r = lim_cur(td, RLIMIT_DATA);
if (r == -1)
r = 0x7fffffff;
@@ -957,9 +947,7 @@ svr4_sys_ulimit(td, uap)
}
case SVR4_GDESLIM:
- PROC_LOCK(td->td_proc);
- *retval = lim_cur(td->td_proc, RLIMIT_NOFILE);
- PROC_UNLOCK(td->td_proc);
+ *retval = lim_cur(td, RLIMIT_NOFILE);
if (*retval == -1)
*retval = 0x7fffffff;
return 0;
diff --git a/sys/compat/svr4/svr4_resource.c b/sys/compat/svr4/svr4_resource.c
index efa0bcf..667ee88 100644
--- a/sys/compat/svr4/svr4_resource.c
+++ b/sys/compat/svr4/svr4_resource.c
@@ -130,9 +130,7 @@ svr4_sys_getrlimit(td, uap)
if (rl == -1)
return EINVAL;
- PROC_LOCK(td->td_proc);
- lim_rlimit(td->td_proc, rl, &blim);
- PROC_UNLOCK(td->td_proc);
+ lim_rlimit(td, rl, &blim);
/*
* Our infinity, is their maxfiles.
@@ -181,9 +179,7 @@ svr4_sys_setrlimit(td, uap)
if ((error = copyin(uap->rlp, &slim, sizeof(slim))) != 0)
return error;
- PROC_LOCK(td->td_proc);
- lim_rlimit(td->td_proc, rl, &curlim);
- PROC_UNLOCK(td->td_proc);
+ lim_rlimit(td, rl, &curlim);
/*
* if the limit is SVR4_RLIM_INFINITY, then we set it to our
@@ -228,9 +224,7 @@ svr4_sys_getrlimit64(td, uap)
if (rl == -1)
return EINVAL;
- PROC_LOCK(td->td_proc);
- lim_rlimit(td->td_proc, rl, &blim);
- PROC_UNLOCK(td->td_proc);
+ lim_rlimit(td, rl, &blim);
/*
* Our infinity, is their maxfiles.
@@ -279,9 +273,7 @@ svr4_sys_setrlimit64(td, uap)
if ((error = copyin(uap->rlp, &slim, sizeof(slim))) != 0)
return error;
- PROC_LOCK(td->td_proc);
- lim_rlimit(td->td_proc, rl, &curlim);
- PROC_UNLOCK(td->td_proc);
+ lim_rlimit(td, rl, &curlim);
/*
* if the limit is SVR4_RLIM64_INFINITY, then we set it to our
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 90fc66e..554a234 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -2645,6 +2645,8 @@ device usb
device udbp
# USB Fm Radio
device ufm
+# USB temperature meter
+device ugold
# USB LED
device uled
# Human Interface Device (anything with buttons and dials)
diff --git a/sys/conf/files b/sys/conf/files
index aa97dde..65606b0 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -104,11 +104,12 @@ cam/scsi/scsi_targ_bh.c optional targbh
cam/scsi/scsi_target.c optional targ
cam/scsi/smp_all.c optional scbus
# shared between zfs and dtrace
-cddl/compat/opensolaris/kern/opensolaris.c optional zfs compile-with "${ZFS_C}"
-cddl/compat/opensolaris/kern/opensolaris_cmn_err.c optional zfs compile-with "${ZFS_C}"
-cddl/compat/opensolaris/kern/opensolaris_kmem.c optional zfs compile-with "${ZFS_C}"
-cddl/compat/opensolaris/kern/opensolaris_misc.c optional zfs compile-with "${ZFS_C}"
-cddl/compat/opensolaris/kern/opensolaris_sunddi.c optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/compat/opensolaris/kern/opensolaris_cmn_err.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/compat/opensolaris/kern/opensolaris_kmem.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/compat/opensolaris/kern/opensolaris_misc.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/compat/opensolaris/kern/opensolaris_sunddi.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/compat/opensolaris/kern/opensolaris_taskq.c optional zfs | dtrace compile-with "${CDDL_C}"
# zfs specific
cddl/compat/opensolaris/kern/opensolaris_acl.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_dtrace.c optional zfs compile-with "${ZFS_C}"
@@ -118,7 +119,6 @@ cddl/compat/opensolaris/kern/opensolaris_lookup.c optional zfs compile-with "$
cddl/compat/opensolaris/kern/opensolaris_policy.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_string.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_sysevent.c optional zfs compile-with "${ZFS_C}"
-cddl/compat/opensolaris/kern/opensolaris_taskq.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_uio.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_vfs.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_vm.c optional zfs compile-with "${ZFS_C}"
@@ -242,6 +242,17 @@ cddl/contrib/opensolaris/uts/common/zmod/trees.c optional zfs compile-with "${
cddl/contrib/opensolaris/uts/common/zmod/zmod.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/zmod_subr.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/zutil.c optional zfs compile-with "${ZFS_C}"
+# dtrace specific
+cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c optional dtrace compile-with "${DTRACE_C}" \
+ warning "kernel contains CDDL licensed DTRACE"
+cddl/dev/dtmalloc/dtmalloc.c optional dtmalloc | dtraceall compile-with "${CDDL_C}"
+cddl/dev/lockstat/lockstat.c optional dtrace_lockstat | dtraceall compile-with "${CDDL_C}"
+cddl/dev/profile/profile.c optional dtrace_profile | dtraceall compile-with "${CDDL_C}"
+cddl/dev/sdt/sdt.c optional dtrace_sdt | dtraceall compile-with "${CDDL_C}"
+cddl/dev/fbt/fbt.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
+cddl/dev/systrace/systrace.c optional dtrace_systrace | dtraceall compile-with "${CDDL_C}"
+cddl/dev/prototype.c optional dtrace_prototype | dtraceall compile-with "${CDDL_C}"
+fs/nfsclient/nfs_clkdtrace.c optional dtnfscl nfscl | dtraceall nfscl compile-with "${CDDL_C}"
compat/freebsd32/freebsd32_capability.c optional compat_freebsd32
compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32
compat/freebsd32/freebsd32_misc.c optional compat_freebsd32
@@ -2534,6 +2545,7 @@ dev/usb/serial/usb_serial.c optional ucom | u3g | uark | ubsa | ubser | \
#
dev/usb/misc/ufm.c optional ufm
dev/usb/misc/udbp.c optional udbp
+dev/usb/misc/ugold.c optional ugold
dev/usb/misc/uled.c optional uled
#
# USB input drivers
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index f1a4e97..08fb59b 100644
--- a/sys/conf/files.amd64
+++ b/sys/conf/files.amd64
@@ -138,7 +138,12 @@ amd64/amd64/uio_machdep.c standard
amd64/amd64/uma_machdep.c standard
amd64/amd64/vm_machdep.c standard
amd64/pci/pci_cfgreg.c optional pci
-cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}"
+cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S optional zfs | dtrace compile-with "${ZFS_S}"
+cddl/dev/dtrace/amd64/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
+cddl/dev/dtrace/amd64/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
+cddl/dev/fbt/x86/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
+cddl/dev/dtrace/x86/dis_tables.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
+cddl/dev/dtrace/amd64/instr_size.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
crypto/aesni/aeskeys_amd64.S optional aesni
crypto/aesni/aesni.c optional aesni
aesni_ghash.o optional aesni \
diff --git a/sys/conf/files.arm b/sys/conf/files.arm
index a406d33..f49f4551 100644
--- a/sys/conf/files.arm
+++ b/sys/conf/files.arm
@@ -78,7 +78,10 @@ board_id.h standard \
compile-with "${AWK} -f $S/arm/conf/genboardid.awk $S/arm/conf/mach-types > board_id.h" \
no-obj no-implicit-rule before-depend \
clean "board_id.h"
-cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs | dtrace compile-with "${CDDL_C}"
+cddl/dev/dtrace/arm/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
+cddl/dev/dtrace/arm/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
+cddl/dev/fbt/arm/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
crypto/blowfish/bf_enc.c optional crypto | ipsec
crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/fb/fb.c optional sc
diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64
index 8bdc93a..a32d8d6 100644
--- a/sys/conf/files.arm64
+++ b/sys/conf/files.arm64
@@ -2,6 +2,9 @@
arm/arm/devmap.c standard
arm/arm/generic_timer.c standard
arm/arm/pmu.c standard
+arm64/acpica/acpi_machdep.c optional acpi
+arm64/acpica/OsdEnvironment.c optional acpi
+arm64/acpica/acpi_wakeup.c optional acpi
arm64/arm64/autoconf.c standard
arm64/arm64/bcopy.c standard
arm64/arm64/bus_machdep.c standard
@@ -20,6 +23,8 @@ arm64/arm64/dump_machdep.c standard
arm64/arm64/elf_machdep.c standard
arm64/arm64/exception.S standard
arm64/arm64/gic.c standard
+arm64/arm64/gic_acpi.c optional acpi
+arm64/arm64/gic_fdt.c optional fdt
arm64/arm64/gic_v3.c standard
arm64/arm64/gic_v3_fdt.c optional fdt
arm64/arm64/identcpu.c standard
@@ -38,12 +43,15 @@ arm64/arm64/swtch.S standard
arm64/arm64/sys_machdep.c standard
arm64/arm64/trap.c standard
arm64/arm64/uio_machdep.c standard
+arm64/arm64/unwind.c optional ddb | kdtrace_hooks
arm64/arm64/vfp.c standard
arm64/arm64/vm_machdep.c standard
+dev/acpica/acpi_if.m optional acpi
dev/fdt/fdt_arm64.c optional fdt
dev/hwpmc/hwpmc_arm64.c optional hwpmc
dev/hwpmc/hwpmc_arm64_md.c optional hwpmc
dev/ofw/ofw_cpu.c optional fdt
+dev/pci/pci_host_generic.c optional pci fdt
dev/psci/psci.c optional psci
dev/psci/psci_arm64.S optional psci
dev/uart/uart_cpu_fdt.c optional uart fdt
diff --git a/sys/conf/files.i386 b/sys/conf/files.i386
index 928b10d..ebfce072 100644
--- a/sys/conf/files.i386
+++ b/sys/conf/files.i386
@@ -78,7 +78,12 @@ hptrr_lib.o optional hptrr \
compile-with "uudecode < $S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
no-implicit-rule
#
-cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}"
+cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs | dtrace compile-with "${ZFS_S}"
+cddl/dev/dtrace/i386/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
+cddl/dev/dtrace/i386/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
+cddl/dev/fbt/x86/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
+cddl/dev/dtrace/x86/dis_tables.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
+cddl/dev/dtrace/i386/instr_size.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
compat/linprocfs/linprocfs.c optional linprocfs
compat/linsysfs/linsysfs.c optional linsysfs
compat/linux/linux_event.c optional compat_linux
diff --git a/sys/conf/files.mips b/sys/conf/files.mips
index 4bc6775a1..f476307 100644
--- a/sys/conf/files.mips
+++ b/sys/conf/files.mips
@@ -61,6 +61,8 @@ libkern/flsll.c standard
libkern/memmove.c standard
libkern/cmpdi2.c optional mips | mipsel
libkern/ucmpdi2.c optional mips | mipsel
+libkern/ashldi3.c standard
+libkern/ashrdi3.c standard
# cfe support
dev/cfe/cfe_api.c optional cfe
diff --git a/sys/conf/files.powerpc b/sys/conf/files.powerpc
index 4158f2c..167fa42 100644
--- a/sys/conf/files.powerpc
+++ b/sys/conf/files.powerpc
@@ -15,8 +15,11 @@ font.h optional sc \
clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
#
# There is only an asm version on ppc64.
-cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs powerpc compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/common/atomic/powerpc64/opensolaris_atomic.S optional zfs powerpc64 compile-with "${ZFS_S}"
+cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs powerpc | dtrace powerpc compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/atomic/powerpc64/opensolaris_atomic.S optional zfs powerpc64 | dtrace powerpc64 compile-with "${ZFS_S}"
+cddl/dev/dtrace/powerpc/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
+cddl/dev/dtrace/powerpc/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
+cddl/dev/fbt/powerpc/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
crypto/blowfish/bf_enc.c optional crypto | ipsec
crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/bm/if_bm.c optional bm powermac
diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk
index 8f7abaf..28ea453 100644
--- a/sys/conf/kern.post.mk
+++ b/sys/conf/kern.post.mk
@@ -184,11 +184,11 @@ genassym.o: $S/$M/$M/genassym.c
${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
-# We have "special" -I include paths for opensolaris/zfs files in 'depend'.
-CFILES_NOZFS= ${CFILES:N*/opensolaris/*}
-SFILES_NOZFS= ${SFILES:N*/opensolaris/*}
-CFILES_ZFS= ${CFILES:M*/opensolaris/*}
-SFILES_ZFS= ${SFILES:M*/opensolaris/*}
+# We have "special" -I include paths for zfs/dtrace files in 'depend'.
+CFILES_NOCDDL= ${CFILES:N*/cddl/*:N*fs/nfsclient/nfs_clkdtrace*}
+SFILES_NOCDDL= ${SFILES:N*/cddl/*}
+CFILES_CDDL= ${CFILES:M*/cddl/*}
+SFILES_CDDL= ${SFILES:M*/cddl/*}
kernel-depend: .depend
# The argument list can be very long, so use make -V and xargs to
@@ -198,13 +198,13 @@ SRCS= assym.s vnode_if.h ${BEFORE_DEPEND} ${CFILES} \
${MFILES:T:S/.m$/.h/}
.depend: .PRECIOUS ${SRCS}
rm -f .newdep
- ${MAKE} -V CFILES_NOZFS -V SYSTEM_CFILES -V GEN_CFILES | \
+ ${MAKE} -V CFILES_NOCDDL -V SYSTEM_CFILES -V GEN_CFILES | \
MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${CFLAGS}
- ${MAKE} -V CFILES_ZFS | \
- MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${ZFS_CFLAGS}
- ${MAKE} -V SFILES_NOZFS | \
+ ${MAKE} -V CFILES_CDDL | \
+ MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${ZFS_CFLAGS} ${FBT_CFLAGS} ${DTRACE_CFLAGS}
+ ${MAKE} -V SFILES_NOCDDL | \
MKDEP_CPP="${CC} -E" xargs mkdep -a -f .newdep ${ASM_CFLAGS}
- ${MAKE} -V SFILES_ZFS | \
+ ${MAKE} -V SFILES_CDDL | \
MKDEP_CPP="${CC} -E" xargs mkdep -a -f .newdep ${ZFS_ASM_CFLAGS}
rm -f .depend
mv .newdep .depend
diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk
index 8c3b9c6..3081edc 100644
--- a/sys/conf/kern.pre.mk
+++ b/sys/conf/kern.pre.mk
@@ -139,13 +139,34 @@ NORMAL_FW= uudecode -o ${.TARGET} ${.ALLSRC}
NORMAL_FWO= ${LD} -b binary --no-warn-mismatch -d -warn-common -r \
-o ${.TARGET} ${.ALLSRC:M*.fw}
+# Common for dtrace / zfs
+CDDL_CFLAGS= -DFREEBSD_NAMECACHE -nostdinc -I$S/cddl/compat/opensolaris -I$S/cddl/contrib/opensolaris/uts/common -I$S -I$S/cddl/contrib/opensolaris/common ${CFLAGS} -Wno-unknown-pragmas -Wno-missing-prototypes -Wno-undef -Wno-strict-prototypes -Wno-cast-qual -Wno-parentheses -Wno-redundant-decls -Wno-missing-braces -Wno-uninitialized -Wno-unused -Wno-inline -Wno-switch -Wno-pointer-arith -Wno-unknown-pragmas
+CDDL_CFLAGS+= -include $S/cddl/compat/opensolaris/sys/debug_compat.h
+CDDL_C= ${CC} -c ${CDDL_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
+
# Special flags for managing the compat compiles for ZFS
-ZFS_CFLAGS= -DFREEBSD_NAMECACHE -DBUILDING_ZFS -nostdinc -I$S/cddl/compat/opensolaris -I$S/cddl/contrib/opensolaris/uts/common/fs/zfs -I$S/cddl/contrib/opensolaris/uts/common/zmod -I$S/cddl/contrib/opensolaris/uts/common -I$S -I$S/cddl/contrib/opensolaris/common/zfs -I$S/cddl/contrib/opensolaris/common ${CFLAGS} -Wno-unknown-pragmas -Wno-missing-prototypes -Wno-undef -Wno-strict-prototypes -Wno-cast-qual -Wno-parentheses -Wno-redundant-decls -Wno-missing-braces -Wno-uninitialized -Wno-unused -Wno-inline -Wno-switch -Wno-pointer-arith -Wno-unknown-pragmas
-ZFS_CFLAGS+= -include $S/cddl/compat/opensolaris/sys/debug_compat.h
+ZFS_CFLAGS= -DBUILDING_ZFS -I$S/cddl/contrib/opensolaris/uts/common/fs/zfs -I$S/cddl/contrib/opensolaris/uts/common/zmod -I$S/cddl/contrib/opensolaris/common/zfs ${CDDL_CFLAGS}
ZFS_ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${ZFS_CFLAGS}
ZFS_C= ${CC} -c ${ZFS_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
ZFS_S= ${CC} -c ${ZFS_ASM_CFLAGS} ${WERROR} ${.IMPSRC}
+# Special flags for managing the compat compiles for DTrace
+DTRACE_CFLAGS= -DBUILDING_DTRACE ${CDDL_CFLAGS} -I$S/cddl/dev/dtrace -I$S/cddl/dev/dtrace/${MACHINE_CPUARCH}
+.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
+DTRACE_CFLAGS+= -I$S/cddl/contrib/opensolaris/uts/intel -I$S/cddl/dev/dtrace/x86
+.endif
+DTRACE_CFLAGS+= -I$S/cddl/contrib/opensolaris/common/util -I$S -DDIS_MEM -DSMP
+DTRACE_ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${DTRACE_CFLAGS}
+DTRACE_C= ${CC} -c ${DTRACE_CFLAGS} ${CDDL_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
+DTRACE_S= ${CC} -c ${DTRACE_ASM_CFLAGS} ${CDDL_CFLAGS} ${WERROR} ${.IMPSRC}
+
+# Special flags for managing the compat compiles for DTrace/FBT
+FBT_CFLAGS= -DBUILDING_DTRACE -nostdinc -I$S/cddl/dev/fbt/${MACHINE_CPUARCH} -I$S/cddl/dev/fbt -I$S/cddl/compat/opensolaris -I$S/cddl/contrib/opensolaris/uts/common -I$S ${CDDL_CFLAGS}
+.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
+FBT_CFLAGS+= -I$S/cddl/dev/fbt/x86
+.endif
+FBT_C= ${CC} -c ${FBT_CFLAGS} ${CDDL_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
+
.if ${MK_CTF} != "no"
NORMAL_CTFCONVERT= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
.elif ${MAKE_VERSION} >= 5201111300
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index 9009745..284fe3f 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -239,7 +239,7 @@ beforedepend: ${_ILINKS}
# causes all the modules to be rebuilt when the directory pointed to changes.
.for _link in ${_ILINKS}
.if !exists(${.OBJDIR}/${_link})
-${OBJS}: ${.OBJDIR}/${_link}
+${OBJS}: ${_link}
.endif
.endfor
@@ -253,12 +253,10 @@ SYSDIR= ${_dir}
.error "can't find kernel source tree"
.endif
-.for _link in ${_ILINKS}
-.PHONY: ${_link}
-${_link}: ${.OBJDIR}/${_link}
+.NOPATH: ${_ILINKS}
-${.OBJDIR}/${_link}:
- @case ${.TARGET:T} in \
+${_ILINKS}:
+ @case ${.TARGET} in \
machine) \
path=${SYSDIR}/${MACHINE}/include ;; \
*) \
@@ -267,7 +265,6 @@ ${.OBJDIR}/${_link}:
path=`(cd $$path && /bin/pwd)` ; \
${ECHO} ${.TARGET:T} "->" $$path ; \
ln -sf $$path ${.TARGET:T}
-.endfor
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS}
diff --git a/sys/contrib/dev/acpica/acpica_prep.sh b/sys/contrib/dev/acpica/acpica_prep.sh
index faf850e..e6bf575 100755
--- a/sys/contrib/dev/acpica/acpica_prep.sh
+++ b/sys/contrib/dev/acpica/acpica_prep.sh
@@ -19,20 +19,20 @@ fulldirs="common compiler components include os_specific"
# files to remove
stripdirs="generate libraries tests tools"
stripfiles="Makefile README accygwin.h acdragonfly.h acdragonflyex.h \
- acefi.h achaiku.h acintel.h aclinux.h aclinuxex.h acmacosx.h \
- acmsvc.h acnetbsd.h acos2.h acwin.h acwin64.h new_table.txt \
- osbsdtbl.c osefitbl.c osefixf.c osfreebsdtbl.c oslinuxtbl.c \
- osunixdir.c osunixmap.c oswindir.c oswintbl.c oswinxf.c \
- readme.txt utclib.c"
+ acefi.h acefiex.h achaiku.h acintel.h aclinux.h aclinuxex.h \
+ acmacosx.h acmsvc.h acnetbsd.h acos2.h acwin.h acwin64.h \
+ new_table.txt osbsdtbl.c osefitbl.c osefixf.c osfreebsdtbl.c \
+ oslinuxtbl.c osunixdir.c osunixmap.c oswindir.c oswintbl.c \
+ oswinxf.c readme.txt utclib.c"
# include files to canonify
-src_headers="acapps.h acbuffer.h accommon.h acconfig.h acdebug.h \
- acdisasm.h acdispat.h acevents.h acexcep.h acglobal.h achware.h \
- acinterp.h aclocal.h acmacros.h acnames.h acnamesp.h acobject.h \
- acopcode.h acoutput.h acparser.h acpi.h acpiosxf.h acpixf.h \
- acpredef.h acresrc.h acrestyp.h acstruct.h actables.h actbl.h \
- actbl1.h actbl2.h actbl3.h actypes.h acutils.h amlcode.h \
- amlresrc.h platform/acenv.h platform/acenvex.h \
+src_headers="acapps.h acbuffer.h acclib.h accommon.h acconfig.h \
+ acdebug.h acdisasm.h acdispat.h acevents.h acexcep.h acglobal.h \
+ achware.h acinterp.h aclocal.h acmacros.h acnames.h acnamesp.h \
+ acobject.h acopcode.h acoutput.h acparser.h acpi.h acpiosxf.h \
+ acpixf.h acpredef.h acresrc.h acrestyp.h acstruct.h actables.h \
+ actbl.h actbl1.h actbl2.h actbl3.h actypes.h acutils.h acuuid.h \
+ amlcode.h amlresrc.h platform/acenv.h platform/acenvex.h \
platform/acfreebsd.h platform/acgcc.h"
comp_headers="aslcompiler.h asldefine.h aslglobal.h aslmessages.h \
aslsupport.l asltypes.h dtcompiler.h dttemplate.h preprocess.h"
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index 511652f..9abe735 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/changes.txt
@@ -1,5 +1,130 @@
----------------------------------------
-08 April 2015. Summary of changes for version 20150515:
+19 June 2015. Summary of changes for version 20150619:
+
+Two regressions in version 20150616 have been addressed:
+
+Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
+etc.) This update changes ACPICA to only use the standard headers for
+functions, or the prototypes for the local versions of the C library
+functions. Across the source code, this required some additional casts
+for some Clib invocations for portability. Moved all local prototypes to
+a new file, acclib.h
+
+Fixes several problems with recent changes to the handling of the FACS
+table that could cause some systems not to boot.
+
+
+----------------------------------------
+16 June 2015. Summary of changes for version 20150616:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Across the entire ACPICA source code base, the various macros for the C
+library functions (such as ACPI_STRLEN, etc.) have been removed and
+replaced by the standard C library names (strlen, etc.) The original
+purpose for these macros is no longer applicable. This simplification
+reduces the number of macros used in the ACPICA source code
+significantly, improving readability and maintainability.
+
+Implemented support for a new ACPI table, the OSDT. This table, the
+"override" SDT, can be loaded directly by the host OS at boot time. It
+enables the replacement of existing namespace objects that were installed
+via the DSDT and/or SSDTs. The primary purpose for this is to replace
+buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
+for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
+Moore.
+
+Added support for systems with (improperly) two FACS tables -- a "32-bit"
+table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
+X field). This change will support both automatically. There continues to
+be systems found with this issue. This support requires a change to the
+AcpiSetFirmwareWakingVector interface. Also, a public global variable has
+been added to allow the host to select which FACS is desired
+(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
+details Lv Zheng.
+
+Added a new feature to allow for systems that do not contain an FACS.
+Although this is already supported on hardware-reduced platforms, the
+feature has been extended for all platforms. The reasoning is that we do
+not want to abort the entire ACPICA initialization just because the
+system is seriously buggy and has no FACS.
+
+Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
+not correctly transcribed from the ACPI specification in ACPICA version
+20150515.
+
+Implemented support for the _CLS object in the AcpiGetObjectInfo external
+interface.
+
+Updated the definitions of the TCPA and TPM2 ACPI tables to the more
+recent TCG ACPI Specification, December 14, 2014. Table disassembler and
+compiler also updated. Note: The TCPA "server" table is not supported by
+the disassembler/table-compiler at this time.
+
+ACPI 6.0: Added definitions for the new GIC version field in the MADT.
+
+Example Code and Data Size: These are the sizes for the OS-independent
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
+debug version of the code includes the debug output trace mechanism and
+has a much larger code and data size.
+
+ Current Release:
+ Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
+ Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
+ Previous Release:
+ Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
+ Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Disassembler: Fixed a problem with the new symbolic operator disassembler
+where incorrect ASL code could be emitted in some cases for the "non-
+commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
+ShiftRight. The actual problem cases seem to be rather unusual in common
+ASL code, however. David Box.
+
+Modified the linux version of acpidump to obtain ACPI tables from not
+just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
+Zheng.
+
+iASL: Fixed a problem where the user preprocessor output file (.i)
+contained extra data that was not expected. The compiler was using this
+file as a temporary file and passed through #line directives in order to
+keep compiler error messages in sync with the input file and line number
+across multiple include files. The (.i) is no longer a temporary file as
+the compiler uses a new, different file for the original purpose.
+
+iASL: Fixed a problem where comments within the original ASL source code
+file were not passed through to the preprocessor output file, nor any
+listing files.
+
+iASL: Fixed some issues for the handling of the "#include" preprocessor
+directive and the similar (but not the same) "Include" ASL operator.
+
+iASL: Add support for the new OSDT in both the disassembler and compiler.
+
+iASL: Fixed a problem with the constant folding support where a Buffer
+object could be incorrectly generated (incorrectly formed) during a
+conversion to a Store() operator.
+
+AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
+description text for the _REV predefined name. _REV now permanently
+returns 2, as per the ACPI 6.0 specification.
+
+Debugger: Enhanced the output of the Debug ASL object for references
+produced by the Index operator. For Buffers and strings, only output the
+actual byte pointed to by the index. For packages, only print the single
+package element decoded by the index. Previously, the entire
+buffer/string/package was emitted.
+
+iASL/Table-compiler: Fixed a regression where the "generic" data types
+were no longer recognized, causing errors.
+
+
+----------------------------------------
+15 May 2015. Summary of changes for version 20150515:
This release implements most of ACPI 6.0 as described below.
@@ -34,7 +159,7 @@ iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
tables: FADT, MADT.
iASL preprocessor: Added a new directive to enable inclusion of binary
-blobs into ASL code. The new directive is #includebinary. It takes a
+blobs into ASL code. The new directive is #includebuffer. It takes a
binary file as input and emits a named ascii buffer object into the ASL
code.
diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c
index 5d0cee2..5942476 100644
--- a/sys/contrib/dev/acpica/common/adisasm.c
+++ b/sys/contrib/dev/acpica/common/adisasm.c
@@ -243,7 +243,7 @@ AdAmlDisassemble (
while (ExternalFileList)
{
ExternalFilename = ExternalFileList->Path;
- if (!ACPI_STRCMP (ExternalFilename, Filename))
+ if (!strcmp (ExternalFilename, Filename))
{
/* Next external file */
diff --git a/sys/contrib/dev/acpica/common/ahids.c b/sys/contrib/dev/acpica/common/ahids.c
index 038d9f6..1af6b41 100644
--- a/sys/contrib/dev/acpica/common/ahids.c
+++ b/sys/contrib/dev/acpica/common/ahids.c
@@ -230,7 +230,7 @@ AcpiAhMatchHardwareId (
for (Info = AslDeviceIds; Info->Name; Info++)
{
- if (!ACPI_STRCMP (HardwareId, Info->Name))
+ if (!strcmp (HardwareId, Info->Name))
{
return (Info);
}
diff --git a/sys/contrib/dev/acpica/common/ahpredef.c b/sys/contrib/dev/acpica/common/ahpredef.c
index 1454880..3026ce3 100644
--- a/sys/contrib/dev/acpica/common/ahpredef.c
+++ b/sys/contrib/dev/acpica/common/ahpredef.c
@@ -249,7 +249,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
AH_PREDEF ("_RBW", "Register Bit Width", "Resource Descriptor field"),
AH_PREDEF ("_RDI", "Resource Dependencies for Idle", "Returns a list of dependencies for idle states"),
AH_PREDEF ("_REG", "Region Availability", "Inform AML code of an operation region availability change"),
- AH_PREDEF ("_REV", "Supported ACPI Revision", "Returns the revision of the ACPI specification that is implemented"),
+ AH_PREDEF ("_REV", "Supported Integer Width", "Returns the supported integer width (<= 1: 32 bits only, >=2: both 32 and 64 bits"),
AH_PREDEF ("_RMV", "Removal Status", "Returns a device's removal ability status (docking)"),
AH_PREDEF ("_RNG", "Range", "Memory range type, Resource Descriptor field"),
AH_PREDEF ("_RST", "Device Reset", "Executes a reset on a device"),
diff --git a/sys/contrib/dev/acpica/common/ahuuids.c b/sys/contrib/dev/acpica/common/ahuuids.c
index eeec8b8..46b52eb 100644
--- a/sys/contrib/dev/acpica/common/ahuuids.c
+++ b/sys/contrib/dev/acpica/common/ahuuids.c
@@ -122,7 +122,7 @@ AcpiAhMatchUuid (
AcpiUtConvertStringToUuid (Info->String, UuidBuffer);
- if (!ACPI_MEMCMP (Data, UuidBuffer, UUID_BUFFER_LENGTH))
+ if (!memcmp (Data, UuidBuffer, UUID_BUFFER_LENGTH))
{
return (Info->Description);
}
diff --git a/sys/contrib/dev/acpica/common/dmextern.c b/sys/contrib/dev/acpica/common/dmextern.c
index 2ea54ad..22d54e9 100644
--- a/sys/contrib/dev/acpica/common/dmextern.c
+++ b/sys/contrib/dev/acpica/common/dmextern.c
@@ -224,7 +224,7 @@ AcpiDmNormalizeParentPrefix (
return (NULL);
}
- Length = (ACPI_STRLEN (ParentPath) + ACPI_STRLEN (Path) + 1);
+ Length = (strlen (ParentPath) + strlen (Path) + 1);
if (ParentPath[1])
{
/*
@@ -253,7 +253,7 @@ AcpiDmNormalizeParentPrefix (
*
* Copy the parent path
*/
- ACPI_STRCPY (Fullpath, &ParentPath[Index]);
+ strcpy (Fullpath, &ParentPath[Index]);
/*
* Add dot separator
@@ -261,12 +261,12 @@ AcpiDmNormalizeParentPrefix (
*/
if (ParentPath[1])
{
- ACPI_STRCAT (Fullpath, ".");
+ strcat (Fullpath, ".");
}
/* Copy child path (carat parent prefix(es) were skipped above) */
- ACPI_STRCAT (Fullpath, Path);
+ strcat (Fullpath, Path);
Cleanup:
ACPI_FREE (ParentPath);
@@ -648,13 +648,13 @@ AcpiDmAddNodeToExternalList (
if ((*ExternalPath == AML_ROOT_PREFIX) && (ExternalPath[1]))
{
- Temp = ACPI_ALLOCATE_ZEROED (ACPI_STRLEN (ExternalPath) + 1);
+ Temp = ACPI_ALLOCATE_ZEROED (strlen (ExternalPath) + 1);
if (!Temp)
{
return_VOID;
}
- ACPI_STRCPY (Temp, &ExternalPath[1]);
+ strcpy (Temp, &ExternalPath[1]);
ACPI_FREE (ExternalPath);
ExternalPath = Temp;
}
@@ -806,7 +806,7 @@ AcpiDmCreateNewExternal (
NextExternal = AcpiGbl_ExternalList;
while (NextExternal)
{
- if (!ACPI_STRCMP (ExternalPath, NextExternal->Path))
+ if (!strcmp (ExternalPath, NextExternal->Path))
{
/* Duplicate method, check that the Value (ArgCount) is the same */
@@ -849,7 +849,7 @@ AcpiDmCreateNewExternal (
NewExternal->Value = Value;
NewExternal->Path = ExternalPath;
NewExternal->Type = Type;
- NewExternal->Length = (UINT16) ACPI_STRLEN (ExternalPath);
+ NewExternal->Length = (UINT16) strlen (ExternalPath);
NewExternal->InternalPath = InternalPath;
/* Link the new descriptor into the global list, alphabetically ordered */
diff --git a/sys/contrib/dev/acpica/common/dmrestag.c b/sys/contrib/dev/acpica/common/dmrestag.c
index c457658..4296039 100644
--- a/sys/contrib/dev/acpica/common/dmrestag.c
+++ b/sys/contrib/dev/acpica/common/dmrestag.c
@@ -679,10 +679,10 @@ AcpiGetTagPathname (
* end up in the final compiled AML, it's just an appearance issue for the
* disassembled code.
*/
- Pathname[ACPI_STRLEN (Pathname) - ACPI_NAME_SIZE] = 0;
- ACPI_STRNCAT (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE);
- ACPI_STRCAT (Pathname, ".");
- ACPI_STRNCAT (Pathname, Tag, ACPI_NAME_SIZE);
+ Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0;
+ strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE);
+ strcat (Pathname, ".");
+ strncat (Pathname, Tag, ACPI_NAME_SIZE);
/* Internalize the namepath to AML format */
diff --git a/sys/contrib/dev/acpica/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c
index 3820c94..0b1f68e 100644
--- a/sys/contrib/dev/acpica/common/dmtable.c
+++ b/sys/contrib/dev/acpica/common/dmtable.c
@@ -528,7 +528,7 @@ AcpiDmDumpDataTable (
TableData = AcpiDmGetTableData (Table->Signature);
if (!TableData)
{
- if (!ACPI_STRNCMP (Table->Signature, "OEM", 3))
+ if (!strncmp (Table->Signature, "OEM", 3))
{
AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n",
Table->Signature);
@@ -856,7 +856,7 @@ AcpiDmDumpTable (
case ACPI_DMT_STRING:
- ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1;
+ ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1;
break;
case ACPI_DMT_GAS:
diff --git a/sys/contrib/dev/acpica/common/dmtbdump.c b/sys/contrib/dev/acpica/common/dmtbdump.c
index 94358e8..67d0f1c 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump.c
@@ -155,7 +155,7 @@ AcpiDmDumpUnicode (
for (i = 0; i < Length; i += 2)
{
- if (!ACPI_IS_PRINT (Buffer[i]))
+ if (!isprint (Buffer[i]))
{
goto DumpRawBuffer;
}
@@ -1701,7 +1701,7 @@ AcpiDmDumpIort (
InfoTable = AcpiDmTableInfoIort1;
Length = ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT, DeviceName);
String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length);
- Length += ACPI_STRLEN (String) + 1;
+ Length += strlen (String) + 1;
break;
case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
@@ -3344,7 +3344,7 @@ AcpiDmDumpStao (
while (Offset < Table->Length)
{
Namepath = ACPI_ADD_PTR (char, Table, Offset);
- StringLength = ACPI_STRLEN (Namepath) + 1;
+ StringLength = strlen (Namepath) + 1;
AcpiDmLineHeader (Offset, StringLength, "Namestring");
AcpiOsPrintf ("\"%s\"\n", Namepath);
diff --git a/sys/contrib/dev/acpica/common/dmtbinfo.c b/sys/contrib/dev/acpica/common/dmtbinfo.c
index a803c70..af67d43 100644
--- a/sys/contrib/dev/acpica/common/dmtbinfo.c
+++ b/sys/contrib/dev/acpica/common/dmtbinfo.c
@@ -113,7 +113,7 @@
#define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
#define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
#define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f)
-#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
+#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
#define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f)
#define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
#define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f)
@@ -2611,15 +2611,15 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] =
/*******************************************************************************
*
- * TCPA - Trusted Computing Platform Alliance table
+ * TCPA - Trusted Computing Platform Alliance table (Client)
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[] =
{
- {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (Reserved), "Reserved", 0},
- {ACPI_DMT_UINT32, ACPI_TCPA_OFFSET (MaxLogLength), "Max Event Log Length", 0},
- {ACPI_DMT_UINT64, ACPI_TCPA_OFFSET (LogAddress), "Event Log Address", 0},
+ {ACPI_DMT_UINT16, ACPI_TCPA_CLIENT_OFFSET (PlatformClass), "Platform Class", 0},
+ {ACPI_DMT_UINT32, ACPI_TCPA_CLIENT_OFFSET (MinimumLogLength), "Min Event Log Length", 0},
+ {ACPI_DMT_UINT64, ACPI_TCPA_CLIENT_OFFSET (LogAddress), "Event Log Address", 0},
ACPI_DMT_TERMINATOR
};
@@ -2632,7 +2632,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] =
{
- {ACPI_DMT_UINT32, ACPI_TPM2_OFFSET (Flags), "Flags", 0},
+ {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (PlatformClass), "Platform Class", 0},
+ {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT64, ACPI_TPM2_OFFSET (ControlAddress), "Control Address", 0},
{ACPI_DMT_UINT32, ACPI_TPM2_OFFSET (StartMethod), "Start Method", 0},
ACPI_DMT_TERMINATOR
diff --git a/sys/contrib/dev/acpica/common/getopt.c b/sys/contrib/dev/acpica/common/getopt.c
index b93156c..4a199c0 100644
--- a/sys/contrib/dev/acpica/common/getopt.c
+++ b/sys/contrib/dev/acpica/common/getopt.c
@@ -145,7 +145,7 @@ AcpiGetopt(
{
return (ACPI_OPT_END);
}
- else if (ACPI_STRCMP (argv[AcpiGbl_Optind], "--") == 0)
+ else if (strcmp (argv[AcpiGbl_Optind], "--") == 0)
{
AcpiGbl_Optind++;
return (ACPI_OPT_END);
@@ -159,7 +159,7 @@ AcpiGetopt(
/* Make sure that the option is legal */
if (CurrentChar == ':' ||
- (OptsPtr = ACPI_STRCHR (opts, CurrentChar)) == NULL)
+ (OptsPtr = strchr (opts, CurrentChar)) == NULL)
{
ACPI_OPTION_ERROR ("Illegal option: -", CurrentChar);
diff --git a/sys/contrib/dev/acpica/compiler/aslanalyze.c b/sys/contrib/dev/acpica/compiler/aslanalyze.c
index 3c3eee8..e9b6fb2 100644
--- a/sys/contrib/dev/acpica/compiler/aslanalyze.c
+++ b/sys/contrib/dev/acpica/compiler/aslanalyze.c
@@ -67,8 +67,8 @@ AnIsInternalMethod (
ACPI_PARSE_OBJECT *Op)
{
- if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) ||
- (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI")))
+ if ((!strcmp (Op->Asl.ExternalName, "\\_OSI")) ||
+ (!strcmp (Op->Asl.ExternalName, "_OSI")))
{
return (TRUE);
}
@@ -94,8 +94,8 @@ AnGetInternalMethodReturnType (
ACPI_PARSE_OBJECT *Op)
{
- if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) ||
- (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI")))
+ if ((!strcmp (Op->Asl.ExternalName, "\\_OSI")) ||
+ (!strcmp (Op->Asl.ExternalName, "_OSI")))
{
return (ACPI_BTYPE_STRING);
}
@@ -462,7 +462,7 @@ ApCheckForGpeNameConflict (
/* Verify 3rd/4th chars are a valid hex value */
- GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16);
+ GpeNumber = strtoul (&Name[2], NULL, 16);
if (GpeNumber == ACPI_UINT32_MAX)
{
return;
diff --git a/sys/contrib/dev/acpica/compiler/aslascii.c b/sys/contrib/dev/acpica/compiler/aslascii.c
index 08e4630..1583dc3 100644
--- a/sys/contrib/dev/acpica/compiler/aslascii.c
+++ b/sys/contrib/dev/acpica/compiler/aslascii.c
@@ -226,7 +226,7 @@ FlCheckForAscii (
/* Ensure character is either printable or a "space" char */
- else if (!ACPI_IS_PRINT (Byte) && !ACPI_IS_SPACE (Byte))
+ else if (!isprint (Byte) && !isspace (Byte))
{
if ((BadBytes < 10) && (DisplayErrors))
{
diff --git a/sys/contrib/dev/acpica/compiler/aslcodegen.c b/sys/contrib/dev/acpica/compiler/aslcodegen.c
index 8dd30f3..a01afb7 100644
--- a/sys/contrib/dev/acpica/compiler/aslcodegen.c
+++ b/sys/contrib/dev/acpica/compiler/aslcodegen.c
@@ -110,7 +110,7 @@ CgGenerateAmlOutput (
DbgPrint (ASL_TREE_OUTPUT,
"%*s Value P_Op A_Op OpLen PByts Len SubLen PSubLen OpPtr"
- " Parent Child Next Flags AcTyp Final Col L\n",
+ " Parent Child Next Flags AcTyp Final Col L# EL# LL# ELL#\n",
76, " ");
CgCloseTable ();
@@ -145,7 +145,7 @@ CgAmlWriteWalk (
"Final parse tree used for AML output:\n");
DbgPrint (ASL_TREE_OUTPUT,
"%*s Value P_Op A_Op OpLen PByts Len SubLen PSubLen OpPtr"
- " Parent Child Next Flags AcTyp Final Col L\n",
+ " Parent Child Next Flags AcTyp Final Col L# EL# LL# ELL#\n",
76, " ");
}
@@ -169,7 +169,7 @@ CgAmlWriteWalk (
DbgPrint (ASL_TREE_OUTPUT,
"%08X %04X %04X %01X %04X %04X %04X %04X "
- "%08X %08X %08X %08X %08X %08X %04X %02d %02d\n",
+ "%08X %08X %08X %08X %08X %08X %04X %02d %02d %02d %02d %02d\n",
/* 1 */ (UINT32) Op->Asl.Value.Integer,
/* 2 */ Op->Asl.ParseOpcode,
/* 3 */ Op->Asl.AmlOpcode,
@@ -186,7 +186,10 @@ CgAmlWriteWalk (
/* 14 */ Op->Asl.AcpiBtype,
/* 15 */ Op->Asl.FinalAmlLength,
/* 16 */ Op->Asl.Column,
- /* 17 */ Op->Asl.LineNumber);
+ /* 17 */ Op->Asl.LineNumber,
+ /* 18 */ Op->Asl.EndLine,
+ /* 19 */ Op->Asl.LogicalLineNumber,
+ /* 20 */ Op->Asl.EndLogicalLine);
/* Generate the AML for this node */
diff --git a/sys/contrib/dev/acpica/compiler/aslcompile.c b/sys/contrib/dev/acpica/compiler/aslcompile.c
index 0b0ca7a..9aaac3b 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompile.c
+++ b/sys/contrib/dev/acpica/compiler/aslcompile.c
@@ -103,6 +103,9 @@ CmDoCompile (
/* Preprocessor */
PrDoPreprocess ();
+ Gbl_CurrentLineNumber = 1;
+ Gbl_LogicalLineNumber = 1;
+
if (Gbl_PreprocessOnly)
{
UtEndEvent (Event);
@@ -112,6 +115,7 @@ CmDoCompile (
}
UtEndEvent (Event);
+
/* Build the parse tree */
Event = UtBeginEvent ("Parse source code and build parse tree");
@@ -708,7 +712,7 @@ CmCleanupAndExit (
/* Close all open files */
/*
- * Take care with the preprocessor file (.i), it might be the same
+ * Take care with the preprocessor file (.pre), it might be the same
* as the "input" file, depending on where the compiler has terminated
* or aborted. Prevent attempt to close the same file twice in
* loop below.
@@ -733,10 +737,9 @@ CmCleanupAndExit (
FlDeleteFile (ASL_FILE_AML_OUTPUT);
}
- /* Delete the preprocessor output file (.i) unless -li flag is set */
+ /* Delete the preprocessor temp file unless full debug was specified */
- if (!Gbl_PreprocessorOutputFlag &&
- Gbl_PreprocessFlag)
+ if (Gbl_PreprocessFlag && !Gbl_KeepPreprocessorTempFile)
{
FlDeleteFile (ASL_FILE_PREPROCESSOR);
}
@@ -752,8 +755,6 @@ CmCleanupAndExit (
* Note: Handles are cleared by FlCloseFile above, so we look at the
* filename instead, to determine if the .SRC file was actually
* created.
- *
- * TBD: SourceOutput should be .TMP, then rename if we want to keep it?
*/
if (!Gbl_SourceOutputFlag)
{
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h
index 181b36c..f84f988 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h
@@ -1003,7 +1003,7 @@ UtDoConstant (
char *String);
ACPI_STATUS
-UtStrtoul64 (
+stroul64 (
char *String,
UINT32 Base,
UINT64 *RetInteger);
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.l b/sys/contrib/dev/acpica/compiler/aslcompiler.l
index 621f5ae..6a3541b 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompiler.l
+++ b/sys/contrib/dev/acpica/compiler/aslcompiler.l
@@ -709,7 +709,7 @@ NamePathTail [.]{NameSeg}
return (PARSEOP_NAMESTRING); }
. { count (1);
- if (ACPI_IS_PRINT (*AslCompilertext))
+ if (isprint ((int) *AslCompilertext))
{
sprintf (MsgBuffer,
"Invalid character (%c), expecting ASL keyword or name",
diff --git a/sys/contrib/dev/acpica/compiler/asldefine.h b/sys/contrib/dev/acpica/compiler/asldefine.h
index 0697276..0b5f614 100644
--- a/sys/contrib/dev/acpica/compiler/asldefine.h
+++ b/sys/contrib/dev/acpica/compiler/asldefine.h
@@ -105,7 +105,8 @@
/* filename suffixes for output files */
-#define FILE_SUFFIX_PREPROCESSOR "i"
+#define FILE_SUFFIX_PREPROC_USER "i "
+#define FILE_SUFFIX_PREPROCESSOR "pre"
#define FILE_SUFFIX_AML_CODE "aml"
#define FILE_SUFFIX_MAP "map"
#define FILE_SUFFIX_LISTING "lst"
@@ -136,6 +137,8 @@
#define ASL_ABORT TRUE
#define ASL_NO_ABORT FALSE
#define ASL_EOF ACPI_UINT32_MAX
+#define ASL_WITHIN_COMMENT (ACPI_UINT32_MAX -1)
+#define ASL_BLANK_LINE (ACPI_UINT32_MAX -1)
/* Listings */
diff --git a/sys/contrib/dev/acpica/compiler/aslerror.c b/sys/contrib/dev/acpica/compiler/aslerror.c
index 9b8928c..870e30b 100644
--- a/sys/contrib/dev/acpica/compiler/aslerror.c
+++ b/sys/contrib/dev/acpica/compiler/aslerror.c
@@ -561,11 +561,11 @@ AslCommonError2 (
/* Keep a copy of the extra message */
- ACPI_STRCPY (MessageBuffer, ExtraMessage);
+ strcpy (MessageBuffer, ExtraMessage);
}
LineBuffer = UtLocalCalloc (strlen (SourceLine) + 1);
- ACPI_STRCPY (LineBuffer, SourceLine);
+ strcpy (LineBuffer, SourceLine);
/* Initialize the error node */
@@ -647,7 +647,7 @@ AslCommonError (
/* Keep a copy of the extra message */
- ACPI_STRCPY (MessageBuffer, ExtraMessage);
+ strcpy (MessageBuffer, ExtraMessage);
}
/* Initialize the error node */
diff --git a/sys/contrib/dev/acpica/compiler/aslfileio.c b/sys/contrib/dev/acpica/compiler/aslfileio.c
index cf726dd..3feb8ea 100644
--- a/sys/contrib/dev/acpica/compiler/aslfileio.c
+++ b/sys/contrib/dev/acpica/compiler/aslfileio.c
@@ -218,6 +218,19 @@ FlWriteFile (
FlFileError (FileId, ASL_MSG_WRITE);
AslAbort ();
}
+
+ if ((FileId == ASL_FILE_PREPROCESSOR) && Gbl_PreprocessorOutputFlag)
+ {
+ /* Duplicate the output to the user preprocessor (.i) file */
+
+ Actual = fwrite ((char *) Buffer, 1, Length,
+ Gbl_Files[ASL_FILE_PREPROCESSOR_USER].Handle);
+ if (Actual != Length)
+ {
+ FlFileError (FileId, ASL_MSG_WRITE);
+ AslAbort ();
+ }
+ }
}
@@ -247,7 +260,6 @@ FlPrintFile (
va_start (Args, Format);
-
Actual = vfprintf (Gbl_Files[FileId].Handle, Format, Args);
va_end (Args);
@@ -256,6 +268,30 @@ FlPrintFile (
FlFileError (FileId, ASL_MSG_WRITE);
AslAbort ();
}
+
+ if ((FileId == ASL_FILE_PREPROCESSOR) && Gbl_PreprocessorOutputFlag)
+ {
+ /*
+ * Duplicate the output to the user preprocessor (.i) file,
+ * except: no #line directives.
+ */
+ if (!strncmp (Format, "#line", 5))
+ {
+ return;
+ }
+
+ va_start (Args, Format);
+ Actual = vfprintf (Gbl_Files[ASL_FILE_PREPROCESSOR_USER].Handle,
+ Format, Args);
+ va_end (Args);
+
+ if (Actual == -1)
+ {
+ FlFileError (FileId, ASL_MSG_WRITE);
+ AslAbort ();
+ }
+ }
+
}
diff --git a/sys/contrib/dev/acpica/compiler/aslfiles.c b/sys/contrib/dev/acpica/compiler/aslfiles.c
index d8c9ed5..37043cb 100644
--- a/sys/contrib/dev/acpica/compiler/aslfiles.c
+++ b/sys/contrib/dev/acpica/compiler/aslfiles.c
@@ -43,6 +43,7 @@
#include <contrib/dev/acpica/compiler/aslcompiler.h>
#include <contrib/dev/acpica/include/acapps.h>
+#include <contrib/dev/acpica/compiler/dtcompiler.h>
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslfiles")
@@ -84,7 +85,6 @@ FlSetLineNumber (
LineNumber, Gbl_LogicalLineNumber);
Gbl_CurrentLineNumber = LineNumber;
- Gbl_LogicalLineNumber = LineNumber;
}
@@ -303,6 +303,7 @@ FlOpenIncludeWithPrefix (
{
FILE *IncludeFile;
char *Pathname;
+ UINT32 OriginalLineNumber;
/* Build the full pathname to the file */
@@ -322,13 +323,20 @@ FlOpenIncludeWithPrefix (
return (NULL);
}
-#ifdef _MUST_HANDLE_COMMENTS
/*
- * Check entire include file for any # preprocessor directives.
+ * Check the entire include file for any # preprocessor directives.
* This is because there may be some confusion between the #include
- * preprocessor directive and the ASL Include statement.
+ * preprocessor directive and the ASL Include statement. A file included
+ * by the ASL include cannot contain preprocessor directives because
+ * the preprocessor has already run by the time the ASL include is
+ * recognized (by the compiler, not the preprocessor.)
+ *
+ * Note: DtGetNextLine strips/ignores comments.
+ * Save current line number since DtGetNextLine modifies it.
*/
- while (fgets (Gbl_CurrentLineBuffer, Gbl_LineBufferSize, IncludeFile))
+ Gbl_CurrentLineNumber--;
+ OriginalLineNumber = Gbl_CurrentLineNumber;
+ while (DtGetNextLine (IncludeFile, DT_ALLOW_MULTILINE_QUOTES) != ASL_EOF)
{
if (Gbl_CurrentLineBuffer[0] == '#')
{
@@ -336,7 +344,7 @@ FlOpenIncludeWithPrefix (
Op, "use #include instead");
}
}
-#endif
+ Gbl_CurrentLineNumber = OriginalLineNumber;
/* Must seek back to the start of the file */
@@ -579,8 +587,6 @@ FlOpenMiscOutputFiles (
/* Open the debug file as STDERR, text mode */
- /* TBD: hide this behind a FlReopenFile function */
-
Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;
Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
freopen (Filename, "w+t", stderr);
@@ -588,13 +594,15 @@ FlOpenMiscOutputFiles (
if (!Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle)
{
/*
- * A problem with freopen is that on error,
- * we no longer have stderr.
+ * A problem with freopen is that on error, we no longer
+ * have stderr and cannot emit normal error messages.
+ * Emit error to stdout, close files, and exit.
*/
- Gbl_DebugFlag = FALSE;
- memcpy (stderr, stdout, sizeof (FILE));
- FlFileError (ASL_FILE_DEBUG_OUTPUT, ASL_MSG_DEBUG_FILENAME);
- AslAbort ();
+ fprintf (stdout,
+ "\nCould not open debug output file: %s\n\n", Filename);
+
+ CmCleanupAndExit ();
+ exit (1);
}
AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
@@ -621,7 +629,7 @@ FlOpenMiscOutputFiles (
AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT);
}
- /* Create the preprocessor output file if preprocessor enabled */
+ /* Create the preprocessor output temp file if preprocessor enabled */
if (Gbl_PreprocessFlag)
{
@@ -636,6 +644,23 @@ FlOpenMiscOutputFiles (
FlOpenFile (ASL_FILE_PREPROCESSOR, Filename, "w+t");
}
+ /*
+ * Create the "user" preprocessor output file if -li flag set.
+ * Note, this file contains no embedded #line directives.
+ */
+ if (Gbl_PreprocessorOutputFlag)
+ {
+ Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_PREPROC_USER);
+ if (!Filename)
+ {
+ AslCommonError (ASL_ERROR, ASL_MSG_PREPROCESSOR_FILENAME,
+ 0, 0, 0, 0, NULL, NULL);
+ return (AE_ERROR);
+ }
+
+ FlOpenFile (ASL_FILE_PREPROCESSOR_USER, Filename, "w+t");
+ }
+
/* All done for data table compiler */
if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
diff --git a/sys/contrib/dev/acpica/compiler/aslfold.c b/sys/contrib/dev/acpica/compiler/aslfold.c
index 26b786d..af7a019 100644
--- a/sys/contrib/dev/acpica/compiler/aslfold.c
+++ b/sys/contrib/dev/acpica/compiler/aslfold.c
@@ -236,6 +236,8 @@ OpcAmlCheckForConstant (
*/
if (WalkState->Opcode == AML_BUFFER_OP)
{
+ DbgPrint (ASL_PARSE_OUTPUT,
+ "\nBuffer+Buffer->Buffer constant reduction is not supported yet");
Status = AE_TYPE;
goto CleanupAndExit;
}
@@ -380,10 +382,12 @@ TrSimpleConstantReduction (
return (Status);
}
+ /* Disconnect any existing children, install new constant */
+
+ Op->Asl.Child = NULL;
TrInstallReducedConstant (Op, ObjDesc);
UtSetParseOpName (Op);
- Op->Asl.Child = NULL;
return (AE_OK);
}
@@ -494,6 +498,10 @@ TrTransformToStoreOp (
goto EvalError;
}
+ /* Truncate any subtree expressions, they have been evaluated */
+
+ Child1->Asl.Child = NULL;
+
/* Folded constant is in ObjDesc, store into Child1 */
TrInstallReducedConstant (Child1, ObjDesc);
@@ -505,11 +513,6 @@ TrTransformToStoreOp (
UtSetParseOpName (Op);
Op->Common.Parent = OriginalParent;
- /* Truncate any subtree expressions, they have been evaluated */
-
- Child1->Asl.Child = NULL;
- Child2->Asl.Child = NULL;
-
/* First child is the folded constant */
/* Second child will be the target */
@@ -547,7 +550,8 @@ TrInstallReducedConstant (
ACPI_PARSE_OBJECT *Op,
ACPI_OPERAND_OBJECT *ObjDesc)
{
- ACPI_PARSE_OBJECT *RootOp;
+ ACPI_PARSE_OBJECT *LengthOp;
+ ACPI_PARSE_OBJECT *DataOp;
TotalFolds++;
@@ -574,17 +578,22 @@ TrInstallReducedConstant (
Op->Asl.ParseOpcode = PARSEOP_STRING_LITERAL;
Op->Common.AmlOpcode = AML_STRING_OP;
- Op->Asl.AmlLength = ACPI_STRLEN (ObjDesc->String.Pointer) + 1;
+ Op->Asl.AmlLength = strlen (ObjDesc->String.Pointer) + 1;
Op->Common.Value.String = ObjDesc->String.Pointer;
DbgPrint (ASL_PARSE_OUTPUT,
"Constant expression reduced to (STRING) %s\n\n",
Op->Common.Value.String);
-
break;
case ACPI_TYPE_BUFFER:
-
+ /*
+ * Create a new parse subtree of the form:
+ *
+ * BUFFER (Buffer AML opcode)
+ * INTEGER (Buffer length in bytes)
+ * RAW_DATA (Buffer byte data)
+ */
Op->Asl.ParseOpcode = PARSEOP_BUFFER;
Op->Common.AmlOpcode = AML_BUFFER_OP;
Op->Asl.CompileFlags = NODE_AML_PACKAGE;
@@ -592,28 +601,24 @@ TrInstallReducedConstant (
/* Child node is the buffer length */
- RootOp = TrAllocateNode (PARSEOP_INTEGER);
+ LengthOp = TrAllocateNode (PARSEOP_INTEGER);
- RootOp->Asl.AmlOpcode = AML_DWORD_OP;
- RootOp->Asl.Value.Integer = ObjDesc->Buffer.Length;
- RootOp->Asl.Parent = Op;
+ LengthOp->Asl.AmlOpcode = AML_DWORD_OP;
+ LengthOp->Asl.Value.Integer = ObjDesc->Buffer.Length;
+ LengthOp->Asl.Parent = Op;
+ (void) OpcSetOptimalIntegerSize (LengthOp);
- (void) OpcSetOptimalIntegerSize (RootOp);
-
- Op->Asl.Child = RootOp;
- Op = RootOp;
- UtSetParseOpName (Op);
+ Op->Asl.Child = LengthOp;
- /* Peer to the child is the raw buffer data */
+ /* Next child is the raw buffer data */
- RootOp = TrAllocateNode (PARSEOP_RAW_DATA);
- RootOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER;
- RootOp->Asl.AmlLength = ObjDesc->Buffer.Length;
- RootOp->Asl.Value.String = (char *) ObjDesc->Buffer.Pointer;
- RootOp->Asl.Parent = Op->Asl.Parent;
+ DataOp = TrAllocateNode (PARSEOP_RAW_DATA);
+ DataOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER;
+ DataOp->Asl.AmlLength = ObjDesc->Buffer.Length;
+ DataOp->Asl.Value.String = (char *) ObjDesc->Buffer.Pointer;
+ DataOp->Asl.Parent = Op;
- Op->Asl.Next = RootOp;
- Op = RootOp;
+ LengthOp->Asl.Next = DataOp;
DbgPrint (ASL_PARSE_OUTPUT,
"Constant expression reduced to (BUFFER) length %X\n\n",
diff --git a/sys/contrib/dev/acpica/compiler/aslglobal.h b/sys/contrib/dev/acpica/compiler/aslglobal.h
index c61b8ff..0696b67 100644
--- a/sys/contrib/dev/acpica/compiler/aslglobal.h
+++ b/sys/contrib/dev/acpica/compiler/aslglobal.h
@@ -73,6 +73,7 @@ ASL_FILE_INFO Gbl_Files [ASL_NUM_FILES] =
{NULL, NULL, "Binary Output:", "AML Output"},
{NULL, NULL, "Source Output:", "Source Output"},
{NULL, NULL, "Preprocessor: ", "Preprocessor Output"},
+ {NULL, NULL, "Preprocessor: ", "Preprocessor Temp File"},
{NULL, NULL, "Listing File: ", "Listing Output"},
{NULL, NULL, "Hex Dump: ", "Hex Table Output"},
{NULL, NULL, "Namespace: ", "Namespace Output"},
@@ -123,10 +124,10 @@ ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_CurrentLineBuffer, NUL
ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_LineBufPtr, NULL);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LineBufferSize, ASL_DEFAULT_LINE_BUFFER_SIZE);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentColumn, 0);
-ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_PreviousLineNumber, 0);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineNumber, 1);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LogicalLineNumber, 1);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineOffset, 0);
+ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_OriginalInputFileSize, 0);
ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_SyntaxError, 0);
/* Exception reporting */
@@ -146,6 +147,7 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename,
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_MapfileFlag, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessorOutputFlag, FALSE);
+ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_KeepPreprocessorTempFile, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmOutputFlag, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_OutputFlag, FALSE);
diff --git a/sys/contrib/dev/acpica/compiler/aslmain.c b/sys/contrib/dev/acpica/compiler/aslmain.c
index 99745ad..611183a 100644
--- a/sys/contrib/dev/acpica/compiler/aslmain.c
+++ b/sys/contrib/dev/acpica/compiler/aslmain.c
@@ -261,7 +261,7 @@ AslSignalHandler (
/* Close all open files */
- Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; /* the .i file is same as source file */
+ Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; /* the .pre file is same as source file */
for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
{
diff --git a/sys/contrib/dev/acpica/compiler/aslmapenter.c b/sys/contrib/dev/acpica/compiler/aslmapenter.c
index 87ad28a..2d2b863 100644
--- a/sys/contrib/dev/acpica/compiler/aslmapenter.c
+++ b/sys/contrib/dev/acpica/compiler/aslmapenter.c
@@ -239,7 +239,7 @@ MpCreateGpioInfo (
/* Sort on source DeviceName first */
while (NextGpio &&
- (ACPI_STRCMP (DeviceName, NextGpio->DeviceName) > 0))
+ (strcmp (DeviceName, NextGpio->DeviceName) > 0))
{
PrevGpio = NextGpio;
NextGpio = NextGpio->Next;
@@ -249,7 +249,7 @@ MpCreateGpioInfo (
while (NextGpio &&
(NextGpio->PinNumber < PinNumber) &&
- !ACPI_STRCMP (DeviceName, NextGpio->DeviceName))
+ !strcmp (DeviceName, NextGpio->DeviceName))
{
PrevGpio = NextGpio;
NextGpio = NextGpio->Next;
@@ -316,7 +316,7 @@ MpCreateSerialInfo (
/* Sort on source DeviceName */
while (NextSerial &&
- (ACPI_STRCMP (DeviceName, NextSerial->DeviceName) > 0))
+ (strcmp (DeviceName, NextSerial->DeviceName) > 0))
{
PrevSerial = NextSerial;
NextSerial = NextSerial->Next;
@@ -326,7 +326,7 @@ MpCreateSerialInfo (
while (NextSerial &&
(NextSerial->Address < Address) &&
- !ACPI_STRCMP (DeviceName, NextSerial->DeviceName))
+ !strcmp (DeviceName, NextSerial->DeviceName))
{
PrevSerial = NextSerial;
NextSerial = NextSerial->Next;
diff --git a/sys/contrib/dev/acpica/compiler/aslmapoutput.c b/sys/contrib/dev/acpica/compiler/aslmapoutput.c
index 622b1bd..1cf1e53 100644
--- a/sys/contrib/dev/acpica/compiler/aslmapoutput.c
+++ b/sys/contrib/dev/acpica/compiler/aslmapoutput.c
@@ -207,7 +207,7 @@ MpEmitGpioInfo (
/* Print header info for the controller itself */
if (!PrevDeviceName ||
- ACPI_STRCMP (PrevDeviceName, Info->DeviceName))
+ strcmp (PrevDeviceName, Info->DeviceName))
{
FlPrintFile (ASL_FILE_MAP_OUTPUT,
"\n\nGPIO Controller: %-8s %-28s",
@@ -360,7 +360,7 @@ MpEmitSerialInfo (
/* Print header info for the controller itself */
if (!PrevDeviceName ||
- ACPI_STRCMP (PrevDeviceName, Info->DeviceName))
+ strcmp (PrevDeviceName, Info->DeviceName))
{
FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n\n%s Controller: ",
Type);
diff --git a/sys/contrib/dev/acpica/compiler/aslmethod.c b/sys/contrib/dev/acpica/compiler/aslmethod.c
index fa9216e..bee488f 100644
--- a/sys/contrib/dev/acpica/compiler/aslmethod.c
+++ b/sys/contrib/dev/acpica/compiler/aslmethod.c
@@ -430,7 +430,7 @@ MtMethodAnalysisWalkBegin (
/* Special typechecking for _HID */
- if (!ACPI_STRCMP (METHOD_NAME__HID, Op->Asl.NameSeg))
+ if (!strcmp (METHOD_NAME__HID, Op->Asl.NameSeg))
{
Next = Op->Asl.Child->Asl.Next;
AnCheckId (Next, ASL_TYPE_HID);
@@ -438,7 +438,7 @@ MtMethodAnalysisWalkBegin (
/* Special typechecking for _CID */
- else if (!ACPI_STRCMP (METHOD_NAME__CID, Op->Asl.NameSeg))
+ else if (!strcmp (METHOD_NAME__CID, Op->Asl.NameSeg))
{
Next = Op->Asl.Child->Asl.Next;
diff --git a/sys/contrib/dev/acpica/compiler/aslopcodes.c b/sys/contrib/dev/acpica/compiler/aslopcodes.c
index d4dbbe3..43628f9 100644
--- a/sys/contrib/dev/acpica/compiler/aslopcodes.c
+++ b/sys/contrib/dev/acpica/compiler/aslopcodes.c
@@ -636,7 +636,7 @@ OpcDoEisaId (
* The EISAID string must be exactly 7 characters and of the form
* "UUUXXXX" -- 3 uppercase letters and 4 hex digits (e.g., "PNP0001")
*/
- if (ACPI_STRLEN (InString) != 7)
+ if (strlen (InString) != 7)
{
Status = AE_BAD_PARAMETER;
}
@@ -855,7 +855,7 @@ OpcFindName (
for (i = 0, Str = List[0]; Str; i++, Str = List[i])
{
- if (!(ACPI_STRNCMP (Str, Name, ACPI_STRLEN (Name))))
+ if (!(strncmp (Str, Name, strlen (Name))))
{
*Index = i;
return (TRUE);
@@ -907,7 +907,7 @@ OpcDoPld (
return;
}
- ACPI_MEMSET (&PldInfo, 0, sizeof (ACPI_PLD_INFO));
+ memset (&PldInfo, 0, sizeof (ACPI_PLD_INFO));
Node = Op->Asl.Child;
while (Node)
diff --git a/sys/contrib/dev/acpica/compiler/asloperands.c b/sys/contrib/dev/acpica/compiler/asloperands.c
index b2972d4..df63357 100644
--- a/sys/contrib/dev/acpica/compiler/asloperands.c
+++ b/sys/contrib/dev/acpica/compiler/asloperands.c
@@ -932,7 +932,7 @@ OpnDoDefinitionBlock (
if (Child->Asl.Value.String)
{
Gbl_TableSignature = Child->Asl.Value.String;
- if (ACPI_STRLEN (Gbl_TableSignature) != 4)
+ if (strlen (Gbl_TableSignature) != 4)
{
AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child,
"Length not exactly 4");
@@ -967,9 +967,9 @@ OpnDoDefinitionBlock (
Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
if (Child->Asl.Value.String)
{
- Length = ACPI_STRLEN (Child->Asl.Value.String);
+ Length = strlen (Child->Asl.Value.String);
Gbl_TableId = UtStringCacheCalloc (Length + 1);
- ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String);
+ strcpy (Gbl_TableId, Child->Asl.Value.String);
/*
* Convert anything non-alphanumeric to an underscore. This
diff --git a/sys/contrib/dev/acpica/compiler/aslopt.c b/sys/contrib/dev/acpica/compiler/aslopt.c
index 1079f9c..a65a25e 100644
--- a/sys/contrib/dev/acpica/compiler/aslopt.c
+++ b/sys/contrib/dev/acpica/compiler/aslopt.c
@@ -168,9 +168,9 @@ OptSearchToRoot (
/* We must allocate a new string for the name (TargetPath gets deleted) */
*NewPath = UtStringCacheCalloc (ACPI_NAME_SIZE + 1);
- ACPI_STRCPY (*NewPath, Path);
+ strcpy (*NewPath, Path);
- if (ACPI_STRNCMP (*NewPath, "_T_", 3))
+ if (strncmp (*NewPath, "_T_", 3))
{
AslError (ASL_OPTIMIZATION, ASL_MSG_SINGLE_NAME_OPTIMIZATION, Op,
*NewPath);
@@ -341,7 +341,7 @@ OptBuildShortestPath (
Index = TargetPath->Length;
}
- ACPI_STRCPY (&NewPathExternal[i], &((char *) TargetPath->Pointer)[Index]);
+ strcpy (&NewPathExternal[i], &((char *) TargetPath->Pointer)[Index]);
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " %-24s", NewPathExternal));
/*
@@ -358,11 +358,11 @@ OptBuildShortestPath (
return (Status);
}
- if (ACPI_STRLEN (NewPath) >= AmlNameStringLength)
+ if (strlen (NewPath) >= AmlNameStringLength)
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
" NOT SHORTER (New %u old %u)",
- (UINT32) ACPI_STRLEN (NewPath), (UINT32) AmlNameStringLength));
+ (UINT32) strlen (NewPath), (UINT32) AmlNameStringLength));
ACPI_FREE (NewPathExternal);
return (AE_NOT_FOUND);
}
@@ -597,7 +597,7 @@ OptOptimizeNamePath (
* The original path must be longer than one NameSeg (4 chars) for there
* to be any possibility that it can be optimized to a shorter string
*/
- AmlNameStringLength = ACPI_STRLEN (AmlNameString);
+ AmlNameStringLength = strlen (AmlNameString);
if (AmlNameStringLength <= ACPI_NAME_SIZE)
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
@@ -745,7 +745,7 @@ OptOptimizeNamePath (
*/
if (ACPI_SUCCESS (Status))
{
- HowMuchShorter = (AmlNameStringLength - ACPI_STRLEN (NewPath));
+ HowMuchShorter = (AmlNameStringLength - strlen (NewPath));
OptTotal += HowMuchShorter;
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
@@ -761,12 +761,12 @@ OptOptimizeNamePath (
* (alias name) is the second operand
*/
Op->Asl.Child->Asl.Next->Asl.Value.String = NewPath;
- Op->Asl.Child->Asl.Next->Asl.AmlLength = ACPI_STRLEN (NewPath);
+ Op->Asl.Child->Asl.Next->Asl.AmlLength = strlen (NewPath);
}
else
{
Op->Asl.Child->Asl.Value.String = NewPath;
- Op->Asl.Child->Asl.AmlLength = ACPI_STRLEN (NewPath);
+ Op->Asl.Child->Asl.AmlLength = strlen (NewPath);
}
}
else if (Flags & AML_CREATE)
@@ -781,14 +781,14 @@ OptOptimizeNamePath (
/* Update the parse node with the new NamePath */
NextOp->Asl.Value.String = NewPath;
- NextOp->Asl.AmlLength = ACPI_STRLEN (NewPath);
+ NextOp->Asl.AmlLength = strlen (NewPath);
}
else
{
/* Update the parse node with the new NamePath */
Op->Asl.Value.String = NewPath;
- Op->Asl.AmlLength = ACPI_STRLEN (NewPath);
+ Op->Asl.AmlLength = strlen (NewPath);
}
}
else
diff --git a/sys/contrib/dev/acpica/compiler/asloptions.c b/sys/contrib/dev/acpica/compiler/asloptions.c
index cc20bcd..4cff853 100644
--- a/sys/contrib/dev/acpica/compiler/asloptions.c
+++ b/sys/contrib/dev/acpica/compiler/asloptions.c
@@ -194,6 +194,7 @@ AslDoOptions (
DtParserdebug = 1;
PrParserdebug = 1;
Gbl_DebugFlag = TRUE;
+ Gbl_KeepPreprocessorTempFile = TRUE;
break;
case 'p': /* Prune ASL parse tree */
diff --git a/sys/contrib/dev/acpica/compiler/aslprintf.c b/sys/contrib/dev/acpica/compiler/aslprintf.c
index c8647ea..1d8d4d7 100644
--- a/sys/contrib/dev/acpica/compiler/aslprintf.c
+++ b/sys/contrib/dev/acpica/compiler/aslprintf.c
@@ -186,7 +186,7 @@ OpcParsePrintf (
if (StringToProcess)
{
NewString = UtStringCacheCalloc (StringLength + 1);
- ACPI_STRNCPY (NewString, StartPosition, StringLength);
+ strncpy (NewString, StartPosition, StringLength);
NewOp = TrAllocateNode (PARSEOP_STRING_LITERAL);
NewOp->Asl.Value.String = NewString;
@@ -275,7 +275,7 @@ OpcParsePrintf (
if (StringToProcess)
{
NewString = UtStringCacheCalloc (StringLength + 1);
- ACPI_STRNCPY (NewString, StartPosition, StringLength);
+ strncpy (NewString, StartPosition, StringLength);
NewOp = TrAllocateNode (PARSEOP_STRING_LITERAL);
NewOp->Asl.Value.String = NewString;
diff --git a/sys/contrib/dev/acpica/compiler/aslstartup.c b/sys/contrib/dev/acpica/compiler/aslstartup.c
index 85e2f88..211658b 100644
--- a/sys/contrib/dev/acpica/compiler/aslstartup.c
+++ b/sys/contrib/dev/acpica/compiler/aslstartup.c
@@ -359,6 +359,8 @@ AslDoOneFile (
return (AE_ERROR);
}
+ Gbl_OriginalInputFileSize = FlGetFileSize (ASL_FILE_INPUT);
+
/* Determine input file type */
Gbl_FileType = AslDetectSourceFileType (&Gbl_Files[ASL_FILE_INPUT]);
diff --git a/sys/contrib/dev/acpica/compiler/aslsupport.l b/sys/contrib/dev/acpica/compiler/aslsupport.l
index b3149cf..0016626 100644
--- a/sys/contrib/dev/acpica/compiler/aslsupport.l
+++ b/sys/contrib/dev/acpica/compiler/aslsupport.l
@@ -113,6 +113,7 @@ AslDoLineDirective (
char *Filename;
UINT32 i;
+ Gbl_HasIncludeFiles = TRUE;
/* Eat the entire line that contains the #line directive */
@@ -713,7 +714,7 @@ DoCharacter:
* string and resume processing of the next character
*/
ConvertBuffer[i] = 0;
- Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8);
+ Digit = (UINT8) strtoul (ConvertBuffer, NULL, 8);
/* Check for NULL or non-ascii character (ignore if so) */
@@ -749,7 +750,7 @@ DoCharacter:
/* Up to two hex digits allowed */
- if (!ACPI_IS_XDIGIT (StringChar) ||
+ if (!isxdigit (StringChar) ||
(i > 1))
{
/*
@@ -757,7 +758,7 @@ DoCharacter:
* string and resume processing of the next character
*/
ConvertBuffer[i] = 0;
- Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16);
+ Digit = (UINT8) strtoul (ConvertBuffer, NULL, 16);
/* Check for NULL or non-ascii character (ignore if so) */
@@ -830,7 +831,7 @@ CompletedString:
return (FALSE);
}
- ACPI_STRCPY (CleanString, MsgBuffer);
+ strcpy (CleanString, MsgBuffer);
AslCompilerlval.s = CleanString;
return (TRUE);
diff --git a/sys/contrib/dev/acpica/compiler/asltypes.h b/sys/contrib/dev/acpica/compiler/asltypes.h
index 4bd24da..343c364 100644
--- a/sys/contrib/dev/acpica/compiler/asltypes.h
+++ b/sys/contrib/dev/acpica/compiler/asltypes.h
@@ -148,32 +148,56 @@ typedef struct asl_file_status
/*
* File types. Note: Any changes to this table must also be reflected
* in the Gbl_Files array.
+ *
+ * Corresponding filename suffixes are in comments
+ *
+ * NOTE: Don't move the first 4 file types
*/
typedef enum
{
ASL_FILE_STDOUT = 0,
ASL_FILE_STDERR,
- ASL_FILE_INPUT,
- ASL_FILE_AML_OUTPUT, /* Don't move these first 4 file types */
- ASL_FILE_SOURCE_OUTPUT,
- ASL_FILE_PREPROCESSOR,
- ASL_FILE_LISTING_OUTPUT,
- ASL_FILE_HEX_OUTPUT,
- ASL_FILE_NAMESPACE_OUTPUT,
- ASL_FILE_DEBUG_OUTPUT,
- ASL_FILE_ASM_SOURCE_OUTPUT,
- ASL_FILE_C_SOURCE_OUTPUT,
- ASL_FILE_ASM_INCLUDE_OUTPUT,
- ASL_FILE_C_INCLUDE_OUTPUT,
- ASL_FILE_C_OFFSET_OUTPUT,
- ASL_FILE_MAP_OUTPUT
+ ASL_FILE_INPUT, /* .asl */
+ ASL_FILE_AML_OUTPUT, /* .aml */
+ ASL_FILE_SOURCE_OUTPUT, /* .src */
+ ASL_FILE_PREPROCESSOR, /* .pre */
+ ASL_FILE_PREPROCESSOR_USER, /* .i */
+ ASL_FILE_LISTING_OUTPUT, /* .lst */
+ ASL_FILE_HEX_OUTPUT, /* .hex */
+ ASL_FILE_NAMESPACE_OUTPUT, /* .nsp */
+ ASL_FILE_DEBUG_OUTPUT, /* .txt */
+ ASL_FILE_ASM_SOURCE_OUTPUT, /* .asm */
+ ASL_FILE_C_SOURCE_OUTPUT, /* .c */
+ ASL_FILE_ASM_INCLUDE_OUTPUT,/* .inc */
+ ASL_FILE_C_INCLUDE_OUTPUT, /* .h */
+ ASL_FILE_C_OFFSET_OUTPUT, /* offset.h */
+ ASL_FILE_MAP_OUTPUT /* .map */
} ASL_FILE_TYPES;
-#define ASL_MAX_FILE_TYPE 15
+#define ASL_MAX_FILE_TYPE 16
#define ASL_NUM_FILES (ASL_MAX_FILE_TYPE + 1)
+/* filename suffixes for output files */
+
+#define FILE_SUFFIX_PREPROC_USER "i "
+#define FILE_SUFFIX_PREPROCESSOR "pre"
+#define FILE_SUFFIX_AML_CODE "aml"
+#define FILE_SUFFIX_MAP "map"
+#define FILE_SUFFIX_LISTING "lst"
+#define FILE_SUFFIX_HEX_DUMP "hex"
+#define FILE_SUFFIX_DEBUG "txt"
+#define FILE_SUFFIX_SOURCE "src"
+#define FILE_SUFFIX_NAMESPACE "nsp"
+#define FILE_SUFFIX_ASM_SOURCE "asm"
+#define FILE_SUFFIX_C_SOURCE "c"
+#define FILE_SUFFIX_DISASSEMBLY "dsl"
+#define FILE_SUFFIX_ASM_INCLUDE "inc"
+#define FILE_SUFFIX_C_INCLUDE "h"
+#define FILE_SUFFIX_ASL_CODE "asl"
+#define FILE_SUFFIX_C_OFFSET "offset.h"
+
/* Cache block structure for ParseOps and Strings */
diff --git a/sys/contrib/dev/acpica/compiler/aslutils.c b/sys/contrib/dev/acpica/compiler/aslutils.c
index dadd6b1..e0511a4 100644
--- a/sys/contrib/dev/acpica/compiler/aslutils.c
+++ b/sys/contrib/dev/acpica/compiler/aslutils.c
@@ -441,17 +441,20 @@ UtDisplaySummary (
"%-14s %s - %u lines, %u bytes, %u keywords\n",
"ASL Input:",
Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
- Gbl_InputByteCount, TotalKeywords);
+ Gbl_OriginalInputFileSize, TotalKeywords);
/* AML summary */
if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
{
- FlPrintFile (FileId,
- "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n",
- "AML Output:",
- Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength,
- TotalNamedObjects, TotalExecutableOpcodes);
+ if (Gbl_Files[ASL_FILE_AML_OUTPUT].Handle)
+ {
+ FlPrintFile (FileId,
+ "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n",
+ "AML Output:",
+ Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength,
+ TotalNamedObjects, TotalExecutableOpcodes);
+ }
}
}
@@ -471,9 +474,9 @@ UtDisplaySummary (
continue;
}
- /* .I is a temp file unless specifically requested */
+ /* .PRE is the preprocessor intermediate file */
- if ((i == ASL_FILE_PREPROCESSOR) && (!Gbl_PreprocessorOutputFlag))
+ if ((i == ASL_FILE_PREPROCESSOR) && (!Gbl_KeepPreprocessorTempFile))
{
continue;
}
@@ -932,7 +935,7 @@ UtDoConstant (
char ErrBuf[64];
- Status = UtStrtoul64 (String, 0, &Converted);
+ Status = stroul64 (String, 0, &Converted);
if (ACPI_FAILURE (Status))
{
sprintf (ErrBuf, "%s %s\n", "Conversion error:",
@@ -948,7 +951,7 @@ UtDoConstant (
/*******************************************************************************
*
- * FUNCTION: UtStrtoul64
+ * FUNCTION: stroul64
*
* PARAMETERS: String - Null terminated string
* Terminater - Where a pointer to the terminating byte
@@ -962,7 +965,7 @@ UtDoConstant (
******************************************************************************/
ACPI_STATUS
-UtStrtoul64 (
+stroul64 (
char *String,
UINT32 Base,
UINT64 *RetInteger)
diff --git a/sys/contrib/dev/acpica/compiler/asluuid.c b/sys/contrib/dev/acpica/compiler/asluuid.c
index 4e345e9..850ac6a 100644
--- a/sys/contrib/dev/acpica/compiler/asluuid.c
+++ b/sys/contrib/dev/acpica/compiler/asluuid.c
@@ -69,7 +69,7 @@ AuValidateUuid (
UINT32 i;
- if (!InString || (ACPI_STRLEN (InString) != UUID_STRING_LENGTH))
+ if (!InString || (strlen (InString) != UUID_STRING_LENGTH))
{
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/compiler/dtcompile.c b/sys/contrib/dev/acpica/compiler/dtcompile.c
index 20da143..506c4cd 100644
--- a/sys/contrib/dev/acpica/compiler/dtcompile.c
+++ b/sys/contrib/dev/acpica/compiler/dtcompile.c
@@ -302,7 +302,7 @@ DtCompileDataTable (
return (AE_ERROR);
}
- Gbl_Signature = UtStringCacheCalloc (ACPI_STRLEN (Signature) + 1);
+ Gbl_Signature = UtStringCacheCalloc (strlen (Signature) + 1);
strcpy (Gbl_Signature, Signature);
/*
@@ -358,6 +358,8 @@ DtCompileDataTable (
TableData = AcpiDmGetTableData (Signature);
if (!TableData || Gbl_CompileGeneric)
{
+ /* Unknown table signature and/or force generic compile */
+
DtCompileGeneric ((void **) FieldList, NULL, NULL);
goto FinishHeader;
}
@@ -454,7 +456,7 @@ DtCompileTable (
/* Ignore optional subtable if name does not match */
if ((Info->Flags & DT_OPTIONAL) &&
- ACPI_STRCMP ((*Field)->Name, Info->Name))
+ strcmp ((*Field)->Name, Info->Name))
{
*RetSubtable = NULL;
return (AE_OK);
@@ -591,7 +593,7 @@ DtCompileTable (
DtSetSubtableLength (InlineSubtable);
- ACPI_MEMCPY (Buffer, InlineSubtable->Buffer, FieldLength);
+ memcpy (Buffer, InlineSubtable->Buffer, FieldLength);
LocalField = *Field;
break;
diff --git a/sys/contrib/dev/acpica/compiler/dtcompiler.h b/sys/contrib/dev/acpica/compiler/dtcompiler.h
index 201b2db..daff7aa 100644
--- a/sys/contrib/dev/acpica/compiler/dtcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/dtcompiler.h
@@ -181,7 +181,13 @@ DtCompilePadding (
UINT32
DtGetNextLine (
- FILE *Handle);
+ FILE *Handle,
+ UINT32 Flags);
+
+/* Flags for DtGetNextLine */
+
+#define DT_ALLOW_MULTILINE_QUOTES 0x01
+
DT_FIELD *
DtScanFile (
diff --git a/sys/contrib/dev/acpica/compiler/dtexpress.c b/sys/contrib/dev/acpica/compiler/dtexpress.c
index 90054c9..4316b79 100644
--- a/sys/contrib/dev/acpica/compiler/dtexpress.c
+++ b/sys/contrib/dev/acpica/compiler/dtexpress.c
@@ -413,7 +413,7 @@ DtLookupLabel (
LabelField = Gbl_LabelList;
while (LabelField)
{
- if (!ACPI_STRCMP (Name, LabelField->Value))
+ if (!strcmp (Name, LabelField->Value))
{
return (LabelField);
}
diff --git a/sys/contrib/dev/acpica/compiler/dtfield.c b/sys/contrib/dev/acpica/compiler/dtfield.c
index 3b191ab..621636c 100644
--- a/sys/contrib/dev/acpica/compiler/dtfield.c
+++ b/sys/contrib/dev/acpica/compiler/dtfield.c
@@ -166,7 +166,7 @@ DtCompileString (
UINT32 Length;
- Length = ACPI_STRLEN (Field->Value);
+ Length = strlen (Field->Value);
/* Check if the string is too long for the field */
@@ -177,7 +177,7 @@ DtCompileString (
Length = ByteLength;
}
- ACPI_MEMCPY (Buffer, Field->Value, Length);
+ memcpy (Buffer, Field->Value, Length);
}
@@ -212,7 +212,7 @@ DtCompileUnicode (
AsciiString = Field->Value;
UnicodeString = (UINT16 *) Buffer;
- Count = ACPI_STRLEN (AsciiString) + 1;
+ Count = strlen (AsciiString) + 1;
/* Convert to Unicode string (including null terminator) */
@@ -318,7 +318,7 @@ DtCompileInteger (
/* TBD: Should use a flag rather than compare "Reserved" */
- if (!ACPI_STRCMP (Field->Name, "Reserved"))
+ if (!strcmp (Field->Name, "Reserved"))
{
if (Flags & DT_NON_ZERO)
{
@@ -359,7 +359,7 @@ DtCompileInteger (
DtError (ASL_ERROR, ASL_MSG_INTEGER_SIZE, Field, MsgBuffer);
}
- ACPI_MEMCPY (Buffer, &Value, ByteLength);
+ memcpy (Buffer, &Value, ByteLength);
return;
}
@@ -391,7 +391,7 @@ DtNormalizeBuffer (
char c;
- NewBuffer = UtLocalCalloc (ACPI_STRLEN (Buffer) + 1);
+ NewBuffer = UtLocalCalloc (strlen (Buffer) + 1);
TmpBuffer = NewBuffer;
while ((c = *Buffer++))
diff --git a/sys/contrib/dev/acpica/compiler/dtio.c b/sys/contrib/dev/acpica/compiler/dtio.c
index 4b05bd0..fed9925 100644
--- a/sys/contrib/dev/acpica/compiler/dtio.c
+++ b/sys/contrib/dev/acpica/compiler/dtio.c
@@ -129,7 +129,7 @@ DtTrim (
/* Skip lines that start with a space */
- if (!ACPI_STRCMP (String, " "))
+ if (!strcmp (String, " "))
{
ReturnString = UtStringCacheCalloc (1);
return (ReturnString);
@@ -138,7 +138,7 @@ DtTrim (
/* Setup pointers to start and end of input string */
Start = String;
- End = String + ACPI_STRLEN (String) - 1;
+ End = String + strlen (String) - 1;
/* Find first non-whitespace character */
@@ -180,9 +180,9 @@ DtTrim (
Length = ACPI_PTR_DIFF (End, Start) + 1;
ReturnString = UtStringCacheCalloc (Length + 1);
- if (ACPI_STRLEN (Start))
+ if (strlen (Start))
{
- ACPI_STRNCPY (ReturnString, Start, Length);
+ strncpy (ReturnString, Start, Length);
}
ReturnString[Length] = 0;
@@ -313,7 +313,7 @@ DtParseLine (
Length = ACPI_PTR_DIFF (End, Start);
TmpName = UtLocalCalloc (Length + 1);
- ACPI_STRNCPY (TmpName, Start, Length);
+ strncpy (TmpName, Start, Length);
Name = DtTrim (TmpName);
ACPI_FREE (TmpName);
@@ -360,7 +360,7 @@ DtParseLine (
Length = ACPI_PTR_DIFF (End, Start);
TmpValue = UtLocalCalloc (Length + 1);
- ACPI_STRNCPY (TmpValue, Start, Length);
+ strncpy (TmpValue, Start, Length);
Value = DtTrim (TmpValue);
ACPI_FREE (TmpValue);
@@ -406,7 +406,8 @@ DtParseLine (
UINT32
DtGetNextLine (
- FILE *Handle)
+ FILE *Handle,
+ UINT32 Flags)
{
BOOLEAN LineNotAllBlanks = FALSE;
UINT32 State = DT_NORMAL_TEXT;
@@ -415,7 +416,7 @@ DtGetNextLine (
int c;
- ACPI_MEMSET (Gbl_CurrentLineBuffer, 0, Gbl_LineBufferSize);
+ memset (Gbl_CurrentLineBuffer, 0, Gbl_LineBufferSize);
for (i = 0; ;)
{
/*
@@ -550,9 +551,12 @@ DtGetNextLine (
case '\n':
- AcpiOsPrintf ("ERROR at line %u: Unterminated quoted string\n",
- Gbl_CurrentLineNumber++);
- State = DT_NORMAL_TEXT;
+ if (!(Flags & DT_ALLOW_MULTILINE_QUOTES))
+ {
+ AcpiOsPrintf ("ERROR at line %u: Unterminated quoted string\n",
+ Gbl_CurrentLineNumber++);
+ State = DT_NORMAL_TEXT;
+ }
break;
default: /* Get next character */
@@ -746,7 +750,7 @@ DtScanFile (
/* Scan line-by-line */
- while ((Offset = DtGetNextLine (Handle)) != ASL_EOF)
+ while ((Offset = DtGetNextLine (Handle, 0)) != ASL_EOF)
{
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Line %2.2u/%4.4X - %s",
Gbl_CurrentLineNumber, Offset, Gbl_CurrentLineBuffer));
@@ -897,7 +901,7 @@ DtDumpBuffer (
}
BufChar = Buffer[(ACPI_SIZE) i + j];
- if (ACPI_IS_PRINT (BufChar))
+ if (isprint (BufChar))
{
FlPrintFile (FileId, "%c", BufChar);
}
diff --git a/sys/contrib/dev/acpica/compiler/dtparser.y b/sys/contrib/dev/acpica/compiler/dtparser.y
index 0271d78..9d6f1e2 100644
--- a/sys/contrib/dev/acpica/compiler/dtparser.y
+++ b/sys/contrib/dev/acpica/compiler/dtparser.y
@@ -48,6 +48,13 @@
#define _COMPONENT DT_COMPILER
ACPI_MODULE_NAME ("dtparser")
+void * AslLocalAllocate (unsigned int Size);
+
+/* Bison/yacc configuration */
+
+#undef alloca
+#define alloca AslLocalAllocate
+
int DtParserlex (void);
int DtParserparse (void);
void DtParsererror (char const *msg);
@@ -162,15 +169,15 @@ Expression
/* Default base for a non-prefixed integer is 16 */
- | EXPOP_NUMBER { UtStrtoul64 (DtParsertext, 16, &$$);}
+ | EXPOP_NUMBER { stroul64 (DtParsertext, 16, &$$);}
/* Standard hex number (0x1234) */
- | EXPOP_HEX_NUMBER { UtStrtoul64 (DtParsertext, 16, &$$);}
+ | EXPOP_HEX_NUMBER { stroul64 (DtParsertext, 16, &$$);}
- /* TBD: Decimal number with prefix (0d1234) - Not supported by UtStrtoul64 at this time */
+ /* TBD: Decimal number with prefix (0d1234) - Not supported by stroul64 at this time */
- | EXPOP_DECIMAL_NUMBER { UtStrtoul64 (DtParsertext, 10, &$$);}
+ | EXPOP_DECIMAL_NUMBER { stroul64 (DtParsertext, 10, &$$);}
;
%%
diff --git a/sys/contrib/dev/acpica/compiler/dtsubtable.c b/sys/contrib/dev/acpica/compiler/dtsubtable.c
index 1152656..8cb5253 100644
--- a/sys/contrib/dev/acpica/compiler/dtsubtable.c
+++ b/sys/contrib/dev/acpica/compiler/dtsubtable.c
@@ -80,7 +80,7 @@ DtCreateSubtable (
String = UtStringCacheCalloc (Length);
Subtable->Buffer = ACPI_CAST_PTR (UINT8, String);
- ACPI_MEMCPY (Subtable->Buffer, Buffer, Length);
+ memcpy (Subtable->Buffer, Buffer, Length);
Subtable->Length = Length;
Subtable->TotalLength = Length;
@@ -379,6 +379,6 @@ DtSetSubtableLength (
return;
}
- ACPI_MEMCPY (Subtable->LengthField, &Subtable->TotalLength,
+ memcpy (Subtable->LengthField, &Subtable->TotalLength,
Subtable->SizeOfLengthField);
}
diff --git a/sys/contrib/dev/acpica/compiler/dttable.c b/sys/contrib/dev/acpica/compiler/dttable.c
index bae80ad..1c32fe0 100644
--- a/sys/contrib/dev/acpica/compiler/dttable.c
+++ b/sys/contrib/dev/acpica/compiler/dttable.c
@@ -1824,7 +1824,7 @@ DtCompileIvrs (
if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE)
{
while (*PFieldList &&
- !ACPI_STRCMP ((*PFieldList)->Name, "Entry Type"))
+ !strcmp ((*PFieldList)->Name, "Entry Type"))
{
SubtableStart = *PFieldList;
DtCompileInteger (&EntryType, *PFieldList, 1, 0);
@@ -3403,13 +3403,13 @@ DtCompileGeneric (
/* Now we can actually compile the parse tree */
- if (*Length)
+ if (Length && *Length)
{
*Length = 0;
}
while (*PFieldList)
{
- if (Name && !ACPI_STRCMP ((*PFieldList)->Name, Name))
+ if (Name && !strcmp ((*PFieldList)->Name, Name))
{
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.c b/sys/contrib/dev/acpica/compiler/dttemplate.c
index 90b6b17..07e930f 100644
--- a/sys/contrib/dev/acpica/compiler/dttemplate.c
+++ b/sys/contrib/dev/acpica/compiler/dttemplate.c
@@ -85,6 +85,7 @@ AcpiUtIsSpecialTable (
{
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) ||
+ ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS) ||
ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME))
@@ -127,8 +128,8 @@ DtCreateTemplates (
}
AcpiUtStrupr (Signature);
- if (!ACPI_STRCMP (Signature, "ALL") ||
- !ACPI_STRCMP (Signature, "*"))
+ if (!strcmp (Signature, "ALL") ||
+ !strcmp (Signature, "*"))
{
/* Create all available/known templates */
@@ -327,7 +328,7 @@ DtCreateOneTemplate (
AcpiOsPrintf ("/*\n");
AcpiOsPrintf (ACPI_COMMON_HEADER ("iASL Compiler/Disassembler", " * "));
- AcpiOsPrintf (" * Template for [%4.4s] ACPI Table\n",
+ AcpiOsPrintf (" * Template for [%4.4s] ACPI Table",
Signature);
/* Dump the actual ACPI table */
@@ -336,6 +337,8 @@ DtCreateOneTemplate (
{
/* Normal case, tables that appear in AcpiDmTableData */
+ AcpiOsPrintf (" (static data table)\n");
+
if (Gbl_VerboseTemplates)
{
AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength]"
@@ -344,7 +347,7 @@ DtCreateOneTemplate (
else
{
AcpiOsPrintf (" * Format: [ByteLength]"
- " FieldName : HexFieldValue\n */\n\n");
+ " FieldName : HexFieldValue\n */\n");
}
AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
@@ -352,9 +355,11 @@ DtCreateOneTemplate (
}
else
{
- /* Special ACPI tables - DSDT, SSDT, FADT, RSDP */
+ /* Special ACPI tables - DSDT, SSDT, OSDT, FADT, RSDP */
+
+ AcpiOsPrintf (" (AML byte code table)\n");
- AcpiOsPrintf (" */\n\n");
+ AcpiOsPrintf (" */\n");
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT))
{
Actual = fwrite (TemplateDsdt, 1, sizeof (TemplateDsdt) -1, File);
@@ -377,6 +382,17 @@ DtCreateOneTemplate (
goto Cleanup;
}
}
+ else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT))
+ {
+ Actual = fwrite (TemplateOsdt, 1, sizeof (TemplateOsdt) -1, File);
+ if (Actual != sizeof (TemplateOsdt) -1)
+ {
+ fprintf (stderr,
+ "Could not write to output file %s\n", DisasmFilename);
+ Status = AE_ERROR;
+ goto Cleanup;
+ }
+ }
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) /* FADT */
{
AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.h b/sys/contrib/dev/acpica/compiler/dttemplate.h
index 1b27b4e..6d76f4d 100644
--- a/sys/contrib/dev/acpica/compiler/dttemplate.h
+++ b/sys/contrib/dev/acpica/compiler/dttemplate.h
@@ -45,7 +45,7 @@
#define __DTTEMPLATE_H
-/* Special templates for DSDT and SSDT (AML byte-code tables) */
+/* Special templates for the ASL/AML tables: DSDT, SSDT, and OSDT */
const char TemplateDsdt[] =
"DefinitionBlock (\"dsdt.aml\", \"DSDT\", 2, \"Intel\", \"Template\", 0x00000001)\n"
@@ -65,6 +65,15 @@ const char TemplateSsdt[] =
" }\n"
"}\n\n";
+const char TemplateOsdt[] =
+ "DefinitionBlock (\"osdt.aml\", \"OSDT\", 2, \"Intel\", \"Template\", 0x00000001)\n"
+ "{\n"
+ " Method (MAIN, 0, NotSerialized)\n"
+ " {\n"
+ " Return (Zero)\n"
+ " }\n"
+ "}\n\n";
+
/* Templates for ACPI data tables */
diff --git a/sys/contrib/dev/acpica/compiler/dtutils.c b/sys/contrib/dev/acpica/compiler/dtutils.c
index 2d5b762..ce996c4 100644
--- a/sys/contrib/dev/acpica/compiler/dtutils.c
+++ b/sys/contrib/dev/acpica/compiler/dtutils.c
@@ -241,7 +241,7 @@ DtStrtoul64 (
while (*ThisChar)
{
- if (ACPI_IS_DIGIT (*ThisChar))
+ if (isdigit ((int) *ThisChar))
{
/* Convert ASCII 0-9 to Decimal value */
@@ -249,8 +249,8 @@ DtStrtoul64 (
}
else /* Letter */
{
- ThisDigit = (UINT32) ACPI_TOUPPER (*ThisChar);
- if (!ACPI_IS_XDIGIT ((char) ThisDigit))
+ ThisDigit = (UINT32) toupper ((int) *ThisChar);
+ if (!isxdigit ((int) ThisDigit))
{
/* Not A-F */
@@ -568,7 +568,7 @@ DtGetFieldLength (
Value = DtGetFieldValue (Field);
if (Value)
{
- ByteLength = ACPI_STRLEN (Value) + 1;
+ ByteLength = strlen (Value) + 1;
}
else
{ /* At this point, this is a fatal error */
@@ -633,7 +633,7 @@ DtGetFieldLength (
/* TBD: error if Value is NULL? (as below?) */
- ByteLength = (ACPI_STRLEN (Value) + 1) * sizeof(UINT16);
+ ByteLength = (strlen (Value) + 1) * sizeof(UINT16);
break;
default:
diff --git a/sys/contrib/dev/acpica/compiler/prparser.y b/sys/contrib/dev/acpica/compiler/prparser.y
index 20d6e6a..f0c5f9b 100644
--- a/sys/contrib/dev/acpica/compiler/prparser.y
+++ b/sys/contrib/dev/acpica/compiler/prparser.y
@@ -48,6 +48,13 @@
#define _COMPONENT ASL_PREPROCESSOR
ACPI_MODULE_NAME ("prparser")
+void * AslLocalAllocate (unsigned int Size);
+
+/* Bison/yacc configuration */
+
+#undef alloca
+#define alloca AslLocalAllocate
+
int PrParserlex (void);
int PrParserparse (void);
void PrParsererror (char const *msg);
@@ -175,11 +182,11 @@ Expression
/* Default base for a non-prefixed integer is 10 */
- | EXPOP_NUMBER { UtStrtoul64 (PrParsertext, 10, &$$);}
+ | EXPOP_NUMBER { stroul64 (PrParsertext, 10, &$$);}
/* Standard hex number (0x1234) */
- | EXPOP_HEX_NUMBER { UtStrtoul64 (PrParsertext, 16, &$$);}
+ | EXPOP_HEX_NUMBER { stroul64 (PrParsertext, 16, &$$);}
;
%%
diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c
index 12d303c..cbf82a9 100644
--- a/sys/contrib/dev/acpica/compiler/prscan.c
+++ b/sys/contrib/dev/acpica/compiler/prscan.c
@@ -67,6 +67,14 @@ PrDoDirective (
char *DirectiveToken,
char **Next);
+static void
+PrGetNextLineInit (
+ void);
+
+static UINT32
+PrGetNextLine (
+ FILE *Handle);
+
static int
PrMatchDirective (
char *Directive);
@@ -186,7 +194,7 @@ PrInitializeGlobals (
/* Init globals */
Gbl_InputFileList = NULL;
- Gbl_CurrentLineNumber = 0;
+ Gbl_CurrentLineNumber = 1;
Gbl_PreprocessorLineNumber = 1;
Gbl_PreprocessorError = FALSE;
@@ -271,7 +279,7 @@ PrDoPreprocess (
} while (MoreInputFiles);
- /* Point compiler input to the new preprocessor output file (.i) */
+ /* Point compiler input to the new preprocessor output file (.pre) */
FlCloseFile (ASL_FILE_INPUT);
Gbl_Files[ASL_FILE_INPUT].Handle = Gbl_Files[ASL_FILE_PREPROCESSOR].Handle;
@@ -280,7 +288,10 @@ PrDoPreprocess (
/* Reset globals to allow compiler to run */
FlSeekFile (ASL_FILE_INPUT, 0);
- Gbl_CurrentLineNumber = 1;
+ if (!Gbl_PreprocessOnly)
+ {
+ Gbl_CurrentLineNumber = 0;
+ }
DbgPrint (ASL_DEBUG_OUTPUT, "Preprocessing phase complete \n\n");
}
@@ -297,7 +308,8 @@ PrDoPreprocess (
* DESCRIPTION: Preprocess one entire file, line-by-line.
*
* Input: Raw user ASL from ASL_FILE_INPUT
- * Output: Preprocessed file written to ASL_FILE_PREPROCESSOR
+ * Output: Preprocessed file written to ASL_FILE_PREPROCESSOR and
+ * (optionally) ASL_FILE_PREPROCESSOR_USER
*
******************************************************************************/
@@ -305,7 +317,7 @@ static void
PrPreprocessInputFile (
void)
{
- UINT32 Offset;
+ UINT32 Status;
char *Token;
char *ReplaceString;
PR_DEFINE_INFO *DefineInfo;
@@ -314,10 +326,21 @@ PrPreprocessInputFile (
int OffsetAdjust;
+ PrGetNextLineInit ();
+
/* Scan line-by-line. Comments and blank lines are skipped by this function */
- while ((Offset = DtGetNextLine (Gbl_Files[ASL_FILE_INPUT].Handle)) != ASL_EOF)
+ while ((Status = PrGetNextLine (Gbl_Files[ASL_FILE_INPUT].Handle)) != ASL_EOF)
{
+ Gbl_CurrentLineNumber++;
+ Gbl_LogicalLineNumber++;
+
+ if ((Status == ASL_WITHIN_COMMENT) ||
+ (Status == ASL_BLANK_LINE))
+ {
+ goto WriteEntireLine;
+ }
+
/* Need a copy of the input line for strok() */
strcpy (Gbl_MainTokenBuffer, Gbl_CurrentLineBuffer);
@@ -397,24 +420,13 @@ PrPreprocessInputFile (
Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, &Next);
}
- /*
- * Emit a #line directive if necessary, to keep the line numbers in
- * the (.i) file synchronized with the original source code file, so
- * that the correct line number appears in any error messages
- * generated by the actual compiler.
- */
- if (Gbl_CurrentLineNumber > (Gbl_PreviousLineNumber + 1))
- {
- FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u\n",
- Gbl_CurrentLineNumber);
- }
-
- Gbl_PreviousLineNumber = Gbl_CurrentLineNumber;
Gbl_PreprocessorLineNumber++;
+
+WriteEntireLine:
/*
* Now we can write the possibly modified source line to the
- * preprocessor (.i) file
+ * preprocessor file(s).
*/
FlWriteFile (ASL_FILE_PREPROCESSOR, Gbl_CurrentLineBuffer,
strlen (Gbl_CurrentLineBuffer));
@@ -654,7 +666,7 @@ PrDoDirective (
{
#ifndef MACROS_SUPPORTED
AcpiOsPrintf ("%s ERROR - line %u: #define macros are not supported yet\n",
- Gbl_CurrentLineBuffer, Gbl_CurrentLineNumber);
+ Gbl_CurrentLineBuffer, Gbl_LogicalLineNumber);
exit(1);
#else
PrAddMacro (Token, Next);
@@ -691,7 +703,7 @@ PrDoDirective (
#endif
DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
"New #define: %s->%s\n",
- Gbl_CurrentLineNumber, Token, Token2);
+ Gbl_LogicalLineNumber, Token, Token2);
PrAddDefine (Token, Token2, FALSE);
}
@@ -760,10 +772,7 @@ PrDoDirective (
"User #line invocation %s\n", Gbl_CurrentLineNumber,
Token);
- /* Update local line numbers */
-
Gbl_CurrentLineNumber = (UINT32) Value;
- Gbl_PreviousLineNumber = 0;
/* Emit #line into the preprocessor file */
@@ -839,6 +848,107 @@ SyntaxError:
/*******************************************************************************
*
+ * FUNCTION: PrGetNextLine, PrGetNextLineInit
+ *
+ * PARAMETERS: Handle - Open file handle for the source file
+ *
+ * RETURN: Status of the GetLine operation:
+ * AE_OK - Normal line, OK status
+ * ASL_WITHIN_COMMENT - Line is part of a multi-line comment
+ * ASL_EOF - End-of-file reached
+ *
+ * DESCRIPTION: Get the next text line from the input file. Does not strip
+ * comments.
+ *
+ ******************************************************************************/
+
+#define PR_NORMAL_TEXT 0
+#define PR_WITHIN_COMMENT 1
+
+static UINT8 AcpiGbl_LineScanState = PR_NORMAL_TEXT;
+
+static void
+PrGetNextLineInit (
+ void)
+{
+ AcpiGbl_LineScanState = 0;
+}
+
+static UINT32
+PrGetNextLine (
+ FILE *Handle)
+{
+ UINT32 i;
+ int c = 0;
+ int PreviousChar;
+
+
+ /* Always clear the global line buffer */
+
+ memset (Gbl_CurrentLineBuffer, 0, Gbl_LineBufferSize);
+ for (i = 0; ;)
+ {
+ /*
+ * If line is too long, expand the line buffers. Also increases
+ * Gbl_LineBufferSize.
+ */
+ if (i >= Gbl_LineBufferSize)
+ {
+ UtExpandLineBuffers ();
+ }
+
+ PreviousChar = c;
+ c = getc (Handle);
+ if (c == EOF)
+ {
+ return (ASL_EOF);
+ }
+
+ /* We need to worry about multi-line slash-asterisk comments */
+
+ /* Check for comment open */
+
+ if ((AcpiGbl_LineScanState == PR_NORMAL_TEXT) &&
+ (PreviousChar == '/') && (c == '*'))
+ {
+ AcpiGbl_LineScanState = PR_WITHIN_COMMENT;
+ }
+
+ /* Check for comment close */
+
+ if ((AcpiGbl_LineScanState == PR_WITHIN_COMMENT) &&
+ (PreviousChar == '*') && (c == '/'))
+ {
+ AcpiGbl_LineScanState = PR_NORMAL_TEXT;
+ }
+
+ /* Always copy the character into line buffer */
+
+ Gbl_CurrentLineBuffer[i] = (char) c;
+ i++;
+
+ /* Always exit on end-of-line */
+
+ if (c == '\n')
+ {
+ /* Handle multi-line comments */
+
+ if (AcpiGbl_LineScanState == PR_WITHIN_COMMENT)
+ {
+ return (ASL_WITHIN_COMMENT);
+ }
+ if (i == 1)
+ {
+ return (ASL_BLANK_LINE);
+ }
+ return (AE_OK);
+ }
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: PrMatchDirective
*
* PARAMETERS: Directive - Pointer to directive name token
diff --git a/sys/contrib/dev/acpica/compiler/prutils.c b/sys/contrib/dev/acpica/compiler/prutils.c
index 7e880b1..751d1a0 100644
--- a/sys/contrib/dev/acpica/compiler/prutils.c
+++ b/sys/contrib/dev/acpica/compiler/prutils.c
@@ -382,6 +382,8 @@ PrPushInputFileStack (
PR_FILE_NODE *Fnode;
+ Gbl_HasIncludeFiles = TRUE;
+
/* Save the current state in an Fnode */
Fnode = UtLocalCalloc (sizeof (PR_FILE_NODE));
@@ -406,11 +408,11 @@ PrPushInputFileStack (
strcpy (Gbl_Files[ASL_FILE_INPUT].Filename, Filename);
Gbl_Files[ASL_FILE_INPUT].Handle = InputFile;
- Gbl_PreviousLineNumber = 0;
- Gbl_CurrentLineNumber = 0;
+ Gbl_CurrentLineNumber = 1;
/* Emit a new #line directive for the include file */
+ Gbl_CurrentLineNumber = 1;
FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\"\n", 1, Filename);
}
@@ -460,12 +462,11 @@ PrPopInputFileStack (
Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename;
Gbl_Files[ASL_FILE_INPUT].Handle = Fnode->File;
Gbl_CurrentLineNumber = Fnode->CurrentLineNumber;
- Gbl_PreviousLineNumber = 0;
/* Emit a new #line directive after the include file */
FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\"\n",
- Gbl_CurrentLineNumber + 1, Fnode->Filename);
+ Gbl_CurrentLineNumber, Fnode->Filename);
/* All done with this node */
diff --git a/sys/contrib/dev/acpica/components/debugger/dbcmds.c b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
index c11451d..0f236d2 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbcmds.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
@@ -111,7 +111,7 @@ AcpiDbConvertToNode (
{
/* Numeric argument, convert */
- Address = ACPI_STRTOUL (InString, NULL, 16);
+ Address = strtoul (InString, NULL, 16);
Node = ACPI_TO_POINTER (Address);
if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE)))
{
@@ -189,7 +189,7 @@ AcpiDbSleep (
/* Convert argument to binary and invoke the sleep state */
- SleepState = (UINT8) ACPI_STRTOUL (ObjectArg, NULL, 0);
+ SleepState = (UINT8) strtoul (ObjectArg, NULL, 0);
AcpiDbDoOneSleepState (SleepState);
return_ACPI_STATUS (AE_OK);
}
@@ -561,7 +561,7 @@ AcpiDbDisplayInterfaces (
/* Install - install an interface */
- SubString = ACPI_STRSTR ("INSTALL", ActionArg);
+ SubString = strstr ("INSTALL", ActionArg);
if (SubString)
{
Status = AcpiInstallInterface (InterfaceNameArg);
@@ -575,7 +575,7 @@ AcpiDbDisplayInterfaces (
/* Remove - remove an interface */
- SubString = ACPI_STRSTR ("REMOVE", ActionArg);
+ SubString = strstr ("REMOVE", ActionArg);
if (SubString)
{
Status = AcpiRemoveInterface (InterfaceNameArg);
@@ -736,7 +736,7 @@ AcpiDmCompareAmlResources (
/* Check for descriptor byte match */
- else if (ACPI_MEMCMP (Aml1, Aml2, Aml1Length))
+ else if (memcmp (Aml1, Aml2, Aml1Length))
{
AcpiOsPrintf (
"**** Data mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X ****\n",
@@ -1138,7 +1138,7 @@ AcpiDbDisplayResources (
/* Asterisk means "display resources for all devices" */
- if (!ObjectArg || (!ACPI_STRCMP (ObjectArg, "*")))
+ if (!ObjectArg || (!strcmp (ObjectArg, "*")))
{
(void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, AcpiDbDeviceResources, NULL, NULL, NULL);
@@ -1191,7 +1191,7 @@ AcpiDbGenerateGpe (
ACPI_GPE_EVENT_INFO *GpeEventInfo;
- GpeNumber = ACPI_STRTOUL (GpeArg, NULL, 0);
+ GpeNumber = strtoul (GpeArg, NULL, 0);
/*
* If no block arg, or block arg == 0 or 1, use the FADT-defined
@@ -1199,7 +1199,7 @@ AcpiDbGenerateGpe (
*/
if (BlockArg)
{
- BlockNumber = ACPI_STRTOUL (BlockArg, NULL, 0);
+ BlockNumber = strtoul (BlockArg, NULL, 0);
if (BlockNumber == 1)
{
BlockNumber = 0;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbconvert.c b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
index f6c0286..08931e4 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbconvert.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
@@ -77,7 +77,7 @@ AcpiDbHexCharToValue (
/* Digit must be ascii [0-9a-fA-F] */
- if (!ACPI_IS_XDIGIT (HexChar))
+ if (!isxdigit (HexChar))
{
return (AE_BAD_HEX_CONSTANT);
}
@@ -88,7 +88,7 @@ AcpiDbHexCharToValue (
}
else
{
- Value = (UINT8) (ACPI_TOUPPER (HexChar) - 0x37);
+ Value = (UINT8) (toupper (HexChar) - 0x37);
}
*ReturnValue = Value;
@@ -306,7 +306,7 @@ AcpiDbConvertToObject (
Object->Type = ACPI_TYPE_STRING;
Object->String.Pointer = String;
- Object->String.Length = (UINT32) ACPI_STRLEN (String);
+ Object->String.Length = (UINT32) strlen (String);
break;
case ACPI_TYPE_BUFFER:
@@ -471,7 +471,7 @@ AcpiDbDumpPldBuffer (
/* The two bit-packed buffers should match */
- if (ACPI_MEMCMP (NewBuffer, BufferDesc->Buffer.Pointer,
+ if (memcmp (NewBuffer, BufferDesc->Buffer.Pointer,
BufferDesc->Buffer.Length))
{
AcpiOsPrintf ("Converted _PLD buffer does not compare. New:\n");
diff --git a/sys/contrib/dev/acpica/components/debugger/dbdisply.c b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
index 507c2b0..d71d21d 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbdisply.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
@@ -141,7 +141,7 @@ AcpiDbGetPointer (
ACPI_SIZE Address;
- Address = ACPI_STRTOUL (Target, NULL, 16);
+ Address = strtoul (Target, NULL, 16);
ObjPtr = ACPI_TO_POINTER (Address);
return (ObjPtr);
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbexec.c b/sys/contrib/dev/acpica/components/debugger/dbexec.c
index 79c0ee9..c8a4112 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbexec.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbexec.c
@@ -433,15 +433,15 @@ AcpiDbExecute (
}
else
{
- NameString = ACPI_ALLOCATE (ACPI_STRLEN (Name) + 1);
+ NameString = ACPI_ALLOCATE (strlen (Name) + 1);
if (!NameString)
{
return;
}
- ACPI_MEMSET (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO));
+ memset (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO));
- ACPI_STRCPY (NameString, Name);
+ strcpy (NameString, Name);
AcpiUtStrupr (NameString);
AcpiGbl_DbMethodInfo.Name = NameString;
AcpiGbl_DbMethodInfo.Args = Args;
@@ -669,8 +669,8 @@ AcpiDbCreateExecutionThreads (
/* Get the arguments */
- NumThreads = ACPI_STRTOUL (NumThreadsArg, NULL, 0);
- NumLoops = ACPI_STRTOUL (NumLoopsArg, NULL, 0);
+ NumThreads = strtoul (NumThreadsArg, NULL, 0);
+ NumLoops = strtoul (NumLoopsArg, NULL, 0);
if (!NumThreads || !NumLoops)
{
@@ -714,7 +714,7 @@ AcpiDbCreateExecutionThreads (
return;
}
- ACPI_MEMSET (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO));
+ memset (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO));
/* Array to store IDs of threads */
@@ -729,7 +729,7 @@ AcpiDbCreateExecutionThreads (
(void) AcpiOsDeleteSemaphore (InfoGate);
return;
}
- ACPI_MEMSET (AcpiGbl_DbMethodInfo.Threads, 0, Size);
+ memset (AcpiGbl_DbMethodInfo.Threads, 0, Size);
/* Setup the context to be passed to each thread */
diff --git a/sys/contrib/dev/acpica/components/debugger/dbfileio.c b/sys/contrib/dev/acpica/components/debugger/dbfileio.c
index 59a9a52..f39fac1 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbfileio.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbfileio.c
@@ -112,7 +112,7 @@ AcpiDbOpenDebugFile (
}
AcpiOsPrintf ("Debug output file %s opened\n", Name);
- ACPI_STRNCPY (AcpiGbl_DbDebugFilename, Name,
+ strncpy (AcpiGbl_DbDebugFilename, Name,
sizeof (AcpiGbl_DbDebugFilename));
AcpiGbl_DbOutputToFile = TRUE;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbhistry.c b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
index e945779..6674fdb 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbhistry.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
@@ -92,7 +92,7 @@ AcpiDbAddToHistory (
/* Put command into the next available slot */
- CmdLen = (UINT16) ACPI_STRLEN (CommandLine);
+ CmdLen = (UINT16) strlen (CommandLine);
if (!CmdLen)
{
return;
@@ -100,7 +100,7 @@ AcpiDbAddToHistory (
if (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command != NULL)
{
- BufferLen = (UINT16) ACPI_STRLEN (
+ BufferLen = (UINT16) strlen (
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command);
if (CmdLen > BufferLen)
{
@@ -116,7 +116,7 @@ AcpiDbAddToHistory (
AcpiOsAllocate (CmdLen + 1);
}
- ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command,
+ strcpy (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command,
CommandLine);
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum =
@@ -217,7 +217,7 @@ AcpiDbGetFromHistory (
else
{
- CmdNum = ACPI_STRTOUL (CommandNumArg, NULL, 0);
+ CmdNum = strtoul (CommandNumArg, NULL, 0);
}
return (AcpiDbGetHistoryByIndex (CmdNum));
diff --git a/sys/contrib/dev/acpica/components/debugger/dbinput.c b/sys/contrib/dev/acpica/components/debugger/dbinput.c
index 623bc48..f7e59d8 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbinput.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbinput.c
@@ -361,7 +361,7 @@ AcpiDbMatchCommandHelp (
while ((*Command) && (*Invocation) && (*Invocation != ' '))
{
- if (ACPI_TOLOWER (*Command) != ACPI_TOLOWER (*Invocation))
+ if (tolower ((int) *Command) != tolower ((int) *Invocation))
{
return (FALSE);
}
@@ -702,7 +702,7 @@ AcpiDbMatchCommand (
for (i = CMD_FIRST_VALID; AcpiGbl_DbCommands[i].Name; i++)
{
- if (ACPI_STRSTR (AcpiGbl_DbCommands[i].Name, UserCommand) ==
+ if (strstr (AcpiGbl_DbCommands[i].Name, UserCommand) ==
AcpiGbl_DbCommands[i].Name)
{
return (i);
@@ -946,7 +946,7 @@ AcpiDbCommandDispatch (
else if (ParamCount == 2)
{
Temp = AcpiGbl_DbConsoleDebugLevel;
- AcpiGbl_DbConsoleDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1],
+ AcpiGbl_DbConsoleDebugLevel = strtoul (AcpiGbl_DbArgs[1],
NULL, 16);
AcpiOsPrintf (
"Debug Level for console output was %8.8lX, now %8.8lX\n",
@@ -955,7 +955,7 @@ AcpiDbCommandDispatch (
else
{
Temp = AcpiGbl_DbDebugLevel;
- AcpiGbl_DbDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16);
+ AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
AcpiOsPrintf (
"Debug Level for file output was %8.8lX, now %8.8lX\n",
Temp, AcpiGbl_DbDebugLevel);
@@ -994,7 +994,7 @@ AcpiDbCommandDispatch (
case CMD_NOTIFY:
- Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0);
+ Temp = strtoul (AcpiGbl_DbArgs[2], NULL, 0);
AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp);
break;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbmethod.c b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
index 5224854..65266c1 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbmethod.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
@@ -89,7 +89,7 @@ AcpiDbSetMethodBreakpoint (
/* Get and verify the breakpoint address */
- Address = ACPI_STRTOUL (Location, NULL, 16);
+ Address = strtoul (Location, NULL, 16);
if (Address <= Op->Common.AmlOffset)
{
AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n",
@@ -174,7 +174,7 @@ AcpiDbSetMethodData (
return;
}
- Value = ACPI_STRTOUL (ValueArg, NULL, 16);
+ Value = strtoul (ValueArg, NULL, 16);
if (Type == 'N')
{
@@ -196,7 +196,7 @@ AcpiDbSetMethodData (
/* Get the index and value */
- Index = ACPI_STRTOUL (IndexArg, NULL, 16);
+ Index = strtoul (IndexArg, NULL, 16);
WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList);
if (!WalkState)
@@ -304,7 +304,7 @@ AcpiDbDisassembleAml (
if (Statements)
{
- NumStatements = ACPI_STRTOUL (Statements, NULL, 0);
+ NumStatements = strtoul (Statements, NULL, 0);
}
#ifdef ACPI_DISASSEMBLER
diff --git a/sys/contrib/dev/acpica/components/debugger/dbnames.c b/sys/contrib/dev/acpica/components/debugger/dbnames.c
index d749b1d..67cf517 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbnames.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbnames.c
@@ -248,7 +248,7 @@ AcpiDbDumpNamespace (
if (DepthArg)
{
- MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0);
+ MaxDepth = strtoul (DepthArg, NULL, 0);
}
}
@@ -319,13 +319,13 @@ AcpiDbDumpNamespaceByOwner (
ACPI_OWNER_ID OwnerId;
- OwnerId = (ACPI_OWNER_ID) ACPI_STRTOUL (OwnerArg, NULL, 0);
+ OwnerId = (ACPI_OWNER_ID) strtoul (OwnerArg, NULL, 0);
/* Now we can check for the depth argument */
if (DepthArg)
{
- MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0);
+ MaxDepth = strtoul (DepthArg, NULL, 0);
}
AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT);
@@ -426,7 +426,7 @@ AcpiDbFindNameInNamespace (
char *AcpiNamePtr = AcpiName;
- if (ACPI_STRLEN (NameArg) > 4)
+ if (strlen (NameArg) > 4)
{
AcpiOsPrintf ("Name must be no longer than 4 characters\n");
return (AE_OK);
@@ -830,7 +830,7 @@ AcpiDbFindReferences (
/* Convert string to object pointer */
- Address = ACPI_STRTOUL (ObjectArg, NULL, 16);
+ Address = strtoul (ObjectArg, NULL, 16);
ObjDesc = ACPI_TO_POINTER (Address);
/* Search all nodes in namespace */
diff --git a/sys/contrib/dev/acpica/components/debugger/dbtest.c b/sys/contrib/dev/acpica/components/debugger/dbtest.c
index ab14984..ce3347c 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbtest.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbtest.c
@@ -646,7 +646,7 @@ AcpiDbTestBufferType (
* count is not an integral number of bytes. Zero out the
* unused bits.
*/
- ACPI_MEMSET (Buffer, BUFFER_FILL_VALUE, ByteLength);
+ memset (Buffer, BUFFER_FILL_VALUE, ByteLength);
ExtraBits = BitLength % 8;
if (ExtraBits)
{
@@ -671,7 +671,7 @@ AcpiDbTestBufferType (
goto Exit;
}
- if (ACPI_MEMCMP (Temp2->Buffer.Pointer, Buffer, ByteLength))
+ if (memcmp (Temp2->Buffer.Pointer, Buffer, ByteLength))
{
AcpiOsPrintf (" MISMATCH 2: New buffer value");
}
@@ -695,7 +695,7 @@ AcpiDbTestBufferType (
goto Exit;
}
- if (ACPI_MEMCMP (Temp1->Buffer.Pointer, Temp3->Buffer.Pointer, ByteLength))
+ if (memcmp (Temp1->Buffer.Pointer, Temp3->Buffer.Pointer, ByteLength))
{
AcpiOsPrintf (" MISMATCH 3: While restoring original buffer");
}
@@ -751,7 +751,7 @@ AcpiDbTestStringType (
/* Write a new value */
WriteValue.Type = ACPI_TYPE_STRING;
- WriteValue.String.Length = ACPI_STRLEN (ValueToWrite);
+ WriteValue.String.Length = strlen (ValueToWrite);
WriteValue.String.Pointer = ValueToWrite;
Status = AcpiDbWriteToObject (Node, &WriteValue);
@@ -768,7 +768,7 @@ AcpiDbTestStringType (
goto Exit;
}
- if (ACPI_STRCMP (Temp2->String.Pointer, ValueToWrite))
+ if (strcmp (Temp2->String.Pointer, ValueToWrite))
{
AcpiOsPrintf (" MISMATCH 2: %s, expecting %s",
Temp2->String.Pointer, ValueToWrite);
@@ -776,7 +776,7 @@ AcpiDbTestStringType (
/* Write back the original value */
- WriteValue.String.Length = ACPI_STRLEN (Temp1->String.Pointer);
+ WriteValue.String.Length = strlen (Temp1->String.Pointer);
WriteValue.String.Pointer = Temp1->String.Pointer;
Status = AcpiDbWriteToObject (Node, &WriteValue);
@@ -793,7 +793,7 @@ AcpiDbTestStringType (
goto Exit;
}
- if (ACPI_STRCMP (Temp1->String.Pointer, Temp3->String.Pointer))
+ if (strcmp (Temp1->String.Pointer, Temp3->String.Pointer))
{
AcpiOsPrintf (" MISMATCH 3: %s, expecting %s",
Temp3->String.Pointer, Temp1->String.Pointer);
@@ -926,7 +926,7 @@ AcpiDbWriteToObject (
/* Copy the incoming user parameter */
- ACPI_MEMCPY (&Params[1], Value, sizeof (ACPI_OBJECT));
+ memcpy (&Params[1], Value, sizeof (ACPI_OBJECT));
ParamObjects.Count = 2;
ParamObjects.Pointer = Params;
@@ -970,7 +970,7 @@ AcpiDbEvaluateAllPredefinedNames (
if (CountArg)
{
- Info.MaxCount = ACPI_STRTOUL (CountArg, NULL, 0);
+ Info.MaxCount = strtoul (CountArg, NULL, 0);
}
/* Search all nodes in namespace */
@@ -1077,7 +1077,7 @@ AcpiDbEvaluateOnePredefinedName (
case ACPI_TYPE_STRING:
ThisParam->String.Pointer = "This is the default argument string";
- ThisParam->String.Length = ACPI_STRLEN (ThisParam->String.Pointer);
+ ThisParam->String.Length = strlen (ThisParam->String.Pointer);
break;
case ACPI_TYPE_BUFFER:
diff --git a/sys/contrib/dev/acpica/components/debugger/dbutils.c b/sys/contrib/dev/acpica/components/debugger/dbutils.c
index 5db98e1..eeb5f82 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbutils.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbutils.c
@@ -96,7 +96,7 @@ AcpiDbMatchArgument (
for (i = 0; Arguments[i].Name; i++)
{
- if (ACPI_STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name)
+ if (strstr (Arguments[i].Name, UserArgument) == Arguments[i].Name)
{
return (i);
}
@@ -375,7 +375,7 @@ AcpiDbUint32ToHexString (
if (Value == 0)
{
- ACPI_STRCPY (Buffer, "0");
+ strcpy (Buffer, "0");
return;
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbxface.c b/sys/contrib/dev/acpica/components/debugger/dbxface.c
index d72ee5e..6609962 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbxface.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbxface.c
@@ -435,7 +435,7 @@ AcpiDbInitialize (
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
- ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE);
+ memset (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE);
/* Initial scope is the root */
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
index 15b7e87..fbd8f0b 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
@@ -205,7 +205,7 @@ AcpiDmDisasmByteList (
}
BufChar = ByteData[CurrentIndex];
- if (ACPI_IS_PRINT (BufChar))
+ if (isprint (BufChar))
{
AcpiOsPrintf ("%c", BufChar);
}
@@ -554,7 +554,7 @@ AcpiDmIsStringBuffer (
* they will be handled in the string output routine
*/
- if (!ACPI_IS_PRINT (ByteData[i]))
+ if (!isprint (ByteData[i]))
{
return (FALSE);
}
@@ -836,7 +836,7 @@ AcpiDmUnicode (
{
AcpiOsPrintf ("\\%c", OutputValue);
}
- else if (!ACPI_IS_PRINT (OutputValue))
+ else if (!isprint (OutputValue))
{
AcpiOsPrintf ("\\x%2.2X", OutputValue);
}
@@ -902,7 +902,7 @@ AcpiDmGetHardwareIdType (
for (i = 0; i < 3; i++)
{
if (!ACPI_IS_ASCII (Prefix[i]) ||
- !ACPI_IS_ALPHA (Prefix[i]))
+ !isalpha (Prefix[i]))
{
return;
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c b/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c
index b66dbed..11814a4 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c
@@ -337,23 +337,70 @@ AcpiDmCheckForSymbolicOpcode (
*/
AcpiDmPromoteTarget (Op, Target);
- /*
- * Check for possible conversion to a "Compound Assignment".
- *
- * Determine if either operand is the same as the target
- * and display compound assignment operator and other operand.
- */
- if ((AcpiDmIsTargetAnOperand (Target, Child1, TRUE)) ||
- (AcpiDmIsTargetAnOperand (Target, Child2, TRUE)))
+ /* Check operands for conversion to a "Compound Assignment" */
+
+ switch (Op->Common.AmlOpcode)
{
- Target->Common.OperatorSymbol =
- AcpiDmGetCompoundSymbol (Op->Common.AmlOpcode);
+ /* Commutative operators */
+
+ case AML_ADD_OP:
+ case AML_MULTIPLY_OP:
+ case AML_BIT_AND_OP:
+ case AML_BIT_OR_OP:
+ case AML_BIT_XOR_OP:
+ /*
+ * For the commutative operators, we can convert to a
+ * compound statement only if at least one (either) operand
+ * is the same as the target.
+ *
+ * Add (A, B, A) --> A += B
+ * Add (B, A, A) --> A += B
+ * Add (B, C, A) --> A = (B + C)
+ */
+ if ((AcpiDmIsTargetAnOperand (Target, Child1, TRUE)) ||
+ (AcpiDmIsTargetAnOperand (Target, Child2, TRUE)))
+ {
+ Target->Common.OperatorSymbol =
+ AcpiDmGetCompoundSymbol (Op->Common.AmlOpcode);
- /* Convert operator to compound assignment */
+ /* Convert operator to compound assignment */
- Op->Common.DisasmFlags |= ACPI_PARSEOP_COMPOUND;
- Child1->Common.OperatorSymbol = NULL;
- return (TRUE);
+ Op->Common.DisasmFlags |= ACPI_PARSEOP_COMPOUND;
+ Child1->Common.OperatorSymbol = NULL;
+ return (TRUE);
+ }
+ break;
+
+ /* Non-commutative operators */
+
+ case AML_SUBTRACT_OP:
+ case AML_DIVIDE_OP:
+ case AML_MOD_OP:
+ case AML_SHIFT_LEFT_OP:
+ case AML_SHIFT_RIGHT_OP:
+ /*
+ * For the non-commutative operators, we can convert to a
+ * compound statement only if the target is the same as the
+ * first operand.
+ *
+ * Subtract (A, B, A) --> A -= B
+ * Subtract (B, A, A) --> A = (B - A)
+ */
+ if ((AcpiDmIsTargetAnOperand (Target, Child1, TRUE)))
+ {
+ Target->Common.OperatorSymbol =
+ AcpiDmGetCompoundSymbol (Op->Common.AmlOpcode);
+
+ /* Convert operator to compound assignment */
+
+ Op->Common.DisasmFlags |= ACPI_PARSEOP_COMPOUND;
+ Child1->Common.OperatorSymbol = NULL;
+ return (TRUE);
+ }
+ break;
+
+ default:
+ break;
}
/*
@@ -423,8 +470,12 @@ AcpiDmCheckForSymbolicOpcode (
* source so that the target is processed first.
*/
Target = Child1->Common.Next;
- AcpiDmPromoteTarget (Op, Target);
+ if (!Target)
+ {
+ return (FALSE);
+ }
+ AcpiDmPromoteTarget (Op, Target);
if (!Target->Common.OperatorSymbol)
{
Target->Common.OperatorSymbol = " = ";
@@ -674,7 +725,8 @@ AcpiDmPromoteTarget (
*
* DESCRIPTION: Determine if a Target Op is a placeholder Op or a real Target.
* In other words, determine if the optional target is used or
- * not.
+ * not. Note: If Target is NULL, something is seriously wrong,
+ * probably with the parse tree.
*
******************************************************************************/
@@ -683,6 +735,11 @@ AcpiDmIsValidTarget (
ACPI_PARSE_OBJECT *Target)
{
+ if (!Target)
+ {
+ return (FALSE);
+ }
+
if ((Target->Common.AmlOpcode == AML_INT_NAMEPATH_OP) &&
(Target->Common.Value.Arg == NULL))
{
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
index b10d433..6b7c1f5 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
@@ -269,10 +269,10 @@ AcpiDmPredefinedDescription (
* Note: NameString is guaranteed to be upper case here.
*/
LastCharIsDigit =
- (ACPI_IS_DIGIT (NameString[3])); /* d */
+ (isdigit ((int) NameString[3])); /* d */
LastCharsAreHex =
- (ACPI_IS_XDIGIT (NameString[2]) && /* xx */
- ACPI_IS_XDIGIT (NameString[3]));
+ (isxdigit ((int) NameString[2]) && /* xx */
+ isxdigit ((int) NameString[3]));
switch (NameString[1])
{
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
index d376bb1..81cf410 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
@@ -530,7 +530,7 @@ AcpiDsCreateField (
}
}
- ACPI_MEMSET (&Info, 0, sizeof (ACPI_CREATE_FIELD_INFO));
+ memset (&Info, 0, sizeof (ACPI_CREATE_FIELD_INFO));
/* Second arg is the field flags */
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
index 62f9bde..921f556 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
@@ -224,7 +224,7 @@ AcpiDsInitializeObjects (
/* Set all init info to zero */
- ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO));
+ memset (&Info, 0, sizeof (ACPI_INIT_WALK_INFO));
Info.OwnerId = OwnerId;
Info.TableIndex = TableIndex;
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
index 106c6ab..33d0392 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
@@ -348,7 +348,7 @@ AcpiDsBuildInternalBufferObj (
if (ByteList)
{
- ACPI_MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Named.Data,
+ memcpy (ObjDesc->Buffer.Pointer, ByteList->Named.Data,
ByteListLength);
}
}
@@ -775,7 +775,7 @@ AcpiDsInitObjectFromOp (
case ACPI_TYPE_STRING:
ObjDesc->String.Pointer = Op->Common.Value.String;
- ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Op->Common.Value.String);
+ ObjDesc->String.Length = (UINT32) strlen (Op->Common.Value.String);
/*
* The string is contained in the ACPI table, don't ever try
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
index a115b2e..9b23c11 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
@@ -605,7 +605,7 @@ AcpiDsCreateOperand (
ObjDesc = AcpiUtCreateStringObject ((ACPI_SIZE) NameLength);
- ACPI_STRNCPY (ObjDesc->String.Pointer, NameString, NameLength);
+ strncpy (ObjDesc->String.Pointer, NameString, NameLength);
Status = AE_OK;
}
else
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswload.c b/sys/contrib/dev/acpica/components/dispatcher/dswload.c
index 8bc425a..755b15e 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dswload.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dswload.c
@@ -325,9 +325,18 @@ AcpiDsLoad1BeginOp (
if ((WalkState->Opcode != AML_SCOPE_OP) &&
(!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)))
{
- Flags |= ACPI_NS_ERROR_IF_FOUND;
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n",
- AcpiUtGetTypeName (ObjectType)));
+ if (WalkState->NamespaceOverride)
+ {
+ Flags |= ACPI_NS_OVERRIDE_IF_FOUND;
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Override allowed\n",
+ AcpiUtGetTypeName (ObjectType)));
+ }
+ else
+ {
+ Flags |= ACPI_NS_ERROR_IF_FOUND;
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n",
+ AcpiUtGetTypeName (ObjectType)));
+ }
}
else
{
diff --git a/sys/contrib/dev/acpica/components/events/evgpe.c b/sys/contrib/dev/acpica/components/events/evgpe.c
index 99043ad..0083e60 100644
--- a/sys/contrib/dev/acpica/components/events/evgpe.c
+++ b/sys/contrib/dev/acpica/components/events/evgpe.c
@@ -104,6 +104,7 @@ AcpiEvUpdateGpeEnableMask (
{
ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, (UINT8) RegisterBit);
}
+ GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun;
return_ACPI_STATUS (AE_OK);
}
@@ -141,7 +142,7 @@ AcpiEvEnableGpe (
/* Enable the requested GPE */
- Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_ENABLE_SAVE);
+ Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_ENABLE);
return_ACPI_STATUS (Status);
}
@@ -231,7 +232,7 @@ AcpiEvRemoveGpeReference (
Status = AcpiEvUpdateGpeEnableMask (GpeEventInfo);
if (ACPI_SUCCESS (Status))
{
- Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE_SAVE);
+ Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE);
}
if (ACPI_FAILURE (Status))
diff --git a/sys/contrib/dev/acpica/components/events/evgpeinit.c b/sys/contrib/dev/acpica/components/events/evgpeinit.c
index 0e53a1d..63a4c4a 100644
--- a/sys/contrib/dev/acpica/components/events/evgpeinit.c
+++ b/sys/contrib/dev/acpica/components/events/evgpeinit.c
@@ -395,7 +395,7 @@ AcpiEvMatchGpeMethod (
/* 4) The last two characters of the name are the hex GPE Number */
- GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16);
+ GpeNumber = strtoul (&Name[2], NULL, 16);
if (GpeNumber == ACPI_UINT32_MAX)
{
/* Conversion failed; invalid method, just ignore it */
diff --git a/sys/contrib/dev/acpica/components/executer/exconfig.c b/sys/contrib/dev/acpica/components/executer/exconfig.c
index 0627f99..96188e6 100644
--- a/sys/contrib/dev/acpica/components/executer/exconfig.c
+++ b/sys/contrib/dev/acpica/components/executer/exconfig.c
@@ -515,7 +515,7 @@ AcpiExLoadOp (
return_ACPI_STATUS (AE_NO_MEMORY);
}
- ACPI_MEMCPY (Table, TableHeader, Length);
+ memcpy (Table, TableHeader, Length);
break;
default:
diff --git a/sys/contrib/dev/acpica/components/executer/exconvrt.c b/sys/contrib/dev/acpica/components/executer/exconvrt.c
index 50ccf26..ac881cb 100644
--- a/sys/contrib/dev/acpica/components/executer/exconvrt.c
+++ b/sys/contrib/dev/acpica/components/executer/exconvrt.c
@@ -251,7 +251,7 @@ AcpiExConvertToBuffer (
/* Copy the integer to the buffer, LSB first */
NewBuf = ReturnDesc->Buffer.Pointer;
- ACPI_MEMCPY (NewBuf,
+ memcpy (NewBuf,
&ObjDesc->Integer.Value,
AcpiGbl_IntegerByteWidth);
break;
@@ -276,7 +276,7 @@ AcpiExConvertToBuffer (
/* Copy the string to the buffer */
NewBuf = ReturnDesc->Buffer.Pointer;
- ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer,
+ strncpy ((char *) NewBuf, (char *) ObjDesc->String.Pointer,
ObjDesc->String.Length);
break;
diff --git a/sys/contrib/dev/acpica/components/executer/exdebug.c b/sys/contrib/dev/acpica/components/executer/exdebug.c
index 5e98fd5..d174ccd 100644
--- a/sys/contrib/dev/acpica/components/executer/exdebug.c
+++ b/sys/contrib/dev/acpica/components/executer/exdebug.c
@@ -81,6 +81,8 @@ AcpiExDoDebugObject (
{
UINT32 i;
UINT32 Timer;
+ ACPI_OPERAND_OBJECT *ObjectDesc;
+ UINT32 Value;
ACPI_FUNCTION_TRACE_PTR (ExDoDebugObject, SourceDesc);
@@ -267,8 +269,37 @@ AcpiExDoDebugObject (
}
else
{
- AcpiExDoDebugObject (SourceDesc->Reference.Object,
- Level+4, 0);
+ ObjectDesc = SourceDesc->Reference.Object;
+ Value = SourceDesc->Reference.Value;
+
+ switch (ObjectDesc->Common.Type)
+ {
+ case ACPI_TYPE_BUFFER:
+
+ AcpiOsPrintf ("Buffer[%u] = 0x%2.2X\n",
+ Value, *SourceDesc->Reference.IndexPointer);
+ break;
+
+ case ACPI_TYPE_STRING:
+
+ AcpiOsPrintf ("String[%u] = \"%c\" (0x%2.2X)\n",
+ Value, *SourceDesc->Reference.IndexPointer,
+ *SourceDesc->Reference.IndexPointer);
+ break;
+
+ case ACPI_TYPE_PACKAGE:
+
+ AcpiOsPrintf ("Package[%u] = ", Value);
+ AcpiExDoDebugObject (*SourceDesc->Reference.Where,
+ Level+4, 0);
+ break;
+
+ default:
+
+ AcpiOsPrintf ("Unknown Reference object type %X\n",
+ ObjectDesc->Common.Type);
+ break;
+ }
}
}
break;
diff --git a/sys/contrib/dev/acpica/components/executer/exdump.c b/sys/contrib/dev/acpica/components/executer/exdump.c
index 622dc14..1a14d38 100644
--- a/sys/contrib/dev/acpica/components/executer/exdump.c
+++ b/sys/contrib/dev/acpica/components/executer/exdump.c
@@ -238,7 +238,7 @@ static ACPI_EXDUMP_INFO AcpiExDumpIndexField[5] =
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.DataObj), "Data Object"}
};
-static ACPI_EXDUMP_INFO AcpiExDumpReference[8] =
+static ACPI_EXDUMP_INFO AcpiExDumpReference[9] =
{
{ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpReference), NULL},
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.Class), "Class"},
@@ -247,6 +247,7 @@ static ACPI_EXDUMP_INFO AcpiExDumpReference[8] =
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"},
{ACPI_EXD_NODE, ACPI_EXD_OFFSET (Reference.Node), "Node"},
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"},
+ {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.IndexPointer), "Index Pointer"},
{ACPI_EXD_REFERENCE,0, NULL}
};
@@ -1053,16 +1054,18 @@ AcpiExDumpReferenceObj (
{
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
{
- AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object);
+ AcpiOsPrintf ("%22s %p", "Target :",
+ ObjDesc->Reference.Object);
if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
{
- AcpiOsPrintf (" Table Index: %X\n", ObjDesc->Reference.Value);
+ AcpiOsPrintf (" Table Index: %X\n",
+ ObjDesc->Reference.Value);
}
else
{
- AcpiOsPrintf (" Target: %p [%s]\n", ObjDesc->Reference.Object,
+ AcpiOsPrintf (" [%s]\n",
AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
- ObjDesc->Reference.Object)->Common.Type));
+ ObjDesc->Reference.Object)->Common.Type));
}
}
else
diff --git a/sys/contrib/dev/acpica/components/executer/exfield.c b/sys/contrib/dev/acpica/components/executer/exfield.c
index 836a378..ad2d05a 100644
--- a/sys/contrib/dev/acpica/components/executer/exfield.c
+++ b/sys/contrib/dev/acpica/components/executer/exfield.c
@@ -460,7 +460,7 @@ AcpiExWriteDataToField (
}
Buffer = BufferDesc->Buffer.Pointer;
- ACPI_MEMCPY (Buffer, SourceDesc->Buffer.Pointer, Length);
+ memcpy (Buffer, SourceDesc->Buffer.Pointer, Length);
/* Lock entire transaction if requested */
diff --git a/sys/contrib/dev/acpica/components/executer/exfldio.c b/sys/contrib/dev/acpica/components/executer/exfldio.c
index 2908da4..31727de 100644
--- a/sys/contrib/dev/acpica/components/executer/exfldio.c
+++ b/sys/contrib/dev/acpica/components/executer/exfldio.c
@@ -456,7 +456,7 @@ AcpiExFieldDatumIo (
* Copy the data from the source buffer.
* Length is the field width in bytes.
*/
- ACPI_MEMCPY (Value,
+ memcpy (Value,
(ObjDesc->BufferField.BufferObj)->Buffer.Pointer +
ObjDesc->BufferField.BaseByteOffset +
FieldDatumByteOffset,
@@ -468,7 +468,7 @@ AcpiExFieldDatumIo (
* Copy the data to the target buffer.
* Length is the field width in bytes.
*/
- ACPI_MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer +
+ memcpy ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer +
ObjDesc->BufferField.BaseByteOffset +
FieldDatumByteOffset,
Value, ObjDesc->CommonField.AccessByteWidth);
@@ -748,7 +748,7 @@ AcpiExExtractFromField (
return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
}
- ACPI_MEMSET (Buffer, 0, BufferLength);
+ memset (Buffer, 0, BufferLength);
AccessBitWidth = ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth);
/* Handle the simple case here */
@@ -765,7 +765,7 @@ AcpiExExtractFromField (
/* Use RawDatum (UINT64) to handle buffers < 64 bits */
Status = AcpiExFieldDatumIo (ObjDesc, 0, &RawDatum, ACPI_READ);
- ACPI_MEMCPY (Buffer, &RawDatum, BufferLength);
+ memcpy (Buffer, &RawDatum, BufferLength);
}
return_ACPI_STATUS (Status);
@@ -835,7 +835,7 @@ AcpiExExtractFromField (
/* Write merged datum to target buffer */
- ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum,
+ memcpy (((char *) Buffer) + BufferOffset, &MergedDatum,
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
BufferLength - BufferOffset));
@@ -853,7 +853,7 @@ AcpiExExtractFromField (
/* Write the last datum to the buffer */
- ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum,
+ memcpy (((char *) Buffer) + BufferOffset, &MergedDatum,
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
BufferLength - BufferOffset));
@@ -926,7 +926,7 @@ AcpiExInsertIntoField (
* at Byte zero. All unused (upper) bytes of the
* buffer will be 0.
*/
- ACPI_MEMCPY ((char *) NewBuffer, (char *) Buffer, BufferLength);
+ memcpy ((char *) NewBuffer, (char *) Buffer, BufferLength);
Buffer = NewBuffer;
BufferLength = RequiredLength;
}
@@ -969,7 +969,7 @@ AcpiExInsertIntoField (
/* Get initial Datum from the input buffer */
- ACPI_MEMCPY (&RawDatum, Buffer,
+ memcpy (&RawDatum, Buffer,
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
BufferLength - BufferOffset));
@@ -1021,7 +1021,7 @@ AcpiExInsertIntoField (
/* Get the next input datum from the buffer */
BufferOffset += ObjDesc->CommonField.AccessByteWidth;
- ACPI_MEMCPY (&RawDatum, ((char *) Buffer) + BufferOffset,
+ memcpy (&RawDatum, ((char *) Buffer) + BufferOffset,
ACPI_MIN(ObjDesc->CommonField.AccessByteWidth,
BufferLength - BufferOffset));
diff --git a/sys/contrib/dev/acpica/components/executer/exmisc.c b/sys/contrib/dev/acpica/components/executer/exmisc.c
index d4e1a3b..df02e03 100644
--- a/sys/contrib/dev/acpica/components/executer/exmisc.c
+++ b/sys/contrib/dev/acpica/components/executer/exmisc.c
@@ -225,8 +225,8 @@ AcpiExConcatTemplate (
* EndTag descriptor is copied from Operand1.
*/
NewBuf = ReturnDesc->Buffer.Pointer;
- ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer, Length0);
- ACPI_MEMCPY (NewBuf + Length0, Operand1->Buffer.Pointer, Length1);
+ memcpy (NewBuf, Operand0->Buffer.Pointer, Length0);
+ memcpy (NewBuf + Length0, Operand1->Buffer.Pointer, Length1);
/* Insert EndTag and set the checksum to zero, means "ignore checksum" */
@@ -340,12 +340,12 @@ AcpiExDoConcatenate (
/* Copy the first integer, LSB first */
- ACPI_MEMCPY (NewBuf, &Operand0->Integer.Value,
+ memcpy (NewBuf, &Operand0->Integer.Value,
AcpiGbl_IntegerByteWidth);
/* Copy the second integer (LSB first) after the first */
- ACPI_MEMCPY (NewBuf + AcpiGbl_IntegerByteWidth,
+ memcpy (NewBuf + AcpiGbl_IntegerByteWidth,
&LocalOperand1->Integer.Value,
AcpiGbl_IntegerByteWidth);
break;
@@ -367,8 +367,8 @@ AcpiExDoConcatenate (
/* Concatenate the strings */
- ACPI_STRCPY (NewBuf, Operand0->String.Pointer);
- ACPI_STRCPY (NewBuf + Operand0->String.Length,
+ strcpy (NewBuf, Operand0->String.Pointer);
+ strcpy (NewBuf + Operand0->String.Length,
LocalOperand1->String.Pointer);
break;
@@ -389,9 +389,9 @@ AcpiExDoConcatenate (
/* Concatenate the buffers */
- ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer,
+ memcpy (NewBuf, Operand0->Buffer.Pointer,
Operand0->Buffer.Length);
- ACPI_MEMCPY (NewBuf + Operand0->Buffer.Length,
+ memcpy (NewBuf + Operand0->Buffer.Length,
LocalOperand1->Buffer.Pointer,
LocalOperand1->Buffer.Length);
break;
@@ -712,7 +712,7 @@ AcpiExDoLogicalOp (
/* Lexicographic compare: compare the data bytes */
- Compare = ACPI_MEMCMP (Operand0->Buffer.Pointer,
+ Compare = memcmp (Operand0->Buffer.Pointer,
LocalOperand1->Buffer.Pointer,
(Length0 > Length1) ? Length1 : Length0);
diff --git a/sys/contrib/dev/acpica/components/executer/exnames.c b/sys/contrib/dev/acpica/components/executer/exnames.c
index b213165..a6c9e6b 100644
--- a/sys/contrib/dev/acpica/components/executer/exnames.c
+++ b/sys/contrib/dev/acpica/components/executer/exnames.c
@@ -221,7 +221,7 @@ AcpiExNameSegment (
if (NameString)
{
- ACPI_STRCAT (NameString, CharBuf);
+ strcat (NameString, CharBuf);
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Appended to - %s\n", NameString));
}
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg2.c b/sys/contrib/dev/acpica/components/executer/exoparg2.c
index da1eb6c..e11c0b3 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg2.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg2.c
@@ -368,7 +368,7 @@ AcpiExOpcode_2A_1T_1R (
* Copy the raw buffer data with no transform.
* (NULL terminated already)
*/
- ACPI_MEMCPY (ReturnDesc->String.Pointer,
+ memcpy (ReturnDesc->String.Pointer,
Operand[0]->Buffer.Pointer, Length);
break;
@@ -412,6 +412,8 @@ AcpiExOpcode_2A_1T_1R (
}
ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD;
+ ReturnDesc->Reference.IndexPointer =
+ &(Operand[0]->Buffer.Pointer [Index]);
break;
case ACPI_TYPE_BUFFER:
@@ -423,6 +425,8 @@ AcpiExOpcode_2A_1T_1R (
}
ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD;
+ ReturnDesc->Reference.IndexPointer =
+ &(Operand[0]->Buffer.Pointer [Index]);
break;
case ACPI_TYPE_PACKAGE:
@@ -434,7 +438,8 @@ AcpiExOpcode_2A_1T_1R (
}
ReturnDesc->Reference.TargetType = ACPI_TYPE_PACKAGE;
- ReturnDesc->Reference.Where = &Operand[0]->Package.Elements [Index];
+ ReturnDesc->Reference.Where =
+ &Operand[0]->Package.Elements [Index];
break;
default:
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg3.c b/sys/contrib/dev/acpica/components/executer/exoparg3.c
index da873c3..54636bc 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg3.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg3.c
@@ -261,7 +261,7 @@ AcpiExOpcode_3A_1T_1R (
{
/* We have a buffer, copy the portion requested */
- ACPI_MEMCPY (Buffer, Operand[0]->String.Pointer + Index,
+ memcpy (Buffer, Operand[0]->String.Pointer + Index,
Length);
}
diff --git a/sys/contrib/dev/acpica/components/executer/exregion.c b/sys/contrib/dev/acpica/components/executer/exregion.c
index 59b4612..6bfdf7b 100644
--- a/sys/contrib/dev/acpica/components/executer/exregion.c
+++ b/sys/contrib/dev/acpica/components/executer/exregion.c
@@ -558,13 +558,13 @@ AcpiExDataTableSpaceHandler (
{
case ACPI_READ:
- ACPI_MEMCPY (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address),
+ memcpy (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address),
ACPI_DIV_8 (BitWidth));
break;
case ACPI_WRITE:
- ACPI_MEMCPY (ACPI_PHYSADDR_TO_PTR (Address), ACPI_CAST_PTR (char, Value),
+ memcpy (ACPI_PHYSADDR_TO_PTR (Address), ACPI_CAST_PTR (char, Value),
ACPI_DIV_8 (BitWidth));
break;
diff --git a/sys/contrib/dev/acpica/components/executer/exstorob.c b/sys/contrib/dev/acpica/components/executer/exstorob.c
index c238310..683bfce 100644
--- a/sys/contrib/dev/acpica/components/executer/exstorob.c
+++ b/sys/contrib/dev/acpica/components/executer/exstorob.c
@@ -109,8 +109,8 @@ AcpiExStoreBufferToBuffer (
{
/* Clear existing buffer and copy in the new one */
- ACPI_MEMSET (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length);
- ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, Length);
+ memset (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length);
+ memcpy (TargetDesc->Buffer.Pointer, Buffer, Length);
#ifdef ACPI_OBSOLETE_BEHAVIOR
/*
@@ -139,7 +139,7 @@ AcpiExStoreBufferToBuffer (
{
/* Truncate the source, copy only what will fit */
- ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer,
+ memcpy (TargetDesc->Buffer.Pointer, Buffer,
TargetDesc->Buffer.Length);
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
@@ -203,9 +203,9 @@ AcpiExStoreStringToString (
* String will fit in existing non-static buffer.
* Clear old string and copy in the new one
*/
- ACPI_MEMSET (TargetDesc->String.Pointer, 0,
+ memset (TargetDesc->String.Pointer, 0,
(ACPI_SIZE) TargetDesc->String.Length + 1);
- ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length);
+ memcpy (TargetDesc->String.Pointer, Buffer, Length);
}
else
{
@@ -229,7 +229,7 @@ AcpiExStoreStringToString (
}
TargetDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER;
- ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length);
+ memcpy (TargetDesc->String.Pointer, Buffer, Length);
}
/* Set the new target length */
diff --git a/sys/contrib/dev/acpica/components/executer/exutils.c b/sys/contrib/dev/acpica/components/executer/exutils.c
index a55b171..1cd60fa 100644
--- a/sys/contrib/dev/acpica/components/executer/exutils.c
+++ b/sys/contrib/dev/acpica/components/executer/exutils.c
@@ -433,6 +433,43 @@ AcpiExIntegerToString (
/*******************************************************************************
*
+ * FUNCTION: AcpiExPciClsToString
+ *
+ * PARAMETERS: OutString - Where to put the converted string (7 bytes)
+ * PARAMETERS: ClassCode - PCI class code to be converted (3 bytes)
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Convert 3-bytes PCI class code to string representation.
+ * Return buffer must be large enough to hold the string. The
+ * string returned is always exactly of length
+ * ACPI_PCICLS_STRING_SIZE (includes null terminator).
+ *
+ ******************************************************************************/
+
+void
+AcpiExPciClsToString (
+ char *OutString,
+ UINT8 ClassCode[3])
+{
+
+ ACPI_FUNCTION_ENTRY ();
+
+
+ /* All 3 bytes are hexadecimal */
+
+ OutString[0] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[0], 4);
+ OutString[1] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[0], 0);
+ OutString[2] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[1], 4);
+ OutString[3] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[1], 0);
+ OutString[4] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[2], 4);
+ OutString[5] = AcpiUtHexToAsciiChar ((UINT64) ClassCode[2], 0);
+ OutString[6] = 0;
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiIsValidSpaceId
*
* PARAMETERS: SpaceId - ID to be validated
diff --git a/sys/contrib/dev/acpica/components/hardware/hwgpe.c b/sys/contrib/dev/acpica/components/hardware/hwgpe.c
index 093ba80..c293bef 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwgpe.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwgpe.c
@@ -97,6 +97,8 @@ AcpiHwGetGpeRegisterBit (
* RETURN: Status
*
* DESCRIPTION: Enable or disable a single GPE in the parent enable register.
+ * The EnableMask field of the involved GPE register must be
+ * updated by the caller if necessary.
*
******************************************************************************/
@@ -133,7 +135,7 @@ AcpiHwLowSetGpe (
/* Set or clear just the bit that corresponds to this GPE */
RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
- switch (Action & ~ACPI_GPE_SAVE_MASK)
+ switch (Action)
{
case ACPI_GPE_CONDITIONAL_ENABLE:
@@ -165,10 +167,6 @@ AcpiHwLowSetGpe (
/* Write the updated enable mask */
Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress);
- if (ACPI_SUCCESS (Status) && (Action & ACPI_GPE_SAVE_MASK))
- {
- GpeRegisterInfo->EnableMask = (UINT8) EnableMask;
- }
return (Status);
}
@@ -334,11 +332,8 @@ AcpiHwGpeEnableWrite (
ACPI_STATUS Status;
+ GpeRegisterInfo->EnableMask = EnableMask;
Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress);
- if (ACPI_SUCCESS (Status))
- {
- GpeRegisterInfo->EnableMask = EnableMask;
- }
return (Status);
}
diff --git a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
index 8d5ba97..5610398 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
@@ -51,6 +51,14 @@
/* Local prototypes */
+#if (!ACPI_REDUCED_HARDWARE)
+static ACPI_STATUS
+AcpiHwSetFirmwareWakingVector (
+ ACPI_TABLE_FACS *Facs,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress64);
+#endif
+
static ACPI_STATUS
AcpiHwSleepDispatch (
UINT8 SleepState,
@@ -77,29 +85,33 @@ static ACPI_SLEEP_FUNCTIONS AcpiSleepDispatch[] =
/*
* These functions are removed for the ACPI_REDUCED_HARDWARE case:
* AcpiSetFirmwareWakingVector
- * AcpiSetFirmwareWakingVector64
* AcpiEnterSleepStateS4bios
*/
#if (!ACPI_REDUCED_HARDWARE)
/*******************************************************************************
*
- * FUNCTION: AcpiSetFirmwareWakingVector
+ * FUNCTION: AcpiHwSetFirmwareWakingVector
*
- * PARAMETERS: PhysicalAddress - 32-bit physical address of ACPI real mode
- * entry point.
+ * PARAMETERS: Facs - Pointer to FACS table
+ * PhysicalAddress - 32-bit physical address of ACPI real mode
+ * entry point
+ * PhysicalAddress64 - 64-bit physical address of ACPI protected
+ * entry point
*
* RETURN: Status
*
- * DESCRIPTION: Sets the 32-bit FirmwareWakingVector field of the FACS
+ * DESCRIPTION: Sets the FirmwareWakingVector fields of the FACS
*
******************************************************************************/
-ACPI_STATUS
-AcpiSetFirmwareWakingVector (
- UINT32 PhysicalAddress)
+static ACPI_STATUS
+AcpiHwSetFirmwareWakingVector (
+ ACPI_TABLE_FACS *Facs,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress64)
{
- ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector);
+ ACPI_FUNCTION_TRACE (AcpiHwSetFirmwareWakingVector);
/*
@@ -112,60 +124,73 @@ AcpiSetFirmwareWakingVector (
/* Set the 32-bit vector */
- AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress;
+ Facs->FirmwareWakingVector = (UINT32) PhysicalAddress;
- /* Clear the 64-bit vector if it exists */
-
- if ((AcpiGbl_FACS->Length > 32) && (AcpiGbl_FACS->Version >= 1))
+ if (Facs->Length > 32)
{
- AcpiGbl_FACS->XFirmwareWakingVector = 0;
+ if (Facs->Version >= 1)
+ {
+ /* Set the 64-bit vector */
+
+ Facs->XFirmwareWakingVector = PhysicalAddress64;
+ }
+ else
+ {
+ /* Clear the 64-bit vector if it exists */
+
+ Facs->XFirmwareWakingVector = 0;
+ }
}
return_ACPI_STATUS (AE_OK);
}
-ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector)
-
-#if ACPI_MACHINE_WIDTH == 64
/*******************************************************************************
*
- * FUNCTION: AcpiSetFirmwareWakingVector64
+ * FUNCTION: AcpiSetFirmwareWakingVector
*
- * PARAMETERS: PhysicalAddress - 64-bit physical address of ACPI protected
- * mode entry point.
+ * PARAMETERS: PhysicalAddress - 32-bit physical address of ACPI real mode
+ * entry point
+ * PhysicalAddress64 - 64-bit physical address of ACPI protected
+ * entry point
*
* RETURN: Status
*
- * DESCRIPTION: Sets the 64-bit X_FirmwareWakingVector field of the FACS, if
- * it exists in the table. This function is intended for use with
- * 64-bit host operating systems.
+ * DESCRIPTION: Sets the FirmwareWakingVector fields of the FACS
*
******************************************************************************/
ACPI_STATUS
-AcpiSetFirmwareWakingVector64 (
- UINT64 PhysicalAddress)
+AcpiSetFirmwareWakingVector (
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress64)
{
- ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector64);
+ ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector);
- /* Determine if the 64-bit vector actually exists */
+ /* If Hardware Reduced flag is set, there is no FACS */
- if ((AcpiGbl_FACS->Length <= 32) || (AcpiGbl_FACS->Version < 1))
+ if (AcpiGbl_ReducedHardware)
{
- return_ACPI_STATUS (AE_NOT_EXIST);
+ return_ACPI_STATUS (AE_OK);
}
- /* Clear 32-bit vector, set the 64-bit X_ vector */
+ if (AcpiGbl_Facs32)
+ {
+ (void) AcpiHwSetFirmwareWakingVector (AcpiGbl_Facs32,
+ PhysicalAddress, PhysicalAddress64);
+ }
+ if (AcpiGbl_Facs64)
+ {
+ (void) AcpiHwSetFirmwareWakingVector (AcpiGbl_Facs64,
+ PhysicalAddress, PhysicalAddress64);
+ }
- AcpiGbl_FACS->FirmwareWakingVector = 0;
- AcpiGbl_FACS->XFirmwareWakingVector = PhysicalAddress;
return_ACPI_STATUS (AE_OK);
}
-ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector64)
-#endif
+ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector)
/*******************************************************************************
diff --git a/sys/contrib/dev/acpica/components/namespace/nsaccess.c b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
index 667b5af..46a64f5 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsaccess.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
@@ -111,7 +111,7 @@ AcpiNsRootInitialize (
{
/* _OSI is optional for now, will be permanent later */
- if (!ACPI_STRCMP (InitVal->Name, "_OSI") && !AcpiGbl_CreateOsiMethod)
+ if (!strcmp (InitVal->Name, "_OSI") && !AcpiGbl_CreateOsiMethod)
{
continue;
}
@@ -191,7 +191,7 @@ AcpiNsRootInitialize (
/* Build an object around the static string */
- ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Val);
+ ObjDesc->String.Length = (UINT32) strlen (Val);
ObjDesc->String.Pointer = Val;
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
break;
@@ -212,7 +212,7 @@ AcpiNsRootInitialize (
/* Special case for ACPI Global Lock */
- if (ACPI_STRCMP (InitVal->Name, "_GL_") == 0)
+ if (strcmp (InitVal->Name, "_GL_") == 0)
{
AcpiGbl_GlobalLockMutex = ObjDesc;
@@ -319,7 +319,9 @@ AcpiNsLookup (
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- LocalFlags = Flags & ~(ACPI_NS_ERROR_IF_FOUND | ACPI_NS_SEARCH_PARENT);
+ LocalFlags = Flags &
+ ~(ACPI_NS_ERROR_IF_FOUND | ACPI_NS_OVERRIDE_IF_FOUND |
+ ACPI_NS_SEARCH_PARENT);
*ReturnNode = ACPI_ENTRY_NOT_FOUND;
AcpiGbl_NsLookupCount++;
@@ -571,6 +573,13 @@ AcpiNsLookup (
{
LocalFlags |= ACPI_NS_ERROR_IF_FOUND;
}
+
+ /* Set override flag according to caller */
+
+ if (Flags & ACPI_NS_OVERRIDE_IF_FOUND)
+ {
+ LocalFlags |= ACPI_NS_OVERRIDE_IF_FOUND;
+ }
}
/* Extract one ACPI name from the front of the pathname */
diff --git a/sys/contrib/dev/acpica/components/namespace/nsconvert.c b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
index 091c5cc..99883c2 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsconvert.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
@@ -202,7 +202,7 @@ AcpiNsConvertToString (
* Copy the raw buffer data with no transform. String is already NULL
* terminated at Length+1.
*/
- ACPI_MEMCPY (NewObject->String.Pointer,
+ memcpy (NewObject->String.Pointer,
OriginalObject->Buffer.Pointer, Length);
break;
@@ -269,7 +269,7 @@ AcpiNsConvertToBuffer (
return (AE_NO_MEMORY);
}
- ACPI_MEMCPY (NewObject->Buffer.Pointer,
+ memcpy (NewObject->Buffer.Pointer,
OriginalObject->String.Pointer, OriginalObject->String.Length);
break;
diff --git a/sys/contrib/dev/acpica/components/namespace/nsdump.c b/sys/contrib/dev/acpica/components/namespace/nsdump.c
index 77fb279..f3f3fed 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsdump.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsdump.c
@@ -122,7 +122,7 @@ AcpiNsPrintPathname (
{
for (i = 0; i < 4; i++)
{
- ACPI_IS_PRINT (Pathname[i]) ?
+ isprint ((int) Pathname[i]) ?
AcpiOsPrintf ("%c", Pathname[i]) :
AcpiOsPrintf ("?");
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nseval.c b/sys/contrib/dev/acpica/components/namespace/nseval.c
index ac1d9a9..fb39171 100644
--- a/sys/contrib/dev/acpica/components/namespace/nseval.c
+++ b/sys/contrib/dev/acpica/components/namespace/nseval.c
@@ -63,15 +63,14 @@ AcpiNsExecModuleCode (
*
* FUNCTION: AcpiNsEvaluate
*
- * PARAMETERS: Info - Evaluation info block, contains:
+ * PARAMETERS: Info - Evaluation info block, contains these fields
+ * and more:
* PrefixNode - Prefix or Method/Object Node to execute
* RelativePath - Name of method to execute, If NULL, the
* Node is the object to execute
* Parameters - List of parameters to pass to the method,
* terminated by NULL. Params itself may be
* NULL if no parameters are being passed.
- * ReturnObject - Where to put method's return value (if
- * any). If NULL, no value is returned.
* ParameterType - Type of Parameter list
* ReturnObject - Where to put method's return value (if
* any). If NULL, no value is returned.
@@ -463,7 +462,7 @@ AcpiNsExecModuleCode (
/* Initialize the evaluation information block */
- ACPI_MEMSET (Info, 0, sizeof (ACPI_EVALUATE_INFO));
+ memset (Info, 0, sizeof (ACPI_EVALUATE_INFO));
Info->PrefixNode = ParentNode;
/*
diff --git a/sys/contrib/dev/acpica/components/namespace/nsinit.c b/sys/contrib/dev/acpica/components/namespace/nsinit.c
index 847bf72..cbfc4a6f 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsinit.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsinit.c
@@ -105,7 +105,7 @@ AcpiNsInitializeObjects (
/* Set all init info to zero */
- ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO));
+ memset (&Info, 0, sizeof (ACPI_INIT_WALK_INFO));
/* Walk entire namespace from the supplied root */
@@ -614,7 +614,7 @@ AcpiNsInitOneDevice (
ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (
ACPI_TYPE_METHOD, DeviceNode, METHOD_NAME__INI));
- ACPI_MEMSET (Info, 0, sizeof (ACPI_EVALUATE_INFO));
+ memset (Info, 0, sizeof (ACPI_EVALUATE_INFO));
Info->PrefixNode = DeviceNode;
Info->RelativePathname = METHOD_NAME__INI;
Info->Parameters = NULL;
diff --git a/sys/contrib/dev/acpica/components/namespace/nsparse.c b/sys/contrib/dev/acpica/components/namespace/nsparse.c
index 0f87fa1..7c6d29a 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsparse.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsparse.c
@@ -129,6 +129,14 @@ AcpiNsOneCompleteParse (
AmlStart, AmlLength, NULL, (UINT8) PassNumber);
}
+ /* Found OSDT table, enable the namespace override feature */
+
+ if (ACPI_COMPARE_NAME(Table->Signature, ACPI_SIG_OSDT) &&
+ PassNumber == ACPI_IMODE_LOAD_PASS1)
+ {
+ WalkState->NamespaceOverride = TRUE;
+ }
+
if (ACPI_FAILURE (Status))
{
AcpiDsDeleteWalkState (WalkState);
diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
index 410b009..24ac8b4 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
@@ -637,7 +637,7 @@ AcpiNsRepair_HID (
*/
for (Dest = NewString->String.Pointer; *Source; Dest++, Source++)
{
- *Dest = (char) ACPI_TOUPPER (*Source);
+ *Dest = (char) toupper ((int) *Source);
}
AcpiUtRemoveReference (ReturnObject);
diff --git a/sys/contrib/dev/acpica/components/namespace/nssearch.c b/sys/contrib/dev/acpica/components/namespace/nssearch.c
index 9f24f1c..a1e6d1a 100644
--- a/sys/contrib/dev/acpica/components/namespace/nssearch.c
+++ b/sys/contrib/dev/acpica/components/namespace/nssearch.c
@@ -338,10 +338,42 @@ AcpiNsSearchAndEnter (
* If we found it AND the request specifies that a find is an error,
* return the error
*/
- if ((Status == AE_OK) &&
- (Flags & ACPI_NS_ERROR_IF_FOUND))
+ if (Status == AE_OK)
{
- Status = AE_ALREADY_EXISTS;
+ /* The node was found in the namespace */
+
+ /*
+ * If the namespace override feature is enabled for this node,
+ * delete any existing attached sub-object and make the node
+ * look like a new node that is owned by the override table.
+ */
+ if (Flags & ACPI_NS_OVERRIDE_IF_FOUND)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
+ "Namespace override: %4.4s pass %u type %X Owner %X\n",
+ ACPI_CAST_PTR(char, &TargetName), InterpreterMode,
+ (*ReturnNode)->Type, WalkState->OwnerId));
+
+ AcpiNsDeleteChildren (*ReturnNode);
+ if (AcpiGbl_RuntimeNamespaceOverride)
+ {
+ AcpiUtRemoveReference ((*ReturnNode)->Object);
+ (*ReturnNode)->Object = NULL;
+ (*ReturnNode)->OwnerId = WalkState->OwnerId;
+ }
+ else
+ {
+ AcpiNsRemoveNode (*ReturnNode);
+ *ReturnNode = ACPI_ENTRY_NOT_FOUND;
+ }
+ }
+
+ /* Return an error if we don't expect to find the object */
+
+ else if (Flags & ACPI_NS_ERROR_IF_FOUND)
+ {
+ Status = AE_ALREADY_EXISTS;
+ }
}
#ifdef ACPI_ASL_COMPILER
diff --git a/sys/contrib/dev/acpica/components/namespace/nsutils.c b/sys/contrib/dev/acpica/components/namespace/nsutils.c
index d7320a6..4a59784 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsutils.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsutils.c
@@ -347,7 +347,7 @@ AcpiNsBuildInternalName (
{
/* Convert the character to uppercase and save it */
- Result[i] = (char) ACPI_TOUPPER ((int) *ExternalName);
+ Result[i] = (char) toupper ((int) *ExternalName);
ExternalName++;
}
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
index 93226ef..9b4d2db 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
@@ -758,7 +758,7 @@ AcpiNsGetDeviceCallback (
return (AE_CTRL_DEPTH);
}
- NoMatch = ACPI_STRCMP (Hid->String, Info->Hid);
+ NoMatch = strcmp (Hid->String, Info->Hid);
ACPI_FREE (Hid);
if (NoMatch)
@@ -782,7 +782,7 @@ AcpiNsGetDeviceCallback (
Found = FALSE;
for (i = 0; i < Cid->Count; i++)
{
- if (ACPI_STRCMP (Cid->Ids[i].String, Info->Hid) == 0)
+ if (strcmp (Cid->Ids[i].String, Info->Hid) == 0)
{
/* Found a matching CID */
diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfname.c b/sys/contrib/dev/acpica/components/namespace/nsxfname.c
index 804ea94..7ee3fdd 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsxfname.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsxfname.c
@@ -126,7 +126,7 @@ AcpiGetHandle (
/* Special case for root-only, since we can't search for it */
- if (!ACPI_STRCMP (Pathname, ACPI_NS_ROOT_PATH))
+ if (!strcmp (Pathname, ACPI_NS_ROOT_PATH))
{
*RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, AcpiGbl_RootNode);
return (AE_OK);
@@ -271,7 +271,7 @@ AcpiNsCopyDeviceId (
/* Copy actual string and return a pointer to the next string area */
- ACPI_MEMCPY (StringArea, Source->String, Source->Length);
+ memcpy (StringArea, Source->String, Source->Length);
return (StringArea + Source->Length);
}
@@ -290,7 +290,7 @@ AcpiNsCopyDeviceId (
* control methods (Such as in the case of a device.)
*
* For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB,
- * _STA, _ADR, _SxW, and _SxD methods.
+ * _CLS, _STA, _ADR, _SxW, and _SxD methods.
*
* Note: Allocates the return buffer, must be freed by the caller.
*
@@ -307,11 +307,12 @@ AcpiGetObjectInfo (
ACPI_PNP_DEVICE_ID *Hid = NULL;
ACPI_PNP_DEVICE_ID *Uid = NULL;
ACPI_PNP_DEVICE_ID *Sub = NULL;
+ ACPI_PNP_DEVICE_ID *Cls = NULL;
char *NextIdString;
ACPI_OBJECT_TYPE Type;
ACPI_NAME Name;
UINT8 ParamCount= 0;
- UINT8 Valid = 0;
+ UINT16 Valid = 0;
UINT32 InfoSize;
UINT32 i;
ACPI_STATUS Status;
@@ -359,7 +360,7 @@ AcpiGetObjectInfo (
{
/*
* Get extra info for ACPI Device/Processor objects only:
- * Run the Device _HID, _UID, _SUB, and _CID methods.
+ * Run the Device _HID, _UID, _SUB, _CID, and _CLS methods.
*
* Note: none of these methods are required, so they may or may
* not be present for this device. The Info->Valid bitfield is used
@@ -403,6 +404,15 @@ AcpiGetObjectInfo (
InfoSize += (CidList->ListSize - sizeof (ACPI_PNP_DEVICE_ID_LIST));
Valid |= ACPI_VALID_CID;
}
+
+ /* Execute the Device._CLS method */
+
+ Status = AcpiUtExecute_CLS (Node, &Cls);
+ if (ACPI_SUCCESS (Status))
+ {
+ InfoSize += Cls->Length;
+ Valid |= ACPI_VALID_CLS;
+ }
}
/*
@@ -534,6 +544,12 @@ AcpiGetObjectInfo (
}
}
+ if (Cls)
+ {
+ NextIdString = AcpiNsCopyDeviceId (&Info->ClassCode,
+ Cls, NextIdString);
+ }
+
/* Copy the fixed-length data */
Info->InfoSize = InfoSize;
@@ -563,6 +579,10 @@ Cleanup:
{
ACPI_FREE (CidList);
}
+ if (Cls)
+ {
+ ACPI_FREE (Cls);
+ }
return (Status);
}
@@ -684,7 +704,7 @@ AcpiInstallMethod (
/* Copy the method AML to the local buffer */
- ACPI_MEMCPY (AmlBuffer, AmlStart, AmlLength);
+ memcpy (AmlBuffer, AmlStart, AmlLength);
/* Initialize the method object with the new method's information */
diff --git a/sys/contrib/dev/acpica/components/parser/psutils.c b/sys/contrib/dev/acpica/components/parser/psutils.c
index 1a269a6..8581a94 100644
--- a/sys/contrib/dev/acpica/components/parser/psutils.c
+++ b/sys/contrib/dev/acpica/components/parser/psutils.c
@@ -104,7 +104,7 @@ AcpiPsInitOp (
Op->Common.DescriptorType = ACPI_DESC_TYPE_PARSER;
Op->Common.AmlOpcode = Opcode;
- ACPI_DISASM_ONLY_MEMBERS (ACPI_STRNCPY (Op->Common.AmlOpName,
+ ACPI_DISASM_ONLY_MEMBERS (strncpy (Op->Common.AmlOpName,
(AcpiPsGetOpcodeInfo (Opcode))->Name,
sizeof (Op->Common.AmlOpName)));
}
diff --git a/sys/contrib/dev/acpica/components/resources/rscreate.c b/sys/contrib/dev/acpica/components/resources/rscreate.c
index c646129..6225590 100644
--- a/sys/contrib/dev/acpica/components/resources/rscreate.c
+++ b/sys/contrib/dev/acpica/components/resources/rscreate.c
@@ -374,12 +374,12 @@ AcpiRsCreatePciRoutingTable (
/* +1 to include null terminator */
- UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1;
+ UserPrt->Length += (UINT32) strlen (UserPrt->Source) + 1;
break;
case ACPI_TYPE_STRING:
- ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer);
+ strcpy (UserPrt->Source, ObjDesc->String.Pointer);
/*
* Add to the Length field the length of the string
diff --git a/sys/contrib/dev/acpica/components/resources/rsmisc.c b/sys/contrib/dev/acpica/components/resources/rsmisc.c
index bc5b803..cef8000 100644
--- a/sys/contrib/dev/acpica/components/resources/rsmisc.c
+++ b/sys/contrib/dev/acpica/components/resources/rsmisc.c
@@ -130,7 +130,7 @@ AcpiRsConvertAmlToResource (
/*
* Get the resource type and the initial (minimum) length
*/
- ACPI_MEMSET (Resource, 0, INIT_RESOURCE_LENGTH (Info));
+ memset (Resource, 0, INIT_RESOURCE_LENGTH (Info));
Resource->Type = INIT_RESOURCE_TYPE (Info);
Resource->Length = INIT_RESOURCE_LENGTH (Info);
break;
@@ -326,13 +326,13 @@ AcpiRsConvertAmlToResource (
case ACPI_RSC_SET8:
- ACPI_MEMSET (Destination, Info->AmlOffset, Info->Value);
+ memset (Destination, Info->AmlOffset, Info->Value);
break;
case ACPI_RSC_DATA8:
Target = ACPI_ADD_PTR (char, Resource, Info->Value);
- ACPI_MEMCPY (Destination, Source, ACPI_GET16 (Target));
+ memcpy (Destination, Source, ACPI_GET16 (Target));
break;
case ACPI_RSC_ADDRESS:
@@ -505,7 +505,7 @@ AcpiRsConvertResourceToAml (
{
case ACPI_RSC_INITSET:
- ACPI_MEMSET (Aml, 0, INIT_RESOURCE_LENGTH (Info));
+ memset (Aml, 0, INIT_RESOURCE_LENGTH (Info));
AmlLength = INIT_RESOURCE_LENGTH (Info);
AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml);
break;
diff --git a/sys/contrib/dev/acpica/components/resources/rsutils.c b/sys/contrib/dev/acpica/components/resources/rsutils.c
index c0e7b78..1bab925 100644
--- a/sys/contrib/dev/acpica/components/resources/rsutils.c
+++ b/sys/contrib/dev/acpica/components/resources/rsutils.c
@@ -174,7 +174,7 @@ AcpiRsMoveData (
case ACPI_RSC_MOVE_SERIAL_VEN:
case ACPI_RSC_MOVE_SERIAL_RES:
- ACPI_MEMCPY (Destination, Source, ItemCount);
+ memcpy (Destination, Source, ItemCount);
return;
/*
@@ -408,11 +408,11 @@ AcpiRsGetResourceSource (
*
* Zero the entire area of the buffer.
*/
- TotalLength = (UINT32) ACPI_STRLEN (
+ TotalLength = (UINT32) strlen (
ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1;
TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength);
- ACPI_MEMSET (ResourceSource->StringPtr, 0, TotalLength);
+ memset (ResourceSource->StringPtr, 0, TotalLength);
/* Copy the ResourceSource string to the destination */
@@ -477,7 +477,7 @@ AcpiRsSetResourceSource (
/* Copy the ResourceSource string */
- ACPI_STRCPY (ACPI_CAST_PTR (char, &AmlResourceSource[1]),
+ strcpy (ACPI_CAST_PTR (char, &AmlResourceSource[1]),
ResourceSource->StringPtr);
/*
diff --git a/sys/contrib/dev/acpica/components/resources/rsxface.c b/sys/contrib/dev/acpica/components/resources/rsxface.c
index a477f20..66c26e1 100644
--- a/sys/contrib/dev/acpica/components/resources/rsxface.c
+++ b/sys/contrib/dev/acpica/components/resources/rsxface.c
@@ -447,7 +447,7 @@ AcpiResourceToAddress64 (
/* Simple copy for 64 bit source */
- ACPI_MEMCPY (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64));
+ memcpy (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64));
break;
default:
@@ -558,7 +558,7 @@ AcpiRsMatchVendorResource (
*/
if ((Vendor->ByteLength < (ACPI_UUID_LENGTH + 1)) ||
(Vendor->UuidSubtype != Info->Uuid->Subtype) ||
- (ACPI_MEMCMP (Vendor->Uuid, Info->Uuid->Data, ACPI_UUID_LENGTH)))
+ (memcmp (Vendor->Uuid, Info->Uuid->Data, ACPI_UUID_LENGTH)))
{
return (AE_OK);
}
@@ -574,7 +574,7 @@ AcpiRsMatchVendorResource (
/* Found the correct resource, copy and return it */
- ACPI_MEMCPY (Buffer->Pointer, Resource, Resource->Length);
+ memcpy (Buffer->Pointer, Resource, Resource->Length);
Buffer->Length = Resource->Length;
/* Found the desired descriptor, terminate resource walk */
diff --git a/sys/contrib/dev/acpica/components/tables/tbdata.c b/sys/contrib/dev/acpica/components/tables/tbdata.c
index 70bac2c..b44dec0 100644
--- a/sys/contrib/dev/acpica/components/tables/tbdata.c
+++ b/sys/contrib/dev/acpica/components/tables/tbdata.c
@@ -77,7 +77,7 @@ AcpiTbInitTableDescriptor (
* Initialize the table descriptor. Set the pointer to NULL, since the
* table is not fully mapped at this time.
*/
- ACPI_MEMSET (TableDesc, 0, sizeof (ACPI_TABLE_DESC));
+ memset (TableDesc, 0, sizeof (ACPI_TABLE_DESC));
TableDesc->Address = Address;
TableDesc->Length = Table->Length;
TableDesc->Flags = Flags;
@@ -511,7 +511,7 @@ AcpiTbResizeRootTableList (
if (AcpiGbl_RootTableList.Tables)
{
- ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables,
+ memcpy (Tables, AcpiGbl_RootTableList.Tables,
(ACPI_SIZE) TableCount * sizeof (ACPI_TABLE_DESC));
if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)
diff --git a/sys/contrib/dev/acpica/components/tables/tbfadt.c b/sys/contrib/dev/acpica/components/tables/tbfadt.c
index f35e217..0917157 100644
--- a/sys/contrib/dev/acpica/components/tables/tbfadt.c
+++ b/sys/contrib/dev/acpica/components/tables/tbfadt.c
@@ -382,8 +382,16 @@ AcpiTbParseFadt (
if (!AcpiGbl_ReducedHardware)
{
- AcpiTbInstallFixedTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
- ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);
+ if (AcpiGbl_FADT.Facs)
+ {
+ AcpiTbInstallFixedTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs,
+ ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);
+ }
+ if (AcpiGbl_FADT.XFacs)
+ {
+ AcpiTbInstallFixedTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
+ ACPI_SIG_FACS, ACPI_TABLE_INDEX_X_FACS);
+ }
}
}
@@ -425,11 +433,11 @@ AcpiTbCreateLocalFadt (
/* Clear the entire local FADT */
- ACPI_MEMSET (&AcpiGbl_FADT, 0, sizeof (ACPI_TABLE_FADT));
+ memset (&AcpiGbl_FADT, 0, sizeof (ACPI_TABLE_FADT));
/* Copy the original FADT, up to sizeof (ACPI_TABLE_FADT) */
- ACPI_MEMCPY (&AcpiGbl_FADT, Table,
+ memcpy (&AcpiGbl_FADT, Table,
ACPI_MIN (Length, sizeof (ACPI_TABLE_FADT)));
/* Take a copy of the Hardware Reduced flag */
@@ -533,12 +541,9 @@ AcpiTbConvertFadt (
AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT);
/*
- * Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
+ * Expand the 32-bit DSDT addresses to 64-bit as necessary.
* Later ACPICA code will always use the X 64-bit field.
*/
- AcpiGbl_FADT.XFacs = AcpiTbSelectAddress ("FACS",
- AcpiGbl_FADT.Facs, AcpiGbl_FADT.XFacs);
-
AcpiGbl_FADT.XDsdt = AcpiTbSelectAddress ("DSDT",
AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt);
diff --git a/sys/contrib/dev/acpica/components/tables/tbfind.c b/sys/contrib/dev/acpica/components/tables/tbfind.c
index 30a5750..e5c4cee 100644
--- a/sys/contrib/dev/acpica/components/tables/tbfind.c
+++ b/sys/contrib/dev/acpica/components/tables/tbfind.c
@@ -83,16 +83,16 @@ AcpiTbFindTable (
/* Normalize the input strings */
- ACPI_MEMSET (&Header, 0, sizeof (ACPI_TABLE_HEADER));
+ memset (&Header, 0, sizeof (ACPI_TABLE_HEADER));
ACPI_MOVE_NAME (Header.Signature, Signature);
- ACPI_STRNCPY (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
- ACPI_STRNCPY (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
+ strncpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
+ strncpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
/* Search for the table */
for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
{
- if (ACPI_MEMCMP (&(AcpiGbl_RootTableList.Tables[i].Signature),
+ if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature),
Header.Signature, ACPI_NAME_SIZE))
{
/* Not the requested table */
@@ -120,13 +120,13 @@ AcpiTbFindTable (
/* Check for table match on all IDs */
- if (!ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->Signature,
+ if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature,
Header.Signature, ACPI_NAME_SIZE) &&
(!OemId[0] ||
- !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemId,
+ !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId,
Header.OemId, ACPI_OEM_ID_SIZE)) &&
(!OemTableId[0] ||
- !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId,
+ !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId,
Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE)))
{
*TableIndex = i;
diff --git a/sys/contrib/dev/acpica/components/tables/tbinstal.c b/sys/contrib/dev/acpica/components/tables/tbinstal.c
index d77d2c8..a6680cf 100644
--- a/sys/contrib/dev/acpica/components/tables/tbinstal.c
+++ b/sys/contrib/dev/acpica/components/tables/tbinstal.c
@@ -94,7 +94,7 @@ AcpiTbCompareTables (
* not just the header.
*/
IsIdentical = (BOOLEAN)((TableDesc->Length != TableLength ||
- ACPI_MEMCMP (TableDesc->Pointer, Table, TableLength)) ?
+ memcmp (TableDesc->Pointer, Table, TableLength)) ?
FALSE : TRUE);
/* Release the acquired table */
@@ -309,7 +309,7 @@ AcpiTbInstallStandardTable (
*/
if ((NewTableDesc.Signature.Ascii[0] != 0x00) &&
(!ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) &&
- (ACPI_STRNCMP (NewTableDesc.Signature.Ascii, "OEM", 3)))
+ (strncmp (NewTableDesc.Signature.Ascii, "OEM", 3)))
{
ACPI_BIOS_ERROR ((AE_INFO,
"Table has invalid signature [%4.4s] (0x%8.8X), "
diff --git a/sys/contrib/dev/acpica/components/tables/tbprint.c b/sys/contrib/dev/acpica/components/tables/tbprint.c
index f0ea090..f56d002 100644
--- a/sys/contrib/dev/acpica/components/tables/tbprint.c
+++ b/sys/contrib/dev/acpica/components/tables/tbprint.c
@@ -84,7 +84,7 @@ AcpiTbFixString (
while (Length && *String)
{
- if (!ACPI_IS_PRINT (*String))
+ if (!isprint ((int) *String))
{
*String = '?';
}
@@ -114,7 +114,7 @@ AcpiTbCleanupTableHeader (
ACPI_TABLE_HEADER *Header)
{
- ACPI_MEMCPY (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
+ memcpy (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE);
AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE);
@@ -156,7 +156,7 @@ AcpiTbPrintTableHeader (
{
/* RSDP has no common fields */
- ACPI_MEMCPY (LocalHeader.OemId,
+ memcpy (LocalHeader.OemId,
ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE);
AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE);
diff --git a/sys/contrib/dev/acpica/components/tables/tbutils.c b/sys/contrib/dev/acpica/components/tables/tbutils.c
index 8b80025..94ac4f9 100644
--- a/sys/contrib/dev/acpica/components/tables/tbutils.c
+++ b/sys/contrib/dev/acpica/components/tables/tbutils.c
@@ -75,8 +75,6 @@ ACPI_STATUS
AcpiTbInitializeFacs (
void)
{
- ACPI_STATUS Status;
-
/* If Hardware Reduced flag is set, there is no FACS */
@@ -86,9 +84,23 @@ AcpiTbInitializeFacs (
return (AE_OK);
}
- Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS,
- ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &AcpiGbl_FACS));
- return (Status);
+ (void) AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS,
+ ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &AcpiGbl_Facs32));
+ (void) AcpiGetTableByIndex (ACPI_TABLE_INDEX_X_FACS,
+ ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &AcpiGbl_Facs64));
+
+ if (AcpiGbl_Facs64 && (!AcpiGbl_Facs32 || !AcpiGbl_Use32BitFacsAddresses))
+ {
+ AcpiGbl_FACS = AcpiGbl_Facs64;
+ }
+ else if (AcpiGbl_Facs32)
+ {
+ AcpiGbl_FACS = AcpiGbl_Facs32;
+ }
+
+ /* If there is no FACS, just continue. There was already an error msg */
+
+ return (AE_OK);
}
#endif /* !ACPI_REDUCED_HARDWARE */
@@ -111,7 +123,7 @@ AcpiTbTablesLoaded (
void)
{
- if (AcpiGbl_RootTableList.CurrentTableCount >= 3)
+ if (AcpiGbl_RootTableList.CurrentTableCount >= 4)
{
return (TRUE);
}
@@ -190,7 +202,7 @@ AcpiTbCopyDsdt (
return (NULL);
}
- ACPI_MEMCPY (NewTable, TableDesc->Pointer, TableDesc->Length);
+ memcpy (NewTable, TableDesc->Pointer, TableDesc->Length);
AcpiTbUninstallTable (TableDesc);
AcpiTbInitTableDescriptor (
@@ -389,11 +401,11 @@ AcpiTbParseRootTable (
TableEntry = ACPI_ADD_PTR (UINT8, Table, sizeof (ACPI_TABLE_HEADER));
/*
- * First two entries in the table array are reserved for the DSDT
- * and FACS, which are not actually present in the RSDT/XSDT - they
- * come from the FADT
+ * First three entries in the table array are reserved for the DSDT
+ * and 32bit/64bit FACS, which are not actually present in the
+ * RSDT/XSDT - they come from the FADT
*/
- AcpiGbl_RootTableList.CurrentTableCount = 2;
+ AcpiGbl_RootTableList.CurrentTableCount = 3;
/* Initialize the root table array from the RSDT/XSDT */
diff --git a/sys/contrib/dev/acpica/components/tables/tbxface.c b/sys/contrib/dev/acpica/components/tables/tbxface.c
index 7336b18..67f6fea 100644
--- a/sys/contrib/dev/acpica/components/tables/tbxface.c
+++ b/sys/contrib/dev/acpica/components/tables/tbxface.c
@@ -132,7 +132,7 @@ AcpiInitializeTables (
{
/* Root Table Array has been statically allocated by the host */
- ACPI_MEMSET (InitialTableArray, 0,
+ memset (InitialTableArray, 0,
(ACPI_SIZE) InitialTableCount * sizeof (ACPI_TABLE_DESC));
AcpiGbl_RootTableList.Tables = InitialTableArray;
@@ -271,7 +271,7 @@ AcpiGetTableHeader (
return (AE_NO_MEMORY);
}
- ACPI_MEMCPY (OutTableHeader, Header,
+ memcpy (OutTableHeader, Header,
sizeof (ACPI_TABLE_HEADER));
AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER));
}
@@ -282,7 +282,7 @@ AcpiGetTableHeader (
}
else
{
- ACPI_MEMCPY (OutTableHeader,
+ memcpy (OutTableHeader,
AcpiGbl_RootTableList.Tables[i].Pointer,
sizeof (ACPI_TABLE_HEADER));
}
diff --git a/sys/contrib/dev/acpica/components/tables/tbxfload.c b/sys/contrib/dev/acpica/components/tables/tbxfload.c
index 805bbad..014d68b 100644
--- a/sys/contrib/dev/acpica/components/tables/tbxfload.c
+++ b/sys/contrib/dev/acpica/components/tables/tbxfload.c
@@ -164,7 +164,7 @@ AcpiTbLoadNamespace (
* Save the original DSDT header for detection of table corruption
* and/or replacement of the DSDT from outside the OS.
*/
- ACPI_MEMCPY (&AcpiGbl_OriginalDsdtHeader, AcpiGbl_DSDT,
+ memcpy (&AcpiGbl_OriginalDsdtHeader, AcpiGbl_DSDT,
sizeof (ACPI_TABLE_HEADER));
(void) AcpiUtReleaseMutex (ACPI_MTX_TABLES);
@@ -182,10 +182,13 @@ AcpiTbLoadNamespace (
(void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);
for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
{
- if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
+ if (!AcpiGbl_RootTableList.Tables[i].Address ||
+ (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
ACPI_SIG_SSDT) &&
!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
- ACPI_SIG_PSDT)) ||
+ ACPI_SIG_PSDT) &&
+ !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
+ ACPI_SIG_OSDT)) ||
ACPI_FAILURE (AcpiTbValidateTable (
&AcpiGbl_RootTableList.Tables[i])))
{
@@ -238,11 +241,11 @@ AcpiInstallTable (
if (Physical)
{
- Flags = ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL;
+ Flags = ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL;
}
else
{
- Flags = ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL;
+ Flags = ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL;
}
Status = AcpiTbInstallStandardTable (Address, Flags,
diff --git a/sys/contrib/dev/acpica/components/utilities/utalloc.c b/sys/contrib/dev/acpica/components/utilities/utalloc.c
index 99fb15a1..c26259d 100644
--- a/sys/contrib/dev/acpica/components/utilities/utalloc.c
+++ b/sys/contrib/dev/acpica/components/utilities/utalloc.c
@@ -79,7 +79,7 @@ AcpiOsAllocateZeroed (
{
/* Clear the memory block */
- ACPI_MEMSET (Allocation, 0, Size);
+ memset (Allocation, 0, Size);
}
return (Allocation);
@@ -189,7 +189,7 @@ AcpiUtDeleteCaches (
if (AcpiGbl_DisplayFinalMemStats)
{
- ACPI_STRCPY (Buffer, "MEMORY");
+ strcpy (Buffer, "MEMORY");
(void) AcpiDbDisplayStatistics (Buffer);
}
#endif
@@ -359,6 +359,6 @@ AcpiUtInitializeBuffer (
/* Have a valid buffer, clear it */
- ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength);
+ memset (Buffer->Pointer, 0, RequiredLength);
return (AE_OK);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utbuffer.c b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
index cc41419..08a42cd 100644
--- a/sys/contrib/dev/acpica/components/utilities/utbuffer.c
+++ b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
@@ -168,7 +168,7 @@ AcpiUtDumpBuffer (
}
BufChar = Buffer[(ACPI_SIZE) i + j];
- if (ACPI_IS_PRINT (BufChar))
+ if (isprint (BufChar))
{
AcpiOsPrintf ("%c", BufChar);
}
@@ -341,7 +341,7 @@ AcpiUtDumpBufferToFile (
}
BufChar = Buffer[(ACPI_SIZE) i + j];
- if (ACPI_IS_PRINT (BufChar))
+ if (isprint (BufChar))
{
AcpiUtFilePrintf (File, "%c", BufChar);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utcache.c b/sys/contrib/dev/acpica/components/utilities/utcache.c
index aa0161c..c252d8a 100644
--- a/sys/contrib/dev/acpica/components/utilities/utcache.c
+++ b/sys/contrib/dev/acpica/components/utilities/utcache.c
@@ -92,7 +92,7 @@ AcpiOsCreateCache (
/* Populate the cache object and return it */
- ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST));
+ memset (Cache, 0, sizeof (ACPI_MEMORY_LIST));
Cache->ListName = CacheName;
Cache->ObjectSize = ObjectSize;
Cache->MaxDepth = MaxDepth;
@@ -242,7 +242,7 @@ AcpiOsReleaseObject (
/* Mark the object as cached */
- ACPI_MEMSET (Object, 0xCA, Cache->ObjectSize);
+ memset (Object, 0xCA, Cache->ObjectSize);
ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_CACHED);
/* Put the object at the head of the cache list */
@@ -318,7 +318,7 @@ AcpiOsAcquireObject (
/* Clear (zero) the previously used Object */
- ACPI_MEMSET (Object, 0, Cache->ObjectSize);
+ memset (Object, 0, Cache->ObjectSize);
}
else
{
diff --git a/sys/contrib/dev/acpica/components/utilities/utcopy.c b/sys/contrib/dev/acpica/components/utilities/utcopy.c
index 8a94ea6..2032dd4 100644
--- a/sys/contrib/dev/acpica/components/utilities/utcopy.c
+++ b/sys/contrib/dev/acpica/components/utilities/utcopy.c
@@ -146,7 +146,7 @@ AcpiUtCopyIsimpleToEsimple (
/* Always clear the external object */
- ACPI_MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT));
+ memset (ExternalObject, 0, sizeof (ACPI_OBJECT));
/*
* In general, the external object will be the same type as
@@ -165,7 +165,7 @@ AcpiUtCopyIsimpleToEsimple (
*BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (
(ACPI_SIZE) InternalObject->String.Length + 1);
- ACPI_MEMCPY ((void *) DataSpace,
+ memcpy ((void *) DataSpace,
(void *) InternalObject->String.Pointer,
(ACPI_SIZE) InternalObject->String.Length + 1);
break;
@@ -177,7 +177,7 @@ AcpiUtCopyIsimpleToEsimple (
*BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD (
InternalObject->String.Length);
- ACPI_MEMCPY ((void *) DataSpace,
+ memcpy ((void *) DataSpace,
(void *) InternalObject->Buffer.Pointer,
InternalObject->Buffer.Length);
break;
@@ -528,7 +528,7 @@ AcpiUtCopyEsimpleToIsimple (
goto ErrorExit;
}
- ACPI_MEMCPY (InternalObject->String.Pointer,
+ memcpy (InternalObject->String.Pointer,
ExternalObject->String.Pointer,
ExternalObject->String.Length);
@@ -544,7 +544,7 @@ AcpiUtCopyEsimpleToIsimple (
goto ErrorExit;
}
- ACPI_MEMCPY (InternalObject->Buffer.Pointer,
+ memcpy (InternalObject->Buffer.Pointer,
ExternalObject->Buffer.Pointer,
ExternalObject->Buffer.Length);
@@ -732,7 +732,7 @@ AcpiUtCopySimpleObject (
CopySize = sizeof (ACPI_NAMESPACE_NODE);
}
- ACPI_MEMCPY (ACPI_CAST_PTR (char, DestDesc),
+ memcpy (ACPI_CAST_PTR (char, DestDesc),
ACPI_CAST_PTR (char, SourceDesc), CopySize);
/* Restore the saved fields */
@@ -766,7 +766,7 @@ AcpiUtCopySimpleObject (
/* Copy the actual buffer data */
- ACPI_MEMCPY (DestDesc->Buffer.Pointer,
+ memcpy (DestDesc->Buffer.Pointer,
SourceDesc->Buffer.Pointer, SourceDesc->Buffer.Length);
}
break;
@@ -788,7 +788,7 @@ AcpiUtCopySimpleObject (
/* Copy the actual string data */
- ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer,
+ memcpy (DestDesc->String.Pointer, SourceDesc->String.Pointer,
(ACPI_SIZE) SourceDesc->String.Length + 1);
}
break;
diff --git a/sys/contrib/dev/acpica/components/utilities/utids.c b/sys/contrib/dev/acpica/components/utilities/utids.c
index 7d31429..6378e26 100644
--- a/sys/contrib/dev/acpica/components/utilities/utids.c
+++ b/sys/contrib/dev/acpica/components/utilities/utids.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Module Name: utids - support for device IDs - HID, UID, CID
+ * Module Name: utids - support for device IDs - HID, UID, CID, SUB, CLS
*
*****************************************************************************/
@@ -121,7 +121,7 @@ AcpiUtExecute_HID (
}
else
{
- ACPI_STRCPY (Hid->String, ObjDesc->String.Pointer);
+ strcpy (Hid->String, ObjDesc->String.Pointer);
}
Hid->Length = Length;
@@ -194,7 +194,7 @@ AcpiUtExecute_SUB (
/* Simply copy existing string */
- ACPI_STRCPY (Sub->String, ObjDesc->String.Pointer);
+ strcpy (Sub->String, ObjDesc->String.Pointer);
Sub->Length = Length;
*ReturnId = Sub;
@@ -279,7 +279,7 @@ AcpiUtExecute_UID (
}
else
{
- ACPI_STRCPY (Uid->String, ObjDesc->String.Pointer);
+ strcpy (Uid->String, ObjDesc->String.Pointer);
}
Uid->Length = Length;
@@ -426,7 +426,7 @@ AcpiUtExecute_CID (
{
/* Copy the String CID from the returned object */
- ACPI_STRCPY (NextIdString, CidObjects[i]->String.Pointer);
+ strcpy (NextIdString, CidObjects[i]->String.Pointer);
Length = CidObjects[i]->String.Length + 1;
}
@@ -449,3 +449,97 @@ Cleanup:
AcpiUtRemoveReference (ObjDesc);
return_ACPI_STATUS (Status);
}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtExecute_CLS
+ *
+ * PARAMETERS: DeviceNode - Node for the device
+ * ReturnId - Where the _CLS is returned
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Executes the _CLS control method that returns PCI-defined
+ * class code of the device. The _CLS value is always a package
+ * containing PCI class information as a list of integers.
+ * The returned string has format "BBSSPP", where:
+ * BB = Base-class code
+ * SS = Sub-class code
+ * PP = Programming Interface code
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtExecute_CLS (
+ ACPI_NAMESPACE_NODE *DeviceNode,
+ ACPI_PNP_DEVICE_ID **ReturnId)
+{
+ ACPI_OPERAND_OBJECT *ObjDesc;
+ ACPI_OPERAND_OBJECT **ClsObjects;
+ UINT32 Count;
+ ACPI_PNP_DEVICE_ID *Cls;
+ UINT32 Length;
+ ACPI_STATUS Status;
+ UINT8 ClassCode[3] = {0, 0, 0};
+
+
+ ACPI_FUNCTION_TRACE (UtExecute_CLS);
+
+
+ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CLS,
+ ACPI_BTYPE_PACKAGE, &ObjDesc);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
+ /* Get the size of the String to be returned, includes null terminator */
+
+ Length = ACPI_PCICLS_STRING_SIZE;
+ ClsObjects = ObjDesc->Package.Elements;
+ Count = ObjDesc->Package.Count;
+
+ if (ObjDesc->Common.Type == ACPI_TYPE_PACKAGE)
+ {
+ if (Count > 0 && ClsObjects[0]->Common.Type == ACPI_TYPE_INTEGER)
+ {
+ ClassCode[0] = (UINT8) ClsObjects[0]->Integer.Value;
+ }
+ if (Count > 1 && ClsObjects[1]->Common.Type == ACPI_TYPE_INTEGER)
+ {
+ ClassCode[1] = (UINT8) ClsObjects[1]->Integer.Value;
+ }
+ if (Count > 2 && ClsObjects[2]->Common.Type == ACPI_TYPE_INTEGER)
+ {
+ ClassCode[2] = (UINT8) ClsObjects[2]->Integer.Value;
+ }
+ }
+
+ /* Allocate a buffer for the CLS */
+
+ Cls = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length);
+ if (!Cls)
+ {
+ Status = AE_NO_MEMORY;
+ goto Cleanup;
+ }
+
+ /* Area for the string starts after PNP_DEVICE_ID struct */
+
+ Cls->String = ACPI_ADD_PTR (char, Cls, sizeof (ACPI_PNP_DEVICE_ID));
+
+ /* Simply copy existing string */
+
+ AcpiExPciClsToString (Cls->String, ClassCode);
+ Cls->Length = Length;
+ *ReturnId = Cls;
+
+
+Cleanup:
+
+ /* On exit, we must delete the return object */
+
+ AcpiUtRemoveReference (ObjDesc);
+ return_ACPI_STATUS (Status);
+}
diff --git a/sys/contrib/dev/acpica/components/utilities/utmisc.c b/sys/contrib/dev/acpica/components/utilities/utmisc.c
index f3d2222..1aa02b8 100644
--- a/sys/contrib/dev/acpica/components/utilities/utmisc.c
+++ b/sys/contrib/dev/acpica/components/utilities/utmisc.c
@@ -71,10 +71,10 @@ AcpiUtIsPciRootBridge (
* Check if this is a PCI root bridge.
* ACPI 3.0+: check for a PCI Express root also.
*/
- if (!(ACPI_STRCMP (Id,
+ if (!(strcmp (Id,
PCI_ROOT_HID_STRING)) ||
- !(ACPI_STRCMP (Id,
+ !(strcmp (Id,
PCI_EXPRESS_ROOT_HID_STRING)))
{
return (TRUE);
@@ -108,7 +108,8 @@ AcpiUtIsAmlTable (
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
- ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT))
+ ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
+ ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT))
{
return (TRUE);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utosi.c b/sys/contrib/dev/acpica/components/utilities/utosi.c
index bf6ba86..d0dd1dc 100644
--- a/sys/contrib/dev/acpica/components/utilities/utosi.c
+++ b/sys/contrib/dev/acpica/components/utilities/utosi.c
@@ -256,7 +256,7 @@ AcpiUtInstallInterface (
return (AE_NO_MEMORY);
}
- InterfaceInfo->Name = ACPI_ALLOCATE_ZEROED (ACPI_STRLEN (InterfaceName) + 1);
+ InterfaceInfo->Name = ACPI_ALLOCATE_ZEROED (strlen (InterfaceName) + 1);
if (!InterfaceInfo->Name)
{
ACPI_FREE (InterfaceInfo);
@@ -265,7 +265,7 @@ AcpiUtInstallInterface (
/* Initialize new info and insert at the head of the global list */
- ACPI_STRCPY (InterfaceInfo->Name, InterfaceName);
+ strcpy (InterfaceInfo->Name, InterfaceName);
InterfaceInfo->Flags = ACPI_OSI_DYNAMIC;
InterfaceInfo->Next = AcpiGbl_SupportedInterfaces;
@@ -298,7 +298,7 @@ AcpiUtRemoveInterface (
PreviousInterface = NextInterface = AcpiGbl_SupportedInterfaces;
while (NextInterface)
{
- if (!ACPI_STRCMP (InterfaceName, NextInterface->Name))
+ if (!strcmp (InterfaceName, NextInterface->Name))
{
/* Found: name is in either the static list or was added at runtime */
@@ -419,7 +419,7 @@ AcpiUtGetInterface (
NextInterface = AcpiGbl_SupportedInterfaces;
while (NextInterface)
{
- if (!ACPI_STRCMP (InterfaceName, NextInterface->Name))
+ if (!strcmp (InterfaceName, NextInterface->Name))
{
return (NextInterface);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utpredef.c b/sys/contrib/dev/acpica/components/utilities/utpredef.c
index a445f85..fed8154 100644
--- a/sys/contrib/dev/acpica/components/utilities/utpredef.c
+++ b/sys/contrib/dev/acpica/components/utilities/utpredef.c
@@ -166,7 +166,7 @@ AcpiUtGetExpectedReturnTypes (
if (!ExpectedBtypes)
{
- ACPI_STRCPY (Buffer, "NONE");
+ strcpy (Buffer, "NONE");
return;
}
@@ -180,7 +180,7 @@ AcpiUtGetExpectedReturnTypes (
if (ExpectedBtypes & ThisRtype)
{
- ACPI_STRCAT (Buffer, &UtRtypeNames[i][j]);
+ strcat (Buffer, &UtRtypeNames[i][j]);
j = 0; /* Use name separator from now on */
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utprint.c b/sys/contrib/dev/acpica/components/utilities/utprint.c
index 62aecf0..dee3a71 100644
--- a/sys/contrib/dev/acpica/components/utilities/utprint.c
+++ b/sys/contrib/dev/acpica/components/utilities/utprint.c
@@ -227,7 +227,7 @@ AcpiUtScanNumber (
UINT64 Number = 0;
- while (ACPI_IS_DIGIT (*String))
+ while (isdigit ((int) *String))
{
Number *= 10;
Number += *(String++) - '0';
@@ -505,7 +505,7 @@ AcpiUtVsnprintf (
/* Process width */
Width = -1;
- if (ACPI_IS_DIGIT (*Format))
+ if (isdigit ((int) *Format))
{
Format = AcpiUtScanNumber (Format, &Number);
Width = (INT32) Number;
@@ -527,7 +527,7 @@ AcpiUtVsnprintf (
if (*Format == '.')
{
++Format;
- if (ACPI_IS_DIGIT(*Format))
+ if (isdigit ((int) *Format))
{
Format = AcpiUtScanNumber (Format, &Number);
Precision = (INT32) Number;
diff --git a/sys/contrib/dev/acpica/components/utilities/utstring.c b/sys/contrib/dev/acpica/components/utilities/utstring.c
index 4cbf435..6d38a5b 100644
--- a/sys/contrib/dev/acpica/components/utilities/utstring.c
+++ b/sys/contrib/dev/acpica/components/utilities/utstring.c
@@ -89,7 +89,7 @@ AcpiUtStrlwr (
for (String = SrcString; *String; String++)
{
- *String = (char) ACPI_TOLOWER (*String);
+ *String = (char) tolower ((int) *String);
}
return;
@@ -168,7 +168,7 @@ AcpiUtStrupr (
for (String = SrcString; *String; String++)
{
- *String = (char) ACPI_TOUPPER (*String);
+ *String = (char) toupper ((int) *String);
}
return;
@@ -234,7 +234,7 @@ AcpiUtStrtoul64 (
/* Skip over any white space in the buffer */
- while ((*String) && (ACPI_IS_SPACE (*String) || *String == '\t'))
+ while ((*String) && (isspace ((int) *String) || *String == '\t'))
{
String++;
}
@@ -245,7 +245,7 @@ AcpiUtStrtoul64 (
* Base equal to ACPI_ANY_BASE means 'ToInteger operation case'.
* We need to determine if it is decimal or hexadecimal.
*/
- if ((*String == '0') && (ACPI_TOLOWER (*(String + 1)) == 'x'))
+ if ((*String == '0') && (tolower ((int) *(String + 1)) == 'x'))
{
SignOf0x = 1;
Base = 16;
@@ -261,7 +261,7 @@ AcpiUtStrtoul64 (
/* Any string left? Check that '0x' is not followed by white space. */
- if (!(*String) || ACPI_IS_SPACE (*String) || *String == '\t')
+ if (!(*String) || isspace ((int) *String) || *String == '\t')
{
if (ToIntegerOp)
{
@@ -283,7 +283,7 @@ AcpiUtStrtoul64 (
while (*String)
{
- if (ACPI_IS_DIGIT (*String))
+ if (isdigit ((int) *String))
{
/* Convert ASCII 0-9 to Decimal value */
@@ -297,8 +297,8 @@ AcpiUtStrtoul64 (
}
else
{
- ThisDigit = (UINT8) ACPI_TOUPPER (*String);
- if (ACPI_IS_XDIGIT ((char) ThisDigit))
+ ThisDigit = (UINT8) toupper ((int) *String);
+ if (isxdigit ((int) ThisDigit))
{
/* Convert ASCII Hex char to value */
@@ -469,7 +469,7 @@ AcpiUtPrintString (
/* Check for printable character or hex escape */
- if (ACPI_IS_PRINT (String[i]))
+ if (isprint ((int) String[i]))
{
/* This is a normal character */
@@ -711,12 +711,12 @@ AcpiUtSafeStrcpy (
char *Source)
{
- if (ACPI_STRLEN (Source) >= DestSize)
+ if (strlen (Source) >= DestSize)
{
return (TRUE);
}
- ACPI_STRCPY (Dest, Source);
+ strcpy (Dest, Source);
return (FALSE);
}
@@ -727,12 +727,12 @@ AcpiUtSafeStrcat (
char *Source)
{
- if ((ACPI_STRLEN (Dest) + ACPI_STRLEN (Source)) >= DestSize)
+ if ((strlen (Dest) + strlen (Source)) >= DestSize)
{
return (TRUE);
}
- ACPI_STRCAT (Dest, Source);
+ strcat (Dest, Source);
return (FALSE);
}
@@ -747,14 +747,14 @@ AcpiUtSafeStrncat (
ACPI_SIZE ActualTransferLength;
- ActualTransferLength = ACPI_MIN (MaxTransferLength, ACPI_STRLEN (Source));
+ ActualTransferLength = ACPI_MIN (MaxTransferLength, strlen (Source));
- if ((ACPI_STRLEN (Dest) + ActualTransferLength) >= DestSize)
+ if ((strlen (Dest) + ActualTransferLength) >= DestSize)
{
return (TRUE);
}
- ACPI_STRNCAT (Dest, Source, MaxTransferLength);
+ strncat (Dest, Source, MaxTransferLength);
return (FALSE);
}
#endif
diff --git a/sys/contrib/dev/acpica/components/utilities/uttrack.c b/sys/contrib/dev/acpica/components/utilities/uttrack.c
index 5f208b5..d780397 100644
--- a/sys/contrib/dev/acpica/components/utilities/uttrack.c
+++ b/sys/contrib/dev/acpica/components/utilities/uttrack.c
@@ -113,7 +113,7 @@ AcpiUtCreateList (
return (AE_NO_MEMORY);
}
- ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST));
+ memset (Cache, 0, sizeof (ACPI_MEMORY_LIST));
Cache->ListName = ListName;
Cache->ObjectSize = ObjectSize;
@@ -445,7 +445,7 @@ AcpiUtTrackAllocation (
Allocation->Component = Component;
Allocation->Line = Line;
- ACPI_STRNCPY (Allocation->Module, Module, ACPI_MAX_MODULE_NAME);
+ strncpy (Allocation->Module, Module, ACPI_MAX_MODULE_NAME);
Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0;
if (!Element)
@@ -556,7 +556,7 @@ AcpiUtRemoveAllocation (
/* Mark the segment as deleted */
- ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size);
+ memset (&Allocation->UserSpace, 0xEA, Allocation->Size);
Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY);
return (Status);
@@ -667,7 +667,7 @@ AcpiUtDumpAllocations (
while (Element)
{
if ((Element->Component & Component) &&
- ((Module == NULL) || (0 == ACPI_STRCMP (Module, Element->Module))))
+ ((Module == NULL) || (0 == strcmp (Module, Element->Module))))
{
Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace);
diff --git a/sys/contrib/dev/acpica/components/utilities/utxface.c b/sys/contrib/dev/acpica/components/utilities/utxface.c
index aab7473..eb311ec 100644
--- a/sys/contrib/dev/acpica/components/utilities/utxface.c
+++ b/sys/contrib/dev/acpica/components/utilities/utxface.c
@@ -263,7 +263,7 @@ AcpiGetStatistics (
Stats->SciCount = AcpiSciCount;
Stats->GpeCount = AcpiGpeCount;
- ACPI_MEMCPY (Stats->FixedEventCount, AcpiFixedEventCount,
+ memcpy (Stats->FixedEventCount, AcpiFixedEventCount,
sizeof (AcpiFixedEventCount));
@@ -367,7 +367,7 @@ AcpiInstallInterface (
/* Parameter validation */
- if (!InterfaceName || (ACPI_STRLEN (InterfaceName) == 0))
+ if (!InterfaceName || (strlen (InterfaceName) == 0))
{
return (AE_BAD_PARAMETER);
}
@@ -432,7 +432,7 @@ AcpiRemoveInterface (
/* Parameter validation */
- if (!InterfaceName || (ACPI_STRLEN (InterfaceName) == 0))
+ if (!InterfaceName || (strlen (InterfaceName) == 0))
{
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utxfinit.c b/sys/contrib/dev/acpica/components/utilities/utxfinit.c
index 36107ca..04cd24f 100644
--- a/sys/contrib/dev/acpica/components/utilities/utxfinit.c
+++ b/sys/contrib/dev/acpica/components/utilities/utxfinit.c
@@ -194,11 +194,14 @@ AcpiEnableSubsystem (
* Obtain a permanent mapping for the FACS. This is required for the
* Global Lock and the Firmware Waking Vector
*/
- Status = AcpiTbInitializeFacs ();
- if (ACPI_FAILURE (Status))
+ if (!(Flags & ACPI_NO_FACS_INIT))
{
- ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
- return_ACPI_STATUS (Status);
+ Status = AcpiTbInitializeFacs ();
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
+ return_ACPI_STATUS (Status);
+ }
}
#endif /* !ACPI_REDUCED_HARDWARE */
diff --git a/sys/contrib/dev/acpica/include/acclib.h b/sys/contrib/dev/acpica/include/acclib.h
new file mode 100644
index 0000000..ed310cc
--- /dev/null
+++ b/sys/contrib/dev/acpica/include/acclib.h
@@ -0,0 +1,167 @@
+/******************************************************************************
+ *
+ * Name: acclib.h -- C library support. Prototypes for the (optional) local
+ * implementations of required C library functions.
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2015, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#ifndef _ACCLIB_H
+#define _ACCLIB_H
+
+
+/*
+ * Prototypes and macros for local implementations of C library functions
+ */
+
+/* is* functions. The AcpiGbl_Ctypes array is defined in utclib.c */
+
+extern const UINT8 AcpiGbl_Ctypes[];
+
+#define _ACPI_XA 0x00 /* extra alphabetic - not supported */
+#define _ACPI_XS 0x40 /* extra space */
+#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */
+#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */
+#define _ACPI_DI 0x04 /* '0'-'9' */
+#define _ACPI_LO 0x02 /* 'a'-'z' */
+#define _ACPI_PU 0x10 /* punctuation */
+#define _ACPI_SP 0x08 /* space, tab, CR, LF, VT, FF */
+#define _ACPI_UP 0x01 /* 'A'-'Z' */
+#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */
+
+#define isdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_DI))
+#define isspace(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_SP))
+#define isxdigit(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_XD))
+#define isupper(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_UP))
+#define islower(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO))
+#define isprint(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))
+#define isalpha(c) (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
+
+
+/* Strings */
+
+char *
+strcat (
+ char *DstString,
+ const char *SrcString);
+
+char *
+strchr (
+ const char *String,
+ int ch);
+
+char *
+strcpy (
+ char *DstString,
+ const char *SrcString);
+
+int
+strcmp (
+ const char *String1,
+ const char *String2);
+
+ACPI_SIZE
+strlen (
+ const char *String);
+
+char *
+strncat (
+ char *DstString,
+ const char *SrcString,
+ ACPI_SIZE Count);
+
+int
+strncmp (
+ const char *String1,
+ const char *String2,
+ ACPI_SIZE Count);
+
+char *
+strncpy (
+ char *DstString,
+ const char *SrcString,
+ ACPI_SIZE Count);
+
+char *
+strstr (
+ char *String1,
+ char *String2);
+
+
+/* Conversion */
+
+UINT32
+strtoul (
+ const char *String,
+ char **Terminator,
+ UINT32 Base);
+
+
+/* Memory */
+
+int
+memcmp (
+ void *Buffer1,
+ void *Buffer2,
+ ACPI_SIZE Count);
+
+void *
+memcpy (
+ void *Dest,
+ const void *Src,
+ ACPI_SIZE Count);
+
+void *
+memset (
+ void *Dest,
+ int Value,
+ ACPI_SIZE Count);
+
+
+/* upper/lower case */
+
+int
+tolower (
+ int c);
+
+int
+toupper (
+ int c);
+
+#endif /* _ACCLIB_H */
diff --git a/sys/contrib/dev/acpica/include/accommon.h b/sys/contrib/dev/acpica/include/accommon.h
index e63943b..322222a 100644
--- a/sys/contrib/dev/acpica/include/accommon.h
+++ b/sys/contrib/dev/acpica/include/accommon.h
@@ -59,6 +59,9 @@
#include <contrib/dev/acpica/include/acglobal.h> /* All global variables */
#include <contrib/dev/acpica/include/achware.h> /* Hardware defines and interfaces */
#include <contrib/dev/acpica/include/acutils.h> /* Utility interfaces */
+#ifndef ACPI_USE_SYSTEM_CLIBRARY
+#include <contrib/dev/acpica/include/acclib.h> /* C library interfaces */
+#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
#endif /* __ACCOMMON_H__ */
diff --git a/sys/contrib/dev/acpica/include/acglobal.h b/sys/contrib/dev/acpica/include/acglobal.h
index ab2fc26..9e7da94 100644
--- a/sys/contrib/dev/acpica/include/acglobal.h
+++ b/sys/contrib/dev/acpica/include/acglobal.h
@@ -62,6 +62,8 @@ ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader);
#if (!ACPI_REDUCED_HARDWARE)
ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS);
+ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_Facs32);
+ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_Facs64);
#endif /* !ACPI_REDUCED_HARDWARE */
diff --git a/sys/contrib/dev/acpica/include/acinterp.h b/sys/contrib/dev/acpica/include/acinterp.h
index 66463d6..00eb8f0 100644
--- a/sys/contrib/dev/acpica/include/acinterp.h
+++ b/sys/contrib/dev/acpica/include/acinterp.h
@@ -638,6 +638,11 @@ AcpiExIntegerToString (
char *Dest,
UINT64 Value);
+void
+AcpiExPciClsToString (
+ char *Dest,
+ UINT8 ClassCode[3]);
+
BOOLEAN
AcpiIsValidSpaceId (
UINT8 SpaceId);
diff --git a/sys/contrib/dev/acpica/include/aclocal.h b/sys/contrib/dev/acpica/include/aclocal.h
index 4c96303..dc1afff 100644
--- a/sys/contrib/dev/acpica/include/aclocal.h
+++ b/sys/contrib/dev/acpica/include/aclocal.h
@@ -238,6 +238,7 @@ typedef struct acpi_table_list
#define ACPI_TABLE_INDEX_DSDT (0)
#define ACPI_TABLE_INDEX_FACS (1)
+#define ACPI_TABLE_INDEX_X_FACS (2)
typedef struct acpi_find_context
diff --git a/sys/contrib/dev/acpica/include/acnames.h b/sys/contrib/dev/acpica/include/acnames.h
index 6bb6bbf..6887d42 100644
--- a/sys/contrib/dev/acpica/include/acnames.h
+++ b/sys/contrib/dev/acpica/include/acnames.h
@@ -51,6 +51,7 @@
#define METHOD_NAME__BBN "_BBN"
#define METHOD_NAME__CBA "_CBA"
#define METHOD_NAME__CID "_CID"
+#define METHOD_NAME__CLS "_CLS"
#define METHOD_NAME__CRS "_CRS"
#define METHOD_NAME__DDN "_DDN"
#define METHOD_NAME__HID "_HID"
diff --git a/sys/contrib/dev/acpica/include/acnamesp.h b/sys/contrib/dev/acpica/include/acnamesp.h
index 07e76b5..786fd29 100644
--- a/sys/contrib/dev/acpica/include/acnamesp.h
+++ b/sys/contrib/dev/acpica/include/acnamesp.h
@@ -67,6 +67,7 @@
#define ACPI_NS_PREFIX_IS_SCOPE 0x10
#define ACPI_NS_EXTERNAL 0x20
#define ACPI_NS_TEMPORARY 0x40
+#define ACPI_NS_OVERRIDE_IF_FOUND 0x80
/* Flags for AcpiNsWalkNamespace */
diff --git a/sys/contrib/dev/acpica/include/acobject.h b/sys/contrib/dev/acpica/include/acobject.h
index b7b624b..481eb44 100644
--- a/sys/contrib/dev/acpica/include/acobject.h
+++ b/sys/contrib/dev/acpica/include/acobject.h
@@ -430,13 +430,14 @@ typedef struct acpi_object_addr_handler
typedef struct acpi_object_reference
{
ACPI_OBJECT_COMMON_HEADER
- UINT8 Class; /* Reference Class */
- UINT8 TargetType; /* Used for Index Op */
- UINT8 Reserved;
- void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */
- ACPI_NAMESPACE_NODE *Node; /* RefOf or Namepath */
- union acpi_operand_object **Where; /* Target of Index */
- UINT32 Value; /* Used for Local/Arg/Index/DdbHandle */
+ UINT8 Class; /* Reference Class */
+ UINT8 TargetType; /* Used for Index Op */
+ UINT8 Reserved;
+ void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */
+ ACPI_NAMESPACE_NODE *Node; /* RefOf or Namepath */
+ union acpi_operand_object **Where; /* Target of Index */
+ UINT8 *IndexPointer; /* Used for Buffers and Strings */
+ UINT32 Value; /* Used for Local/Arg/Index/DdbHandle */
} ACPI_OBJECT_REFERENCE;
diff --git a/sys/contrib/dev/acpica/include/acoutput.h b/sys/contrib/dev/acpica/include/acoutput.h
index ab07809..0ef98eb 100644
--- a/sys/contrib/dev/acpica/include/acoutput.h
+++ b/sys/contrib/dev/acpica/include/acoutput.h
@@ -298,8 +298,12 @@
/* DEBUG_PRINT functions */
-#define ACPI_DEBUG_PRINT(plist) ACPI_ACTUAL_DEBUG plist
-#define ACPI_DEBUG_PRINT_RAW(plist) ACPI_ACTUAL_DEBUG_RAW plist
+#ifndef COMPILER_VA_MACRO
+
+#define ACPI_DEBUG_PRINT(plist) AcpiDebugPrint plist
+#define ACPI_DEBUG_PRINT_RAW(plist) AcpiDebugPrintRaw plist
+
+#else
/* Helper macros for DEBUG_PRINT */
@@ -319,6 +323,11 @@
ACPI_DO_DEBUG_PRINT (AcpiDebugPrintRaw, Level, Line, \
Filename, Modulename, Component, __VA_ARGS__)
+#define ACPI_DEBUG_PRINT(plist) ACPI_ACTUAL_DEBUG plist
+#define ACPI_DEBUG_PRINT_RAW(plist) ACPI_ACTUAL_DEBUG_RAW plist
+
+#endif
+
/*
* Function entry tracing
diff --git a/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h
index 8d972eb..037ffef 100644
--- a/sys/contrib/dev/acpica/include/acpixf.h
+++ b/sys/contrib/dev/acpica/include/acpixf.h
@@ -46,7 +46,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20150515
+#define ACPI_CA_VERSION 0x20150619
#include <contrib/dev/acpica/include/acconfig.h>
#include <contrib/dev/acpica/include/actypes.h>
@@ -202,6 +202,15 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFadtAddresses, FALSE);
/*
+ * Optionally use 32-bit FACS table addresses.
+ * It is reported that some platforms fail to resume from system suspending
+ * if 64-bit FACS table address is selected:
+ * https://bugzilla.kernel.org/show_bug.cgi?id=74021
+ * Default is TRUE, favor the 32-bit addresses.
+ */
+ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFacsAddresses, TRUE);
+
+/*
* Optionally truncate I/O addresses to 16 bits. Provides compatibility
* with other ACPI implementations. NOTE: During ACPICA initialization,
* this value is set to TRUE if any Windows OSI strings have been
@@ -222,6 +231,11 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableAutoRepair, FALSE);
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableSsdtTableInstall, FALSE);
/*
+ * Optionally enable runtime namespace override.
+ */
+ACPI_INIT_GLOBAL (UINT8, AcpiGbl_RuntimeNamespaceOverride, TRUE);
+
+/*
* We keep track of the latest version of Windows that has been requested by
* the BIOS. ACPI 5.0.
*/
@@ -1066,14 +1080,8 @@ AcpiLeaveSleepState (
ACPI_HW_DEPENDENT_RETURN_STATUS (
ACPI_STATUS
AcpiSetFirmwareWakingVector (
- UINT32 PhysicalAddress))
-
-#if ACPI_MACHINE_WIDTH == 64
-ACPI_HW_DEPENDENT_RETURN_STATUS (
-ACPI_STATUS
-AcpiSetFirmwareWakingVector64 (
- UINT64 PhysicalAddress))
-#endif
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress,
+ ACPI_PHYSICAL_ADDRESS PhysicalAddress64))
/*
diff --git a/sys/contrib/dev/acpica/include/acstruct.h b/sys/contrib/dev/acpica/include/acstruct.h
index 547921b..3a6faa6 100644
--- a/sys/contrib/dev/acpica/include/acstruct.h
+++ b/sys/contrib/dev/acpica/include/acstruct.h
@@ -85,6 +85,7 @@ typedef struct acpi_walk_state
UINT8 ReturnUsed;
UINT8 ScopeDepth;
UINT8 PassNumber; /* Parse pass during table load */
+ BOOLEAN NamespaceOverride; /* Override existing objects */
UINT8 ResultSize; /* Total elements for the result stack */
UINT8 ResultCount; /* Current number of occupied elements of result stack */
UINT32 AmlOffset;
diff --git a/sys/contrib/dev/acpica/include/actbl.h b/sys/contrib/dev/acpica/include/actbl.h
index ceef763..f1c3496 100644
--- a/sys/contrib/dev/acpica/include/actbl.h
+++ b/sys/contrib/dev/acpica/include/actbl.h
@@ -67,6 +67,7 @@
#define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */
#define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */
#define ACPI_SIG_FACS "FACS" /* Firmware ACPI Control Structure */
+#define ACPI_SIG_OSDT "OSDT" /* Override System Description Table */
#define ACPI_SIG_PSDT "PSDT" /* Persistent System Description Table */
#define ACPI_SIG_RSDP "RSD PTR " /* Root System Description Pointer */
#define ACPI_SIG_RSDT "RSDT" /* Root System Description Table */
diff --git a/sys/contrib/dev/acpica/include/actbl1.h b/sys/contrib/dev/acpica/include/actbl1.h
index 962324a..3a11553 100644
--- a/sys/contrib/dev/acpica/include/actbl1.h
+++ b/sys/contrib/dev/acpica/include/actbl1.h
@@ -974,10 +974,22 @@ typedef struct acpi_madt_generic_distributor
UINT64 BaseAddress;
UINT32 GlobalIrqBase;
UINT8 Version;
- UINT8 Reserved2[3]; /* Reserved - must be zero */
+ UINT8 Reserved2[3]; /* Reserved - must be zero */
} ACPI_MADT_GENERIC_DISTRIBUTOR;
+/* Values for Version field above */
+
+enum AcpiMadtGicVersion
+{
+ ACPI_MADT_GIC_VERSION_NONE = 0,
+ ACPI_MADT_GIC_VERSION_V1 = 1,
+ ACPI_MADT_GIC_VERSION_V2 = 2,
+ ACPI_MADT_GIC_VERSION_V3 = 3,
+ ACPI_MADT_GIC_VERSION_V4 = 4,
+ ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */
+};
+
/* 13: Generic MSI Frame (ACPI 5.1) */
diff --git a/sys/contrib/dev/acpica/include/actbl2.h b/sys/contrib/dev/acpica/include/actbl2.h
index 654495f..6ee36a6 100644
--- a/sys/contrib/dev/acpica/include/actbl2.h
+++ b/sys/contrib/dev/acpica/include/actbl2.h
@@ -52,8 +52,8 @@
* These tables are not consumed directly by the ACPICA subsystem, but are
* included here to support device drivers and the AML disassembler.
*
- * The tables in this file are defined by third-party specifications, and are
- * not defined directly by the ACPI specification itself.
+ * Generally, the tables in this file are defined by third-party specifications,
+ * and are not defined directly by the ACPI specification itself.
*
******************************************************************************/
@@ -82,6 +82,7 @@
#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
+#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
@@ -1369,21 +1370,91 @@ enum AcpiSpmiInterfaceTypes
/*******************************************************************************
*
* TCPA - Trusted Computing Platform Alliance table
- * Version 1
+ * Version 2
+ *
+ * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
+ * December 19, 2014
*
- * Conforms to "TCG PC Specific Implementation Specification",
- * Version 1.1, August 18, 2003
+ * NOTE: There are two versions of the table with the same signature --
+ * the client version and the server version.
*
******************************************************************************/
-typedef struct acpi_table_tcpa
+typedef struct acpi_table_tcpa_client
+{
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT16 PlatformClass;
+ UINT32 MinimumLogLength; /* Minimum length for the event log area */
+ UINT64 LogAddress; /* Address of the event log area */
+
+} ACPI_TABLE_TCPA_CLIENT;
+
+typedef struct acpi_table_tcpa_server
{
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT16 PlatformClass;
UINT16 Reserved;
- UINT32 MaxLogLength; /* Maximum length for the event log area */
+ UINT64 MinimumLogLength; /* Minimum length for the event log area */
UINT64 LogAddress; /* Address of the event log area */
+ UINT16 SpecRevision;
+ UINT8 DeviceFlags;
+ UINT8 InterruptFlags;
+ UINT8 GpeNumber;
+ UINT8 Reserved2[3];
+ UINT32 GlobalInterrupt;
+ ACPI_GENERIC_ADDRESS Address;
+ UINT32 Reserved3;
+ ACPI_GENERIC_ADDRESS ConfigAddress;
+ UINT8 Group;
+ UINT8 Bus; /* PCI Bus/Segment/Function numbers */
+ UINT8 Device;
+ UINT8 Function;
+
+} ACPI_TABLE_TCPA_SERVER;
+
+/* Values for DeviceFlags above */
+
+#define ACPI_TCPA_PCI_DEVICE (1)
+#define ACPI_TCPA_BUS_PNP (1<<1)
+#define ACPI_TCPA_ADDRESS_VALID (1<<2)
+
+/* Values for InterruptFlags above */
+
+#define ACPI_TCPA_INTERRUPT_MODE (1)
+#define ACPI_TCPA_INTERRUPT_POLARITY (1<<1)
+#define ACPI_TCPA_SCI_VIA_GPE (1<<2)
+#define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3)
+
+
+/*******************************************************************************
+ *
+ * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
+ * Version 4
+ *
+ * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
+ * December 19, 2014
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_tpm2
+{
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT16 PlatformClass;
+ UINT16 Reserved;
+ UINT64 ControlAddress;
+ UINT32 StartMethod;
+
+ /* Platform-specific data follows */
+
+} ACPI_TABLE_TPM2;
+
+/* Values for StartMethod above */
-} ACPI_TABLE_TCPA;
+#define ACPI_TPM2_NOT_ALLOWED 0
+#define ACPI_TPM2_START_METHOD 2
+#define ACPI_TPM2_MEMORY_MAPPED 6
+#define ACPI_TPM2_COMMAND_BUFFER 7
+#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8
/*******************************************************************************
diff --git a/sys/contrib/dev/acpica/include/actbl3.h b/sys/contrib/dev/acpica/include/actbl3.h
index f575d08..7da6bc6 100644
--- a/sys/contrib/dev/acpica/include/actbl3.h
+++ b/sys/contrib/dev/acpica/include/actbl3.h
@@ -52,7 +52,8 @@
* These tables are not consumed directly by the ACPICA subsystem, but are
* included here to support device drivers and the AML disassembler.
*
- * The tables in this file are fully defined within the ACPI specification.
+ * In general, the tables in this file are fully defined within the ACPI
+ * specification.
*
******************************************************************************/
@@ -71,7 +72,6 @@
#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
#define ACPI_SIG_STAO "STAO" /* Status Override table */
-#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */
#define ACPI_SIG_XENV "XENV" /* Xen Environment table */
@@ -848,41 +848,6 @@ typedef struct acpi_table_stao
/*******************************************************************************
*
- * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
- * Version 3
- *
- * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011
- *
- ******************************************************************************/
-
-typedef struct acpi_table_tpm2
-{
- ACPI_TABLE_HEADER Header; /* Common ACPI table header */
- UINT32 Flags;
- UINT64 ControlAddress;
- UINT32 StartMethod;
-
-} ACPI_TABLE_TPM2;
-
-/* Control area structure (not part of table, pointed to by ControlAddress) */
-
-typedef struct acpi_tpm2_control
-{
- UINT32 Reserved;
- UINT32 Error;
- UINT32 Cancel;
- UINT32 Start;
- UINT64 InterruptControl;
- UINT32 CommandSize;
- UINT64 CommandAddress;
- UINT32 ResponseSize;
- UINT64 ResponseAddress;
-
-} ACPI_TPM2_CONTROL;
-
-
-/*******************************************************************************
- *
* WPBT - Windows Platform Environment Table (ACPI 6.0)
* Version 1
*
diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h
index 0bee2a7..837c784 100644
--- a/sys/contrib/dev/acpica/include/actypes.h
+++ b/sys/contrib/dev/acpica/include/actypes.h
@@ -555,14 +555,14 @@ typedef UINT64 ACPI_INTEGER;
#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b)))
#define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src)))
#else
-#define ACPI_COMPARE_NAME(a,b) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE))
-#define ACPI_MOVE_NAME(dest,src) (ACPI_STRNCPY (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE))
+#define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE))
+#define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE))
#endif
/* Support for the special RSDP signature (8 characters) */
-#define ACPI_VALIDATE_RSDP_SIG(a) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
-#define ACPI_MAKE_RSDP_SIG(dest) (ACPI_MEMCPY (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
+#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
+#define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
/*******************************************************************************
@@ -582,6 +582,7 @@ typedef UINT64 ACPI_INTEGER;
#define ACPI_NO_ACPI_ENABLE 0x10
#define ACPI_NO_DEVICE_INIT 0x20
#define ACPI_NO_OBJECT_INIT 0x40
+#define ACPI_NO_FACS_INIT 0x80
/*
* Initialization state
@@ -767,10 +768,6 @@ typedef UINT32 ACPI_EVENT_STATUS;
#define ACPI_GPE_ENABLE 0
#define ACPI_GPE_DISABLE 1
#define ACPI_GPE_CONDITIONAL_ENABLE 2
-#define ACPI_GPE_SAVE_MASK 4
-
-#define ACPI_GPE_ENABLE_SAVE (ACPI_GPE_ENABLE | ACPI_GPE_SAVE_MASK)
-#define ACPI_GPE_DISABLE_SAVE (ACPI_GPE_DISABLE | ACPI_GPE_SAVE_MASK)
/*
* GPE info flags - Per GPE
@@ -1227,6 +1224,10 @@ UINT32 (*ACPI_INTERFACE_HANDLER) (
#define ACPI_UUID_LENGTH 16
+/* Length of 3-byte PCI class code values when converted back to a string */
+
+#define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */
+
/* Structures used for device/processor HID, UID, CID, and SUB */
@@ -1255,7 +1256,7 @@ typedef struct acpi_device_info
UINT32 Name; /* ACPI object Name */
ACPI_OBJECT_TYPE Type; /* ACPI object Type */
UINT8 ParamCount; /* If a method, required parameter count */
- UINT8 Valid; /* Indicates which optional fields are valid */
+ UINT16 Valid; /* Indicates which optional fields are valid */
UINT8 Flags; /* Miscellaneous info */
UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */
UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */
@@ -1264,6 +1265,7 @@ typedef struct acpi_device_info
ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */
ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */
ACPI_PNP_DEVICE_ID SubsystemId; /* _SUB value */
+ ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */
ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list <must be last> */
} ACPI_DEVICE_INFO;
@@ -1274,14 +1276,15 @@ typedef struct acpi_device_info
/* Flags for Valid field above (AcpiGetObjectInfo) */
-#define ACPI_VALID_STA 0x01
-#define ACPI_VALID_ADR 0x02
-#define ACPI_VALID_HID 0x04
-#define ACPI_VALID_UID 0x08
-#define ACPI_VALID_SUB 0x10
-#define ACPI_VALID_CID 0x20
-#define ACPI_VALID_SXDS 0x40
-#define ACPI_VALID_SXWS 0x80
+#define ACPI_VALID_STA 0x0001
+#define ACPI_VALID_ADR 0x0002
+#define ACPI_VALID_HID 0x0004
+#define ACPI_VALID_UID 0x0008
+#define ACPI_VALID_SUB 0x0010
+#define ACPI_VALID_CID 0x0020
+#define ACPI_VALID_CLS 0x0040
+#define ACPI_VALID_SXDS 0x0100
+#define ACPI_VALID_SXWS 0x0200
/* Flags for _STA return value (CurrentStatus above) */
diff --git a/sys/contrib/dev/acpica/include/acutils.h b/sys/contrib/dev/acpica/include/acutils.h
index fe6c057..b7c2a64 100644
--- a/sys/contrib/dev/acpica/include/acutils.h
+++ b/sys/contrib/dev/acpica/include/acutils.h
@@ -246,116 +246,8 @@ AcpiUtSubsystemShutdown (
void);
-/*
- * utclib - Local implementations of C library functions
- */
-#ifndef ACPI_USE_SYSTEM_CLIBRARY
-
-ACPI_SIZE
-AcpiUtStrlen (
- const char *String);
-
-char *
-AcpiUtStrchr (
- const char *String,
- int ch);
-
-char *
-AcpiUtStrcpy (
- char *DstString,
- const char *SrcString);
-
-char *
-AcpiUtStrncpy (
- char *DstString,
- const char *SrcString,
- ACPI_SIZE Count);
-
-int
-AcpiUtMemcmp (
- const char *Buffer1,
- const char *Buffer2,
- ACPI_SIZE Count);
-
-int
-AcpiUtStrncmp (
- const char *String1,
- const char *String2,
- ACPI_SIZE Count);
-
-int
-AcpiUtStrcmp (
- const char *String1,
- const char *String2);
-
-char *
-AcpiUtStrcat (
- char *DstString,
- const char *SrcString);
-
-char *
-AcpiUtStrncat (
- char *DstString,
- const char *SrcString,
- ACPI_SIZE Count);
-
-UINT32
-AcpiUtStrtoul (
- const char *String,
- char **Terminator,
- UINT32 Base);
-
-char *
-AcpiUtStrstr (
- char *String1,
- char *String2);
-
-void *
-AcpiUtMemcpy (
- void *Dest,
- const void *Src,
- ACPI_SIZE Count);
-
-void *
-AcpiUtMemset (
- void *Dest,
- UINT8 Value,
- ACPI_SIZE Count);
-
-int
-AcpiUtToUpper (
- int c);
-
-int
-AcpiUtToLower (
- int c);
-
-extern const UINT8 _acpi_ctype[];
-
-#define _ACPI_XA 0x00 /* extra alphabetic - not supported */
-#define _ACPI_XS 0x40 /* extra space */
-#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */
-#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */
-#define _ACPI_DI 0x04 /* '0'-'9' */
-#define _ACPI_LO 0x02 /* 'a'-'z' */
-#define _ACPI_PU 0x10 /* punctuation */
-#define _ACPI_SP 0x08 /* space, tab, CR, LF, VT, FF */
-#define _ACPI_UP 0x01 /* 'A'-'Z' */
-#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */
-
-#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
-#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
-#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
-#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
-#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
-#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))
-#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
-
-#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
-
#define ACPI_IS_ASCII(c) ((c) < 0x80)
-
/*
* utcopy - Object construction and conversion interfaces
*/
@@ -602,6 +494,11 @@ AcpiUtExecute_CID (
ACPI_NAMESPACE_NODE *DeviceNode,
ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
+ACPI_STATUS
+AcpiUtExecute_CLS (
+ ACPI_NAMESPACE_NODE *DeviceNode,
+ ACPI_PNP_DEVICE_ID **ReturnId);
+
/*
* utlock - reader/writer locks
diff --git a/sys/contrib/dev/acpica/include/platform/acenv.h b/sys/contrib/dev/acpica/include/platform/acenv.h
index 88b1ffc..90ace88 100644
--- a/sys/contrib/dev/acpica/include/platform/acenv.h
+++ b/sys/contrib/dev/acpica/include/platform/acenv.h
@@ -349,28 +349,6 @@
/* We will be linking to the standard Clib functions */
-#define ACPI_STRSTR(s1,s2) strstr((s1), (s2))
-#define ACPI_STRCHR(s1,c) strchr((s1), (c))
-#define ACPI_STRLEN(s) (ACPI_SIZE) strlen((s))
-#define ACPI_STRCPY(d,s) (void) strcpy((d), (s))
-#define ACPI_STRNCPY(d,s,n) (void) strncpy((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRNCMP(d,s,n) strncmp((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRCMP(d,s) strcmp((d), (s))
-#define ACPI_STRCAT(d,s) (void) strcat((d), (s))
-#define ACPI_STRNCAT(d,s,n) strncat((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRTOUL(d,s,n) strtoul((d), (s), (ACPI_SIZE)(n))
-#define ACPI_MEMCMP(s1,s2,n) memcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n))
-#define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (ACPI_SIZE)(n))
-#define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (ACPI_SIZE)(n))
-#define ACPI_TOUPPER(i) toupper((int) (i))
-#define ACPI_TOLOWER(i) tolower((int) (i))
-#define ACPI_IS_XDIGIT(i) isxdigit((int) (i))
-#define ACPI_IS_DIGIT(i) isdigit((int) (i))
-#define ACPI_IS_SPACE(i) isspace((int) (i))
-#define ACPI_IS_UPPER(i) isupper((int) (i))
-#define ACPI_IS_PRINT(i) isprint((int) (i))
-#define ACPI_IS_ALPHA(i) isalpha((int) (i))
-
#else
/******************************************************************************
@@ -408,22 +386,6 @@ typedef char *va_list;
/* Use the local (ACPICA) definitions of the clib functions */
-#define ACPI_STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2))
-#define ACPI_STRCHR(s1,c) AcpiUtStrchr ((s1), (c))
-#define ACPI_STRLEN(s) (ACPI_SIZE) AcpiUtStrlen ((s))
-#define ACPI_STRCPY(d,s) (void) AcpiUtStrcpy ((d), (s))
-#define ACPI_STRNCPY(d,s,n) (void) AcpiUtStrncpy ((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRCMP(d,s) AcpiUtStrcmp ((d), (s))
-#define ACPI_STRCAT(d,s) (void) AcpiUtStrcat ((d), (s))
-#define ACPI_STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (ACPI_SIZE)(n))
-#define ACPI_STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s), (ACPI_SIZE)(n))
-#define ACPI_MEMCMP(s1,s2,n) AcpiUtMemcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n))
-#define ACPI_MEMCPY(d,s,n) (void) AcpiUtMemcpy ((d), (s), (ACPI_SIZE)(n))
-#define ACPI_MEMSET(d,v,n) (void) AcpiUtMemset ((d), (v), (ACPI_SIZE)(n))
-#define ACPI_TOUPPER(c) AcpiUtToUpper ((int) (c))
-#define ACPI_TOLOWER(c) AcpiUtToLower ((int) (c))
-
#endif /* ACPI_USE_SYSTEM_CLIBRARY */
#ifndef ACPI_FILE
diff --git a/sys/contrib/dev/acpica/include/platform/acenvex.h b/sys/contrib/dev/acpica/include/platform/acenvex.h
index 6e1130e..c799fd8 100644
--- a/sys/contrib/dev/acpica/include/platform/acenvex.h
+++ b/sys/contrib/dev/acpica/include/platform/acenvex.h
@@ -56,6 +56,12 @@
#if defined(_LINUX) || defined(__linux__)
#include "aclinuxex.h"
+#elif defined(_AED_EFI)
+#include "acefiex.h"
+
+#elif defined(_GNU_EFI)
+#include "acefiex.h"
+
#elif defined(__DragonFly__)
#include "acdragonflyex.h"
diff --git a/sys/contrib/dev/acpica/include/platform/acgcc.h b/sys/contrib/dev/acpica/include/platform/acgcc.h
index 2a27445..472b6d7 100644
--- a/sys/contrib/dev/acpica/include/platform/acgcc.h
+++ b/sys/contrib/dev/acpica/include/platform/acgcc.h
@@ -75,4 +75,8 @@
#undef strchr
#endif
+/* GCC supports __VA_ARGS__ in macros */
+
+#define COMPILER_VA_MACRO 1
+
#endif /* __ACGCC_H__ */
diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c
index 8386c64..61c1d5f 100644
--- a/sys/ddb/db_sym.c
+++ b/sys/ddb/db_sym.c
@@ -160,7 +160,7 @@ db_var_curvnet(struct db_variable *vp, db_expr_t *valuep, int op)
return (0);
default:
- db_printf("db_var_curcpu: unknown operation\n");
+ db_printf("db_var_curvnet: unknown operation\n");
return (0);
}
}
diff --git a/sys/dev/acpi_support/acpi_ibm.c b/sys/dev/acpi_support/acpi_ibm.c
index 1163681..735065a 100644
--- a/sys/dev/acpi_support/acpi_ibm.c
+++ b/sys/dev/acpi_support/acpi_ibm.c
@@ -485,6 +485,9 @@ acpi_ibm_attach(device_t dev)
/* Enable per-model events. */
maker = kern_getenv("smbios.system.maker");
product = kern_getenv("smbios.system.product");
+ if (maker == NULL || product == NULL)
+ goto nosmbios;
+
for (i = 0; i < nitems(acpi_ibm_models); i++) {
if (strcmp(maker, acpi_ibm_models[i].maker) == 0 &&
strcmp(product, acpi_ibm_models[i].product) == 0) {
@@ -494,6 +497,8 @@ acpi_ibm_attach(device_t dev)
ACPI_SERIAL_END(ibm);
}
}
+
+nosmbios:
freeenv(maker);
freeenv(product);
diff --git a/sys/dev/acpica/Osd/OsdHardware.c b/sys/dev/acpica/Osd/OsdHardware.c
index 1761670..8d94e7b 100644
--- a/sys/dev/acpica/Osd/OsdHardware.c
+++ b/sys/dev/acpica/Osd/OsdHardware.c
@@ -89,6 +89,10 @@ AcpiOsReadPciConfiguration(ACPI_PCI_ID *PciId, UINT32 Register, UINT64 *Value,
UINT32 Width)
{
+#ifdef __aarch64__
+ /* ARM64TODO: Add pci support */
+ return (AE_SUPPORT);
+#else
if (Width == 64)
return (AE_SUPPORT);
@@ -99,6 +103,7 @@ AcpiOsReadPciConfiguration(ACPI_PCI_ID *PciId, UINT32 Register, UINT64 *Value,
PciId->Function, Register, Width / 8);
return (AE_OK);
+#endif
}
@@ -107,6 +112,10 @@ AcpiOsWritePciConfiguration (ACPI_PCI_ID *PciId, UINT32 Register,
UINT64 Value, UINT32 Width)
{
+#ifdef __aarch64__
+ /* ARM64TODO: Add pci support */
+ return (AE_SUPPORT);
+#else
if (Width == 64)
return (AE_SUPPORT);
@@ -117,4 +126,5 @@ AcpiOsWritePciConfiguration (ACPI_PCI_ID *PciId, UINT32 Register,
Value, Width / 8);
return (AE_OK);
+#endif
}
diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c
index 21fccca..e3269db 100644
--- a/sys/dev/acpica/acpi_cpu.c
+++ b/sys/dev/acpica/acpi_cpu.c
@@ -183,7 +183,9 @@ static int acpi_cpu_cx_cst(struct acpi_cpu_softc *sc);
static void acpi_cpu_startup(void *arg);
static void acpi_cpu_startup_cx(struct acpi_cpu_softc *sc);
static void acpi_cpu_cx_list(struct acpi_cpu_softc *sc);
+#if defined(__i386__) || defined(__amd64__)
static void acpi_cpu_idle(sbintime_t sbt);
+#endif
static void acpi_cpu_notify(ACPI_HANDLE h, UINT32 notify, void *context);
static void acpi_cpu_quirks(void);
static void acpi_cpu_quirks_piix4(void);
@@ -475,12 +477,14 @@ enable_idle(struct acpi_cpu_softc *sc)
sc->cpu_disable_idle = FALSE;
}
+#if defined(__i386__) || defined(__amd64__)
static int
is_idle_disabled(struct acpi_cpu_softc *sc)
{
return (sc->cpu_disable_idle);
}
+#endif
/*
* Disable any entry to the idle function during suspend and re-enable it
@@ -999,7 +1003,9 @@ acpi_cpu_startup(void *arg)
sc = device_get_softc(cpu_devices[i]);
enable_idle(sc);
}
+#if defined(__i386__) || defined(__amd64__)
cpu_idle_hook = acpi_cpu_idle;
+#endif
}
static void
@@ -1061,6 +1067,7 @@ acpi_cpu_startup_cx(struct acpi_cpu_softc *sc)
}
}
+#if defined(__i386__) || defined(__amd64__)
/*
* Idle the CPU in the lowest state possible. This function is called with
* interrupts disabled. Note that once it re-enables interrupts, a task
@@ -1074,6 +1081,7 @@ acpi_cpu_idle(sbintime_t sbt)
struct acpi_cx *cx_next;
uint64_t cputicks;
uint32_t start_time, end_time;
+ ACPI_STATUS status;
int bm_active, cx_next_idx, i, us;
/*
@@ -1119,8 +1127,8 @@ acpi_cpu_idle(sbintime_t sbt)
*/
if ((cpu_quirks & CPU_QUIRK_NO_BM_CTRL) == 0 &&
cx_next_idx > sc->cpu_non_c3) {
- AcpiReadBitRegister(ACPI_BITREG_BUS_MASTER_STATUS, &bm_active);
- if (bm_active != 0) {
+ status = AcpiReadBitRegister(ACPI_BITREG_BUS_MASTER_STATUS, &bm_active);
+ if (ACPI_SUCCESS(status) && bm_active != 0) {
AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_STATUS, 1);
cx_next_idx = sc->cpu_non_c3;
}
@@ -1207,6 +1215,7 @@ acpi_cpu_idle(sbintime_t sbt)
sc->cpu_prev_sleep = (sc->cpu_prev_sleep * 3 + PM_USEC(end_time)) / 4;
}
+#endif
/*
* Re-evaluate the _CST object when we are notified that it changed.
@@ -1285,6 +1294,7 @@ acpi_cpu_quirks_piix4(void)
#ifdef __i386__
device_t acpi_dev;
uint32_t val;
+ ACPI_STATUS status;
acpi_dev = pci_find_device(PCI_VENDOR_INTEL, PCI_DEVICE_82371AB_3);
if (acpi_dev != NULL) {
@@ -1323,8 +1333,8 @@ acpi_cpu_quirks_piix4(void)
val |= PIIX4_STOP_BREAK_MASK;
pci_write_config(acpi_dev, PIIX4_DEVACTB_REG, val, 4);
}
- AcpiReadBitRegister(ACPI_BITREG_BUS_MASTER_RLD, &val);
- if (val) {
+ status = AcpiReadBitRegister(ACPI_BITREG_BUS_MASTER_RLD, &val);
+ if (ACPI_SUCCESS(status) && val != 0) {
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"acpi_cpu: PIIX4: reset BRLD_EN_BM\n"));
AcpiWriteBitRegister(ACPI_BITREG_BUS_MASTER_RLD, 0);
diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c
index 7f3f97d..b034ef7 100644
--- a/sys/dev/atkbdc/psm.c
+++ b/sys/dev/atkbdc/psm.c
@@ -462,7 +462,8 @@ static int tame_mouse(struct psm_softc *, packetbuf_t *, mousestatus_t *,
u_char *);
/* vendor specific features */
-typedef int probefunc_t(KBDC, struct psm_softc *);
+enum probearg { PROBE, REINIT };
+typedef int probefunc_t(struct psm_softc *, enum probearg);
static int mouse_id_proc1(KBDC, int, int, int *);
static int mouse_ext_command(KBDC, int);
@@ -882,7 +883,7 @@ doinitialize(struct psm_softc *sc, mousemode_t *mode)
/* Re-enable the mouse. */
for (i = 0; vendortype[i].probefunc != NULL; ++i)
if (vendortype[i].model == sc->hw.model)
- (*vendortype[i].probefunc)(sc->kbdc, NULL);
+ (*vendortype[i].probefunc)(sc, REINIT);
/* set mouse parameters */
if (mode != (mousemode_t *)NULL) {
@@ -893,13 +894,6 @@ doinitialize(struct psm_softc *sc, mousemode_t *mode)
set_mouse_resolution(kbdc, mode->resolution);
set_mouse_scaling(kbdc, 1);
set_mouse_mode(kbdc);
-
- /*
- * Trackpoint settings are lost on resume.
- * Restore them here.
- */
- if (sc->tphw > 0)
- set_trackpoint_parameters(sc);
}
/* Record sync on the next data packet we see. */
@@ -1388,7 +1382,7 @@ psmprobe(device_t dev)
/* other parameters */
for (i = 0; vendortype[i].probefunc != NULL; ++i)
- if ((*vendortype[i].probefunc)(sc->kbdc, sc)) {
+ if ((*vendortype[i].probefunc)(sc, PROBE)) {
if (verbose >= 2)
printf("psm%d: found %s\n", unit,
model_name(vendortype[i].model));
@@ -3731,8 +3725,9 @@ mouse_ext_command(KBDC kbdc, int command)
#ifdef notyet
/* Logitech MouseMan Cordless II */
static int
-enable_lcordless(KDBC kbdc, struct psm_softc *sc)
+enable_lcordless(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int status[3];
int ch;
@@ -3753,8 +3748,9 @@ enable_lcordless(KDBC kbdc, struct psm_softc *sc)
/* Genius NetScroll Mouse, MouseSystems SmartScroll Mouse */
static int
-enable_groller(KBDC kbdc, struct psm_softc *sc)
+enable_groller(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int status[3];
/*
@@ -3783,15 +3779,16 @@ enable_groller(KBDC kbdc, struct psm_softc *sc)
if ((status[1] != '3') || (status[2] != 'D'))
return (FALSE);
/* FIXME: SmartScroll Mouse has 5 buttons! XXX */
- if (sc != NULL)
+ if (arg == PROBE)
sc->hw.buttons = 4;
return (TRUE);
}
/* Genius NetMouse/NetMouse Pro, ASCII Mie Mouse, NetScroll Optical */
static int
-enable_gmouse(KBDC kbdc, struct psm_softc *sc)
+enable_gmouse(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int status[3];
/*
@@ -3813,8 +3810,9 @@ enable_gmouse(KBDC kbdc, struct psm_softc *sc)
/* ALPS GlidePoint */
static int
-enable_aglide(KBDC kbdc, struct psm_softc *sc)
+enable_aglide(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int status[3];
/*
@@ -3835,9 +3833,10 @@ enable_aglide(KBDC kbdc, struct psm_softc *sc)
/* Kensington ThinkingMouse/Trackball */
static int
-enable_kmouse(KBDC kbdc, struct psm_softc *sc)
+enable_kmouse(struct psm_softc *sc, enum probearg arg)
{
static u_char rate[] = { 20, 60, 40, 20, 20, 60, 40, 20, 20 };
+ KBDC kbdc = sc->kbdc;
int status[3];
int id1;
int id2;
@@ -3888,8 +3887,9 @@ enable_kmouse(KBDC kbdc, struct psm_softc *sc)
/* Logitech MouseMan+/FirstMouse+, IBM ScrollPoint Mouse */
static int
-enable_mmanplus(KBDC kbdc, struct psm_softc *sc)
+enable_mmanplus(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int data[3];
/* the special sequence to enable the fourth button and the roller. */
@@ -3930,7 +3930,7 @@ enable_mmanplus(KBDC kbdc, struct psm_softc *sc)
if (MOUSE_PS2PLUS_PACKET_TYPE(data) != 0)
return (FALSE);
- if (sc != NULL) {
+ if (arg == PROBE) {
sc->hw.hwid &= 0x00ff;
sc->hw.hwid |= data[2] << 8; /* save model ID */
}
@@ -3946,8 +3946,9 @@ enable_mmanplus(KBDC kbdc, struct psm_softc *sc)
/* MS IntelliMouse Explorer */
static int
-enable_msexplorer(KBDC kbdc, struct psm_softc *sc)
+enable_msexplorer(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
static u_char rate0[] = { 200, 100, 80, };
static u_char rate1[] = { 200, 200, 80, };
int id;
@@ -3958,7 +3959,7 @@ enable_msexplorer(KBDC kbdc, struct psm_softc *sc)
* straight to Explorer mode, but need to be set to Intelli mode
* first.
*/
- enable_msintelli(kbdc, sc);
+ enable_msintelli(sc, arg);
/* the special sequence to enable the extra buttons and the roller. */
for (i = 0; i < sizeof(rate1)/sizeof(rate1[0]); ++i)
@@ -3969,7 +3970,7 @@ enable_msexplorer(KBDC kbdc, struct psm_softc *sc)
if (id != PSM_EXPLORER_ID)
return (FALSE);
- if (sc != NULL) {
+ if (arg == PROBE) {
sc->hw.buttons = 5; /* IntelliMouse Explorer XXX */
sc->hw.hwid = id;
}
@@ -3992,15 +3993,15 @@ enable_msexplorer(KBDC kbdc, struct psm_softc *sc)
return (TRUE);
}
-/* MS IntelliMouse */
+/*
+ * MS IntelliMouse
+ * Logitech MouseMan+ and FirstMouse+ will also respond to this
+ * probe routine and act like IntelliMouse.
+ */
static int
-enable_msintelli(KBDC kbdc, struct psm_softc *sc)
+enable_msintelli(struct psm_softc *sc, enum probearg arg)
{
- /*
- * Logitech MouseMan+ and FirstMouse+ will also respond to this
- * probe routine and act like IntelliMouse.
- */
-
+ KBDC kbdc = sc->kbdc;
static u_char rate[] = { 200, 100, 80, };
int id;
int i;
@@ -4014,7 +4015,7 @@ enable_msintelli(KBDC kbdc, struct psm_softc *sc)
if (id != PSM_INTELLI_ID)
return (FALSE);
- if (sc != NULL) {
+ if (arg == PROBE) {
sc->hw.buttons = 3;
sc->hw.hwid = id;
}
@@ -4022,15 +4023,15 @@ enable_msintelli(KBDC kbdc, struct psm_softc *sc)
return (TRUE);
}
-/* A4 Tech 4D Mouse */
+/*
+ * A4 Tech 4D Mouse
+ * Newer wheel mice from A4 Tech may use the 4D+ protocol.
+ */
static int
-enable_4dmouse(KBDC kbdc, struct psm_softc *sc)
+enable_4dmouse(struct psm_softc *sc, enum probearg arg)
{
- /*
- * Newer wheel mice from A4 Tech may use the 4D+ protocol.
- */
-
static u_char rate[] = { 200, 100, 80, 60, 40, 20 };
+ KBDC kbdc = sc->kbdc;
int id;
int i;
@@ -4046,7 +4047,7 @@ enable_4dmouse(KBDC kbdc, struct psm_softc *sc)
if (id != PSM_4DMOUSE_ID)
return (FALSE);
- if (sc != NULL) {
+ if (arg == PROBE) {
sc->hw.buttons = 3; /* XXX some 4D mice have 4? */
sc->hw.hwid = id;
}
@@ -4054,14 +4055,15 @@ enable_4dmouse(KBDC kbdc, struct psm_softc *sc)
return (TRUE);
}
-/* A4 Tech 4D+ Mouse */
+/*
+ * A4 Tech 4D+ Mouse
+ * Newer wheel mice from A4 Tech seem to use this protocol.
+ * Older models are recognized as either 4D Mouse or IntelliMouse.
+ */
static int
-enable_4dplus(KBDC kbdc, struct psm_softc *sc)
+enable_4dplus(struct psm_softc *sc, enum probearg arg)
{
- /*
- * Newer wheel mice from A4 Tech seem to use this protocol.
- * Older models are recognized as either 4D Mouse or IntelliMouse.
- */
+ KBDC kbdc = sc->kbdc;
int id;
/*
@@ -4084,7 +4086,7 @@ enable_4dplus(KBDC kbdc, struct psm_softc *sc)
return (FALSE);
}
- if (sc != NULL) {
+ if (arg == PROBE) {
sc->hw.buttons = (id == PSM_4DPLUS_ID) ? 4 : 3;
sc->hw.hwid = id;
}
@@ -4543,8 +4545,9 @@ synaptics_set_mode(struct psm_softc *sc, int mode_byte) {
}
static int
-enable_synaptics(KBDC kbdc, struct psm_softc *sc)
+enable_synaptics(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
synapticshw_t synhw;
int status[3];
int buttons;
@@ -4828,20 +4831,20 @@ enable_synaptics(KBDC kbdc, struct psm_softc *sc)
return (FALSE);
}
- if (sc != NULL)
+ if (arg == PROBE)
sc->synhw = synhw;
if (!synaptics_support)
return (FALSE);
+ synaptics_set_mode(sc, synaptics_preferred_mode(sc));
+
+ if (trackpoint_support && synhw.capPassthrough) {
+ enable_trackpoint(sc, arg);
+ }
+
VLOG(3, (LOG_DEBUG, "synaptics: END init (%d buttons)\n", buttons));
- if (sc != NULL) {
- synaptics_set_mode(sc, synaptics_preferred_mode(sc));
- if (trackpoint_support && synhw.capPassthrough) {
- synaptics_passthrough_on(sc);
- enable_trackpoint(kbdc, sc);
- synaptics_passthrough_off(sc);
- }
+ if (arg == PROBE) {
/* Create sysctl tree. */
synaptics_sysctl_create_tree(sc);
sc->hw.buttons = buttons;
@@ -5086,25 +5089,37 @@ set_trackpoint_parameters(struct psm_softc *sc)
}
static int
-enable_trackpoint(KBDC kbdc, struct psm_softc *sc)
+enable_trackpoint(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int id;
+ /*
+ * If called from enable_synaptics(), make sure that passthrough
+ * mode is enabled so we can reach the trackpoint.
+ * However, passthrough mode must be disabled before setting the
+ * trackpoint parameters, as rackpoint_command() enables and disables
+ * passthrough mode on its own.
+ */
+ if (sc->synhw.capPassthrough)
+ synaptics_passthrough_on(sc);
+
if (send_aux_command(kbdc, 0xe1) != PSM_ACK ||
read_aux_data(kbdc) != 0x01)
- return (FALSE);
+ goto no_trackpoint;
id = read_aux_data(kbdc);
if (id < 0x01)
- return (FALSE);
- if (sc != NULL)
+ goto no_trackpoint;
+ if (arg == PROBE)
sc->tphw = id;
if (!trackpoint_support)
- return (FALSE);
+ goto no_trackpoint;
- if (sc != NULL) {
- /* Create sysctl tree. */
- trackpoint_sysctl_create_tree(sc);
+ if (sc->synhw.capPassthrough)
+ synaptics_passthrough_off(sc);
+ if (arg == PROBE) {
+ trackpoint_sysctl_create_tree(sc);
/*
* Don't overwrite hwid and buttons when we are
* a guest device.
@@ -5115,13 +5130,22 @@ enable_trackpoint(KBDC kbdc, struct psm_softc *sc)
}
}
+ set_trackpoint_parameters(sc);
+
return (TRUE);
+
+no_trackpoint:
+ if (sc->synhw.capPassthrough)
+ synaptics_passthrough_off(sc);
+
+ return (FALSE);
}
/* Interlink electronics VersaPad */
static int
-enable_versapad(KBDC kbdc, struct psm_softc *sc)
+enable_versapad(struct psm_softc *sc, enum probearg arg)
{
+ KBDC kbdc = sc->kbdc;
int data[3];
set_mouse_resolution(kbdc, PSMD_RES_MEDIUM_HIGH); /* set res. 2 */
diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c
index 00e367a..2a2a81c 100644
--- a/sys/dev/bxe/bxe.c
+++ b/sys/dev/bxe/bxe.c
@@ -726,7 +726,6 @@ static __noinline int bxe_nic_unload(struct bxe_softc *sc,
uint8_t keep_link);
static void bxe_handle_sp_tq(void *context, int pending);
-static void bxe_handle_rx_mode_tq(void *context, int pending);
static void bxe_handle_fp_tq(void *context, int pending);
@@ -1174,7 +1173,17 @@ bxe_release_hw_lock(struct bxe_softc *sc,
REG_WR(sc, hw_lock_control_reg, resource_bit);
return (0);
}
+static void bxe_acquire_phy_lock(struct bxe_softc *sc)
+{
+ BXE_PHY_LOCK(sc);
+ bxe_acquire_hw_lock(sc,HW_LOCK_RESOURCE_MDIO);
+}
+static void bxe_release_phy_lock(struct bxe_softc *sc)
+{
+ bxe_release_hw_lock(sc,HW_LOCK_RESOURCE_MDIO);
+ BXE_PHY_UNLOCK(sc);
+}
/*
* Per pf misc lock must be acquired before the per port mcp lock. Otherwise,
* had we done things the other way around, if two pfs from the same port
@@ -4764,28 +4773,6 @@ bxe_handle_chip_tq(void *context,
switch (work)
{
- case CHIP_TQ_START:
- if ((if_getflags(sc->ifp) & IFF_UP) &&
- !(if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING)) {
- /* start the interface */
- BLOGD(sc, DBG_LOAD, "Starting the interface...\n");
- BXE_CORE_LOCK(sc);
- bxe_init_locked(sc);
- BXE_CORE_UNLOCK(sc);
- }
- break;
-
- case CHIP_TQ_STOP:
- if (!(if_getflags(sc->ifp) & IFF_UP) &&
- (if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING)) {
- /* bring down the interface */
- BLOGD(sc, DBG_LOAD, "Stopping the interface...\n");
- bxe_periodic_stop(sc);
- BXE_CORE_LOCK(sc);
- bxe_stop_locked(sc);
- BXE_CORE_UNLOCK(sc);
- }
- break;
case CHIP_TQ_REINIT:
if (if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING) {
@@ -4859,21 +4846,22 @@ bxe_ioctl(if_t ifp,
/* toggle the interface state up or down */
BLOGD(sc, DBG_IOCTL, "Received SIOCSIFFLAGS ioctl\n");
+ BXE_CORE_LOCK(sc);
/* check if the interface is up */
if (if_getflags(ifp) & IFF_UP) {
if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
/* set the receive mode flags */
bxe_set_rx_mode(sc);
} else {
- atomic_store_rel_long(&sc->chip_tq_flags, CHIP_TQ_START);
- taskqueue_enqueue(sc->chip_tq, &sc->chip_tq_task);
+ bxe_init_locked(sc);
}
} else {
if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
- atomic_store_rel_long(&sc->chip_tq_flags, CHIP_TQ_STOP);
- taskqueue_enqueue(sc->chip_tq, &sc->chip_tq_task);
+ bxe_periodic_stop(sc);
+ bxe_stop_locked(sc);
}
}
+ BXE_CORE_UNLOCK(sc);
break;
@@ -4885,7 +4873,9 @@ bxe_ioctl(if_t ifp,
/* check if the interface is up */
if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
/* set the receive mode flags */
+ BXE_CORE_LOCK(sc);
bxe_set_rx_mode(sc);
+ BXE_CORE_UNLOCK(sc);
}
break;
@@ -5044,8 +5034,11 @@ bxe_ioctl(if_t ifp,
if (reinit && (if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING)) {
BLOGD(sc, DBG_LOAD | DBG_IOCTL,
"Re-initializing hardware from IOCTL change\n");
- atomic_store_rel_long(&sc->chip_tq_flags, CHIP_TQ_REINIT);
- taskqueue_enqueue(sc->chip_tq, &sc->chip_tq_task);
+ bxe_periodic_stop(sc);
+ BXE_CORE_LOCK(sc);
+ bxe_stop_locked(sc);
+ bxe_init_locked(sc);
+ BXE_CORE_UNLOCK(sc);
}
return (error);
@@ -7487,8 +7480,7 @@ bxe_attn_int_asserted(struct bxe_softc *sc,
if (asserted & ATTN_HARD_WIRED_MASK) {
if (asserted & ATTN_NIG_FOR_FUNC) {
- BXE_PHY_LOCK(sc);
-
+ bxe_acquire_phy_lock(sc);
/* save nig interrupt mask */
nig_mask = REG_RD(sc, nig_int_mask_addr);
@@ -7581,7 +7573,7 @@ bxe_attn_int_asserted(struct bxe_softc *sc,
REG_WR(sc, nig_int_mask_addr, nig_mask);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
}
}
@@ -8339,10 +8331,10 @@ bxe_attn_int_deasserted3(struct bxe_softc *sc,
if (sc->link_vars.periodic_flags &
ELINK_PERIODIC_FLAGS_LINK_EVENT) {
/* sync with link */
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
sc->link_vars.periodic_flags &=
~ELINK_PERIODIC_FLAGS_LINK_EVENT;
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
if (IS_MF(sc))
; // XXX bxe_link_sync_notify(sc);
bxe_link_report(sc);
@@ -8535,9 +8527,9 @@ bxe_attn_int_deasserted0(struct bxe_softc *sc,
}
if ((attn & sc->link_vars.aeu_int_mask) && sc->port.pmf) {
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
elink_handle_module_detect_int(&sc->link_params);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
}
if (attn & HW_INTERRUT_ASSERT_SET_0) {
@@ -9564,11 +9556,6 @@ bxe_interrupt_detach(struct bxe_softc *sc)
}
}
- if (sc->rx_mode_tq) {
- taskqueue_drain(sc->rx_mode_tq, &sc->rx_mode_tq_task);
- taskqueue_free(sc->rx_mode_tq);
- sc->rx_mode_tq = NULL;
- }
if (sc->sp_tq) {
taskqueue_drain(sc->sp_tq, &sc->sp_tq_task);
@@ -9602,14 +9589,6 @@ bxe_interrupt_attach(struct bxe_softc *sc)
taskqueue_start_threads(&sc->sp_tq, 1, PWAIT, /* lower priority */
"%s", sc->sp_tq_name);
- snprintf(sc->rx_mode_tq_name, sizeof(sc->rx_mode_tq_name),
- "bxe%d_rx_mode_tq", sc->unit);
- TASK_INIT(&sc->rx_mode_tq_task, 0, bxe_handle_rx_mode_tq, sc);
- sc->rx_mode_tq = taskqueue_create_fast(sc->rx_mode_tq_name, M_NOWAIT,
- taskqueue_thread_enqueue,
- &sc->rx_mode_tq);
- taskqueue_start_threads(&sc->rx_mode_tq, 1, PWAIT, /* lower priority */
- "%s", sc->rx_mode_tq_name);
for (i = 0; i < sc->num_queues; i++) {
fp = &sc->fp[i];
@@ -12363,9 +12342,9 @@ bxe_link_report_locked(struct bxe_softc *sc)
static void
bxe_link_report(struct bxe_softc *sc)
{
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
bxe_link_report_locked(sc);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
}
static void
@@ -12481,7 +12460,7 @@ bxe_initial_phy_init(struct bxe_softc *sc,
sc->link_params.feature_config_flags |= feat;
}
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
if (load_mode == LOAD_DIAG) {
lp->loopback_mode = ELINK_LOOPBACK_XGXS;
@@ -12502,7 +12481,7 @@ bxe_initial_phy_init(struct bxe_softc *sc,
rc = elink_phy_init(&sc->link_params, &sc->link_vars);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
bxe_calc_fc_adv(sc);
@@ -12546,6 +12525,7 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
BLOGE(sc, "Failed to allocate temp mcast list\n");
return (-1);
}
+ bzero(mta, (sizeof(unsigned char) * ETHER_ADDR_LEN * mc_count));
mc_mac = malloc(sizeof(*mc_mac) * mc_count, M_DEVBUF,
(M_NOWAIT | M_ZERO));
@@ -12554,12 +12534,13 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
BLOGE(sc, "Failed to allocate temp mcast list\n");
return (-1);
}
+ bzero(mc_mac, (sizeof(*mc_mac) * mc_count));
if_multiaddr_array(ifp, mta, &mcnt, mc_count); /* mta and mcnt not expected
to be different */
for(i=0; i< mcnt; i++) {
- bcopy((mta + (i * ETHER_ADDR_LEN)), mc_mac->mac, ETHER_ADDR_LEN);
+ mc_mac->mac = (uint8_t *)(mta + (i * ETHER_ADDR_LEN));
ECORE_LIST_PUSH_TAIL(&mc_mac->link, &p->mcast_list);
BLOGD(sc, DBG_LOAD,
@@ -12604,6 +12585,7 @@ bxe_set_mc_list(struct bxe_softc *sc)
rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
if (rc < 0) {
BLOGE(sc, "Failed to clear multicast configuration: %d\n", rc);
+ BXE_MCAST_UNLOCK(sc);
return (rc);
}
@@ -12694,18 +12676,13 @@ bxe_set_uc_list(struct bxe_softc *sc)
}
static void
-bxe_handle_rx_mode_tq(void *context,
- int pending)
+bxe_set_rx_mode(struct bxe_softc *sc)
{
- struct bxe_softc *sc = (struct bxe_softc *)context;
if_t ifp = sc->ifp;
uint32_t rx_mode = BXE_RX_MODE_NORMAL;
- BXE_CORE_LOCK(sc);
-
if (sc->state != BXE_STATE_OPEN) {
BLOGD(sc, DBG_SP, "state is %x, returning\n", sc->state);
- BXE_CORE_UNLOCK(sc);
return;
}
@@ -12747,7 +12724,6 @@ bxe_handle_rx_mode_tq(void *context,
if (bxe_test_bit(ECORE_FILTER_RX_MODE_PENDING, &sc->sp_state)) {
BLOGD(sc, DBG_LOAD, "Scheduled setting rx_mode with ECORE...\n");
bxe_set_bit(ECORE_FILTER_RX_MODE_SCHED, &sc->sp_state);
- BXE_CORE_UNLOCK(sc);
return;
}
@@ -12767,14 +12743,8 @@ bxe_handle_rx_mode_tq(void *context,
}
#endif
- BXE_CORE_UNLOCK(sc);
}
-static void
-bxe_set_rx_mode(struct bxe_softc *sc)
-{
- taskqueue_enqueue(sc->rx_mode_tq, &sc->rx_mode_tq_task);
-}
/* update flags in shmem */
static void
@@ -12845,13 +12815,13 @@ bxe_periodic_callout_func(void *xsc)
*/
mb();
if (sc->port.pmf) {
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
elink_period_func(&sc->link_params, &sc->link_vars);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
}
}
- if (IS_PF(sc) && !BXE_NOMCP(sc)) {
+ if (IS_PF(sc) && !(sc->flags & BXE_NO_PULSE)) {
int mb_idx = SC_FW_MB_IDX(sc);
uint32_t drv_pulse;
uint32_t mcp_pulse;
@@ -12995,6 +12965,11 @@ bxe_nic_load(struct bxe_softc *sc,
}
}
+ /* set ALWAYS_ALIVE bit in shmem */
+ sc->fw_drv_pulse_wr_seq |= DRV_PULSE_ALWAYS_ALIVE;
+ bxe_drv_pulse(sc);
+ sc->flags |= BXE_NO_PULSE;
+
/* attach interrupts */
if (bxe_interrupt_attach(sc) != 0) {
sc->state = BXE_STATE_CLOSED;
@@ -16750,10 +16725,10 @@ bxe_common_init_phy(struct bxe_softc *sc)
shmem2_base[1] = SHMEM2_RD(sc, other_shmem2_base_addr);
}
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
elink_common_init_phy(sc, shmem_base, shmem2_base,
sc->devinfo.chip_id, 0);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
}
static void
@@ -18630,9 +18605,9 @@ static void
bxe_link_reset(struct bxe_softc *sc)
{
if (!BXE_NOMCP(sc)) {
- BXE_PHY_LOCK(sc);
+ bxe_acquire_phy_lock(sc);
elink_lfa_reset(&sc->link_params, &sc->link_vars);
- BXE_PHY_UNLOCK(sc);
+ bxe_release_phy_lock(sc);
} else {
if (!CHIP_REV_IS_SLOW(sc)) {
BLOGW(sc, "Bootcode is missing - cannot reset link\n");
diff --git a/sys/dev/bxe/bxe.h b/sys/dev/bxe/bxe.h
index eb695d0..5fb31a3 100644
--- a/sys/dev/bxe/bxe.h
+++ b/sys/dev/bxe/bxe.h
@@ -1400,6 +1400,7 @@ struct bxe_softc {
//#define BXE_SAFC_TX_FLAG 0x00000400
#define BXE_MF_FUNC_DIS 0x00000800
#define BXE_TX_SWITCHING 0x00001000
+#define BXE_NO_PULSE 0x00002000
unsigned long debug; /* per-instance debug logging config */
@@ -1429,11 +1430,6 @@ struct bxe_softc {
struct taskqueue *sp_tq;
char sp_tq_name[32];
- /* set rx_mode asynchronous taskqueue */
- struct task rx_mode_tq_task;
- struct taskqueue *rx_mode_tq;
- char rx_mode_tq_name[32];
-
struct bxe_fastpath fp[MAX_RSS_CHAINS];
struct bxe_sp_objs sp_objs[MAX_RSS_CHAINS];
diff --git a/sys/dev/bxe/ecore_reg.h b/sys/dev/bxe/ecore_reg.h
index b256e78..850390c 100644
--- a/sys/dev/bxe/ecore_reg.h
+++ b/sys/dev/bxe/ecore_reg.h
@@ -1965,6 +1965,7 @@ __FBSDID("$FreeBSD$");
#define MISC_SPIO_SPIO5 0x20
#define HW_LOCK_MAX_RESOURCE_VALUE 31
#define HW_LOCK_RESOURCE_DRV_FLAGS 10
+#define HW_LOCK_RESOURCE_MDIO 0
#define HW_LOCK_RESOURCE_GPIO 1
#define HW_LOCK_RESOURCE_NVRAM 12
#define HW_LOCK_RESOURCE_PORT0_ATT_MASK 3
diff --git a/sys/dev/bxe/ecore_sp.c b/sys/dev/bxe/ecore_sp.c
index b716085..2685453 100644
--- a/sys/dev/bxe/ecore_sp.c
+++ b/sys/dev/bxe/ecore_sp.c
@@ -474,7 +474,7 @@ static void __ecore_vlan_mac_h_exec_pending(struct bxe_softc *sc,
o->head_exe_request = FALSE;
o->saved_ramrod_flags = 0;
rc = ecore_exe_queue_step(sc, &o->exe_queue, &ramrod_flags);
- if (rc != ECORE_SUCCESS) {
+ if ((rc != ECORE_SUCCESS) && (rc != ECORE_PENDING)) {
ECORE_ERR("execution of pending commands failed with rc %d\n",
rc);
#ifdef ECORE_STOP_ON_ERROR
diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h
index 2655dae..c178297 100644
--- a/sys/dev/cxgbe/adapter.h
+++ b/sys/dev/cxgbe/adapter.h
@@ -206,6 +206,9 @@ enum {
INTR_OFLD_RXQ = (1 << 5), /* All TOE rxq's take interrupts */
INTR_NM_RXQ = (1 << 6), /* All netmap rxq's take interrupts */
INTR_ALL = (INTR_RXQ | INTR_OFLD_RXQ | INTR_NM_RXQ),
+
+ /* adapter debug_flags */
+ DF_DUMP_MBOX = (1 << 0),
};
#define IS_DOOMED(pi) ((pi)->flags & DOOMED)
@@ -762,6 +765,7 @@ struct adapter {
int active_ulds; /* ULDs activated on this adapter */
#endif
int flags;
+ int debug_flags;
char ifp_lockname[16];
struct mtx ifp_lock;
@@ -846,6 +850,24 @@ struct adapter {
#define TXQ_LOCK_ASSERT_OWNED(txq) EQ_LOCK_ASSERT_OWNED(&(txq)->eq)
#define TXQ_LOCK_ASSERT_NOTOWNED(txq) EQ_LOCK_ASSERT_NOTOWNED(&(txq)->eq)
+#define CH_DUMP_MBOX(sc, mbox, data_reg) \
+ do { \
+ if (sc->debug_flags & DF_DUMP_MBOX) { \
+ log(LOG_NOTICE, \
+ "%s mbox %u: %016llx %016llx %016llx %016llx " \
+ "%016llx %016llx %016llx %016llx\n", \
+ device_get_nameunit(sc->dev), mbox, \
+ (unsigned long long)t4_read_reg64(sc, data_reg), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 8), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 16), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 24), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 32), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 40), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 48), \
+ (unsigned long long)t4_read_reg64(sc, data_reg + 56)); \
+ } \
+ } while (0)
+
#define for_each_txq(pi, iter, q) \
for (q = &pi->adapter->sge.txq[pi->first_txq], iter = 0; \
iter < pi->ntxq; ++iter, ++q)
diff --git a/sys/dev/cxgbe/common/t4_hw.c b/sys/dev/cxgbe/common/t4_hw.c
index e2efb78..d140276 100644
--- a/sys/dev/cxgbe/common/t4_hw.c
+++ b/sys/dev/cxgbe/common/t4_hw.c
@@ -262,6 +262,8 @@ int t4_wr_mbox_meat(struct adapter *adap, int mbox, const void *cmd, int size,
for (i = 0; i < size; i += 8, p++)
t4_write_reg64(adap, data_reg + i, be64_to_cpu(*p));
+ CH_DUMP_MBOX(adap, mbox, data_reg);
+
t4_write_reg(adap, ctl_reg, F_MBMSGVALID | V_MBOWNER(X_MBOWNER_FW));
t4_read_reg(adap, ctl_reg); /* flush write */
@@ -287,6 +289,8 @@ int t4_wr_mbox_meat(struct adapter *adap, int mbox, const void *cmd, int size,
continue;
}
+ CH_DUMP_MBOX(adap, mbox, data_reg);
+
res = t4_read_reg64(adap, data_reg);
if (G_FW_CMD_OP(res >> 32) == FW_DEBUG_CMD) {
fw_asrt(adap, data_reg);
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index b164cce..5c88059 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -585,6 +585,9 @@ t4_attach(device_t dev)
sc = device_get_softc(dev);
sc->dev = dev;
+#ifdef INVARIANTS
+ sc->debug_flags = DF_DUMP_MBOX;
+#endif
pci_enable_busmaster(dev);
if (pci_find_cap(dev, PCIY_EXPRESS, &i) == 0) {
@@ -4603,6 +4606,9 @@ t4_sysctls(struct adapter *sc)
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "lro_timeout", CTLFLAG_RW,
&sc->lro_timeout, 0, "lro inactive-flush timeout (in us)");
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "debug_flags", CTLFLAG_RW,
+ &sc->debug_flags, 0, "flags to enable runtime debugging");
+
#ifdef SBUF_DRAIN
/*
* dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload.
diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c
index a473031..356ccc5 100644
--- a/sys/dev/drm2/i915/i915_gem.c
+++ b/sys/dev/drm2/i915/i915_gem.c
@@ -1874,7 +1874,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data,
map = &p->p_vmspace->vm_map;
size = round_page(args->size);
PROC_LOCK(p);
- if (map->size + size > lim_cur(p, RLIMIT_VMEM)) {
+ if (map->size + size > lim_cur_proc(p, RLIMIT_VMEM)) {
PROC_UNLOCK(p);
error = -ENOMEM;
goto out;
@@ -3175,9 +3175,6 @@ i915_gem_wire_page(vm_object_t object, vm_pindex_t pindex, bool *fresh)
if (m->valid != VM_PAGE_BITS_ALL) {
if (vm_pager_has_page(object, pindex, NULL, NULL)) {
rv = vm_pager_get_pages(object, &m, 1, 0);
- m = vm_page_lookup(object, pindex);
- if (m == NULL)
- return (NULL);
if (rv != VM_PAGER_OK) {
vm_page_lock(m);
vm_page_free(m);
diff --git a/sys/dev/drm2/ttm/ttm_page_alloc.c b/sys/dev/drm2/ttm/ttm_page_alloc.c
index 246afdf..75abd10 100644
--- a/sys/dev/drm2/ttm/ttm_page_alloc.c
+++ b/sys/dev/drm2/ttm/ttm_page_alloc.c
@@ -155,6 +155,66 @@ ttm_caching_state_to_vm(enum ttm_caching_state cstate)
panic("caching state %d\n", cstate);
}
+static vm_page_t
+ttm_vm_page_alloc_dma32(int req, vm_memattr_t memattr)
+{
+ vm_page_t p;
+ int tries;
+
+ for (tries = 0; ; tries++) {
+ p = vm_page_alloc_contig(NULL, 0, req, 1, 0, 0xffffffff,
+ PAGE_SIZE, 0, memattr);
+ if (p != NULL || tries > 2)
+ return (p);
+
+ /*
+ * Before growing the cache see if this is just a normal
+ * memory shortage.
+ */
+ VM_WAIT;
+ vm_pageout_grow_cache(tries, 0, 0xffffffff);
+ }
+}
+
+static vm_page_t
+ttm_vm_page_alloc_any(int req, vm_memattr_t memattr)
+{
+ vm_page_t p;
+
+ while (1) {
+ p = vm_page_alloc(NULL, 0, req);
+ if (p != NULL)
+ break;
+ VM_WAIT;
+ }
+ pmap_page_set_memattr(p, memattr);
+ return (p);
+}
+
+static vm_page_t
+ttm_vm_page_alloc(int flags, enum ttm_caching_state cstate)
+{
+ vm_page_t p;
+ vm_memattr_t memattr;
+ int req;
+
+ memattr = ttm_caching_state_to_vm(cstate);
+ req = VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_NOOBJ;
+ if ((flags & TTM_PAGE_FLAG_ZERO_ALLOC) != 0)
+ req |= VM_ALLOC_ZERO;
+
+ if ((flags & TTM_PAGE_FLAG_DMA32) != 0)
+ p = ttm_vm_page_alloc_dma32(req, memattr);
+ else
+ p = ttm_vm_page_alloc_any(req, memattr);
+
+ if (p != NULL) {
+ p->oflags &= ~VPO_UNMANAGED;
+ p->flags |= PG_FICTITIOUS;
+ }
+ return (p);
+}
+
static void ttm_pool_kobj_release(struct ttm_pool_manager *m)
{
@@ -461,14 +521,6 @@ static void ttm_handle_caching_state_failure(struct pglist *pages,
}
}
-static vm_paddr_t
-ttm_alloc_high_bound(int ttm_alloc_flags)
-{
-
- return ((ttm_alloc_flags & TTM_PAGE_FLAG_DMA32) ? 0xffffffff :
- VM_MAX_ADDRESS);
-}
-
/**
* Allocate new pages with correct caching.
*
@@ -481,32 +533,17 @@ static int ttm_alloc_new_pages(struct pglist *pages, int ttm_alloc_flags,
vm_page_t *caching_array;
vm_page_t p;
int r = 0;
- unsigned i, cpages, aflags;
+ unsigned i, cpages;
unsigned max_cpages = min(count,
(unsigned)(PAGE_SIZE/sizeof(vm_page_t)));
- int tries;
- aflags = VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_NOOBJ |
- ((ttm_alloc_flags & TTM_PAGE_FLAG_ZERO_ALLOC) != 0 ?
- VM_ALLOC_ZERO : 0);
-
/* allocate array for page caching change */
caching_array = malloc(max_cpages * sizeof(vm_page_t), M_TEMP,
M_WAITOK | M_ZERO);
for (i = 0, cpages = 0; i < count; ++i) {
- tries = 0;
-retry:
- p = vm_page_alloc_contig(NULL, 0, aflags, 1, 0,
- ttm_alloc_high_bound(ttm_alloc_flags),
- PAGE_SIZE, 0, ttm_caching_state_to_vm(cstate));
+ p = ttm_vm_page_alloc(ttm_alloc_flags, cstate);
if (!p) {
- if (tries < 3) {
- vm_pageout_grow_cache(tries, 0,
- ttm_alloc_high_bound(ttm_alloc_flags));
- tries++;
- goto retry;
- }
printf("[TTM] Unable to get page %u\n", i);
/* store already allocated pages in the pool after
@@ -522,8 +559,6 @@ retry:
r = -ENOMEM;
goto out;
}
- p->oflags &= ~VPO_UNMANAGED;
- p->flags |= PG_FICTITIOUS;
#ifdef CONFIG_HIGHMEM /* KIB: nop */
/* gfp flags of highmem page should never be dma32 so we
@@ -705,34 +740,18 @@ static int ttm_get_pages(vm_page_t *pages, unsigned npages, int flags,
struct ttm_page_pool *pool = ttm_get_pool(flags, cstate);
struct pglist plist;
vm_page_t p = NULL;
- int gfp_flags, aflags;
+ int gfp_flags;
unsigned count;
int r;
- int tries;
-
- aflags = VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
- ((flags & TTM_PAGE_FLAG_ZERO_ALLOC) != 0 ? VM_ALLOC_ZERO : 0);
/* No pool for cached pages */
if (pool == NULL) {
for (r = 0; r < npages; ++r) {
- tries = 0;
-retry:
- p = vm_page_alloc_contig(NULL, 0, aflags, 1, 0,
- ttm_alloc_high_bound(flags), PAGE_SIZE,
- 0, ttm_caching_state_to_vm(cstate));
+ p = ttm_vm_page_alloc(flags, cstate);
if (!p) {
- if (tries < 3) {
- vm_pageout_grow_cache(tries, 0,
- ttm_alloc_high_bound(flags));
- tries++;
- goto retry;
- }
printf("[TTM] Unable to allocate page\n");
return -ENOMEM;
}
- p->oflags &= ~VPO_UNMANAGED;
- p->flags |= PG_FICTITIOUS;
pages[r] = p;
}
return 0;
diff --git a/sys/dev/filemon/filemon.h b/sys/dev/filemon/filemon.h
index 95d2ef3..b3fa061 100644
--- a/sys/dev/filemon/filemon.h
+++ b/sys/dev/filemon/filemon.h
@@ -30,5 +30,5 @@
#define FILEMON_SET_FD _IOWR('S', 1, int)
#define FILEMON_SET_PID _IOWR('S', 2, pid_t)
-#define FILEMON_VERSION 4 /* output format
+#define FILEMON_VERSION 5 /* output format
(bump when adding record types) */
diff --git a/sys/dev/filemon/filemon_wrapper.c b/sys/dev/filemon/filemon_wrapper.c
index 2c6f20e..4a1259a 100644
--- a/sys/dev/filemon/filemon_wrapper.c
+++ b/sys/dev/filemon/filemon_wrapper.c
@@ -28,6 +28,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <sys/sx.h>
+
#include "opt_compat.h"
#if __FreeBSD_version > 800032
@@ -84,13 +86,17 @@ filemon_pid_check(struct proc *p)
{
struct filemon *filemon;
- while (p->p_pptr) {
+ sx_slock(&proctree_lock);
+ while (p != initproc) {
TAILQ_FOREACH(filemon, &filemons_inuse, link) {
- if (p->p_pid == filemon->pid)
+ if (p->p_pid == filemon->pid) {
+ sx_sunlock(&proctree_lock);
return (filemon);
+ }
}
- p = p->p_pptr;
+ p = proc_realparent(p);
}
+ sx_sunlock(&proctree_lock);
return (NULL);
}
@@ -316,6 +322,68 @@ filemon_wrapper_open(struct thread *td, struct open_args *uap)
}
static int
+filemon_wrapper_openat(struct thread *td, struct openat_args *uap)
+{
+ int ret;
+ size_t done;
+ size_t len;
+ struct filemon *filemon;
+
+ if ((ret = sys_openat(td, uap)) == 0) {
+ /* Grab a read lock on the filemon inuse list. */
+ filemon_lock_read();
+
+ if ((filemon = filemon_pid_check(curproc)) != NULL) {
+ /* Lock the found filemon structure. */
+ filemon_filemon_lock(filemon);
+
+ copyinstr(uap->path, filemon->fname1,
+ sizeof(filemon->fname1), &done);
+
+ filemon->fname2[0] = '\0';
+ if (filemon->fname1[0] != '/' && uap->fd != AT_FDCWD) {
+ /*
+ * rats - we cannot do too much about this.
+ * the trace should show a dir we read
+ * recently.. output an A record as a clue
+ * until we can do better.
+ */
+ len = snprintf(filemon->msgbufr,
+ sizeof(filemon->msgbufr), "A %d %s\n",
+ curproc->p_pid, filemon->fname1);
+ filemon_output(filemon, filemon->msgbufr, len);
+ }
+ if (uap->flag & O_RDWR) {
+ /*
+ * We'll get the W record below, but need
+ * to also output an R to distingish from
+ * O_WRONLY.
+ */
+ len = snprintf(filemon->msgbufr,
+ sizeof(filemon->msgbufr), "R %d %s%s\n",
+ curproc->p_pid, filemon->fname2, filemon->fname1);
+ filemon_output(filemon, filemon->msgbufr, len);
+ }
+
+
+ len = snprintf(filemon->msgbufr,
+ sizeof(filemon->msgbufr), "%c %d %s%s\n",
+ (uap->flag & O_ACCMODE) ? 'W':'R',
+ curproc->p_pid, filemon->fname2, filemon->fname1);
+ filemon_output(filemon, filemon->msgbufr, len);
+
+ /* Unlock the found filemon structure. */
+ filemon_filemon_unlock(filemon);
+ }
+
+ /* Release the read lock. */
+ filemon_unlock_read();
+ }
+
+ return (ret);
+}
+
+static int
filemon_wrapper_rename(struct thread *td, struct rename_args *uap)
{
int ret;
@@ -669,6 +737,7 @@ filemon_wrapper_install(void)
sv_table[SYS_execve].sy_call = (sy_call_t *) filemon_wrapper_execve;
sv_table[SYS_fork].sy_call = (sy_call_t *) filemon_wrapper_fork;
sv_table[SYS_open].sy_call = (sy_call_t *) filemon_wrapper_open;
+ sv_table[SYS_openat].sy_call = (sy_call_t *) filemon_wrapper_openat;
sv_table[SYS_rename].sy_call = (sy_call_t *) filemon_wrapper_rename;
sv_table[SYS_stat].sy_call = (sy_call_t *) filemon_wrapper_stat;
sv_table[SYS_unlink].sy_call = (sy_call_t *) filemon_wrapper_unlink;
@@ -687,6 +756,7 @@ filemon_wrapper_install(void)
sv_table[FREEBSD32_SYS_freebsd32_execve].sy_call = (sy_call_t *) filemon_wrapper_freebsd32_execve;
sv_table[FREEBSD32_SYS_fork].sy_call = (sy_call_t *) filemon_wrapper_fork;
sv_table[FREEBSD32_SYS_open].sy_call = (sy_call_t *) filemon_wrapper_open;
+ sv_table[FREEBSD32_SYS_openat].sy_call = (sy_call_t *) filemon_wrapper_openat;
sv_table[FREEBSD32_SYS_rename].sy_call = (sy_call_t *) filemon_wrapper_rename;
sv_table[FREEBSD32_SYS_freebsd32_stat].sy_call = (sy_call_t *) filemon_wrapper_freebsd32_stat;
sv_table[FREEBSD32_SYS_unlink].sy_call = (sy_call_t *) filemon_wrapper_unlink;
@@ -713,6 +783,7 @@ filemon_wrapper_deinstall(void)
sv_table[SYS_execve].sy_call = (sy_call_t *)sys_execve;
sv_table[SYS_fork].sy_call = (sy_call_t *)sys_fork;
sv_table[SYS_open].sy_call = (sy_call_t *)sys_open;
+ sv_table[SYS_openat].sy_call = (sy_call_t *)sys_openat;
sv_table[SYS_rename].sy_call = (sy_call_t *)sys_rename;
sv_table[SYS_stat].sy_call = (sy_call_t *)sys_stat;
sv_table[SYS_unlink].sy_call = (sy_call_t *)sys_unlink;
@@ -731,6 +802,7 @@ filemon_wrapper_deinstall(void)
sv_table[FREEBSD32_SYS_freebsd32_execve].sy_call = (sy_call_t *)freebsd32_execve;
sv_table[FREEBSD32_SYS_fork].sy_call = (sy_call_t *)sys_fork;
sv_table[FREEBSD32_SYS_open].sy_call = (sy_call_t *)sys_open;
+ sv_table[FREEBSD32_SYS_openat].sy_call = (sy_call_t *)sys_openat;
sv_table[FREEBSD32_SYS_rename].sy_call = (sy_call_t *)sys_rename;
sv_table[FREEBSD32_SYS_freebsd32_stat].sy_call = (sy_call_t *)freebsd32_stat;
sv_table[FREEBSD32_SYS_unlink].sy_call = (sy_call_t *)sys_unlink;
diff --git a/sys/dev/gpio/ofw_gpiobus.c b/sys/dev/gpio/ofw_gpiobus.c
index 6646b7d..1dbb526 100644
--- a/sys/dev/gpio/ofw_gpiobus.c
+++ b/sys/dev/gpio/ofw_gpiobus.c
@@ -56,6 +56,14 @@ ofw_gpiobus_add_fdt_child(device_t bus, const char *drvname, phandle_t child)
struct ofw_gpiobus_devinfo *dinfo;
/*
+ * Check to see if we already have a child for @p child, and if so
+ * return it.
+ */
+ childdev = ofw_bus_find_child_device_by_phandle(bus, child);
+ if (childdev != NULL)
+ return (childdev);
+
+ /*
* Set up the GPIO child and OFW bus layer devinfo and add it to bus.
*/
childdev = device_add_child(bus, drvname, -1);
diff --git a/sys/dev/hwpmc/hwpmc_armv7.c b/sys/dev/hwpmc/hwpmc_armv7.c
index 66d4971..469eca8 100644
--- a/sys/dev/hwpmc/hwpmc_armv7.c
+++ b/sys/dev/hwpmc/hwpmc_armv7.c
@@ -39,9 +39,6 @@ __FBSDID("$FreeBSD$");
#include <machine/pmc_mdep.h>
#include <machine/cpu.h>
-#define CPU_ID_CORTEX_VER_MASK 0xff
-#define CPU_ID_CORTEX_VER_SHIFT 4
-
static int armv7_npmcs;
struct armv7_event_code_map {
@@ -49,49 +46,11 @@ struct armv7_event_code_map {
uint8_t pe_code;
};
-const struct armv7_event_code_map armv7_event_codes[] = {
- { PMC_EV_ARMV7_PMNC_SW_INCR, 0x00 },
- { PMC_EV_ARMV7_L1_ICACHE_REFILL, 0x01 },
- { PMC_EV_ARMV7_ITLB_REFILL, 0x02 },
- { PMC_EV_ARMV7_L1_DCACHE_REFILL, 0x03 },
- { PMC_EV_ARMV7_L1_DCACHE_ACCESS, 0x04 },
- { PMC_EV_ARMV7_DTLB_REFILL, 0x05 },
- { PMC_EV_ARMV7_MEM_READ, 0x06 },
- { PMC_EV_ARMV7_MEM_WRITE, 0x07 },
- { PMC_EV_ARMV7_INSTR_EXECUTED, 0x08 },
- { PMC_EV_ARMV7_EXC_TAKEN, 0x09 },
- { PMC_EV_ARMV7_EXC_EXECUTED, 0x0A },
- { PMC_EV_ARMV7_CID_WRITE, 0x0B },
- { PMC_EV_ARMV7_PC_WRITE, 0x0C },
- { PMC_EV_ARMV7_PC_IMM_BRANCH, 0x0D },
- { PMC_EV_ARMV7_PC_PROC_RETURN, 0x0E },
- { PMC_EV_ARMV7_MEM_UNALIGNED_ACCESS, 0x0F },
- { PMC_EV_ARMV7_PC_BRANCH_MIS_PRED, 0x10 },
- { PMC_EV_ARMV7_CLOCK_CYCLES, 0x11 },
- { PMC_EV_ARMV7_PC_BRANCH_PRED, 0x12 },
- { PMC_EV_ARMV7_MEM_ACCESS, 0x13 },
- { PMC_EV_ARMV7_L1_ICACHE_ACCESS, 0x14 },
- { PMC_EV_ARMV7_L1_DCACHE_WB, 0x15 },
- { PMC_EV_ARMV7_L2_CACHE_ACCESS, 0x16 },
- { PMC_EV_ARMV7_L2_CACHE_REFILL, 0x17 },
- { PMC_EV_ARMV7_L2_CACHE_WB, 0x18 },
- { PMC_EV_ARMV7_BUS_ACCESS, 0x19 },
- { PMC_EV_ARMV7_MEM_ERROR, 0x1A },
- { PMC_EV_ARMV7_INSTR_SPEC, 0x1B },
- { PMC_EV_ARMV7_TTBR_WRITE, 0x1C },
- { PMC_EV_ARMV7_BUS_CYCLES, 0x1D },
- { PMC_EV_ARMV7_CPU_CYCLES, 0xFF },
-};
-
-const int armv7_event_codes_size =
- sizeof(armv7_event_codes) / sizeof(armv7_event_codes[0]);
-
/*
* Per-processor information.
*/
struct armv7_cpu {
struct pmc_hw *pc_armv7pmcs;
- int cortex_ver;
};
static struct armv7_cpu **armv7_pcpu;
@@ -173,10 +132,10 @@ static int
armv7_allocate_pmc(int cpu, int ri, struct pmc *pm,
const struct pmc_op_pmcallocate *a)
{
- uint32_t caps, config;
struct armv7_cpu *pac;
enum pmc_event pe;
- int i;
+ uint32_t config;
+ uint32_t caps;
KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
("[armv7,%d] illegal CPU value %d", __LINE__, cpu));
@@ -190,18 +149,10 @@ armv7_allocate_pmc(int cpu, int ri, struct pmc *pm,
return (EINVAL);
pe = a->pm_ev;
- for (i = 0; i < armv7_event_codes_size; i++) {
- if (armv7_event_codes[i].pe_ev == pe) {
- config = armv7_event_codes[i].pe_code;
- break;
- }
- }
- if (i == armv7_event_codes_size)
- return EINVAL;
-
+ config = (pe & EVENT_ID_MASK);
pm->pm_md.pm_armv7.pm_armv7_evsel = config;
- PMCDBG2(MDP,ALL,2,"armv7-allocate ri=%d -> config=0x%x", ri, config);
+ PMCDBG2(MDP, ALL, 2, "armv7-allocate ri=%d -> config=0x%x", ri, config);
return 0;
}
@@ -225,7 +176,7 @@ armv7_read_pmc(int cpu, int ri, pmc_value_t *v)
else
tmp = armv7_pmcn_read(ri);
- PMCDBG2(MDP,REA,2,"armv7-read id=%d -> %jd", ri, tmp);
+ PMCDBG2(MDP, REA, 2, "armv7-read id=%d -> %jd", ri, tmp);
if (PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm)))
*v = ARMV7_PERFCTR_VALUE_TO_RELOAD_COUNT(tmp);
else
@@ -249,7 +200,7 @@ armv7_write_pmc(int cpu, int ri, pmc_value_t v)
if (PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm)))
v = ARMV7_RELOAD_COUNT_TO_PERFCTR_VALUE(v);
- PMCDBG3(MDP,WRI,1,"armv7-write cpu=%d ri=%d v=%jx", cpu, ri, v);
+ PMCDBG3(MDP, WRI, 1, "armv7-write cpu=%d ri=%d v=%jx", cpu, ri, v);
if (pm->pm_md.pm_armv7.pm_armv7_evsel == 0xFF)
cp15_pmccntr_set(v);
@@ -264,7 +215,7 @@ armv7_config_pmc(int cpu, int ri, struct pmc *pm)
{
struct pmc_hw *phw;
- PMCDBG3(MDP,CFG,1, "cpu=%d ri=%d pm=%p", cpu, ri, pm);
+ PMCDBG3(MDP, CFG, 1, "cpu=%d ri=%d pm=%p", cpu, ri, pm);
KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
("[armv7,%d] illegal CPU value %d", __LINE__, cpu));
@@ -457,20 +408,15 @@ armv7_pcpu_init(struct pmc_mdep *md, int cpu)
struct pmc_cpu *pc;
uint32_t pmnc;
int first_ri;
- int cpuid;
int i;
KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
("[armv7,%d] wrong cpu number %d", __LINE__, cpu));
- PMCDBG1(MDP,INI,1,"armv7-init cpu=%d", cpu);
+ PMCDBG1(MDP, INI, 1, "armv7-init cpu=%d", cpu);
armv7_pcpu[cpu] = pac = malloc(sizeof(struct armv7_cpu), M_PMC,
M_WAITOK|M_ZERO);
- cpuid = cpu_ident();
- pac->cortex_ver = (cpuid >> CPU_ID_CORTEX_VER_SHIFT) & \
- CPU_ID_CORTEX_VER_MASK;
-
pac->pc_armv7pmcs = malloc(sizeof(struct pmc_hw) * armv7_npmcs,
M_PMC, M_WAITOK|M_ZERO);
pc = pmc_pcpu[cpu];
@@ -509,14 +455,15 @@ pmc_armv7_initialize()
{
struct pmc_mdep *pmc_mdep;
struct pmc_classdep *pcd;
+ int idcode;
int reg;
reg = cp15_pmcr_get();
-
armv7_npmcs = (reg >> ARMV7_PMNC_N_SHIFT) & \
ARMV7_PMNC_N_MASK;
+ idcode = (reg & ARMV7_IDCODE_MASK) >> ARMV7_IDCODE_SHIFT;
- PMCDBG1(MDP,INI,1,"armv7-init npmcs=%d", armv7_npmcs);
+ PMCDBG1(MDP, INI, 1, "armv7-init npmcs=%d", armv7_npmcs);
/*
* Allocate space for pointers to PMC HW descriptors and for
@@ -527,7 +474,20 @@ pmc_armv7_initialize()
/* Just one class */
pmc_mdep = pmc_mdep_alloc(1);
- pmc_mdep->pmd_cputype = PMC_CPU_ARMV7;
+
+ switch (idcode) {
+ case ARMV7_IDCODE_CORTEX_A9:
+ pmc_mdep->pmd_cputype = PMC_CPU_ARMV7_CORTEX_A9;
+ break;
+ default:
+ case ARMV7_IDCODE_CORTEX_A8:
+ /*
+ * On A8 we implemented common events only,
+ * so use it for the rest of machines.
+ */
+ pmc_mdep->pmd_cputype = PMC_CPU_ARMV7_CORTEX_A8;
+ break;
+ }
pcd = &pmc_mdep->pmd_classdep[PMC_MDEP_CLASS_INDEX_ARMV7];
pcd->pcd_caps = ARMV7_PMC_CAPS;
diff --git a/sys/dev/hwpmc/hwpmc_armv7.h b/sys/dev/hwpmc/hwpmc_armv7.h
index 35f7d5b..5282345f 100644
--- a/sys/dev/hwpmc/hwpmc_armv7.h
+++ b/sys/dev/hwpmc/hwpmc_armv7.h
@@ -48,9 +48,14 @@
#define ARMV7_PMNC_N_SHIFT 11 /* Number of counters implemented */
#define ARMV7_PMNC_N_MASK 0x1f
#define ARMV7_PMNC_MASK 0x3f /* Writable bits */
+#define ARMV7_IDCODE_SHIFT 16 /* Identification code */
+#define ARMV7_IDCODE_MASK (0xff << ARMV7_IDCODE_SHIFT)
+#define ARMV7_IDCODE_CORTEX_A9 9
+#define ARMV7_IDCODE_CORTEX_A8 8
#define ARMV7_RELOAD_COUNT_TO_PERFCTR_VALUE(R) (-(R))
#define ARMV7_PERFCTR_VALUE_TO_RELOAD_COUNT(P) (-(P))
+#define EVENT_ID_MASK 0xFF
#ifdef _KERNEL
/* MD extension for 'struct pmc' */
diff --git a/sys/dev/hwpmc/pmc_events.h b/sys/dev/hwpmc/pmc_events.h
index 467367f..96dc900 100644
--- a/sys/dev/hwpmc/pmc_events.h
+++ b/sys/dev/hwpmc/pmc_events.h
@@ -4766,41 +4766,342 @@ __PMC_EV_ALIAS("IMPC_C0H_TRK_REQUEST.ALL", UCP_EVENT_84H_01H)
* ARMv7 Events
*/
-#define __PMC_EV_ARMV7() \
- __PMC_EV(ARMV7, PMNC_SW_INCR) \
- __PMC_EV(ARMV7, L1_ICACHE_REFILL) \
- __PMC_EV(ARMV7, ITLB_REFILL) \
- __PMC_EV(ARMV7, L1_DCACHE_REFILL) \
- __PMC_EV(ARMV7, L1_DCACHE_ACCESS) \
- __PMC_EV(ARMV7, DTLB_REFILL) \
- __PMC_EV(ARMV7, MEM_READ) \
- __PMC_EV(ARMV7, MEM_WRITE) \
- __PMC_EV(ARMV7, INSTR_EXECUTED) \
- __PMC_EV(ARMV7, EXC_TAKEN) \
- __PMC_EV(ARMV7, EXC_EXECUTED) \
- __PMC_EV(ARMV7, CID_WRITE) \
- __PMC_EV(ARMV7, PC_WRITE) \
- __PMC_EV(ARMV7, PC_IMM_BRANCH) \
- __PMC_EV(ARMV7, PC_PROC_RETURN) \
- __PMC_EV(ARMV7, MEM_UNALIGNED_ACCESS) \
- __PMC_EV(ARMV7, PC_BRANCH_MIS_PRED) \
- __PMC_EV(ARMV7, CLOCK_CYCLES) \
- __PMC_EV(ARMV7, PC_BRANCH_PRED) \
- __PMC_EV(ARMV7, MEM_ACCESS) \
- __PMC_EV(ARMV7, L1_ICACHE_ACCESS) \
- __PMC_EV(ARMV7, L1_DCACHE_WB) \
- __PMC_EV(ARMV7, L2_CACHE_ACCESS) \
- __PMC_EV(ARMV7, L2_CACHE_REFILL) \
- __PMC_EV(ARMV7, L2_CACHE_WB) \
- __PMC_EV(ARMV7, BUS_ACCESS) \
- __PMC_EV(ARMV7, MEM_ERROR) \
- __PMC_EV(ARMV7, INSTR_SPEC) \
- __PMC_EV(ARMV7, TTBR_WRITE) \
- __PMC_EV(ARMV7, BUS_CYCLES) \
- __PMC_EV(ARMV7, CPU_CYCLES)
+#define __PMC_EV_ARMV7() \
+ __PMC_EV(ARMV7, EVENT_00H) \
+ __PMC_EV(ARMV7, EVENT_01H) \
+ __PMC_EV(ARMV7, EVENT_02H) \
+ __PMC_EV(ARMV7, EVENT_03H) \
+ __PMC_EV(ARMV7, EVENT_04H) \
+ __PMC_EV(ARMV7, EVENT_05H) \
+ __PMC_EV(ARMV7, EVENT_06H) \
+ __PMC_EV(ARMV7, EVENT_07H) \
+ __PMC_EV(ARMV7, EVENT_08H) \
+ __PMC_EV(ARMV7, EVENT_09H) \
+ __PMC_EV(ARMV7, EVENT_0AH) \
+ __PMC_EV(ARMV7, EVENT_0BH) \
+ __PMC_EV(ARMV7, EVENT_0CH) \
+ __PMC_EV(ARMV7, EVENT_0DH) \
+ __PMC_EV(ARMV7, EVENT_0EH) \
+ __PMC_EV(ARMV7, EVENT_0FH) \
+ __PMC_EV(ARMV7, EVENT_10H) \
+ __PMC_EV(ARMV7, EVENT_11H) \
+ __PMC_EV(ARMV7, EVENT_12H) \
+ __PMC_EV(ARMV7, EVENT_13H) \
+ __PMC_EV(ARMV7, EVENT_14H) \
+ __PMC_EV(ARMV7, EVENT_15H) \
+ __PMC_EV(ARMV7, EVENT_16H) \
+ __PMC_EV(ARMV7, EVENT_17H) \
+ __PMC_EV(ARMV7, EVENT_18H) \
+ __PMC_EV(ARMV7, EVENT_19H) \
+ __PMC_EV(ARMV7, EVENT_1AH) \
+ __PMC_EV(ARMV7, EVENT_1BH) \
+ __PMC_EV(ARMV7, EVENT_1CH) \
+ __PMC_EV(ARMV7, EVENT_1DH) \
+ __PMC_EV(ARMV7, EVENT_1EH) \
+ __PMC_EV(ARMV7, EVENT_1FH) \
+ __PMC_EV(ARMV7, EVENT_20H) \
+ __PMC_EV(ARMV7, EVENT_21H) \
+ __PMC_EV(ARMV7, EVENT_22H) \
+ __PMC_EV(ARMV7, EVENT_23H) \
+ __PMC_EV(ARMV7, EVENT_24H) \
+ __PMC_EV(ARMV7, EVENT_25H) \
+ __PMC_EV(ARMV7, EVENT_26H) \
+ __PMC_EV(ARMV7, EVENT_27H) \
+ __PMC_EV(ARMV7, EVENT_28H) \
+ __PMC_EV(ARMV7, EVENT_29H) \
+ __PMC_EV(ARMV7, EVENT_2AH) \
+ __PMC_EV(ARMV7, EVENT_2BH) \
+ __PMC_EV(ARMV7, EVENT_2CH) \
+ __PMC_EV(ARMV7, EVENT_2DH) \
+ __PMC_EV(ARMV7, EVENT_2EH) \
+ __PMC_EV(ARMV7, EVENT_2FH) \
+ __PMC_EV(ARMV7, EVENT_30H) \
+ __PMC_EV(ARMV7, EVENT_31H) \
+ __PMC_EV(ARMV7, EVENT_32H) \
+ __PMC_EV(ARMV7, EVENT_33H) \
+ __PMC_EV(ARMV7, EVENT_34H) \
+ __PMC_EV(ARMV7, EVENT_35H) \
+ __PMC_EV(ARMV7, EVENT_36H) \
+ __PMC_EV(ARMV7, EVENT_37H) \
+ __PMC_EV(ARMV7, EVENT_38H) \
+ __PMC_EV(ARMV7, EVENT_39H) \
+ __PMC_EV(ARMV7, EVENT_3AH) \
+ __PMC_EV(ARMV7, EVENT_3BH) \
+ __PMC_EV(ARMV7, EVENT_3CH) \
+ __PMC_EV(ARMV7, EVENT_3DH) \
+ __PMC_EV(ARMV7, EVENT_3EH) \
+ __PMC_EV(ARMV7, EVENT_3FH) \
+ __PMC_EV(ARMV7, EVENT_40H) \
+ __PMC_EV(ARMV7, EVENT_41H) \
+ __PMC_EV(ARMV7, EVENT_42H) \
+ __PMC_EV(ARMV7, EVENT_43H) \
+ __PMC_EV(ARMV7, EVENT_44H) \
+ __PMC_EV(ARMV7, EVENT_45H) \
+ __PMC_EV(ARMV7, EVENT_46H) \
+ __PMC_EV(ARMV7, EVENT_47H) \
+ __PMC_EV(ARMV7, EVENT_48H) \
+ __PMC_EV(ARMV7, EVENT_49H) \
+ __PMC_EV(ARMV7, EVENT_4AH) \
+ __PMC_EV(ARMV7, EVENT_4BH) \
+ __PMC_EV(ARMV7, EVENT_4CH) \
+ __PMC_EV(ARMV7, EVENT_4DH) \
+ __PMC_EV(ARMV7, EVENT_4EH) \
+ __PMC_EV(ARMV7, EVENT_4FH) \
+ __PMC_EV(ARMV7, EVENT_50H) \
+ __PMC_EV(ARMV7, EVENT_51H) \
+ __PMC_EV(ARMV7, EVENT_52H) \
+ __PMC_EV(ARMV7, EVENT_53H) \
+ __PMC_EV(ARMV7, EVENT_54H) \
+ __PMC_EV(ARMV7, EVENT_55H) \
+ __PMC_EV(ARMV7, EVENT_56H) \
+ __PMC_EV(ARMV7, EVENT_57H) \
+ __PMC_EV(ARMV7, EVENT_58H) \
+ __PMC_EV(ARMV7, EVENT_59H) \
+ __PMC_EV(ARMV7, EVENT_5AH) \
+ __PMC_EV(ARMV7, EVENT_5BH) \
+ __PMC_EV(ARMV7, EVENT_5CH) \
+ __PMC_EV(ARMV7, EVENT_5DH) \
+ __PMC_EV(ARMV7, EVENT_5EH) \
+ __PMC_EV(ARMV7, EVENT_5FH) \
+ __PMC_EV(ARMV7, EVENT_60H) \
+ __PMC_EV(ARMV7, EVENT_61H) \
+ __PMC_EV(ARMV7, EVENT_62H) \
+ __PMC_EV(ARMV7, EVENT_63H) \
+ __PMC_EV(ARMV7, EVENT_64H) \
+ __PMC_EV(ARMV7, EVENT_65H) \
+ __PMC_EV(ARMV7, EVENT_66H) \
+ __PMC_EV(ARMV7, EVENT_67H) \
+ __PMC_EV(ARMV7, EVENT_68H) \
+ __PMC_EV(ARMV7, EVENT_69H) \
+ __PMC_EV(ARMV7, EVENT_6AH) \
+ __PMC_EV(ARMV7, EVENT_6BH) \
+ __PMC_EV(ARMV7, EVENT_6CH) \
+ __PMC_EV(ARMV7, EVENT_6DH) \
+ __PMC_EV(ARMV7, EVENT_6EH) \
+ __PMC_EV(ARMV7, EVENT_6FH) \
+ __PMC_EV(ARMV7, EVENT_70H) \
+ __PMC_EV(ARMV7, EVENT_71H) \
+ __PMC_EV(ARMV7, EVENT_72H) \
+ __PMC_EV(ARMV7, EVENT_73H) \
+ __PMC_EV(ARMV7, EVENT_74H) \
+ __PMC_EV(ARMV7, EVENT_75H) \
+ __PMC_EV(ARMV7, EVENT_76H) \
+ __PMC_EV(ARMV7, EVENT_77H) \
+ __PMC_EV(ARMV7, EVENT_78H) \
+ __PMC_EV(ARMV7, EVENT_79H) \
+ __PMC_EV(ARMV7, EVENT_7AH) \
+ __PMC_EV(ARMV7, EVENT_7BH) \
+ __PMC_EV(ARMV7, EVENT_7CH) \
+ __PMC_EV(ARMV7, EVENT_7DH) \
+ __PMC_EV(ARMV7, EVENT_7EH) \
+ __PMC_EV(ARMV7, EVENT_7FH) \
+ __PMC_EV(ARMV7, EVENT_80H) \
+ __PMC_EV(ARMV7, EVENT_81H) \
+ __PMC_EV(ARMV7, EVENT_82H) \
+ __PMC_EV(ARMV7, EVENT_83H) \
+ __PMC_EV(ARMV7, EVENT_84H) \
+ __PMC_EV(ARMV7, EVENT_85H) \
+ __PMC_EV(ARMV7, EVENT_86H) \
+ __PMC_EV(ARMV7, EVENT_87H) \
+ __PMC_EV(ARMV7, EVENT_88H) \
+ __PMC_EV(ARMV7, EVENT_89H) \
+ __PMC_EV(ARMV7, EVENT_8AH) \
+ __PMC_EV(ARMV7, EVENT_8BH) \
+ __PMC_EV(ARMV7, EVENT_8CH) \
+ __PMC_EV(ARMV7, EVENT_8DH) \
+ __PMC_EV(ARMV7, EVENT_8EH) \
+ __PMC_EV(ARMV7, EVENT_8FH) \
+ __PMC_EV(ARMV7, EVENT_90H) \
+ __PMC_EV(ARMV7, EVENT_91H) \
+ __PMC_EV(ARMV7, EVENT_92H) \
+ __PMC_EV(ARMV7, EVENT_93H) \
+ __PMC_EV(ARMV7, EVENT_94H) \
+ __PMC_EV(ARMV7, EVENT_95H) \
+ __PMC_EV(ARMV7, EVENT_96H) \
+ __PMC_EV(ARMV7, EVENT_97H) \
+ __PMC_EV(ARMV7, EVENT_98H) \
+ __PMC_EV(ARMV7, EVENT_99H) \
+ __PMC_EV(ARMV7, EVENT_9AH) \
+ __PMC_EV(ARMV7, EVENT_9BH) \
+ __PMC_EV(ARMV7, EVENT_9CH) \
+ __PMC_EV(ARMV7, EVENT_9DH) \
+ __PMC_EV(ARMV7, EVENT_9EH) \
+ __PMC_EV(ARMV7, EVENT_9FH) \
+ __PMC_EV(ARMV7, EVENT_A0H) \
+ __PMC_EV(ARMV7, EVENT_A1H) \
+ __PMC_EV(ARMV7, EVENT_A2H) \
+ __PMC_EV(ARMV7, EVENT_A3H) \
+ __PMC_EV(ARMV7, EVENT_A4H) \
+ __PMC_EV(ARMV7, EVENT_A5H) \
+ __PMC_EV(ARMV7, EVENT_A6H) \
+ __PMC_EV(ARMV7, EVENT_A7H) \
+ __PMC_EV(ARMV7, EVENT_A8H) \
+ __PMC_EV(ARMV7, EVENT_A9H) \
+ __PMC_EV(ARMV7, EVENT_AAH) \
+ __PMC_EV(ARMV7, EVENT_ABH) \
+ __PMC_EV(ARMV7, EVENT_ACH) \
+ __PMC_EV(ARMV7, EVENT_ADH) \
+ __PMC_EV(ARMV7, EVENT_AEH) \
+ __PMC_EV(ARMV7, EVENT_AFH) \
+ __PMC_EV(ARMV7, EVENT_B0H) \
+ __PMC_EV(ARMV7, EVENT_B1H) \
+ __PMC_EV(ARMV7, EVENT_B2H) \
+ __PMC_EV(ARMV7, EVENT_B3H) \
+ __PMC_EV(ARMV7, EVENT_B4H) \
+ __PMC_EV(ARMV7, EVENT_B5H) \
+ __PMC_EV(ARMV7, EVENT_B6H) \
+ __PMC_EV(ARMV7, EVENT_B7H) \
+ __PMC_EV(ARMV7, EVENT_B8H) \
+ __PMC_EV(ARMV7, EVENT_B9H) \
+ __PMC_EV(ARMV7, EVENT_BAH) \
+ __PMC_EV(ARMV7, EVENT_BBH) \
+ __PMC_EV(ARMV7, EVENT_BCH) \
+ __PMC_EV(ARMV7, EVENT_BDH) \
+ __PMC_EV(ARMV7, EVENT_BEH) \
+ __PMC_EV(ARMV7, EVENT_BFH) \
+ __PMC_EV(ARMV7, EVENT_C0H) \
+ __PMC_EV(ARMV7, EVENT_C1H) \
+ __PMC_EV(ARMV7, EVENT_C2H) \
+ __PMC_EV(ARMV7, EVENT_C3H) \
+ __PMC_EV(ARMV7, EVENT_C4H) \
+ __PMC_EV(ARMV7, EVENT_C5H) \
+ __PMC_EV(ARMV7, EVENT_C6H) \
+ __PMC_EV(ARMV7, EVENT_C7H) \
+ __PMC_EV(ARMV7, EVENT_C8H) \
+ __PMC_EV(ARMV7, EVENT_C9H) \
+ __PMC_EV(ARMV7, EVENT_CAH) \
+ __PMC_EV(ARMV7, EVENT_CBH) \
+ __PMC_EV(ARMV7, EVENT_CCH) \
+ __PMC_EV(ARMV7, EVENT_CDH) \
+ __PMC_EV(ARMV7, EVENT_CEH) \
+ __PMC_EV(ARMV7, EVENT_CFH) \
+ __PMC_EV(ARMV7, EVENT_D0H) \
+ __PMC_EV(ARMV7, EVENT_D1H) \
+ __PMC_EV(ARMV7, EVENT_D2H) \
+ __PMC_EV(ARMV7, EVENT_D3H) \
+ __PMC_EV(ARMV7, EVENT_D4H) \
+ __PMC_EV(ARMV7, EVENT_D5H) \
+ __PMC_EV(ARMV7, EVENT_D6H) \
+ __PMC_EV(ARMV7, EVENT_D7H) \
+ __PMC_EV(ARMV7, EVENT_D8H) \
+ __PMC_EV(ARMV7, EVENT_D9H) \
+ __PMC_EV(ARMV7, EVENT_DAH) \
+ __PMC_EV(ARMV7, EVENT_DBH) \
+ __PMC_EV(ARMV7, EVENT_DCH) \
+ __PMC_EV(ARMV7, EVENT_DDH) \
+ __PMC_EV(ARMV7, EVENT_DEH) \
+ __PMC_EV(ARMV7, EVENT_DFH) \
+ __PMC_EV(ARMV7, EVENT_E0H) \
+ __PMC_EV(ARMV7, EVENT_E1H) \
+ __PMC_EV(ARMV7, EVENT_E2H) \
+ __PMC_EV(ARMV7, EVENT_E3H) \
+ __PMC_EV(ARMV7, EVENT_E4H) \
+ __PMC_EV(ARMV7, EVENT_E5H) \
+ __PMC_EV(ARMV7, EVENT_E6H) \
+ __PMC_EV(ARMV7, EVENT_E7H) \
+ __PMC_EV(ARMV7, EVENT_E8H) \
+ __PMC_EV(ARMV7, EVENT_E9H) \
+ __PMC_EV(ARMV7, EVENT_EAH) \
+ __PMC_EV(ARMV7, EVENT_EBH) \
+ __PMC_EV(ARMV7, EVENT_ECH) \
+ __PMC_EV(ARMV7, EVENT_EDH) \
+ __PMC_EV(ARMV7, EVENT_EEH) \
+ __PMC_EV(ARMV7, EVENT_EFH) \
+ __PMC_EV(ARMV7, EVENT_F0H) \
+ __PMC_EV(ARMV7, EVENT_F1H) \
+ __PMC_EV(ARMV7, EVENT_F2H) \
+ __PMC_EV(ARMV7, EVENT_F3H) \
+ __PMC_EV(ARMV7, EVENT_F4H) \
+ __PMC_EV(ARMV7, EVENT_F5H) \
+ __PMC_EV(ARMV7, EVENT_F6H) \
+ __PMC_EV(ARMV7, EVENT_F7H) \
+ __PMC_EV(ARMV7, EVENT_F8H) \
+ __PMC_EV(ARMV7, EVENT_F9H) \
+ __PMC_EV(ARMV7, EVENT_FAH) \
+ __PMC_EV(ARMV7, EVENT_FBH) \
+ __PMC_EV(ARMV7, EVENT_FCH) \
+ __PMC_EV(ARMV7, EVENT_FDH) \
+ __PMC_EV(ARMV7, EVENT_FEH) \
+ __PMC_EV(ARMV7, EVENT_FFH)
-#define PMC_EV_ARMV7_FIRST PMC_EV_ARMV7_PMNC_SW_INCR
-#define PMC_EV_ARMV7_LAST PMC_EV_ARMV7_CPU_CYCLES
+#define PMC_EV_ARMV7_FIRST PMC_EV_ARMV7_EVENT_00H
+#define PMC_EV_ARMV7_LAST PMC_EV_ARMV7_EVENT_FFH
+
+#define __PMC_EV_ALIAS_ARMV7_COMMON() \
+ __PMC_EV_ALIAS("PMNC_SW_INCR", ARMV7_EVENT_00H) \
+ __PMC_EV_ALIAS("L1_ICACHE_REFILL", ARMV7_EVENT_01H) \
+ __PMC_EV_ALIAS("ITLB_REFILL", ARMV7_EVENT_02H) \
+ __PMC_EV_ALIAS("L1_DCACHE_REFILL", ARMV7_EVENT_03H) \
+ __PMC_EV_ALIAS("L1_DCACHE_ACCESS", ARMV7_EVENT_04H) \
+ __PMC_EV_ALIAS("DTLB_REFILL", ARMV7_EVENT_05H) \
+ __PMC_EV_ALIAS("MEM_READ", ARMV7_EVENT_06H) \
+ __PMC_EV_ALIAS("MEM_WRITE", ARMV7_EVENT_07H) \
+ __PMC_EV_ALIAS("INSTR_EXECUTED", ARMV7_EVENT_08H) \
+ __PMC_EV_ALIAS("EXC_TAKEN", ARMV7_EVENT_09H) \
+ __PMC_EV_ALIAS("EXC_EXECUTED", ARMV7_EVENT_0AH) \
+ __PMC_EV_ALIAS("CID_WRITE", ARMV7_EVENT_0BH) \
+ __PMC_EV_ALIAS("PC_WRITE", ARMV7_EVENT_0CH) \
+ __PMC_EV_ALIAS("PC_IMM_BRANCH", ARMV7_EVENT_0DH) \
+ __PMC_EV_ALIAS("PC_PROC_RETURN", ARMV7_EVENT_0EH) \
+ __PMC_EV_ALIAS("MEM_UNALIGNED_ACCESS", ARMV7_EVENT_0FH) \
+ __PMC_EV_ALIAS("PC_BRANCH_MIS_PRED", ARMV7_EVENT_10H) \
+ __PMC_EV_ALIAS("CLOCK_CYCLES", ARMV7_EVENT_11H) \
+ __PMC_EV_ALIAS("PC_BRANCH_PRED", ARMV7_EVENT_12H) \
+ __PMC_EV_ALIAS("MEM_ACCESS", ARMV7_EVENT_13H) \
+ __PMC_EV_ALIAS("L1_ICACHE_ACCESS", ARMV7_EVENT_14H) \
+ __PMC_EV_ALIAS("L1_DCACHE_WB", ARMV7_EVENT_15H) \
+ __PMC_EV_ALIAS("L2_CACHE_ACCESS", ARMV7_EVENT_16H) \
+ __PMC_EV_ALIAS("L2_CACHE_REFILL", ARMV7_EVENT_17H) \
+ __PMC_EV_ALIAS("L2_CACHE_WB", ARMV7_EVENT_18H) \
+ __PMC_EV_ALIAS("BUS_ACCESS", ARMV7_EVENT_19H) \
+ __PMC_EV_ALIAS("MEM_ERROR", ARMV7_EVENT_1AH) \
+ __PMC_EV_ALIAS("INSTR_SPEC", ARMV7_EVENT_1BH) \
+ __PMC_EV_ALIAS("TTBR_WRITE", ARMV7_EVENT_1CH) \
+ __PMC_EV_ALIAS("BUS_CYCLES", ARMV7_EVENT_1DH) \
+ __PMC_EV_ALIAS("CPU_CYCLES", ARMV7_EVENT_FFH)
+
+#define __PMC_EV_ALIAS_ARMV7_CORTEX_A8() \
+ __PMC_EV_ALIAS_ARMV7_COMMON()
+
+#define __PMC_EV_ALIAS_ARMV7_CORTEX_A9() \
+ __PMC_EV_ALIAS_ARMV7_COMMON() \
+ __PMC_EV_ALIAS("JAVA_BYTECODE", ARMV7_EVENT_40H) \
+ __PMC_EV_ALIAS("SOFTWARE_JAVA_BYTECODE", ARMV7_EVENT_41H) \
+ __PMC_EV_ALIAS("JAZELLE_BACKWARD_BRANCH", ARMV7_EVENT_42H) \
+ __PMC_EV_ALIAS("COHERENT_LINEFILL_MISSC", ARMV7_EVENT_50H) \
+ __PMC_EV_ALIAS("COHERENT_LINEFILL_HITC", ARMV7_EVENT_51H) \
+ __PMC_EV_ALIAS("INSTR_CACHE_DEPENDENT_STALL", ARMV7_EVENT_60H) \
+ __PMC_EV_ALIAS("DATA_CACHE_DEPENDENT_STALL", ARMV7_EVENT_61H) \
+ __PMC_EV_ALIAS("MAIN_TLB_MISS_STALL", ARMV7_EVENT_62H) \
+ __PMC_EV_ALIAS("STREX_PASSED", ARMV7_EVENT_63H) \
+ __PMC_EV_ALIAS("STREX_FAILED", ARMV7_EVENT_64H) \
+ __PMC_EV_ALIAS("DATA_EVICTION", ARMV7_EVENT_65H) \
+ __PMC_EV_ALIAS("ISSUE_DNOT_DISPATCH_ANY_INSTR", ARMV7_EVENT_66H) \
+ __PMC_EV_ALIAS("ISSUE_IS_EMPTY", ARMV7_EVENT_67H) \
+ __PMC_EV_ALIAS("MAIN_EXECUTION_UNIT_PIPE", ARMV7_EVENT_70H) \
+ __PMC_EV_ALIAS("SECOND_EXECUTION_UNIT_PIPE", ARMV7_EVENT_71H) \
+ __PMC_EV_ALIAS("LOAD_STORE_PIPE", ARMV7_EVENT_72H) \
+ __PMC_EV_ALIAS("FLOATING_POINT_INSTR_RENAMED", ARMV7_EVENT_73H) \
+ __PMC_EV_ALIAS("NEON_INSTRS_RENAMED", ARMV7_EVENT_74H) \
+ __PMC_EV_ALIAS("PLD_STALL", ARMV7_EVENT_80H) \
+ __PMC_EV_ALIAS("WRITE_STALL", ARMV7_EVENT_81H) \
+ __PMC_EV_ALIAS("INSTR_MAIN_TLB_MISS_STALL", ARMV7_EVENT_82H) \
+ __PMC_EV_ALIAS("DATA_MAIN_TLB_MISS_STALL", ARMV7_EVENT_83H) \
+ __PMC_EV_ALIAS("INSTR_MICRO_TLB_MISS_STALL", ARMV7_EVENT_84H) \
+ __PMC_EV_ALIAS("DATA_MICRO_TLB_MISS_STALL", ARMV7_EVENT_85H) \
+ __PMC_EV_ALIAS("DMB_STALL", ARMV7_EVENT_86H) \
+ __PMC_EV_ALIAS("INTEGER_CORE_CLOCK_ENABLED", ARMV7_EVENT_8AH) \
+ __PMC_EV_ALIAS("DATA_ENGINE_CLOCK_ENABLED", ARMV7_EVENT_8BH) \
+ __PMC_EV_ALIAS("ISB", ARMV7_EVENT_90H) \
+ __PMC_EV_ALIAS("DSB", ARMV7_EVENT_91H) \
+ __PMC_EV_ALIAS("DMB", ARMV7_EVENT_92H) \
+ __PMC_EV_ALIAS("EXTERNAL_INTERRUPT", ARMV7_EVENT_93H) \
+ __PMC_EV_ALIAS("PLE_CACHE_LINE_REQ_COMPLETED", ARMV7_EVENT_A0H) \
+ __PMC_EV_ALIAS("PLE_CACHE_LINE_REQ_SKIPPED", ARMV7_EVENT_A1H) \
+ __PMC_EV_ALIAS("PLE_FIFO_FLUSH", ARMV7_EVENT_A2H) \
+ __PMC_EV_ALIAS("PLE_REQUEST_COMPLETED", ARMV7_EVENT_A3H) \
+ __PMC_EV_ALIAS("PLE_FIFO_OVERFLOW", ARMV7_EVENT_A4H) \
+ __PMC_EV_ALIAS("PLE_REQUEST_PROGRAMMED", ARMV7_EVENT_A5H)
/*
* ARMv8 Events
diff --git a/sys/dev/ichsmb/ichsmb_pci.c b/sys/dev/ichsmb/ichsmb_pci.c
index ae8b179..00ba2c3 100644
--- a/sys/dev/ichsmb/ichsmb_pci.c
+++ b/sys/dev/ichsmb/ichsmb_pci.c
@@ -5,7 +5,7 @@
* Copyright (c) 2000 Whistle Communications, Inc.
* All rights reserved.
* Author: Archie Cobbs <archie@freebsd.org>
- *
+ *
* Subject to the following obligations and disclaimer of warranty, use and
* redistribution of this software, in source or object code forms, with or
* without modifications are expressly permitted by Whistle Communications;
@@ -16,7 +16,7 @@
* Communications, Inc. trademarks, including the mark "WHISTLE
* COMMUNICATIONS" on advertising, endorsements, or otherwise except as
* such appears in the above copyright notice or in the software.
- *
+ *
* THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
* TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
* REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
@@ -91,6 +91,7 @@ __FBSDID("$FreeBSD$");
#define ID_LPTLP 0x9c228086
#define ID_WCPT 0x8ca28086
#define ID_WCPTLP 0x9ca28086
+#define ID_WELLSBURG 0x8d228086
#define PCIS_SERIALBUS_SMBUS_PROGIF 0x00
@@ -212,6 +213,9 @@ ichsmb_pci_probe(device_t dev)
case ID_COLETOCRK:
device_set_desc(dev, "Intel Coleto Creek SMBus controller");
break;
+ case ID_WELLSBURG:
+ device_set_desc(dev, "Intel Wellsburg SMBus controller");
+ break;
default:
return (ENXIO);
}
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index 881f58a..46edd3e 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -2931,6 +2931,14 @@ isp_handle_platform_ctio(ispsoftc_t *isp, void *arg)
atp = isp_find_atpd(isp, tptr, ((ct_entry_t *)arg)->ct_fwhandle);
}
if (atp == NULL) {
+ /*
+ * In case of target mode disable at least ISP2532 return
+ * invalid zero ct_rxid value. Try to workaround that using
+ * tag_id from the CCB, pointed by valid ct_syshandle.
+ */
+ atp = isp_find_atpd(isp, tptr, ccb->csio.tag_id);
+ }
+ if (atp == NULL) {
rls_lun_statep(isp, tptr);
isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x after I/O", __func__, ccb->csio.tag_id);
return;
diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c
index a04d446..f3cf2ae 100644
--- a/sys/dev/iwn/if_iwn.c
+++ b/sys/dev/iwn/if_iwn.c
@@ -232,6 +232,7 @@ static int iwn_tx_data(struct iwn_softc *, struct mbuf *,
static int iwn_tx_data_raw(struct iwn_softc *, struct mbuf *,
struct ieee80211_node *,
const struct ieee80211_bpf_params *params);
+static void iwn_xmit_task(void *arg0, int pending);
static int iwn_raw_xmit(struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
static void iwn_start(struct ifnet *);
@@ -682,6 +683,9 @@ iwn_attach(device_t dev)
TASK_INIT(&sc->sc_radioon_task, 0, iwn_radio_on, sc);
TASK_INIT(&sc->sc_radiooff_task, 0, iwn_radio_off, sc);
TASK_INIT(&sc->sc_panic_task, 0, iwn_panicked, sc);
+ TASK_INIT(&sc->sc_xmit_task, 0, iwn_xmit_task, sc);
+
+ mbufq_init(&sc->sc_xmit_queue, 1024);
sc->sc_tq = taskqueue_create("iwn_taskq", M_WAITOK,
taskqueue_thread_enqueue, &sc->sc_tq);
@@ -1360,6 +1364,28 @@ iwn_vap_delete(struct ieee80211vap *vap)
free(ivp, M_80211_VAP);
}
+static void
+iwn_xmit_queue_drain(struct iwn_softc *sc)
+{
+ struct mbuf *m;
+ struct ieee80211_node *ni;
+
+ IWN_LOCK_ASSERT(sc);
+ while ((m = mbufq_dequeue(&sc->sc_xmit_queue)) != NULL) {
+ ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
+ ieee80211_free_node(ni);
+ m_freem(m);
+ }
+}
+
+static int
+iwn_xmit_queue_enqueue(struct iwn_softc *sc, struct mbuf *m)
+{
+
+ IWN_LOCK_ASSERT(sc);
+ return (mbufq_enqueue(&sc->sc_xmit_queue, m));
+}
+
static int
iwn_detach(device_t dev)
{
@@ -1373,6 +1399,11 @@ iwn_detach(device_t dev)
if (ifp != NULL) {
ic = ifp->if_l2com;
+ /* Free the mbuf queue and node references */
+ IWN_LOCK(sc);
+ iwn_xmit_queue_drain(sc);
+ IWN_UNLOCK(sc);
+
ieee80211_draintask(ic, &sc->sc_reinit_task);
ieee80211_draintask(ic, &sc->sc_radioon_task);
ieee80211_draintask(ic, &sc->sc_radiooff_task);
@@ -2831,6 +2862,9 @@ iwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
sc->rxon->filter &= ~htole32(IWN_FILTER_BSS);
sc->calib.state = IWN_CALIB_STATE_INIT;
+ /* Wait until we hear a beacon before we transmit */
+ sc->sc_beacon_wait = 1;
+
if ((error = iwn_auth(sc, vap)) != 0) {
device_printf(sc->sc_dev,
"%s: could not move to auth state\n", __func__);
@@ -2846,6 +2880,9 @@ iwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
break;
}
+ /* Wait until we hear a beacon before we transmit */
+ sc->sc_beacon_wait = 1;
+
/*
* !RUN -> RUN requires setting the association id
* which is done with a firmware cmd. We also defer
@@ -2859,6 +2896,12 @@ iwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
case IEEE80211_S_INIT:
sc->calib.state = IWN_CALIB_STATE_INIT;
+ /*
+ * Purge the xmit queue so we don't have old frames
+ * during a new association attempt.
+ */
+ sc->sc_beacon_wait = 0;
+ iwn_xmit_queue_drain(sc);
break;
default:
@@ -3066,6 +3109,32 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
}
}
+ /*
+ * If it's a beacon and we're waiting, then do the
+ * wakeup. This should unblock raw_xmit/start.
+ */
+ if (sc->sc_beacon_wait) {
+ uint8_t type, subtype;
+ /* NB: Re-assign wh */
+ wh = mtod(m, struct ieee80211_frame *);
+ type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
+ subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;
+ /*
+ * This assumes at this point we've received our own
+ * beacon.
+ */
+ DPRINTF(sc, IWN_DEBUG_TRACE,
+ "%s: beacon_wait, type=%d, subtype=%d\n",
+ __func__, type, subtype);
+ if (type == IEEE80211_FC0_TYPE_MGT &&
+ subtype == IEEE80211_FC0_SUBTYPE_BEACON) {
+ DPRINTF(sc, IWN_DEBUG_TRACE | IWN_DEBUG_XMIT,
+ "%s: waking things up\n", __func__);
+ /* queue taskqueue to transmit! */
+ taskqueue_enqueue(sc->sc_tq, &sc->sc_xmit_task);
+ }
+ }
+
IWN_UNLOCK(sc);
/* Send the frame to the 802.11 layer. */
@@ -4802,6 +4871,51 @@ iwn_tx_data_raw(struct iwn_softc *sc, struct mbuf *m,
return 0;
}
+static void
+iwn_xmit_task(void *arg0, int pending)
+{
+ struct iwn_softc *sc = arg0;
+ struct ifnet *ifp = sc->sc_ifp;
+ struct ieee80211_node *ni;
+ struct mbuf *m;
+ int error;
+ struct ieee80211_bpf_params p;
+ int have_p;
+
+ DPRINTF(sc, IWN_DEBUG_XMIT, "%s: called\n", __func__);
+
+ IWN_LOCK(sc);
+ /*
+ * Dequeue frames, attempt to transmit,
+ * then disable beaconwait when we're done.
+ */
+ while ((m = mbufq_dequeue(&sc->sc_xmit_queue)) != NULL) {
+ have_p = 0;
+ ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
+
+ /* Get xmit params if appropriate */
+ if (ieee80211_get_xmit_params(m, &p) == 0)
+ have_p = 1;
+
+ DPRINTF(sc, IWN_DEBUG_XMIT, "%s: m=%p, have_p=%d\n",
+ __func__, m, have_p);
+
+ /* If we have xmit params, use them */
+ if (have_p)
+ error = iwn_tx_data_raw(sc, m, ni, &p);
+ else
+ error = iwn_tx_data(sc, m, ni);
+
+ if (error != 0) {
+ ieee80211_free_node(ni);
+ if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
+ }
+ }
+
+ sc->sc_beacon_wait = 0;
+ IWN_UNLOCK(sc);
+}
+
static int
iwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
const struct ieee80211_bpf_params *params)
@@ -4819,7 +4933,25 @@ iwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
return ENETDOWN;
}
+ /* XXX? net80211 doesn't set this on xmit'ed raw frames? */
+ m->m_pkthdr.rcvif = (void *) ni;
+
IWN_LOCK(sc);
+
+ /* queue frame if we have to */
+ if (sc->sc_beacon_wait) {
+ if (iwn_xmit_queue_enqueue(sc, m) != 0) {
+ m_freem(m);
+ ieee80211_free_node(ni);
+ if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
+ IWN_UNLOCK(sc);
+ return (ENOBUFS);
+ }
+ /* Queued, so just return OK */
+ IWN_UNLOCK(sc);
+ return (0);
+ }
+
if (params == NULL) {
/*
* Legacy path; interpret frame contents to decide
@@ -4866,6 +4998,14 @@ iwn_start_locked(struct ifnet *ifp)
IWN_LOCK_ASSERT(sc);
+ /*
+ * If we're waiting for a beacon, we can just exit out here
+ * and wait for the taskqueue to be kicked.
+ */
+ if (sc->sc_beacon_wait) {
+ return;
+ }
+
DPRINTF(sc, IWN_DEBUG_XMIT, "%s: called\n", __func__);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 ||
diff --git a/sys/dev/iwn/if_iwnvar.h b/sys/dev/iwn/if_iwnvar.h
index b14158b..9366fc2 100644
--- a/sys/dev/iwn/if_iwnvar.h
+++ b/sys/dev/iwn/if_iwnvar.h
@@ -309,6 +309,7 @@ struct iwn_softc {
struct task sc_radioon_task;
struct task sc_radiooff_task;
struct task sc_panic_task;
+ struct task sc_xmit_task;
/* Taskqueue */
struct taskqueue *sc_tq;
@@ -385,6 +386,9 @@ struct iwn_softc {
/* Are we doing a scan? */
int sc_is_scanning;
+ /* Are we waiting for a beacon before xmit? */
+ int sc_beacon_wait;
+
struct ieee80211_tx_ampdu *qid2tap[IWN5000_NTXQUEUES];
int (*sc_ampdu_rx_start)(struct ieee80211_node *,
@@ -417,6 +421,13 @@ struct iwn_softc {
#define IWN_UCODE_API(ver) (((ver) & 0x0000FF00) >> 8)
uint32_t ucode_rev;
+
+ /*
+ * Global queue for queuing xmit frames
+ * when we can't yet transmit (eg raw
+ * frames whilst waiting for beacons.)
+ */
+ struct mbufq sc_xmit_queue;
};
#define IWN_LOCK_INIT(_sc) \
diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c
index 13a678c..1a36c2a 100644
--- a/sys/dev/ixl/if_ixl.c
+++ b/sys/dev/ixl/if_ixl.c
@@ -2551,7 +2551,7 @@ ixl_setup_interface(device_t dev, struct ixl_vsi *vsi)
}
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
ifp->if_mtu = ETHERMTU;
- ifp->if_baudrate = 4000000000; // ??
+ ifp->if_baudrate = IF_Gbps(40);
ifp->if_init = ixl_init;
ifp->if_softc = vsi;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
diff --git a/sys/dev/mii/mii.h b/sys/dev/mii/mii.h
index 668fb8f..fa1ec84 100644
--- a/sys/dev/mii/mii.h
+++ b/sys/dev/mii/mii.h
@@ -1,4 +1,4 @@
-/* $NetBSD: mii.h,v 1.9 2001/05/31 03:07:14 thorpej Exp $ */
+/* $NetBSD: mii.h,v 1.18 2014/06/16 14:43:22 msaitoh Exp $ */
/*-
* Copyright (c) 1997 Manuel Bouyer. All rights reserved.
@@ -87,7 +87,7 @@
/*
* Note that the EXTSTAT bit indicates that there is extended status
* info available in register 15, but 802.3 section 22.2.4.3 also
- * states that that all 1000 Mb/s capable PHYs will set this bit to 1.
+ * states that all 1000 Mb/s capable PHYs will set this bit to 1.
*/
#define BMSR_MEDIAMASK (BMSR_100T4|BMSR_100TXFDX|BMSR_100TXHDX| \
@@ -111,6 +111,7 @@
#define ANAR_NP 0x8000 /* Next page (ro) */
#define ANAR_ACK 0x4000 /* link partner abilities acknowledged (ro) */
#define ANAR_RF 0x2000 /* remote fault (ro) */
+ /* Annex 28B.2 */
#define ANAR_FC 0x0400 /* local device supports PAUSE */
#define ANAR_T4 0x0200 /* local device supports 100bT4 */
#define ANAR_TX_FD 0x0100 /* local device supports 100bTx FD */
@@ -123,6 +124,7 @@
#define ANAR_PAUSE_ASYM (2 << 10)
#define ANAR_PAUSE_TOWARDS (3 << 10)
+ /* Annex 28D */
#define ANAR_X_FD 0x0020 /* local device supports 1000BASE-X FD */
#define ANAR_X_HD 0x0040 /* local device supports 1000BASE-X HD */
#define ANAR_X_PAUSE_NONE (0 << 7)
@@ -184,12 +186,47 @@
#define GTSR_MAN_MS_FLT 0x8000 /* master/slave config fault */
#define GTSR_MS_RES 0x4000 /* result: 1 = master, 0 = slave */
#define GTSR_LRS 0x2000 /* local rx status, 1 = ok */
-#define GTSR_RRS 0x1000 /* remove rx status, 1 = ok */
+#define GTSR_RRS 0x1000 /* remote rx status, 1 = ok */
#define GTSR_LP_1000TFDX 0x0800 /* link partner 1000baseT FDX capable */
#define GTSR_LP_1000THDX 0x0400 /* link partner 1000baseT HDX capable */
#define GTSR_LP_ASM_DIR 0x0200 /* link partner asym. pause dir. capable */
#define GTSR_IDLE_ERR 0x00ff /* IDLE error count */
+#define MII_PSECR 0x0b /* PSE control register */
+#define PSECR_PACTLMASK 0x000c /* pair control mask */
+#define PSECR_PSEENMASK 0x0003 /* PSE enable mask */
+#define PSECR_PINOUTB 0x0008 /* PSE pinout Alternative B */
+#define PSECR_PINOUTA 0x0004 /* PSE pinout Alternative A */
+#define PSECR_FOPOWTST 0x0002 /* Force Power Test Mode */
+#define PSECR_PSEEN 0x0001 /* PSE Enabled */
+#define PSECR_PSEDIS 0x0000 /* PSE Disabled */
+
+#define MII_PSESR 0x0c /* PSE status register */
+#define PSESR_PWRDENIED 0x1000 /* Power Denied */
+#define PSESR_VALSIG 0x0800 /* Valid PD signature detected */
+#define PSESR_INVALSIG 0x0400 /* Invalid PD signature detected */
+#define PSESR_SHORTCIRC 0x0200 /* Short circuit condition detected */
+#define PSESR_OVERLOAD 0x0100 /* Overload condition detected */
+#define PSESR_MPSABSENT 0x0080 /* MPS absent condition detected */
+#define PSESR_PDCLMASK 0x0070 /* PD Class mask */
+#define PSESR_STATMASK 0x000e /* PSE Status mask */
+#define PSESR_PAIRCTABL 0x0001 /* PAIR Control Ability */
+#define PSESR_PDCL_4 (4 << 4) /* Class 4 */
+#define PSESR_PDCL_3 (3 << 4) /* Class 3 */
+#define PSESR_PDCL_2 (2 << 4) /* Class 2 */
+#define PSESR_PDCL_1 (1 << 4) /* Class 1 */
+#define PSESR_PDCL_0 (0 << 4) /* Class 0 */
+
+#define MII_MMDACR 0x0d /* MMD access control register */
+#define MMDACR_FUNCMASK 0xc000 /* function */
+#define MMDACR_DADDRMASK 0x001f /* device address */
+#define MMDACR_FN_ADDRESS (0 << 14) /* address */
+#define MMDACR_FN_DATANPI (1 << 14) /* data, no post increment */
+#define MMDACR_FN_DATAPIRW (2 << 14) /* data, post increment on r/w */
+#define MMDACR_FN_DATAPIW (3 << 14) /* data, post increment on wr only */
+
+#define MII_MMDAADR 0x0e /* MMD access address data register */
+
#define MII_EXTSR 0x0f /* Extended status register */
#define EXTSR_1000XFDX 0x8000 /* 1000X full-duplex capable */
#define EXTSR_1000XHDX 0x4000 /* 1000X half-duplex capable */
diff --git a/sys/dev/ofw/ofw_bus_subr.c b/sys/dev/ofw/ofw_bus_subr.c
index a9261ce..233675d 100644
--- a/sys/dev/ofw/ofw_bus_subr.c
+++ b/sys/dev/ofw/ofw_bus_subr.c
@@ -551,3 +551,44 @@ ofw_bus_find_compatible(phandle_t node, const char *onecompat)
}
return (0);
}
+
+/**
+ * @brief Return child of bus whose phandle is node
+ *
+ * A direct child of @p will be returned if it its phandle in the
+ * OFW tree is @p node. Otherwise, NULL is returned.
+ *
+ * @param bus The bus to examine
+ * @param node The phandle_t to look for.
+ */
+device_t
+ofw_bus_find_child_device_by_phandle(device_t bus, phandle_t node)
+{
+ device_t *children, retval, child;
+ int nkid, i;
+
+ /*
+ * Nothing can match the flag value for no node.
+ */
+ if (node == -1)
+ return (NULL);
+
+ /*
+ * Search the children for a match. We microoptimize
+ * a bit by not using ofw_bus_get since we already know
+ * the parent. We do not recurse.
+ */
+ if (device_get_children(bus, &children, &nkid) != 0)
+ return (NULL);
+ retval = NULL;
+ for (i = 0; i < nkid; i++) {
+ child = children[i];
+ if (OFW_BUS_GET_NODE(bus, child) == node) {
+ retval = child;
+ break;
+ }
+ }
+ free(children, M_TEMP);
+
+ return (retval);
+}
diff --git a/sys/dev/ofw/ofw_bus_subr.h b/sys/dev/ofw/ofw_bus_subr.h
index bbeda7f..c59a75d 100644
--- a/sys/dev/ofw/ofw_bus_subr.h
+++ b/sys/dev/ofw/ofw_bus_subr.h
@@ -107,4 +107,7 @@ phandle_t ofw_bus_find_compatible(phandle_t, const char *);
/* Helper to search for a child with a given name */
phandle_t ofw_bus_find_child(phandle_t, const char *);
+/* Helper routine to find a device_t child matchig a given phandle_t */
+device_t ofw_bus_find_child_device_by_phandle(device_t bus, phandle_t node);
+
#endif /* !_DEV_OFW_OFW_BUS_SUBR_H_ */
diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c
new file mode 100644
index 0000000..04dc8d3
--- /dev/null
+++ b/sys/dev/pci/pci_host_generic.c
@@ -0,0 +1,626 @@
+/*-
+ * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com>
+ * Copyright (c) 2014 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Semihalf under
+ * the sponsorship of the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* Generic ECAM PCIe driver */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/malloc.h>
+#include <sys/kernel.h>
+#include <sys/rman.h>
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
+#include <sys/cpuset.h>
+#include <sys/rwlock.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+#include <dev/pci/pcivar.h>
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcib_private.h>
+#include <machine/cpu.h>
+#include <machine/bus.h>
+#include <machine/intr.h>
+#include <vm/vm_page.h>
+
+#include "pcib_if.h"
+
+/* Assembling ECAM Configuration Address */
+#define PCIE_BUS_SHIFT 20
+#define PCIE_SLOT_SHIFT 15
+#define PCIE_FUNC_SHIFT 12
+#define PCIE_BUS_MASK 0xFF
+#define PCIE_SLOT_MASK 0x1F
+#define PCIE_FUNC_MASK 0x07
+#define PCIE_REG_MASK 0xFFF
+
+#define PCIE_ADDR_OFFSET(bus, slot, func, reg) \
+ ((((bus) & PCIE_BUS_MASK) << PCIE_BUS_SHIFT) | \
+ (((slot) & PCIE_SLOT_MASK) << PCIE_SLOT_SHIFT) | \
+ (((func) & PCIE_FUNC_MASK) << PCIE_FUNC_SHIFT) | \
+ ((reg) & PCIE_REG_MASK))
+
+#define MAX_RANGES_TUPLES 5
+#define MIN_RANGES_TUPLES 2
+
+#define PCI_IO_WINDOW_OFFSET 0x1000
+#define PCI_IRQ_START 32
+#define PCI_IRQ_END (PCI_IRQ_START + 4)
+
+#define SPACE_CODE_SHIFT 24
+#define SPACE_CODE_MASK 0x3
+#define SPACE_CODE_IO_SPACE 0x1
+#define PROPS_CELL_SIZE 1
+#define PCI_ADDR_CELL_SIZE 2
+
+struct pcie_range {
+ uint64_t pci_base;
+ uint64_t phys_base;
+ uint64_t size;
+ uint64_t flags;
+#define FLAG_IO (1 << 0)
+#define FLAG_MEM (1 << 1)
+};
+
+struct generic_pcie_softc {
+ struct pcie_range ranges[MAX_RANGES_TUPLES];
+ int nranges;
+ struct rman mem_rman;
+ struct rman io_rman;
+ struct rman irq_rman;
+ struct resource *res;
+ struct resource *res1;
+ int ecam;
+ bus_space_tag_t bst;
+ bus_space_handle_t bsh;
+ device_t dev;
+ bus_space_handle_t ioh;
+};
+
+/* Forward prototypes */
+
+static int generic_pcie_probe(device_t dev);
+static int generic_pcie_attach(device_t dev);
+static int parse_pci_mem_ranges(struct generic_pcie_softc *sc);
+static uint32_t generic_pcie_read_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, int bytes);
+static void generic_pcie_write_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, uint32_t val, int bytes);
+static int generic_pcie_maxslots(device_t dev);
+static int generic_pcie_read_ivar(device_t dev, device_t child, int index,
+ uintptr_t *result);
+static int generic_pcie_write_ivar(device_t dev, device_t child, int index,
+ uintptr_t value);
+static struct resource *generic_pcie_alloc_resource(device_t dev,
+ device_t child, int type, int *rid, u_long start, u_long end,
+ u_long count, u_int flags);
+static int generic_pcie_release_resource(device_t dev, device_t child,
+ int type, int rid, struct resource *res);
+
+static int
+generic_pcie_probe(device_t dev)
+{
+
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
+
+ if (ofw_bus_is_compatible(dev, "pci-host-ecam-generic")) {
+ device_set_desc(dev, "Generic PCI host controller");
+ return (BUS_PROBE_DEFAULT);
+ }
+
+ return (ENXIO);
+}
+
+static int
+generic_pcie_attach(device_t dev)
+{
+ struct generic_pcie_softc *sc;
+ uint64_t phys_base;
+ uint64_t pci_base;
+ uint64_t size;
+ int error;
+ int tuple;
+ int rid;
+
+ sc = device_get_softc(dev);
+ sc->dev = dev;
+
+ rid = 0;
+ sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+ if (sc->res == NULL) {
+ device_printf(dev, "could not map memory.\n");
+ return (ENXIO);
+ }
+
+ sc->bst = rman_get_bustag(sc->res);
+ sc->bsh = rman_get_bushandle(sc->res);
+
+ sc->mem_rman.rm_type = RMAN_ARRAY;
+ sc->mem_rman.rm_descr = "PCIe Memory";
+ sc->io_rman.rm_type = RMAN_ARRAY;
+ sc->io_rman.rm_descr = "PCIe IO window";
+
+ /* Retrieve 'ranges' property from FDT */
+ if (bootverbose)
+ device_printf(dev, "parsing FDT for ECAM%d:\n",
+ sc->ecam);
+ if (parse_pci_mem_ranges(sc))
+ return (ENXIO);
+
+ /* Initialize rman and allocate memory regions */
+ error = rman_init(&sc->mem_rman);
+ if (error) {
+ device_printf(dev, "rman_init() failed. error = %d\n", error);
+ return (error);
+ }
+
+ error = rman_init(&sc->io_rman);
+ if (error) {
+ device_printf(dev, "rman_init() failed. error = %d\n", error);
+ return (error);
+ }
+
+ for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
+ phys_base = sc->ranges[tuple].phys_base;
+ pci_base = sc->ranges[tuple].pci_base;
+ size = sc->ranges[tuple].size;
+ if (phys_base == 0 || size == 0)
+ continue; /* empty range element */
+ if (sc->ranges[tuple].flags & FLAG_MEM) {
+ error = rman_manage_region(&sc->mem_rman,
+ phys_base,
+ phys_base + size);
+ } else if (sc->ranges[tuple].flags & FLAG_IO) {
+ error = rman_manage_region(&sc->io_rman,
+ pci_base + PCI_IO_WINDOW_OFFSET,
+ pci_base + PCI_IO_WINDOW_OFFSET + size);
+ } else
+ continue;
+ if (error) {
+ device_printf(dev, "rman_manage_region() failed."
+ "error = %d\n", error);
+ rman_fini(&sc->mem_rman);
+ return (error);
+ }
+ }
+
+ /* TODO: get IRQ numbers from FDT */
+ sc->irq_rman.rm_type = RMAN_ARRAY;
+ sc->irq_rman.rm_descr = "Generic PCIe IRQs";
+ if (rman_init(&sc->irq_rman) != 0 ||
+ rman_manage_region(&sc->irq_rman, PCI_IRQ_START,
+ PCI_IRQ_END) != 0) {
+ panic("Generic PCI: failed to set up IRQ rman");
+ }
+
+ device_add_child(dev, "pci", -1);
+ return (bus_generic_attach(dev));
+}
+
+static int
+parse_pci_mem_ranges(struct generic_pcie_softc *sc)
+{
+ pcell_t pci_addr_cells, parent_addr_cells;
+ pcell_t attributes, size_cells;
+ cell_t *base_ranges;
+ int nbase_ranges;
+ phandle_t node;
+ int i, j, k;
+ int tuple;
+
+ node = ofw_bus_get_node(sc->dev);
+
+ OF_getencprop(node, "#address-cells", &pci_addr_cells,
+ sizeof(pci_addr_cells));
+ OF_getencprop(node, "#size-cells", &size_cells,
+ sizeof(size_cells));
+ OF_getencprop(OF_parent(node), "#address-cells", &parent_addr_cells,
+ sizeof(parent_addr_cells));
+
+ if (parent_addr_cells != 2 || pci_addr_cells != 3 || size_cells != 2) {
+ device_printf(sc->dev,
+ "Unexpected number of address or size cells in FDT\n");
+ return (ENXIO);
+ }
+
+ nbase_ranges = OF_getproplen(node, "ranges");
+ sc->nranges = nbase_ranges / sizeof(cell_t) /
+ (parent_addr_cells + pci_addr_cells + size_cells);
+ base_ranges = malloc(nbase_ranges, M_DEVBUF, M_WAITOK);
+ OF_getencprop(node, "ranges", base_ranges, nbase_ranges);
+
+ for (i = 0, j = 0; i < sc->nranges; i++) {
+ attributes = (base_ranges[j++] >> SPACE_CODE_SHIFT) & \
+ SPACE_CODE_MASK;
+ if (attributes == SPACE_CODE_IO_SPACE) {
+ sc->ranges[i].flags |= FLAG_IO;
+ } else {
+ sc->ranges[i].flags |= FLAG_MEM;
+ }
+
+ sc->ranges[i].pci_base = 0;
+ for (k = 0; k < (pci_addr_cells - 1); k++) {
+ sc->ranges[i].pci_base <<= 32;
+ sc->ranges[i].pci_base |= base_ranges[j++];
+ }
+ sc->ranges[i].phys_base = 0;
+ for (k = 0; k < parent_addr_cells; k++) {
+ sc->ranges[i].phys_base <<= 32;
+ sc->ranges[i].phys_base |= base_ranges[j++];
+ }
+ sc->ranges[i].size = 0;
+ for (k = 0; k < size_cells; k++) {
+ sc->ranges[i].size <<= 32;
+ sc->ranges[i].size |= base_ranges[j++];
+ }
+ }
+
+ for (; i < MAX_RANGES_TUPLES; i++) {
+ /* zero-fill remaining tuples to mark empty elements in array */
+ sc->ranges[i].pci_base = 0;
+ sc->ranges[i].phys_base = 0;
+ sc->ranges[i].size = 0;
+ }
+
+ if (bootverbose) {
+ for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
+ device_printf(sc->dev,
+ "\tPCI addr: 0x%jx, CPU addr: 0x%jx, Size: 0x%jx\n",
+ sc->ranges[tuple].pci_base,
+ sc->ranges[tuple].phys_base,
+ sc->ranges[tuple].size);
+ }
+ }
+
+ free(base_ranges, M_DEVBUF);
+ return (0);
+}
+
+static uint32_t
+generic_pcie_read_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, int bytes)
+{
+ struct generic_pcie_softc *sc;
+ bus_space_handle_t h;
+ bus_space_tag_t t;
+ uint64_t offset;
+ uint32_t data;
+
+ if (bus > 255 || slot > 31 || func > 7 || reg > 4095)
+ return (~0U);
+
+ sc = device_get_softc(dev);
+
+ offset = PCIE_ADDR_OFFSET(bus, slot, func, reg);
+ t = sc->bst;
+ h = sc->bsh;
+
+ switch (bytes) {
+ case 1:
+ data = bus_space_read_1(t, h, offset);
+ break;
+ case 2:
+ data = le16toh(bus_space_read_2(t, h, offset));
+ break;
+ case 4:
+ data = le32toh(bus_space_read_4(t, h, offset));
+ break;
+ default:
+ return (~0U);
+ }
+
+ if (reg == PCIR_INTLINE) {
+ data += PCI_IRQ_START;
+ }
+
+ return (data);
+}
+
+static void
+generic_pcie_write_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, uint32_t val, int bytes)
+{
+ struct generic_pcie_softc *sc;
+ bus_space_handle_t h;
+ bus_space_tag_t t;
+ uint64_t offset;
+
+ if (bus > 255 || slot > 31 || func > 7 || reg > 4095)
+ return;
+
+ sc = device_get_softc(dev);
+
+ offset = PCIE_ADDR_OFFSET(bus, slot, func, reg);
+
+ t = sc->bst;
+ h = sc->bsh;
+
+ switch (bytes) {
+ case 1:
+ bus_space_write_1(t, h, offset, val);
+ break;
+ case 2:
+ bus_space_write_2(t, h, offset, htole16(val));
+ break;
+ case 4:
+ bus_space_write_4(t, h, offset, htole32(val));
+ break;
+ default:
+ return;
+ }
+}
+
+static int
+generic_pcie_maxslots(device_t dev)
+{
+
+ return (31); /* max slots per bus acc. to standard */
+}
+
+static int
+generic_pcie_read_ivar(device_t dev, device_t child, int index,
+ uintptr_t *result)
+{
+ struct generic_pcie_softc *sc;
+ int secondary_bus;
+
+ sc = device_get_softc(dev);
+
+ if (index == PCIB_IVAR_BUS) {
+ /* this pcib adds only pci bus 0 as child */
+ secondary_bus = 0;
+ *result = secondary_bus;
+ return (0);
+
+ }
+
+ if (index == PCIB_IVAR_DOMAIN) {
+ *result = sc->ecam;
+ return (0);
+ }
+
+ device_printf(dev, "ERROR: Unknown index.\n");
+ return (ENOENT);
+}
+
+static int
+generic_pcie_write_ivar(device_t dev, device_t child, int index,
+ uintptr_t value)
+{
+
+ return (ENOENT);
+}
+
+static struct rman *
+generic_pcie_rman(struct generic_pcie_softc *sc, int type)
+{
+
+ switch (type) {
+ case SYS_RES_IOPORT:
+ return (&sc->io_rman);
+ case SYS_RES_MEMORY:
+ return (&sc->mem_rman);
+ case SYS_RES_IRQ:
+ return (&sc->irq_rman);
+ default:
+ break;
+ }
+
+ return (NULL);
+}
+
+static int
+generic_pcie_release_resource(device_t dev, device_t child, int type,
+ int rid, struct resource *res)
+{
+ struct generic_pcie_softc *sc;
+ struct rman *rm;
+
+ sc = device_get_softc(dev);
+
+ rm = generic_pcie_rman(sc, type);
+ if (rm != NULL) {
+ KASSERT(rman_is_region_manager(res, rm), ("rman mismatch"));
+ rman_release_resource(res);
+ }
+
+ return (bus_generic_release_resource(dev, child, type, rid, res));
+}
+
+static struct resource *
+generic_pcie_alloc_resource(device_t dev, device_t child, int type, int *rid,
+ u_long start, u_long end, u_long count, u_int flags)
+{
+ struct generic_pcie_softc *sc;
+ struct resource *res;
+ struct rman *rm;
+
+ sc = device_get_softc(dev);
+
+ rm = generic_pcie_rman(sc, type);
+ if (rm == NULL)
+ return (BUS_ALLOC_RESOURCE(device_get_parent(dev), dev,
+ type, rid, start, end, count, flags));
+
+ if (bootverbose) {
+ device_printf(dev,
+ "rman_reserve_resource: start=%#lx, end=%#lx, count=%#lx\n",
+ start, end, count);
+ }
+
+ res = rman_reserve_resource(rm, start, end, count, flags, child);
+ if (res == NULL)
+ goto fail;
+
+ rman_set_rid(res, *rid);
+
+ if (flags & RF_ACTIVE)
+ if (bus_activate_resource(child, type, *rid, res)) {
+ rman_release_resource(res);
+ goto fail;
+ }
+
+ return (res);
+
+fail:
+ if (bootverbose) {
+ device_printf(dev, "%s FAIL: type=%d, rid=%d, "
+ "start=%016lx, end=%016lx, count=%016lx, flags=%x\n",
+ __func__, type, *rid, start, end, count, flags);
+ }
+
+ return (NULL);
+}
+
+static int
+generic_pcie_adjust_resource(device_t dev, device_t child, int type,
+ struct resource *res, u_long start, u_long end)
+{
+ struct generic_pcie_softc *sc;
+ struct rman *rm;
+
+ sc = device_get_softc(dev);
+
+ rm = generic_pcie_rman(sc, type);
+ if (rm != NULL)
+ return (rman_adjust_resource(res, start, end));
+ return (bus_generic_adjust_resource(dev, child, type, res, start, end));
+}
+
+static int
+generic_pcie_activate_resource(device_t dev, device_t child, int type, int rid,
+ struct resource *r)
+{
+ struct generic_pcie_softc *sc;
+ uint64_t phys_base;
+ uint64_t pci_base;
+ uint64_t size;
+ int found;
+ int res;
+ int i;
+
+ sc = device_get_softc(dev);
+
+ if ((res = rman_activate_resource(r)) != 0)
+ return (res);
+
+ switch(type) {
+ case SYS_RES_IOPORT:
+ found = 0;
+ for (i = 0; i < MAX_RANGES_TUPLES; i++) {
+ pci_base = sc->ranges[i].pci_base;
+ phys_base = sc->ranges[i].phys_base;
+ size = sc->ranges[i].size;
+
+ if ((rid > pci_base) && (rid < (pci_base + size))) {
+ found = 1;
+ break;
+ }
+ }
+ if (found) {
+ rman_set_start(r, rman_get_start(r) + phys_base);
+ BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child,
+ type, rid, r);
+ } else {
+ device_printf(dev, "Failed to activate IOPORT resource\n");
+ res = 0;
+ }
+ break;
+ case SYS_RES_MEMORY:
+ BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child, type, rid, r);
+ break;
+ default:
+ break;
+ }
+
+ return (res);
+}
+
+static int
+generic_pcie_deactivate_resource(device_t dev, device_t child, int type, int rid,
+ struct resource *r)
+{
+ struct generic_pcie_softc *sc;
+ vm_offset_t vaddr;
+ int res;
+
+ sc = device_get_softc(dev);
+
+ if ((res = rman_deactivate_resource(r)) != 0)
+ return (res);
+
+ switch(type) {
+ case SYS_RES_IOPORT:
+ case SYS_RES_MEMORY:
+ vaddr = (vm_offset_t)rman_get_virtual(r);
+ pmap_unmapdev(vaddr, rman_get_size(r));
+ break;
+ default:
+ break;
+ }
+
+ return (res);
+}
+
+static device_method_t generic_pcie_methods[] = {
+ DEVMETHOD(device_probe, generic_pcie_probe),
+ DEVMETHOD(device_attach, generic_pcie_attach),
+ DEVMETHOD(bus_read_ivar, generic_pcie_read_ivar),
+ DEVMETHOD(bus_write_ivar, generic_pcie_write_ivar),
+ DEVMETHOD(bus_alloc_resource, generic_pcie_alloc_resource),
+ DEVMETHOD(bus_adjust_resource, generic_pcie_adjust_resource),
+ DEVMETHOD(bus_release_resource, generic_pcie_release_resource),
+ DEVMETHOD(bus_activate_resource, generic_pcie_activate_resource),
+ DEVMETHOD(bus_deactivate_resource, generic_pcie_deactivate_resource),
+ DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
+ DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
+ DEVMETHOD(pcib_maxslots, generic_pcie_maxslots),
+ DEVMETHOD(pcib_read_config, generic_pcie_read_config),
+ DEVMETHOD(pcib_write_config, generic_pcie_write_config),
+ DEVMETHOD_END
+};
+
+static driver_t generic_pcie_driver = {
+ "pcib",
+ generic_pcie_methods,
+ sizeof(struct generic_pcie_softc),
+};
+
+static devclass_t generic_pcie_devclass;
+
+DRIVER_MODULE(pcib, simplebus, generic_pcie_driver,
+generic_pcie_devclass, 0, 0);
+DRIVER_MODULE(pcib, ofwbus, generic_pcie_driver,
+generic_pcie_devclass, 0, 0);
diff --git a/sys/dev/proto/proto_bus_pci.c b/sys/dev/proto/proto_bus_pci.c
index 46ec41e..53ebb5e 100644
--- a/sys/dev/proto/proto_bus_pci.c
+++ b/sys/dev/proto/proto_bus_pci.c
@@ -82,6 +82,7 @@ proto_pci_attach(device_t dev)
{
struct proto_softc *sc;
struct resource *res;
+ uint32_t val;
int bar, rid, type;
sc = device_get_softc(dev);
@@ -91,15 +92,17 @@ proto_pci_attach(device_t dev)
for (bar = 0; bar < PCIR_MAX_BAR_0; bar++) {
rid = PCIR_BAR(bar);
- type = SYS_RES_MEMORY;
+ val = pci_read_config(dev, rid, 4);
+ type = (PCI_BAR_IO(val)) ? SYS_RES_IOPORT : SYS_RES_MEMORY;
res = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE);
- if (res == NULL) {
- type = SYS_RES_IOPORT;
- res = bus_alloc_resource_any(dev, type, &rid,
- RF_ACTIVE);
- }
- if (res != NULL)
- proto_add_resource(sc, type, rid, res);
+ if (res == NULL)
+ continue;
+ proto_add_resource(sc, type, rid, res);
+ if (type == SYS_RES_IOPORT)
+ continue;
+ /* Skip over adjacent BAR for 64-bit memory BARs. */
+ if ((val & PCIM_BAR_MEM_TYPE) == PCIM_BAR_MEM_64)
+ bar++;
}
rid = 0;
diff --git a/sys/dev/proto/proto_busdma.c b/sys/dev/proto/proto_busdma.c
index ced4eed..e01e76f 100644
--- a/sys/dev/proto/proto_busdma.c
+++ b/sys/dev/proto/proto_busdma.c
@@ -129,6 +129,16 @@ proto_busdma_tag_lookup(struct proto_busdma *busdma, u_long key)
return (NULL);
}
+static void
+proto_busdma_mem_alloc_callback(void *arg, bus_dma_segment_t *segs, int nseg,
+ int error)
+{
+ struct proto_ioc_busdma *ioc = arg;
+
+ ioc->u.mem.bus_nsegs = nseg;
+ ioc->u.mem.bus_addr = segs[0].ds_addr;
+}
+
static int
proto_busdma_mem_alloc(struct proto_busdma *busdma, struct proto_tag *tag,
struct proto_ioc_busdma *ioc)
@@ -153,10 +163,18 @@ proto_busdma_mem_alloc(struct proto_busdma *busdma, struct proto_tag *tag,
return (error);
}
md->physaddr = pmap_kextract((uintptr_t)(md->virtaddr));
+ error = bus_dmamap_load(md->bd_tag, md->bd_map, md->virtaddr,
+ tag->maxsz, proto_busdma_mem_alloc_callback, ioc, BUS_DMA_NOWAIT);
+ if (error) {
+ bus_dmamem_free(md->bd_tag, md->virtaddr, md->bd_map);
+ bus_dma_tag_destroy(md->bd_tag);
+ free(md, M_PROTO_BUSDMA);
+ return (error);
+ }
LIST_INSERT_HEAD(&tag->mds, md, peers);
LIST_INSERT_HEAD(&busdma->mds, md, mds);
- ioc->u.mem.nsegs = 1;
- ioc->u.mem.physaddr = md->physaddr;
+ ioc->u.mem.phys_nsegs = 1;
+ ioc->u.mem.phys_addr = md->physaddr;
ioc->result = (uintptr_t)(void *)md;
return (0);
}
diff --git a/sys/dev/proto/proto_dev.h b/sys/dev/proto/proto_dev.h
index 0050f0b..88a61a7 100644
--- a/sys/dev/proto/proto_dev.h
+++ b/sys/dev/proto/proto_dev.h
@@ -62,8 +62,10 @@ struct proto_ioc_busdma {
struct {
unsigned long tag;
unsigned int flags;
- unsigned int nsegs;
- unsigned long physaddr;
+ unsigned int phys_nsegs;
+ unsigned long phys_addr;
+ unsigned long bus_addr;
+ unsigned int bus_nsegs;
} mem;
} u;
unsigned long result;
diff --git a/sys/dev/uart/uart_bus_pci.c b/sys/dev/uart/uart_bus_pci.c
index b297502..7ba4dc9 100644
--- a/sys/dev/uart/uart_bus_pci.c
+++ b/sys/dev/uart/uart_bus_pci.c
@@ -69,6 +69,7 @@ struct pci_id {
const char *desc;
int rid;
int rclk;
+ int regshft;
};
static const struct pci_id pci_ns8250_ids[] = {
@@ -118,6 +119,10 @@ static const struct pci_id pci_ns8250_ids[] = {
{ 0x151f, 0x0000, 0xffff, 0, "TOPIC Semiconductor TP560 56k modem", 0x10 },
{ 0x1fd4, 0x1999, 0x1fd4, 0x0001, "Sunix SER5xxxx Serial Port", 0x10,
8 * DEFAULT_RCLK },
+{ 0x8086, 0x0f0a, 0xffff, 0, "Intel ValleyView LPIO1 HSUART#1", 0x10,
+ 24 * DEFAULT_RCLK, 2 },
+{ 0x8086, 0x0f0c, 0xffff, 0, "Intel ValleyView LPIO1 HSUART#2", 0x10,
+ 24 * DEFAULT_RCLK, 2 },
{ 0x8086, 0x1c3d, 0xffff, 0, "Intel AMT - KT Controller", 0x10 },
{ 0x8086, 0x1d3d, 0xffff, 0, "Intel C600/X79 Series Chipset KT Controller", 0x10 },
{ 0x8086, 0x2a07, 0xffff, 0, "Intel AMT - PM965/GM965 KT Controller", 0x10 },
@@ -186,7 +191,7 @@ uart_pci_probe(device_t dev)
return (ENXIO);
match:
- result = uart_bus_probe(dev, 0, id->rclk, id->rid, 0);
+ result = uart_bus_probe(dev, id->regshft, id->rclk, id->rid, 0);
/* Bail out on error. */
if (result > 0)
return (result);
diff --git a/sys/dev/usb/misc/ugold.c b/sys/dev/usb/misc/ugold.c
new file mode 100644
index 0000000..d6f8f77
--- /dev/null
+++ b/sys/dev/usb/misc/ugold.c
@@ -0,0 +1,405 @@
+/* $OpenBSD: ugold.c,v 1.7 2014/12/11 18:39:27 mpi Exp $ */
+
+/*
+ * Copyright (c) 2013 Takayoshi SASANO <sasano@openbsd.org>
+ * Copyright (c) 2013 Martin Pieuchot <mpi@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* Driver for Microdia's HID based TEMPer Temperature sensor */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/stdint.h>
+#include <sys/stddef.h>
+#include <sys/param.h>
+#include <sys/queue.h>
+#include <sys/types.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/bus.h>
+#include <sys/module.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/condvar.h>
+#include <sys/sysctl.h>
+#include <sys/sx.h>
+#include <sys/unistd.h>
+#include <sys/callout.h>
+#include <sys/malloc.h>
+#include <sys/priv.h>
+#include <sys/conf.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbhid.h>
+#include <dev/usb/usb_process.h>
+#include <dev/usb/usbdi_util.h>
+#include "usbdevs.h"
+
+#define USB_DEBUG_VAR usb_debug
+#include <dev/usb/usb_debug.h>
+
+#define UGOLD_INNER 0
+#define UGOLD_OUTER 1
+#define UGOLD_MAX_SENSORS 2
+
+#define UGOLD_CMD_DATA 0x80
+#define UGOLD_CMD_INIT 0x82
+
+enum {
+ UGOLD_INTR_DT,
+ UGOLD_N_TRANSFER,
+};
+
+/*
+ * This driver only uses two of the three known commands for the
+ * TEMPerV1.2 device.
+ *
+ * The first byte of the answer corresponds to the command and the
+ * second one seems to be the size (in bytes) of the answer.
+ *
+ * The device always sends 8 bytes and if the length of the answer
+ * is less than that, it just leaves the last bytes untouched. That
+ * is why most of the time the last n bytes of the answers are the
+ * same.
+ *
+ * The third command below seems to generate two answers with a
+ * string corresponding to the device, for example:
+ * 'TEMPer1F' and '1.1Per1F' (here Per1F is repeated).
+ */
+static uint8_t cmd_data[8] = {0x01, 0x80, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00};
+static uint8_t cmd_init[8] = {0x01, 0x82, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+#if 0
+static uint8_t cmd_type[8] = {0x01, 0x86, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+#endif
+
+struct ugold_softc;
+struct ugold_readout_msg {
+ struct usb_proc_msg hdr;
+ struct ugold_softc *sc;
+};
+
+struct ugold_softc {
+ struct usb_device *sc_udev;
+ struct usb_xfer *sc_xfer[UGOLD_N_TRANSFER];
+
+ struct callout sc_callout;
+ struct mtx sc_mtx;
+ struct ugold_readout_msg sc_readout_msg[2];
+
+ int sc_num_sensors;
+ int sc_sensor[UGOLD_MAX_SENSORS];
+ int sc_calib[UGOLD_MAX_SENSORS];
+ int sc_valid[UGOLD_MAX_SENSORS];
+ uint8_t sc_report_id;
+ uint8_t sc_iface_index[2];
+};
+
+/* prototypes */
+
+static device_probe_t ugold_probe;
+static device_attach_t ugold_attach;
+static device_detach_t ugold_detach;
+
+static usb_proc_callback_t ugold_readout_msg;
+
+static usb_callback_t ugold_intr_callback;
+
+static devclass_t ugold_devclass;
+
+static device_method_t ugold_methods[] = {
+ DEVMETHOD(device_probe, ugold_probe),
+ DEVMETHOD(device_attach, ugold_attach),
+ DEVMETHOD(device_detach, ugold_detach),
+
+ DEVMETHOD_END
+};
+
+static driver_t ugold_driver = {
+ .name = "ugold",
+ .methods = ugold_methods,
+ .size = sizeof(struct ugold_softc),
+};
+
+DRIVER_MODULE(ugold, uhub, ugold_driver, ugold_devclass, NULL, NULL);
+MODULE_DEPEND(ugold, usb, 1, 1, 1);
+MODULE_VERSION(ugold, 1);
+
+static const struct usb_config ugold_config[UGOLD_N_TRANSFER] = {
+
+ [UGOLD_INTR_DT] = {
+ .type = UE_INTERRUPT,
+ .endpoint = UE_ADDR_ANY,
+ .direction = UE_DIR_IN,
+ .flags = {.pipe_bof = 1,.short_xfer_ok = 1,},
+ .bufsize = 0, /* use wMaxPacketSize */
+ .callback = &ugold_intr_callback,
+ .if_index = 1,
+ },
+};
+
+static const STRUCT_USB_HOST_ID ugold_devs[] = {
+ {USB_VPI(USB_VENDOR_CHICONY2, USB_PRODUCT_CHICONY2_TEMPER, 0)},
+};
+
+static void
+ugold_timeout(void *arg)
+{
+ struct ugold_softc *sc = arg;
+
+ usb_proc_explore_lock(sc->sc_udev);
+ (void)usb_proc_explore_msignal(sc->sc_udev,
+ &sc->sc_readout_msg[0], &sc->sc_readout_msg[1]);
+ usb_proc_explore_unlock(sc->sc_udev);
+
+ callout_reset(&sc->sc_callout, 6 * hz, &ugold_timeout, sc);
+}
+
+static int
+ugold_probe(device_t dev)
+{
+ struct usb_attach_arg *uaa;
+
+ uaa = device_get_ivars(dev);
+ if (uaa->usb_mode != USB_MODE_HOST)
+ return (ENXIO);
+ if (uaa->info.bInterfaceClass != UICLASS_HID)
+ return (ENXIO);
+ if (uaa->info.bIfaceIndex != 0)
+ return (ENXIO);
+
+ return (usbd_lookup_id_by_uaa(ugold_devs, sizeof(ugold_devs), uaa));
+}
+
+static int
+ugold_attach(device_t dev)
+{
+ struct ugold_softc *sc = device_get_softc(dev);
+ struct usb_attach_arg *uaa = device_get_ivars(dev);
+ struct sysctl_oid *sensor_tree;
+ uint16_t d_len;
+ void *d_ptr;
+ int error;
+ int i;
+
+ sc->sc_udev = uaa->device;
+ sc->sc_readout_msg[0].hdr.pm_callback = &ugold_readout_msg;
+ sc->sc_readout_msg[0].sc = sc;
+ sc->sc_readout_msg[1].hdr.pm_callback = &ugold_readout_msg;
+ sc->sc_readout_msg[1].sc = sc;
+ sc->sc_iface_index[0] = uaa->info.bIfaceIndex;
+ sc->sc_iface_index[1] = uaa->info.bIfaceIndex + 1;
+
+ device_set_usb_desc(dev);
+ mtx_init(&sc->sc_mtx, "ugold lock", NULL, MTX_DEF | MTX_RECURSE);
+ callout_init_mtx(&sc->sc_callout, &sc->sc_mtx, 0);
+
+ /* grab all interfaces from other drivers */
+ for (i = 0;; i++) {
+ if (i == uaa->info.bIfaceIndex)
+ continue;
+ if (usbd_get_iface(uaa->device, i) == NULL)
+ break;
+
+ usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex);
+ }
+
+ /* figure out report ID */
+ error = usbd_req_get_hid_desc(uaa->device, NULL,
+ &d_ptr, &d_len, M_TEMP, uaa->info.bIfaceIndex);
+
+ if (error)
+ goto detach;
+
+ (void)hid_report_size(d_ptr, d_len, hid_input, &sc->sc_report_id);
+
+ free(d_ptr, M_TEMP);
+
+ error = usbd_transfer_setup(uaa->device,
+ sc->sc_iface_index, sc->sc_xfer, ugold_config,
+ UGOLD_N_TRANSFER, sc, &sc->sc_mtx);
+ if (error)
+ goto detach;
+
+ sensor_tree = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "sensors",
+ CTLFLAG_RD, NULL, "");
+
+ if (sensor_tree == NULL) {
+ error = ENOMEM;
+ goto detach;
+ }
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "inner", CTLFLAG_RD, &sc->sc_sensor[UGOLD_INNER], 0,
+ "Inner temperature in microCelcius");
+
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "inner_valid", CTLFLAG_RD, &sc->sc_valid[UGOLD_INNER], 0,
+ "Inner temperature is valid");
+
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "inner_calib", CTLFLAG_RWTUN, &sc->sc_calib[UGOLD_INNER], 0,
+ "Inner calibration temperature in microCelcius");
+
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "outer", CTLFLAG_RD, &sc->sc_sensor[UGOLD_OUTER], 0,
+ "Outer temperature in microCelcius");
+
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "outer_calib", CTLFLAG_RWTUN, &sc->sc_calib[UGOLD_OUTER], 0,
+ "Outer calibration temperature in microCelcius");
+
+ SYSCTL_ADD_INT(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(sensor_tree),
+ OID_AUTO, "outer_valid", CTLFLAG_RD, &sc->sc_valid[UGOLD_OUTER], 0,
+ "Outer temperature is valid");
+
+ mtx_lock(&sc->sc_mtx);
+ usbd_transfer_start(sc->sc_xfer[UGOLD_INTR_DT]);
+ ugold_timeout(sc);
+ mtx_unlock(&sc->sc_mtx);
+
+ return (0);
+
+detach:
+ DPRINTF("error=%s\n", usbd_errstr(error));
+ ugold_detach(dev);
+ return (error);
+}
+
+static int
+ugold_detach(device_t dev)
+{
+ struct ugold_softc *sc = device_get_softc(dev);
+
+ callout_drain(&sc->sc_callout);
+
+ usb_proc_explore_lock(sc->sc_udev);
+ usb_proc_explore_mwait(sc->sc_udev,
+ &sc->sc_readout_msg[0], &sc->sc_readout_msg[1]);
+ usb_proc_explore_unlock(sc->sc_udev);
+
+ usbd_transfer_unsetup(sc->sc_xfer, UGOLD_N_TRANSFER);
+
+ mtx_destroy(&sc->sc_mtx);
+
+ return (0);
+}
+
+static int
+ugold_ds75_temp(uint8_t msb, uint8_t lsb)
+{
+ /* DS75: 12bit precision mode : 0.0625 degrees Celsius ticks */
+ /* NOTE: MSB has a sign bit for negative temperatures */
+ int32_t temp = (msb << 24) | ((lsb & 0xF0) << 16);
+ return (((int64_t)temp * (int64_t)1000000LL) >> 24);
+}
+
+
+static void
+ugold_intr_callback(struct usb_xfer *xfer, usb_error_t error)
+{
+ struct ugold_softc *sc = usbd_xfer_softc(xfer);
+ struct usb_page_cache *pc;
+ uint8_t buf[8];
+ int temp;
+ int len;
+
+ usbd_xfer_status(xfer, &len, NULL, NULL, NULL);
+
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_TRANSFERRED:
+ memset(buf, 0, sizeof(buf));
+
+ pc = usbd_xfer_get_frame(xfer, 0);
+ usbd_copy_out(pc, 0, buf, MIN(len, sizeof(buf)));
+
+ switch (buf[0]) {
+ case UGOLD_CMD_INIT:
+ if (sc->sc_num_sensors)
+ break;
+
+ sc->sc_num_sensors = MIN(buf[1], UGOLD_MAX_SENSORS) /* XXX */ ;
+
+ DPRINTF("%d sensor%s type ds75/12bit (temperature)\n",
+ sc->sc_num_sensors, (sc->sc_num_sensors == 1) ? "" : "s");
+ break;
+ case UGOLD_CMD_DATA:
+ switch (buf[1]) {
+ case 4:
+ temp = ugold_ds75_temp(buf[4], buf[5]);
+ sc->sc_sensor[UGOLD_OUTER] = temp + sc->sc_calib[UGOLD_OUTER];
+ sc->sc_valid[UGOLD_OUTER] = 1;
+ /* FALLTHROUGH */
+ case 2:
+ temp = ugold_ds75_temp(buf[2], buf[3]);
+ sc->sc_sensor[UGOLD_INNER] = temp + sc->sc_calib[UGOLD_INNER];
+ sc->sc_valid[UGOLD_INNER] = 1;
+ break;
+ default:
+ DPRINTF("invalid data length (%d bytes)\n", buf[1]);
+ }
+ break;
+ default:
+ DPRINTF("unknown command 0x%02x\n", buf[0]);
+ break;
+ }
+ /* FALLTHROUGH */
+ case USB_ST_SETUP:
+tr_setup:
+ usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_len(xfer));
+ usbd_transfer_submit(xfer);
+ break;
+ default: /* Error */
+ if (error != USB_ERR_CANCELLED) {
+ /* try clear stall first */
+ usbd_xfer_set_stall(xfer);
+ goto tr_setup;
+ }
+ break;
+ }
+}
+
+static int
+ugold_issue_cmd(struct ugold_softc *sc, uint8_t *cmd, int len)
+{
+ return (usbd_req_set_report(sc->sc_udev, &sc->sc_mtx, cmd, len,
+ sc->sc_iface_index[1], UHID_OUTPUT_REPORT, sc->sc_report_id));
+}
+
+static void
+ugold_readout_msg(struct usb_proc_msg *pm)
+{
+ struct ugold_softc *sc = ((struct ugold_readout_msg *)pm)->sc;
+
+ usb_proc_explore_unlock(sc->sc_udev);
+
+ mtx_lock(&sc->sc_mtx);
+ if (sc->sc_num_sensors == 0)
+ ugold_issue_cmd(sc, cmd_init, sizeof(cmd_init));
+
+ ugold_issue_cmd(sc, cmd_data, sizeof(cmd_data));
+ mtx_unlock(&sc->sc_mtx);
+
+ usb_proc_explore_lock(sc->sc_udev);
+}
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index b19f766..aaf1d67 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -525,7 +525,7 @@ vendor DMI 0x0c0b DMI
vendor CANYON 0x0c10 Canyon
vendor ICOM 0x0c26 Icom Inc.
vendor GNOTOMETRICS 0x0c33 GN Otometrics
-vendor CHICONY2 0x0c45 Chicony
+vendor CHICONY2 0x0c45 Chicony / Microdia / Sonix Technology Co., Ltd.
vendor REINERSCT 0x0c4b Reiner-SCT
vendor SEALEVEL 0x0c52 Sealevel System
vendor JETI 0x0c6c Jeti
@@ -3050,6 +3050,11 @@ product MGE UPS2 0xffff MGE UPS SYSTEMS PROTECTIONCENTER 2
product MEI CASHFLOW_SC 0x1100 Cashflow-SC Cash Acceptor
product MEI S2000 0x1101 Series 2000 Combo Acceptor
+/* Microdia / Sonix Techonology Co., Ltd. products */
+product CHICONY2 YUREX 0x1010 YUREX
+product CHICONY2 CAM_1 0x62c0 CAM_1
+product CHICONY2 TEMPER 0x7401 TEMPer sensor
+
/* Micro Star International products */
product MSI BT_DONGLE 0x1967 Bluetooth USB dongle
product MSI RT3070_1 0x3820 RT3070
diff --git a/sys/dev/videomode/videomode.h b/sys/dev/videomode/videomode.h
index b223da8..3e64444 100644
--- a/sys/dev/videomode/videomode.h
+++ b/sys/dev/videomode/videomode.h
@@ -43,6 +43,7 @@ struct videomode {
int vtotal;
int flags; /* Video mode flags; see below. */
const char *name;
+ int hskew;
};
/*
diff --git a/sys/dev/virtio/mmio/virtio_mmio.h b/sys/dev/virtio/mmio/virtio_mmio.h
index 30e0286..81e87b7 100644
--- a/sys/dev/virtio/mmio/virtio_mmio.h
+++ b/sys/dev/virtio/mmio/virtio_mmio.h
@@ -36,10 +36,6 @@
#define VIRTIO_MMIO_MAGIC_VALUE 0x000
#define VIRTIO_MMIO_VERSION 0x004
#define VIRTIO_MMIO_DEVICE_ID 0x008
-
-#define VIRTIO_MMIO_MAGIC_VALUE 0x000
-#define VIRTIO_MMIO_VERSION 0x004
-#define VIRTIO_MMIO_DEVICE_ID 0x008
#define VIRTIO_MMIO_VENDOR_ID 0x00c
#define VIRTIO_MMIO_HOST_FEATURES 0x010
#define VIRTIO_MMIO_HOST_FEATURES_SEL 0x014
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index 704a3d9..3b6438f 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -443,7 +443,7 @@ vtnet_detach(device_t dev)
sc->vtnet_vlan_attach = NULL;
}
if (sc->vtnet_vlan_detach != NULL) {
- EVENTHANDLER_DEREGISTER(vlan_unconfg, sc->vtnet_vlan_detach);
+ EVENTHANDLER_DEREGISTER(vlan_unconfig, sc->vtnet_vlan_detach);
sc->vtnet_vlan_detach = NULL;
}
@@ -1080,8 +1080,12 @@ vtnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
(IFF_PROMISC | IFF_ALLMULTI)) {
if (sc->vtnet_flags & VTNET_FLAG_CTRL_RX)
vtnet_rx_filter(sc);
- else
- error = ENOTSUP;
+ else {
+ ifp->if_flags |= IFF_PROMISC;
+ if ((ifp->if_flags ^ sc->vtnet_if_flags)
+ & IFF_ALLMULTI)
+ error = ENOTSUP;
+ }
}
} else
vtnet_init_locked(sc);
diff --git a/sys/dev/xen/blkback/blkback.c b/sys/dev/xen/blkback/blkback.c
index d352242..459271e 100644
--- a/sys/dev/xen/blkback/blkback.c
+++ b/sys/dev/xen/blkback/blkback.c
@@ -85,11 +85,19 @@ __FBSDID("$FreeBSD$");
/*--------------------------- Compile-time Tunables --------------------------*/
/**
+ * The maximum number of shared memory ring pages we will allow in a
+ * negotiated block-front/back communication channel. Allow enough
+ * ring space for all requests to be XBB_MAX_REQUEST_SIZE'd.
+ */
+#define XBB_MAX_RING_PAGES 32
+
+/**
* The maximum number of outstanding request blocks (request headers plus
* additional segment blocks) we will allow in a negotiated block-front/back
* communication channel.
*/
-#define XBB_MAX_REQUESTS 256
+#define XBB_MAX_REQUESTS \
+ __CONST_RING_SIZE(blkif, PAGE_SIZE * XBB_MAX_RING_PAGES)
/**
* \brief Define to force all I/O to be performed on memory owned by the
@@ -148,14 +156,6 @@ static MALLOC_DEFINE(M_XENBLOCKBACK, "xbbd", "Xen Block Back Driver Data");
(XBB_MAX_REQUEST_SIZE / PAGE_SIZE) + 1)))
/**
- * The maximum number of shared memory ring pages we will allow in a
- * negotiated block-front/back communication channel. Allow enough
- * ring space for all requests to be XBB_MAX_REQUEST_SIZE'd.
- */
-#define XBB_MAX_RING_PAGES \
- BLKIF_RING_PAGES(BLKIF_SEGS_TO_BLOCKS(XBB_MAX_SEGMENTS_PER_REQUEST) \
- * XBB_MAX_REQUESTS)
-/**
* The maximum number of ring pages that we can allow per request list.
* We limit this to the maximum number of segments per request, because
* that is already a reasonable number of segments to aggregate. This
@@ -1328,7 +1328,7 @@ xbb_queue_response(struct xbb_softc *xbb, struct xbb_xen_req *req, int status)
if (status != BLKIF_RSP_OKAY)
xbb->reqs_completed_with_error++;
- xbb->rings.common.rsp_prod_pvt += BLKIF_SEGS_TO_BLOCKS(req->nr_pages);
+ xbb->rings.common.rsp_prod_pvt++;
xbb->reqs_queued_for_completion++;
@@ -1666,87 +1666,49 @@ xbb_dispatch_io(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist)
goto send_response;
}
- block_segs = MIN(nreq->nr_pages,
- BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK);
+ block_segs = nseg;
sg = ring_req->seg;
last_block_sg = sg + block_segs;
- while (1) {
-
- while (sg < last_block_sg) {
- KASSERT(seg_idx <
- XBB_MAX_SEGMENTS_PER_REQLIST,
- ("seg_idx %d is too large, max "
- "segs %d\n", seg_idx,
- XBB_MAX_SEGMENTS_PER_REQLIST));
-
- xbb_sg->first_sect = sg->first_sect;
- xbb_sg->last_sect = sg->last_sect;
- xbb_sg->nsect =
- (int8_t)(sg->last_sect -
- sg->first_sect + 1);
-
- if ((sg->last_sect >= (PAGE_SIZE >> 9))
- || (xbb_sg->nsect <= 0)) {
- reqlist->status = BLKIF_RSP_ERROR;
- goto send_response;
- }
-
- nr_sects += xbb_sg->nsect;
- map->host_addr = xbb_get_gntaddr(reqlist,
- seg_idx, /*sector*/0);
- KASSERT(map->host_addr + PAGE_SIZE <=
- xbb->ring_config.gnt_addr,
- ("Host address %#jx len %d overlaps "
- "ring address %#jx\n",
- (uintmax_t)map->host_addr, PAGE_SIZE,
- (uintmax_t)xbb->ring_config.gnt_addr));
-
- map->flags = GNTMAP_host_map;
- map->ref = sg->gref;
- map->dom = xbb->otherend_id;
- if (operation == BIO_WRITE)
- map->flags |= GNTMAP_readonly;
- sg++;
- map++;
- xbb_sg++;
- seg_idx++;
- req_seg_idx++;
- }
- block_segs = MIN(nseg - req_seg_idx,
- BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK);
- if (block_segs == 0)
- break;
-
- /*
- * Fetch the next request block full of SG elements.
- * For now, only the spacing between entries is
- * different in the different ABIs, not the sg entry
- * layout.
- */
- req_ring_idx++;
- switch (xbb->abi) {
- case BLKIF_PROTOCOL_NATIVE:
- sg = BLKRING_GET_SEG_BLOCK(&xbb->rings.native,
- req_ring_idx);
- break;
- case BLKIF_PROTOCOL_X86_32:
- {
- sg = BLKRING_GET_SEG_BLOCK(&xbb->rings.x86_32,
- req_ring_idx);
- break;
- }
- case BLKIF_PROTOCOL_X86_64:
- {
- sg = BLKRING_GET_SEG_BLOCK(&xbb->rings.x86_64,
- req_ring_idx);
- break;
+ while (sg < last_block_sg) {
+ KASSERT(seg_idx <
+ XBB_MAX_SEGMENTS_PER_REQLIST,
+ ("seg_idx %d is too large, max "
+ "segs %d\n", seg_idx,
+ XBB_MAX_SEGMENTS_PER_REQLIST));
+
+ xbb_sg->first_sect = sg->first_sect;
+ xbb_sg->last_sect = sg->last_sect;
+ xbb_sg->nsect =
+ (int8_t)(sg->last_sect -
+ sg->first_sect + 1);
+
+ if ((sg->last_sect >= (PAGE_SIZE >> 9))
+ || (xbb_sg->nsect <= 0)) {
+ reqlist->status = BLKIF_RSP_ERROR;
+ goto send_response;
}
- default:
- panic("Unexpected blkif protocol ABI.");
- /* NOTREACHED */
- }
- last_block_sg = sg + block_segs;
+
+ nr_sects += xbb_sg->nsect;
+ map->host_addr = xbb_get_gntaddr(reqlist,
+ seg_idx, /*sector*/0);
+ KASSERT(map->host_addr + PAGE_SIZE <=
+ xbb->ring_config.gnt_addr,
+ ("Host address %#jx len %d overlaps "
+ "ring address %#jx\n",
+ (uintmax_t)map->host_addr, PAGE_SIZE,
+ (uintmax_t)xbb->ring_config.gnt_addr));
+
+ map->flags = GNTMAP_host_map;
+ map->ref = sg->gref;
+ map->dom = xbb->otherend_id;
+ if (operation == BIO_WRITE)
+ map->flags |= GNTMAP_readonly;
+ sg++;
+ map++;
+ xbb_sg++;
+ seg_idx++;
+ req_seg_idx++;
}
/* Convert to the disk's sector size */
@@ -2000,8 +1962,7 @@ xbb_run_queue(void *context, int pending)
* response be generated before we make room in
* the queue for that response.
*/
- xbb->rings.common.req_cons +=
- BLKIF_SEGS_TO_BLOCKS(ring_req->nr_segments);
+ xbb->rings.common.req_cons++;
xbb->reqs_received++;
cur_size = xbb_count_sects(ring_req);
@@ -3091,7 +3052,7 @@ xbb_collect_frontend_info(struct xbb_softc *xbb)
* Protocol defaults valid even if all negotiation fails.
*/
xbb->ring_config.ring_pages = 1;
- xbb->max_request_segments = BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK;
+ xbb->max_request_segments = BLKIF_MAX_SEGMENTS_PER_REQUEST;
xbb->max_request_size = xbb->max_request_segments * PAGE_SIZE;
/*
@@ -3122,60 +3083,23 @@ xbb_collect_frontend_info(struct xbb_softc *xbb)
* fields.
*/
ring_page_order = 0;
+ xbb->max_requests = 32;
+
(void)xs_scanf(XST_NIL, otherend_path,
"ring-page-order", NULL, "%u",
&ring_page_order);
xbb->ring_config.ring_pages = 1 << ring_page_order;
- (void)xs_scanf(XST_NIL, otherend_path,
- "num-ring-pages", NULL, "%u",
- &xbb->ring_config.ring_pages);
ring_size = PAGE_SIZE * xbb->ring_config.ring_pages;
xbb->max_requests = BLKIF_MAX_RING_REQUESTS(ring_size);
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-requests", NULL, "%u",
- &xbb->max_requests);
-
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-request-segments", NULL, "%u",
- &xbb->max_request_segments);
-
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-request-size", NULL, "%u",
- &xbb->max_request_size);
-
if (xbb->ring_config.ring_pages > XBB_MAX_RING_PAGES) {
xenbus_dev_fatal(xbb->dev, EINVAL,
"Front-end specified ring-pages of %u "
- "exceeds backend limit of %zu. "
+ "exceeds backend limit of %u. "
"Unable to connect.",
xbb->ring_config.ring_pages,
XBB_MAX_RING_PAGES);
return (EINVAL);
- } else if (xbb->max_requests > XBB_MAX_REQUESTS) {
- xenbus_dev_fatal(xbb->dev, EINVAL,
- "Front-end specified max_requests of %u "
- "exceeds backend limit of %u. "
- "Unable to connect.",
- xbb->max_requests,
- XBB_MAX_REQUESTS);
- return (EINVAL);
- } else if (xbb->max_request_segments > XBB_MAX_SEGMENTS_PER_REQUEST) {
- xenbus_dev_fatal(xbb->dev, EINVAL,
- "Front-end specified max_requests_segments "
- "of %u exceeds backend limit of %u. "
- "Unable to connect.",
- xbb->max_request_segments,
- XBB_MAX_SEGMENTS_PER_REQUEST);
- return (EINVAL);
- } else if (xbb->max_request_size > XBB_MAX_REQUEST_SIZE) {
- xenbus_dev_fatal(xbb->dev, EINVAL,
- "Front-end specified max_request_size "
- "of %u exceeds backend limit of %u. "
- "Unable to connect.",
- xbb->max_request_size,
- XBB_MAX_REQUEST_SIZE);
- return (EINVAL);
}
if (xbb->ring_config.ring_pages == 1) {
@@ -3723,18 +3647,6 @@ xbb_attach(device_t dev)
return (error);
}
- /*
- * Amazon EC2 client compatility. They refer to max-ring-pages
- * instead of to max-ring-page-order.
- */
- error = xs_printf(XST_NIL, xenbus_get_node(xbb->dev),
- "max-ring-pages", "%zu", XBB_MAX_RING_PAGES);
- if (error) {
- xbb_attach_failed(xbb, error, "writing %s/max-ring-pages",
- xenbus_get_node(xbb->dev));
- return (error);
- }
-
max_ring_page_order = flsl(XBB_MAX_RING_PAGES) - 1;
error = xs_printf(XST_NIL, xenbus_get_node(xbb->dev),
"max-ring-page-order", "%u", max_ring_page_order);
@@ -3744,32 +3656,6 @@ xbb_attach(device_t dev)
return (error);
}
- error = xs_printf(XST_NIL, xenbus_get_node(xbb->dev),
- "max-requests", "%u", XBB_MAX_REQUESTS);
- if (error) {
- xbb_attach_failed(xbb, error, "writing %s/max-requests",
- xenbus_get_node(xbb->dev));
- return (error);
- }
-
- error = xs_printf(XST_NIL, xenbus_get_node(xbb->dev),
- "max-request-segments", "%u",
- XBB_MAX_SEGMENTS_PER_REQUEST);
- if (error) {
- xbb_attach_failed(xbb, error, "writing %s/max-request-segments",
- xenbus_get_node(xbb->dev));
- return (error);
- }
-
- error = xs_printf(XST_NIL, xenbus_get_node(xbb->dev),
- "max-request-size", "%u",
- XBB_MAX_REQUEST_SIZE);
- if (error) {
- xbb_attach_failed(xbb, error, "writing %s/max-request-size",
- xenbus_get_node(xbb->dev));
- return (error);
- }
-
/* Collect physical device information. */
error = xs_gather(XST_NIL, xenbus_get_otherend_path(xbb->dev),
"device-type", NULL, &xbb->dev_type,
diff --git a/sys/dev/xen/blkfront/blkfront.c b/sys/dev/xen/blkfront/blkfront.c
index 92b5f35..3991f96 100644
--- a/sys/dev/xen/blkfront/blkfront.c
+++ b/sys/dev/xen/blkfront/blkfront.c
@@ -156,31 +156,71 @@ xbd_free_command(struct xbd_command *cm)
}
static void
+mksegarray(bus_dma_segment_t *segs, int nsegs,
+ grant_ref_t * gref_head, int otherend_id, int readonly,
+ grant_ref_t * sg_ref, blkif_request_segment_t * sg)
+{
+ struct blkif_request_segment *last_block_sg = sg + nsegs;
+ vm_paddr_t buffer_ma;
+ uint64_t fsect, lsect;
+ int ref;
+
+ while (sg < last_block_sg) {
+ buffer_ma = segs->ds_addr;
+ fsect = (buffer_ma & PAGE_MASK) >> XBD_SECTOR_SHFT;
+ lsect = fsect + (segs->ds_len >> XBD_SECTOR_SHFT) - 1;
+
+ KASSERT(lsect <= 7, ("XEN disk driver data cannot "
+ "cross a page boundary"));
+
+ /* install a grant reference. */
+ ref = gnttab_claim_grant_reference(gref_head);
+
+ /*
+ * GNTTAB_LIST_END == 0xffffffff, but it is private
+ * to gnttab.c.
+ */
+ KASSERT(ref != ~0, ("grant_reference failed"));
+
+ gnttab_grant_foreign_access_ref(
+ ref,
+ otherend_id,
+ buffer_ma >> PAGE_SHIFT,
+ readonly);
+
+ *sg_ref = ref;
+ *sg = (struct blkif_request_segment) {
+ .gref = ref,
+ .first_sect = fsect,
+ .last_sect = lsect
+ };
+ sg++;
+ sg_ref++;
+ segs++;
+ }
+}
+
+static void
xbd_queue_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
{
struct xbd_softc *sc;
struct xbd_command *cm;
blkif_request_t *ring_req;
- struct blkif_request_segment *sg;
- struct blkif_request_segment *last_block_sg;
- grant_ref_t *sg_ref;
- vm_paddr_t buffer_ma;
- uint64_t fsect, lsect;
- int ref;
int op;
- int block_segs;
cm = arg;
sc = cm->cm_sc;
if (error) {
- printf("error %d in xbd_queue_cb\n", error);
cm->cm_bp->bio_error = EIO;
biodone(cm->cm_bp);
xbd_free_command(cm);
return;
}
+ KASSERT(nsegs <= BLKIF_MAX_SEGMENTS_PER_REQUEST,
+ ("Too many segments in a blkfront I/O"));
+
/* Fill out a communications ring structure. */
ring_req = RING_GET_REQUEST(&sc->xbd_ring, sc->xbd_ring.req_prod_pvt);
sc->xbd_ring.req_prod_pvt++;
@@ -190,57 +230,10 @@ xbd_queue_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
ring_req->handle = (blkif_vdev_t)(uintptr_t)sc->xbd_disk;
ring_req->nr_segments = nsegs;
cm->cm_nseg = nsegs;
-
- block_segs = MIN(nsegs, BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK);
- sg = ring_req->seg;
- last_block_sg = sg + block_segs;
- sg_ref = cm->cm_sg_refs;
-
- while (1) {
-
- while (sg < last_block_sg) {
- buffer_ma = segs->ds_addr;
- fsect = (buffer_ma & PAGE_MASK) >> XBD_SECTOR_SHFT;
- lsect = fsect + (segs->ds_len >> XBD_SECTOR_SHFT) - 1;
-
- KASSERT(lsect <= 7, ("XEN disk driver data cannot "
- "cross a page boundary"));
-
- /* install a grant reference. */
- ref = gnttab_claim_grant_reference(&cm->cm_gref_head);
-
- /*
- * GNTTAB_LIST_END == 0xffffffff, but it is private
- * to gnttab.c.
- */
- KASSERT(ref != ~0, ("grant_reference failed"));
-
- gnttab_grant_foreign_access_ref(
- ref,
- xenbus_get_otherend_id(sc->xbd_dev),
- buffer_ma >> PAGE_SHIFT,
- ring_req->operation == BLKIF_OP_WRITE);
-
- *sg_ref = ref;
- *sg = (struct blkif_request_segment) {
- .gref = ref,
- .first_sect = fsect,
- .last_sect = lsect
- };
- sg++;
- sg_ref++;
- segs++;
- nsegs--;
- }
- block_segs = MIN(nsegs, BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK);
- if (block_segs == 0)
- break;
-
- sg = BLKRING_GET_SEG_BLOCK(&sc->xbd_ring,
- sc->xbd_ring.req_prod_pvt);
- sc->xbd_ring.req_prod_pvt++;
- last_block_sg = sg + block_segs;
- }
+ mksegarray(segs, nsegs, &cm->cm_gref_head,
+ xenbus_get_otherend_id(sc->xbd_dev),
+ cm->cm_operation == BLKIF_OP_WRITE,
+ cm->cm_sg_refs, ring_req->seg);
if (cm->cm_operation == BLKIF_OP_READ)
op = BUS_DMASYNC_PREREAD;
@@ -396,8 +389,8 @@ xbd_startio(struct xbd_softc *sc)
if (sc->xbd_state != XBD_STATE_CONNECTED)
return;
- while (RING_FREE_REQUESTS(&sc->xbd_ring) >=
- sc->xbd_max_request_blocks) {
+ while (!RING_FULL(&sc->xbd_ring)) {
+
if (sc->xbd_qfrozen_cnt != 0)
break;
@@ -450,13 +443,6 @@ xbd_bio_complete(struct xbd_softc *sc, struct xbd_command *cm)
biodone(bp);
}
-static int
-xbd_completion(struct xbd_command *cm)
-{
- gnttab_end_foreign_access_references(cm->cm_nseg, cm->cm_sg_refs);
- return (BLKIF_SEGS_TO_BLOCKS(cm->cm_nseg));
-}
-
static void
xbd_int(void *xsc)
{
@@ -482,7 +468,9 @@ xbd_int(void *xsc)
cm = &sc->xbd_shadow[bret->id];
xbd_remove_cm(cm, XBD_Q_BUSY);
- i += xbd_completion(cm);
+ gnttab_end_foreign_access_references(cm->cm_nseg,
+ cm->cm_sg_refs);
+ i++;
if (cm->cm_operation == BLKIF_OP_READ)
op = BUS_DMASYNC_POSTREAD;
@@ -1064,11 +1052,9 @@ xbd_initialize(struct xbd_softc *sc)
*/
max_ring_page_order = 0;
sc->xbd_ring_pages = 1;
- sc->xbd_max_request_segments = BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK;
+ sc->xbd_max_request_segments = BLKIF_MAX_SEGMENTS_PER_REQUEST;
sc->xbd_max_request_size =
XBD_SEGS_TO_SIZE(sc->xbd_max_request_segments);
- sc->xbd_max_request_blocks =
- BLKIF_SEGS_TO_BLOCKS(sc->xbd_max_request_segments);
/*
* Protocol negotiation.
@@ -1095,24 +1081,10 @@ xbd_initialize(struct xbd_softc *sc)
if (sc->xbd_ring_pages < 1)
sc->xbd_ring_pages = 1;
- sc->xbd_max_requests =
- BLKIF_MAX_RING_REQUESTS(sc->xbd_ring_pages * PAGE_SIZE);
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-requests", NULL, "%" PRIu32,
- &sc->xbd_max_requests);
-
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-request-segments", NULL, "%" PRIu32,
- &sc->xbd_max_request_segments);
-
- (void)xs_scanf(XST_NIL, otherend_path,
- "max-request-size", NULL, "%" PRIu32,
- &sc->xbd_max_request_size);
-
if (sc->xbd_ring_pages > XBD_MAX_RING_PAGES) {
device_printf(sc->xbd_dev,
"Back-end specified ring-pages of %u "
- "limited to front-end limit of %zu.\n",
+ "limited to front-end limit of %u.\n",
sc->xbd_ring_pages, XBD_MAX_RING_PAGES);
sc->xbd_ring_pages = XBD_MAX_RING_PAGES;
}
@@ -1128,46 +1100,16 @@ xbd_initialize(struct xbd_softc *sc)
sc->xbd_ring_pages = new_page_limit;
}
+ sc->xbd_max_requests =
+ BLKIF_MAX_RING_REQUESTS(sc->xbd_ring_pages * PAGE_SIZE);
if (sc->xbd_max_requests > XBD_MAX_REQUESTS) {
device_printf(sc->xbd_dev,
"Back-end specified max_requests of %u "
- "limited to front-end limit of %u.\n",
+ "limited to front-end limit of %zu.\n",
sc->xbd_max_requests, XBD_MAX_REQUESTS);
sc->xbd_max_requests = XBD_MAX_REQUESTS;
}
- if (sc->xbd_max_request_segments > XBD_MAX_SEGMENTS_PER_REQUEST) {
- device_printf(sc->xbd_dev,
- "Back-end specified max_request_segments of %u "
- "limited to front-end limit of %u.\n",
- sc->xbd_max_request_segments,
- XBD_MAX_SEGMENTS_PER_REQUEST);
- sc->xbd_max_request_segments = XBD_MAX_SEGMENTS_PER_REQUEST;
- }
-
- if (sc->xbd_max_request_size > XBD_MAX_REQUEST_SIZE) {
- device_printf(sc->xbd_dev,
- "Back-end specified max_request_size of %u "
- "limited to front-end limit of %u.\n",
- sc->xbd_max_request_size,
- XBD_MAX_REQUEST_SIZE);
- sc->xbd_max_request_size = XBD_MAX_REQUEST_SIZE;
- }
-
- if (sc->xbd_max_request_size >
- XBD_SEGS_TO_SIZE(sc->xbd_max_request_segments)) {
- device_printf(sc->xbd_dev,
- "Back-end specified max_request_size of %u "
- "limited to front-end limit of %u. (Too few segments.)\n",
- sc->xbd_max_request_size,
- XBD_SEGS_TO_SIZE(sc->xbd_max_request_segments));
- sc->xbd_max_request_size =
- XBD_SEGS_TO_SIZE(sc->xbd_max_request_segments);
- }
-
- sc->xbd_max_request_blocks =
- BLKIF_SEGS_TO_BLOCKS(sc->xbd_max_request_segments);
-
/* Allocate datastructures based on negotiated values. */
error = bus_dma_tag_create(
bus_get_dma_tag(sc->xbd_dev), /* parent */
@@ -1241,36 +1183,6 @@ xbd_initialize(struct xbd_softc *sc)
}
}
- error = xs_printf(XST_NIL, node_path,
- "max-requests","%u",
- sc->xbd_max_requests);
- if (error) {
- xenbus_dev_fatal(sc->xbd_dev, error,
- "writing %s/max-requests",
- node_path);
- return;
- }
-
- error = xs_printf(XST_NIL, node_path,
- "max-request-segments","%u",
- sc->xbd_max_request_segments);
- if (error) {
- xenbus_dev_fatal(sc->xbd_dev, error,
- "writing %s/max-request-segments",
- node_path);
- return;
- }
-
- error = xs_printf(XST_NIL, node_path,
- "max-request-size","%u",
- sc->xbd_max_request_size);
- if (error) {
- xenbus_dev_fatal(sc->xbd_dev, error,
- "writing %s/max-request-size",
- node_path);
- return;
- }
-
error = xs_printf(XST_NIL, node_path, "event-channel",
"%u", xen_intr_port(sc->xen_intr_handle));
if (error) {
diff --git a/sys/dev/xen/blkfront/block.h b/sys/dev/xen/blkfront/block.h
index 9c803bc..3007118 100644
--- a/sys/dev/xen/blkfront/block.h
+++ b/sys/dev/xen/blkfront/block.h
@@ -61,11 +61,19 @@
((size / PAGE_SIZE) + 1)
/**
+ * The maximum number of shared memory ring pages we will allow in a
+ * negotiated block-front/back communication channel. Allow enough
+ * ring space for all requests to be XBD_MAX_REQUEST_SIZE'd.
+ */
+#define XBD_MAX_RING_PAGES 32
+
+/**
* The maximum number of outstanding requests blocks (request headers plus
* additional segment blocks) we will allow in a negotiated block-front/back
* communication channel.
*/
-#define XBD_MAX_REQUESTS 256
+#define XBD_MAX_REQUESTS \
+ __CONST_RING_SIZE(blkif, PAGE_SIZE * XBD_MAX_RING_PAGES)
/**
* The maximum mapped region size per request we will allow in a negotiated
@@ -83,15 +91,6 @@
(MIN(BLKIF_MAX_SEGMENTS_PER_REQUEST, \
XBD_SIZE_TO_SEGS(XBD_MAX_REQUEST_SIZE)))
-/**
- * The maximum number of shared memory ring pages we will allow in a
- * negotiated block-front/back communication channel. Allow enough
- * ring space for all requests to be XBD_MAX_REQUEST_SIZE'd.
- */
-#define XBD_MAX_RING_PAGES \
- BLKIF_RING_PAGES(BLKIF_SEGS_TO_BLOCKS(XBD_MAX_SEGMENTS_PER_REQUEST) \
- * XBD_MAX_REQUESTS)
-
typedef enum {
XBDCF_Q_MASK = 0xFF,
/* This command has contributed to xbd_qfrozen_cnt. */
@@ -175,7 +174,6 @@ struct xbd_softc {
u_int xbd_ring_pages;
uint32_t xbd_max_requests;
uint32_t xbd_max_request_segments;
- uint32_t xbd_max_request_blocks;
uint32_t xbd_max_request_size;
grant_ref_t xbd_ring_ref[XBD_MAX_RING_PAGES];
blkif_front_ring_t xbd_ring;
diff --git a/sys/fs/fdescfs/fdesc_vfsops.c b/sys/fs/fdescfs/fdesc_vfsops.c
index d3d8ce0..f379c5a 100644
--- a/sys/fs/fdescfs/fdesc_vfsops.c
+++ b/sys/fs/fdescfs/fdesc_vfsops.c
@@ -199,9 +199,7 @@ fdesc_statfs(mp, sbp)
* limit is ever reduced below the current number
* of open files... ]
*/
- PROC_LOCK(td->td_proc);
- lim = lim_cur(td->td_proc, RLIMIT_NOFILE);
- PROC_UNLOCK(td->td_proc);
+ lim = lim_cur(td, RLIMIT_NOFILE);
fdp = td->td_proc->p_fd;
FILEDESC_SLOCK(fdp);
limit = racct_get_limit(td->td_proc, RACCT_NOFILE);
diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c
index 9c98832..15f3bd4 100644
--- a/sys/fs/fdescfs/fdesc_vnops.c
+++ b/sys/fs/fdescfs/fdesc_vnops.c
@@ -482,7 +482,7 @@ fdesc_setattr(ap)
/*
* Allow setattr where there is an underlying vnode.
*/
- error = getvnode(td->td_proc->p_fd, fd,
+ error = getvnode(td, fd,
cap_rights_init(&rights, CAP_EXTATTR_SET), &fp);
if (error) {
/*
diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c
index e8de4a5..53ba7ef 100644
--- a/sys/fs/nfsclient/nfs_clbio.c
+++ b/sys/fs/nfsclient/nfs_clbio.c
@@ -129,12 +129,6 @@ ncl_getpages(struct vop_getpages_args *ap)
npages = btoc(count);
/*
- * Since the caller has busied the requested page, that page's valid
- * field will not be changed by other threads.
- */
- vm_page_assert_xbusied(pages[ap->a_reqpage]);
-
- /*
* If the requested page is partially valid, just return it and
* allow the pager to zero-out the blanks. Partially valid pages
* can only occur at the file EOF.
diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c
index 2e35582..6114608 100644
--- a/sys/fs/tmpfs/tmpfs_subr.c
+++ b/sys/fs/tmpfs/tmpfs_subr.c
@@ -1031,6 +1031,7 @@ tmpfs_dir_detach(struct vnode *vp, struct tmpfs_dirent *de)
tmpfs_free_dirent(tmp, xde);
}
}
+ de->td_cookie = de->td_hash;
} else
RB_REMOVE(tmpfs_dir, head, de);
@@ -1320,7 +1321,7 @@ tmpfs_reg_resize(struct vnode *vp, off_t newsize, boolean_t ignerr)
struct tmpfs_mount *tmp;
struct tmpfs_node *node;
vm_object_t uobj;
- vm_page_t m, ma[1];
+ vm_page_t m;
vm_pindex_t idx, newpages, oldpages;
off_t oldsize;
int base, rv;
@@ -1367,11 +1368,9 @@ retry:
VM_WAIT;
VM_OBJECT_WLOCK(uobj);
goto retry;
- } else if (m->valid != VM_PAGE_BITS_ALL) {
- ma[0] = m;
- rv = vm_pager_get_pages(uobj, ma, 1, 0);
- m = vm_page_lookup(uobj, idx);
- } else
+ } else if (m->valid != VM_PAGE_BITS_ALL)
+ rv = vm_pager_get_pages(uobj, &m, 1, 0);
+ else
/* A cached page was reactivated. */
rv = VM_PAGER_OK;
vm_page_lock(m);
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c
index 36498e1..b4a1365 100644
--- a/sys/geom/label/g_label.c
+++ b/sys/geom/label/g_label.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/libkern.h>
#include <sys/sbuf.h>
+#include <sys/stddef.h>
#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/geom_slice.h>
@@ -96,6 +97,20 @@ const struct g_label_desc *g_labels[] = {
NULL
};
+void
+g_label_rtrim(char *label, size_t size)
+{
+ ptrdiff_t i;
+
+ for (i = size - 1; i >= 0; i--) {
+ if (label[i] == '\0')
+ continue;
+ else if (label[i] == ' ')
+ label[i] = '\0';
+ else
+ break;
+ }
+}
static int
g_label_destroy_geom(struct gctl_req *req __unused, struct g_class *mp,
diff --git a/sys/geom/label/g_label.h b/sys/geom/label/g_label.h
index 66b762c..9092d98 100644
--- a/sys/geom/label/g_label.h
+++ b/sys/geom/label/g_label.h
@@ -86,6 +86,8 @@ extern struct g_label_desc g_label_ntfs;
extern struct g_label_desc g_label_gpt;
extern struct g_label_desc g_label_gpt_uuid;
extern struct g_label_desc g_label_disk_ident;
+
+extern void g_label_rtrim(char *label, size_t size);
#endif /* _KERNEL */
struct g_label_metadata {
diff --git a/sys/geom/label/g_label_iso9660.c b/sys/geom/label/g_label_iso9660.c
index 154cefc..c3c49b0 100644
--- a/sys/geom/label/g_label_iso9660.c
+++ b/sys/geom/label/g_label_iso9660.c
@@ -47,7 +47,6 @@ g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size)
{
struct g_provider *pp;
char *sector, *volume;
- int i;
g_topology_assert_not();
pp = cp->provider;
@@ -68,14 +67,7 @@ g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size)
bzero(label, size);
strlcpy(label, volume, MIN(size, VOLUME_LEN));
g_free(sector);
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ g_label_rtrim(label, size);
}
struct g_label_desc g_label_iso9660 = {
diff --git a/sys/geom/label/g_label_msdosfs.c b/sys/geom/label/g_label_msdosfs.c
index 5f65a72..918fabc 100644
--- a/sys/geom/label/g_label_msdosfs.c
+++ b/sys/geom/label/g_label_msdosfs.c
@@ -48,7 +48,6 @@ g_label_msdosfs_taste(struct g_consumer *cp, char *label, size_t size)
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
- uint32_t i;
g_topology_assert_not();
pp = cp->provider;
@@ -200,14 +199,7 @@ g_label_msdosfs_taste(struct g_consumer *cp, char *label, size_t size)
}
endofchecks:
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ g_label_rtrim(label, size);
error:
if (sector0 != NULL)
diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES
index e5710bf..1bf8163 100644
--- a/sys/i386/conf/NOTES
+++ b/sys/i386/conf/NOTES
@@ -17,6 +17,23 @@ profile 2
#
options KDTRACE_HOOKS
+# DTrace core
+# NOTE: introduces CDDL-licensed components into the kernel
+#device dtrace
+
+# DTrace modules
+#device dtrace_lockstat
+#device dtrace_profile
+#device dtrace_sdt
+#device dtrace_fbt
+#device dtrace_systrace
+#device dtrace_prototype
+#device dtnfscl
+#device dtmalloc
+
+# Alternatively include all the DTrace modules
+#device dtraceall
+
#####################################################################
# SMP OPTIONS:
diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
index 39a8828..70c6d9d 100644
--- a/sys/i386/i386/exception.s
+++ b/sys/i386/i386/exception.s
@@ -157,9 +157,12 @@ IDTVEC(xmm)
.type alltraps,@function
alltraps:
pushal
- pushl %ds
- pushl %es
- pushl %fs
+ pushl $0
+ movl %ds,(%esp)
+ pushl $0
+ movl %es,(%esp)
+ pushl $0
+ movl %fs,(%esp)
alltraps_with_regs_pushed:
SET_KERNEL_SREGS
cld
@@ -233,9 +236,12 @@ IDTVEC(lcall_syscall)
pushl $7 /* sizeof "lcall 7,0" */
subl $4,%esp /* skip over tf_trapno */
pushal
- pushl %ds
- pushl %es
- pushl %fs
+ pushl $0
+ movl %ds,(%esp)
+ pushl $0
+ movl %es,(%esp)
+ pushl $0
+ movl %fs,(%esp)
SET_KERNEL_SREGS
cld
FAKE_MCOUNT(TF_EIP(%esp))
@@ -259,9 +265,12 @@ IDTVEC(int0x80_syscall)
pushl $2 /* sizeof "int 0x80" */
subl $4,%esp /* skip over tf_trapno */
pushal
- pushl %ds
- pushl %es
- pushl %fs
+ pushl $0
+ movl %ds,(%esp)
+ pushl $0
+ movl %es,(%esp)
+ pushl $0
+ movl %fs,(%esp)
SET_KERNEL_SREGS
cld
FAKE_MCOUNT(TF_EIP(%esp))
@@ -416,13 +425,16 @@ doreti_iret:
doreti_iret_fault:
subl $8,%esp
pushal
- pushl %ds
+ pushl $0
+ movl %ds,(%esp)
.globl doreti_popl_ds_fault
doreti_popl_ds_fault:
- pushl %es
+ pushl $0
+ movl %es,(%esp)
.globl doreti_popl_es_fault
doreti_popl_es_fault:
- pushl %fs
+ pushl $0
+ movl %fs,(%esp)
.globl doreti_popl_fs_fault
doreti_popl_fs_fault:
sti
diff --git a/sys/i386/i386/gdb_machdep.c b/sys/i386/i386/gdb_machdep.c
index a42b2b6..06809ad 100644
--- a/sys/i386/i386/gdb_machdep.c
+++ b/sys/i386/i386/gdb_machdep.c
@@ -45,14 +45,22 @@ __FBSDID("$FreeBSD$");
void *
gdb_cpu_getreg(int regnum, size_t *regsz)
{
+ static uint32_t _kcodesel = GSEL(GCODE_SEL, SEL_KPL);
+ static uint32_t _kdatasel = GSEL(GDATA_SEL, SEL_KPL);
+ static uint32_t _kprivsel = GSEL(GPRIV_SEL, SEL_KPL);
*regsz = gdb_cpu_regsz(regnum);
- if (kdb_thread == curthread) {
+ if (kdb_thread == curthread) {
switch (regnum) {
case 0: return (&kdb_frame->tf_eax);
case 1: return (&kdb_frame->tf_ecx);
case 2: return (&kdb_frame->tf_edx);
+ case 9: return (&kdb_frame->tf_eflags);
+ case 10: return (&kdb_frame->tf_cs);
+ case 12: return (&kdb_frame->tf_ds);
+ case 13: return (&kdb_frame->tf_es);
+ case 14: return (&kdb_frame->tf_fs);
}
}
switch (regnum) {
@@ -62,6 +70,12 @@ gdb_cpu_getreg(int regnum, size_t *regsz)
case 6: return (&kdb_thrctx->pcb_esi);
case 7: return (&kdb_thrctx->pcb_edi);
case 8: return (&kdb_thrctx->pcb_eip);
+ case 10: return (&_kcodesel);
+ case 11: return (&_kdatasel);
+ case 12: return (&_kdatasel);
+ case 13: return (&_kdatasel);
+ case 14: return (&_kprivsel);
+ case 15: return (&kdb_thrctx->pcb_gs);
}
return (NULL);
}
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 2763ef7..0373b6f 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -2867,6 +2867,7 @@ makectx(struct trapframe *tf, struct pcb *pcb)
pcb->pcb_ebx = tf->tf_ebx;
pcb->pcb_eip = tf->tf_eip;
pcb->pcb_esp = (ISPL(tf->tf_cs)) ? tf->tf_esp : (int)(tf + 1) - 8;
+ pcb->pcb_gs = rgs();
}
int
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 1ca406b..1e417bf 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -306,8 +306,8 @@ trap(struct trapframe *frame)
td->td_pticks = 0;
td->td_frame = frame;
addr = frame->tf_eip;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
switch (type) {
case T_PRIVINFLT: /* privileged instruction fault */
diff --git a/sys/i386/ibcs2/ibcs2_misc.c b/sys/i386/ibcs2/ibcs2_misc.c
index 2c2cae4..ccf5190 100644
--- a/sys/i386/ibcs2/ibcs2_misc.c
+++ b/sys/i386/ibcs2/ibcs2_misc.c
@@ -98,40 +98,30 @@ ibcs2_ulimit(td, uap)
struct ibcs2_ulimit_args *uap;
{
struct rlimit rl;
- struct proc *p;
int error;
#define IBCS2_GETFSIZE 1
#define IBCS2_SETFSIZE 2
#define IBCS2_GETPSIZE 3
#define IBCS2_GETDTABLESIZE 4
- p = td->td_proc;
switch (uap->cmd) {
case IBCS2_GETFSIZE:
- PROC_LOCK(p);
- td->td_retval[0] = lim_cur(p, RLIMIT_FSIZE);
- PROC_UNLOCK(p);
+ td->td_retval[0] = lim_cur(td, RLIMIT_FSIZE);
if (td->td_retval[0] == -1)
td->td_retval[0] = 0x7fffffff;
return 0;
case IBCS2_SETFSIZE:
- PROC_LOCK(p);
- rl.rlim_max = lim_max(p, RLIMIT_FSIZE);
- PROC_UNLOCK(p);
+ rl.rlim_max = lim_max(td, RLIMIT_FSIZE);
rl.rlim_cur = uap->newlimit;
error = kern_setrlimit(td, RLIMIT_FSIZE, &rl);
if (!error) {
- PROC_LOCK(p);
- td->td_retval[0] = lim_cur(p, RLIMIT_FSIZE);
- PROC_UNLOCK(p);
+ td->td_retval[0] = lim_cur(td, RLIMIT_FSIZE);
} else {
DPRINTF(("failed "));
}
return error;
case IBCS2_GETPSIZE:
- PROC_LOCK(p);
- td->td_retval[0] = lim_cur(p, RLIMIT_RSS); /* XXX */
- PROC_UNLOCK(p);
+ td->td_retval[0] = lim_cur(td, RLIMIT_RSS); /* XXX */
return 0;
case IBCS2_GETDTABLESIZE:
uap->cmd = IBCS2_SC_OPEN_MAX;
@@ -352,8 +342,7 @@ ibcs2_getdents(td, uap)
#define BSD_DIRENT(cp) ((struct dirent *)(cp))
#define IBCS2_RECLEN(reclen) (reclen + sizeof(u_short))
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
if ((fp->f_flag & FREAD) == 0) {
@@ -508,8 +497,7 @@ ibcs2_read(td, uap)
u_long *cookies = NULL, *cookiep;
int ncookies;
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0) {
if (error == EINVAL)
return sys_read(td, (struct read_args *)uap);
@@ -801,18 +789,14 @@ ibcs2_sysconf(td, uap)
struct ibcs2_sysconf_args *uap;
{
int mib[2], value, len, error;
- struct proc *p;
- p = td->td_proc;
switch(uap->name) {
case IBCS2_SC_ARG_MAX:
mib[1] = KERN_ARGMAX;
break;
case IBCS2_SC_CHILD_MAX:
- PROC_LOCK(p);
- td->td_retval[0] = lim_cur(td->td_proc, RLIMIT_NPROC);
- PROC_UNLOCK(p);
+ td->td_retval[0] = lim_cur(td, RLIMIT_NPROC);
return 0;
case IBCS2_SC_CLK_TCK:
@@ -824,9 +808,7 @@ ibcs2_sysconf(td, uap)
break;
case IBCS2_SC_OPEN_MAX:
- PROC_LOCK(p);
- td->td_retval[0] = lim_cur(td->td_proc, RLIMIT_NOFILE);
- PROC_UNLOCK(p);
+ td->td_retval[0] = lim_cur(td, RLIMIT_NOFILE);
return 0;
case IBCS2_SC_JOB_CONTROL:
diff --git a/sys/i386/include/asmacros.h b/sys/i386/include/asmacros.h
index 716915c..91c25f7 100644
--- a/sys/i386/include/asmacros.h
+++ b/sys/i386/include/asmacros.h
@@ -146,9 +146,12 @@
pushl $0 ; /* dummy error code */ \
pushl $0 ; /* dummy trap type */ \
pushal ; /* 8 ints */ \
- pushl %ds ; /* save data and extra segments ... */ \
- pushl %es ; \
- pushl %fs
+ pushl $0 ; /* save data and extra segments ... */ \
+ mov %ds,(%esp) ; \
+ pushl $0 ; \
+ mov %es,(%esp) ; \
+ pushl $0 ; \
+ mov %fs,(%esp)
#define POP_FRAME \
popl %fs ; \
diff --git a/sys/i386/include/gdb_machdep.h b/sys/i386/include/gdb_machdep.h
index 95af8d4..a60ba18 100644
--- a/sys/i386/include/gdb_machdep.h
+++ b/sys/i386/include/gdb_machdep.h
@@ -30,7 +30,7 @@
#define _MACHINE_GDB_MACHDEP_H_
#define GDB_BUFSZ 400
-#define GDB_NREGS 14
+#define GDB_NREGS 16
#define GDB_REG_PC 8
static __inline size_t
diff --git a/sys/i386/linux/imgact_linux.c b/sys/i386/linux/imgact_linux.c
index 0a4114b..9363b47 100644
--- a/sys/i386/linux/imgact_linux.c
+++ b/sys/i386/linux/imgact_linux.c
@@ -108,7 +108,7 @@ exec_linux_imgact(struct image_params *imgp)
*/
PROC_LOCK(imgp->proc);
if (a_out->a_text > maxtsiz ||
- a_out->a_data + bss_size > lim_cur(imgp->proc, RLIMIT_DATA) ||
+ a_out->a_data + bss_size > lim_cur_proc(imgp->proc, RLIMIT_DATA) ||
racct_set(imgp->proc, RACCT_DATA, a_out->a_data + bss_size) != 0) {
PROC_UNLOCK(imgp->proc);
return (ENOMEM);
diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c
index c9f969b..4fb5785 100644
--- a/sys/i386/linux/linux_machdep.c
+++ b/sys/i386/linux/linux_machdep.c
@@ -509,7 +509,7 @@ linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
*/
PROC_LOCK(p);
p->p_vmspace->vm_maxsaddr = (char *)USRSTACK -
- lim_cur(p, RLIMIT_STACK);
+ lim_cur_proc(p, RLIMIT_STACK);
PROC_UNLOCK(p);
}
diff --git a/sys/kern/imgact_aout.c b/sys/kern/imgact_aout.c
index edd5f5f..3165ac0 100644
--- a/sys/kern/imgact_aout.c
+++ b/sys/kern/imgact_aout.c
@@ -248,7 +248,7 @@ exec_aout_imgact(struct image_params *imgp)
a_out->a_text > maxtsiz ||
/* data + bss can't exceed rlimit */
- a_out->a_data + bss_size > lim_cur(imgp->proc, RLIMIT_DATA) ||
+ a_out->a_data + bss_size > lim_cur_proc(imgp->proc, RLIMIT_DATA) ||
racct_set(imgp->proc, RACCT_DATA, a_out->a_data + bss_size) != 0) {
PROC_UNLOCK(imgp->proc);
return (ENOMEM);
diff --git a/sys/kern/imgact_binmisc.c b/sys/kern/imgact_binmisc.c
index 5f324d3..5ee9bb8 100644
--- a/sys/kern/imgact_binmisc.c
+++ b/sys/kern/imgact_binmisc.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2013, Stacey D. Son
+ * Copyright (c) 2013-15, Stacey D. Son
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,6 +41,9 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/sysctl.h>
+#include <sys/sx.h>
+
+#include <machine/atomic.h>
/**
* Miscellaneous binary interpreter image activator.
@@ -96,7 +99,7 @@ static SLIST_HEAD(, imgact_binmisc_entry) interpreter_list =
static int interp_list_entry_count = 0;
-static struct mtx interp_list_mtx;
+static struct sx interp_list_sx;
int imgact_binmisc_exec(struct image_params *imgp);
@@ -111,7 +114,7 @@ imgact_binmisc_populate_interp(char *str, imgact_binmisc_entry_t *ibe)
char t[IBE_INTERP_LEN_MAX];
char *sp, *tp;
- bzero(t, sizeof(t));
+ memset(t, 0, sizeof(t));
/*
* Normalize interpreter string. Replace white space between args with
@@ -152,8 +155,6 @@ imgact_binmisc_new_entry(ximgact_binmisc_entry_t *xbe)
imgact_binmisc_entry_t *ibe = NULL;
size_t namesz = min(strlen(xbe->xbe_name) + 1, IBE_NAME_MAX);
- mtx_assert(&interp_list_mtx, MA_NOTOWNED);
-
ibe = malloc(sizeof(*ibe), M_BINMISC, M_WAITOK|M_ZERO);
ibe->ibe_name = malloc(namesz, M_BINMISC, M_WAITOK|M_ZERO);
@@ -203,7 +204,7 @@ imgact_binmisc_find_entry(char *name)
{
imgact_binmisc_entry_t *ibe;
- mtx_assert(&interp_list_mtx, MA_OWNED);
+ sx_assert(&interp_list_sx, SA_LOCKED);
SLIST_FOREACH(ibe, &interpreter_list, link) {
if (strncmp(name, ibe->ibe_name, IBE_NAME_MAX) == 0)
@@ -260,21 +261,20 @@ imgact_binmisc_add_entry(ximgact_binmisc_entry_t *xbe)
}
}
- mtx_lock(&interp_list_mtx);
+ sx_xlock(&interp_list_sx);
if (imgact_binmisc_find_entry(xbe->xbe_name) != NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_xunlock(&interp_list_sx);
return (EEXIST);
}
- mtx_unlock(&interp_list_mtx);
+ /* Preallocate a new entry. */
ibe = imgact_binmisc_new_entry(xbe);
if (!ibe)
return (ENOMEM);
- mtx_lock(&interp_list_mtx);
SLIST_INSERT_HEAD(&interpreter_list, ibe, link);
interp_list_entry_count++;
- mtx_unlock(&interp_list_mtx);
+ sx_xunlock(&interp_list_sx);
return (0);
}
@@ -288,14 +288,14 @@ imgact_binmisc_remove_entry(char *name)
{
imgact_binmisc_entry_t *ibe;
- mtx_lock(&interp_list_mtx);
+ sx_xlock(&interp_list_sx);
if ((ibe = imgact_binmisc_find_entry(name)) == NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_xunlock(&interp_list_sx);
return (ENOENT);
}
SLIST_REMOVE(&interpreter_list, ibe, imgact_binmisc_entry, link);
interp_list_entry_count--;
- mtx_unlock(&interp_list_mtx);
+ sx_xunlock(&interp_list_sx);
imgact_binmisc_destroy_entry(ibe);
@@ -311,14 +311,14 @@ imgact_binmisc_disable_entry(char *name)
{
imgact_binmisc_entry_t *ibe;
- mtx_lock(&interp_list_mtx);
+ sx_slock(&interp_list_sx);
if ((ibe = imgact_binmisc_find_entry(name)) == NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (ENOENT);
}
- ibe->ibe_flags &= ~IBF_ENABLED;
- mtx_unlock(&interp_list_mtx);
+ atomic_clear_32(&ibe->ibe_flags, IBF_ENABLED);
+ sx_sunlock(&interp_list_sx);
return (0);
}
@@ -332,14 +332,14 @@ imgact_binmisc_enable_entry(char *name)
{
imgact_binmisc_entry_t *ibe;
- mtx_lock(&interp_list_mtx);
+ sx_slock(&interp_list_sx);
if ((ibe = imgact_binmisc_find_entry(name)) == NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (ENOENT);
}
- ibe->ibe_flags |= IBF_ENABLED;
- mtx_unlock(&interp_list_mtx);
+ atomic_set_32(&ibe->ibe_flags, IBF_ENABLED);
+ sx_sunlock(&interp_list_sx);
return (0);
}
@@ -350,9 +350,9 @@ imgact_binmisc_populate_xbe(ximgact_binmisc_entry_t *xbe,
{
uint32_t i;
- mtx_assert(&interp_list_mtx, MA_OWNED);
+ sx_assert(&interp_list_sx, SA_LOCKED);
- bzero(xbe, sizeof(*xbe));
+ memset(xbe, 0, sizeof(*xbe));
strlcpy(xbe->xbe_name, ibe->ibe_name, IBE_NAME_MAX);
/* Copy interpreter string. Replace NULL breaks with space. */
@@ -382,14 +382,14 @@ imgact_binmisc_lookup_entry(char *name, ximgact_binmisc_entry_t *xbe)
imgact_binmisc_entry_t *ibe;
int error = 0;
- mtx_lock(&interp_list_mtx);
+ sx_slock(&interp_list_sx);
if ((ibe = imgact_binmisc_find_entry(name)) == NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (ENOENT);
}
error = imgact_binmisc_populate_xbe(xbe, ibe);
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (error);
}
@@ -404,14 +404,9 @@ imgact_binmisc_get_all_entries(struct sysctl_req *req)
imgact_binmisc_entry_t *ibe;
int error = 0, count;
- mtx_lock(&interp_list_mtx);
+ sx_slock(&interp_list_sx);
count = interp_list_entry_count;
- /* Don't block in malloc() while holding lock. */
- xbe = malloc(sizeof(*xbe) * count, M_BINMISC, M_NOWAIT|M_ZERO);
- if (!xbe) {
- mtx_unlock(&interp_list_mtx);
- return (ENOMEM);
- }
+ xbe = malloc(sizeof(*xbe) * count, M_BINMISC, M_WAITOK|M_ZERO);
xbep = xbe;
SLIST_FOREACH(ibe, &interpreter_list, link) {
@@ -419,7 +414,7 @@ imgact_binmisc_get_all_entries(struct sysctl_req *req)
if (error)
break;
}
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
if (!error)
error = SYSCTL_OUT(req, xbe, sizeof(*xbe) * count);
@@ -556,7 +551,7 @@ imgact_binmisc_find_interpreter(const char *image_header)
int i;
size_t sz;
- mtx_assert(&interp_list_mtx, MA_OWNED);
+ sx_assert(&interp_list_sx, SA_LOCKED);
SLIST_FOREACH(ibe, &interpreter_list, link) {
if (!(IBF_ENABLED & ibe->ibe_flags))
@@ -593,15 +588,15 @@ imgact_binmisc_exec(struct image_params *imgp)
char *s, *d;
/* Do we have an interpreter for the given image header? */
- mtx_lock(&interp_list_mtx);
+ sx_slock(&interp_list_sx);
if ((ibe = imgact_binmisc_find_interpreter(image_header)) == NULL) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (-1);
}
/* No interpreter nesting allowed. */
if (imgp->interpreted & IMGACT_BINMISC) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
return (ENOEXEC);
}
@@ -649,7 +644,7 @@ imgact_binmisc_exec(struct image_params *imgp)
default:
/* Hmm... This shouldn't happen. */
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
printf("%s: Unknown macro #%c sequence in "
"interpreter string\n", KMOD_NAME, *(s + 1));
error = EINVAL;
@@ -660,7 +655,7 @@ imgact_binmisc_exec(struct image_params *imgp)
/* Check to make sure we won't overrun the stringspace. */
if (offset > imgp->args->stringspace) {
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
error = E2BIG;
goto done;
}
@@ -720,7 +715,7 @@ imgact_binmisc_exec(struct image_params *imgp)
s++;
}
*d = '\0';
- mtx_unlock(&interp_list_mtx);
+ sx_sunlock(&interp_list_sx);
if (!error)
imgp->interpreter_name = imgp->args->begin_argv;
@@ -736,7 +731,7 @@ static void
imgact_binmisc_init(void *arg)
{
- mtx_init(&interp_list_mtx, KMOD_NAME, NULL, MTX_DEF);
+ sx_init(&interp_list_sx, KMOD_NAME);
}
static void
@@ -745,15 +740,15 @@ imgact_binmisc_fini(void *arg)
imgact_binmisc_entry_t *ibe, *ibe_tmp;
/* Free all the interpreters. */
- mtx_lock(&interp_list_mtx);
+ sx_xlock(&interp_list_sx);
SLIST_FOREACH_SAFE(ibe, &interpreter_list, link, ibe_tmp) {
SLIST_REMOVE(&interpreter_list, ibe, imgact_binmisc_entry,
link);
imgact_binmisc_destroy_entry(ibe);
}
- mtx_unlock(&interp_list_mtx);
+ sx_xunlock(&interp_list_sx);
- mtx_destroy(&interp_list_mtx);
+ sx_destroy(&interp_list_sx);
}
SYSINIT(imgact_binmisc, SI_SUB_EXEC, SI_ORDER_MIDDLE, imgact_binmisc_init, 0);
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index c3953fe..0675128 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -908,11 +908,11 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
* not actually fault in all the segments pages.
*/
PROC_LOCK(imgp->proc);
- if (data_size > lim_cur(imgp->proc, RLIMIT_DATA))
+ if (data_size > lim_cur_proc(imgp->proc, RLIMIT_DATA))
err_str = "Data segment size exceeds process limit";
else if (text_size > maxtsiz)
err_str = "Text segment size exceeds system limit";
- else if (total_size > lim_cur(imgp->proc, RLIMIT_VMEM))
+ else if (total_size > lim_cur_proc(imgp->proc, RLIMIT_VMEM))
err_str = "Total segment size exceeds process limit";
else if (racct_set(imgp->proc, RACCT_DATA, data_size) != 0)
err_str = "Data segment size exceeds resource limit";
@@ -936,7 +936,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
* calculation is that it leaves room for the heap to grow to
* its maximum allowed size.
*/
- addr = round_page((vm_offset_t)vmspace->vm_daddr + lim_max(imgp->proc,
+ addr = round_page((vm_offset_t)vmspace->vm_daddr + lim_max(curthread,
RLIMIT_DATA));
PROC_UNLOCK(imgp->proc);
@@ -1983,7 +1983,7 @@ note_procstat_rlimit(void *arg, struct sbuf *sb, size_t *sizep)
sbuf_bcat(sb, &structsize, sizeof(structsize));
PROC_LOCK(p);
for (i = 0; i < RLIM_NLIMITS; i++)
- lim_rlimit(p, i, &rlim[i]);
+ lim_rlimit_proc(p, i, &rlim[i]);
PROC_UNLOCK(p);
sbuf_bcat(sb, rlim, sizeof(rlim));
}
diff --git a/sys/kern/imgact_gzip.c b/sys/kern/imgact_gzip.c
index ab77a88..47b7280 100644
--- a/sys/kern/imgact_gzip.c
+++ b/sys/kern/imgact_gzip.c
@@ -212,7 +212,7 @@ do_aout_hdr(struct imgact_gzip * gz)
/* data + bss can't exceed rlimit */
gz->a_out.a_data + gz->bss_size >
- lim_cur(gz->ip->proc, RLIMIT_DATA) ||
+ lim_cur_proc(gz->ip->proc, RLIMIT_DATA) ||
racct_set(gz->ip->proc, RACCT_DATA,
gz->a_out.a_data + gz->bss_size) != 0) {
PROC_UNLOCK(gz->ip->proc);
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index cf4eed1..37539c4 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -523,8 +523,6 @@ proc0_init(void *dummy __unused)
#ifdef MAC
mac_cred_create_swapper(newcred);
#endif
- td->td_ucred = crhold(newcred);
-
/* Create sigacts. */
p->p_sigacts = sigacts_alloc();
@@ -556,6 +554,10 @@ proc0_init(void *dummy __unused)
p->p_limit->pl_rlimit[RLIMIT_MEMLOCK].rlim_max = pageablemem;
p->p_cpulimit = RLIM_INFINITY;
+ PROC_LOCK(p);
+ thread_cow_get_proc(td, p);
+ PROC_UNLOCK(p);
+
/* Initialize resource accounting structures. */
racct_create(&p->p_racct);
@@ -843,10 +845,10 @@ create_init(const void *udata __unused)
audit_cred_proc1(newcred);
#endif
proc_set_cred(initproc, newcred);
+ cred_update_thread(FIRST_THREAD_IN_PROC(initproc));
PROC_UNLOCK(initproc);
sx_xunlock(&proctree_lock);
crfree(oldcred);
- cred_update_thread(FIRST_THREAD_IN_PROC(initproc));
cpu_set_fork_handler(FIRST_THREAD_IN_PROC(initproc), start_init, NULL);
}
SYSINIT(init, SI_SUB_CREATE_INIT, SI_ORDER_FIRST, create_init, NULL);
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 7848396..8220786 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -109,7 +109,7 @@ static void fdgrowtable(struct filedesc *fdp, int nfd);
static void fdgrowtable_exp(struct filedesc *fdp, int nfd);
static void fdunused(struct filedesc *fdp, int fd);
static void fdused(struct filedesc *fdp, int fd);
-static int getmaxfd(struct proc *p);
+static int getmaxfd(struct thread *td);
/* Flags for do_dup() */
#define DUP_FIXED 0x1 /* Force fixed allocation. */
@@ -178,9 +178,6 @@ volatile int openfiles; /* actual number of open files */
struct mtx sigio_lock; /* mtx to protect pointers to sigio */
void (*mq_fdclose)(struct thread *td, int fd, struct file *fp);
-/* A mutex to protect the association between a proc and filedesc. */
-static struct mtx fdesc_mtx;
-
/*
* If low >= size, just return low. Otherwise find the first zero bit in the
* given bitmap, starting at low and not exceeding size - 1. Return size if
@@ -312,7 +309,7 @@ fdfree(struct filedesc *fdp, int fd)
seq_write_begin(&fde->fde_seq);
#endif
fdefree_last(fde);
- bzero(fde, fde_change_size);
+ fde->fde_file = NULL;
fdunused(fdp, fd);
#ifdef CAPABILITIES
seq_write_end(&fde->fde_seq);
@@ -331,16 +328,19 @@ struct getdtablesize_args {
int
sys_getdtablesize(struct thread *td, struct getdtablesize_args *uap)
{
- struct proc *p = td->td_proc;
+#ifdef RACCT
uint64_t lim;
+#endif
- PROC_LOCK(p);
td->td_retval[0] =
- min((int)lim_cur(p, RLIMIT_NOFILE), maxfilesperproc);
+ min((int)lim_cur(td, RLIMIT_NOFILE), maxfilesperproc);
+#ifdef RACCT
+ PROC_LOCK(td->td_proc);
lim = racct_get_limit(td->td_proc, RACCT_NOFILE);
- PROC_UNLOCK(p);
+ PROC_UNLOCK(td->td_proc);
if (lim < td->td_retval[0])
td->td_retval[0] = lim;
+#endif
return (0);
}
@@ -746,7 +746,8 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
arg = arg ? 128 * 1024: 0;
/* FALLTHROUGH */
case F_READAHEAD:
- error = fget_unlocked(fdp, fd, NULL, &fp, NULL);
+ error = fget_unlocked(fdp, fd,
+ cap_rights_init(&rights), &fp, NULL);
if (error != 0)
break;
if (fp->f_type != DTYPE_VNODE) {
@@ -783,15 +784,10 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
}
static int
-getmaxfd(struct proc *p)
+getmaxfd(struct thread *td)
{
- int maxfd;
- PROC_LOCK(p);
- maxfd = min((int)lim_cur(p, RLIMIT_NOFILE), maxfilesperproc);
- PROC_UNLOCK(p);
-
- return (maxfd);
+ return (min((int)lim_cur(td, RLIMIT_NOFILE), maxfilesperproc));
}
/*
@@ -819,7 +815,7 @@ do_dup(struct thread *td, int flags, int old, int new)
return (EBADF);
if (new < 0)
return (flags & DUP_FCNTL ? EINVAL : EBADF);
- maxfd = getmaxfd(p);
+ maxfd = getmaxfd(td);
if (new >= maxfd)
return (flags & DUP_FCNTL ? EINVAL : EBADF);
@@ -1619,7 +1615,7 @@ fdalloc(struct thread *td, int minfd, int *result)
if (fdp->fd_freefile > minfd)
minfd = fdp->fd_freefile;
- maxfd = getmaxfd(p);
+ maxfd = getmaxfd(td);
/*
* Search the bitmap for a free descriptor starting at minfd.
@@ -1656,7 +1652,6 @@ fdalloc(struct thread *td, int minfd, int *result)
("fd_first_free() returned non-free descriptor"));
KASSERT(fdp->fd_ofiles[fd].fde_file == NULL,
("file descriptor isn't free"));
- KASSERT(fdp->fd_ofiles[fd].fde_flags == 0, ("file flags are set"));
fdused(fdp, fd);
*result = fd;
return (0);
@@ -1755,32 +1750,23 @@ falloc_noinstall(struct thread *td, struct file **resultfp)
/*
* Install a file in a file descriptor table.
*/
-int
-finstall(struct thread *td, struct file *fp, int *fd, int flags,
+void
+_finstall(struct filedesc *fdp, struct file *fp, int fd, int flags,
struct filecaps *fcaps)
{
- struct filedesc *fdp = td->td_proc->p_fd;
struct filedescent *fde;
- int error;
- KASSERT(fd != NULL, ("%s: fd == NULL", __func__));
- KASSERT(fp != NULL, ("%s: fp == NULL", __func__));
+ MPASS(fp != NULL);
if (fcaps != NULL)
filecaps_validate(fcaps, __func__);
+ FILEDESC_XLOCK_ASSERT(fdp);
- FILEDESC_XLOCK(fdp);
- if ((error = fdalloc(td, 0, fd))) {
- FILEDESC_XUNLOCK(fdp);
- return (error);
- }
- fhold(fp);
- fde = &fdp->fd_ofiles[*fd];
+ fde = &fdp->fd_ofiles[fd];
#ifdef CAPABILITIES
seq_write_begin(&fde->fde_seq);
#endif
fde->fde_file = fp;
- if ((flags & O_CLOEXEC) != 0)
- fde->fde_flags |= UF_EXCLOSE;
+ fde->fde_flags = (flags & O_CLOEXEC) != 0 ? UF_EXCLOSE : 0;
if (fcaps != NULL)
filecaps_move(fcaps, &fde->fde_caps);
else
@@ -1788,6 +1774,24 @@ finstall(struct thread *td, struct file *fp, int *fd, int flags,
#ifdef CAPABILITIES
seq_write_end(&fde->fde_seq);
#endif
+}
+
+int
+finstall(struct thread *td, struct file *fp, int *fd, int flags,
+ struct filecaps *fcaps)
+{
+ struct filedesc *fdp = td->td_proc->p_fd;
+ int error;
+
+ MPASS(fd != NULL);
+
+ FILEDESC_XLOCK(fdp);
+ if ((error = fdalloc(td, 0, fd))) {
+ FILEDESC_XUNLOCK(fdp);
+ return (error);
+ }
+ fhold(fp);
+ _finstall(fdp, fp, *fd, flags, fcaps);
FILEDESC_XUNLOCK(fdp);
return (0);
}
@@ -1809,8 +1813,8 @@ fdinit(struct filedesc *fdp, bool prepfiles)
/* Create the file descriptor table. */
FILEDESC_LOCK_INIT(newfdp);
- newfdp->fd_refcnt = 1;
- newfdp->fd_holdcnt = 1;
+ refcount_init(&newfdp->fd_refcnt, 1);
+ refcount_init(&newfdp->fd_holdcnt, 1);
newfdp->fd_cmask = CMASK;
newfdp->fd_map = newfdp0->fd_dmap;
newfdp->fd_lastfile = -1;
@@ -1852,24 +1856,19 @@ fdhold(struct proc *p)
{
struct filedesc *fdp;
- mtx_lock(&fdesc_mtx);
+ PROC_LOCK_ASSERT(p, MA_OWNED);
fdp = p->p_fd;
if (fdp != NULL)
- fdp->fd_holdcnt++;
- mtx_unlock(&fdesc_mtx);
+ refcount_acquire(&fdp->fd_holdcnt);
return (fdp);
}
static void
fddrop(struct filedesc *fdp)
{
- int i;
if (fdp->fd_holdcnt > 1) {
- mtx_lock(&fdesc_mtx);
- i = --fdp->fd_holdcnt;
- mtx_unlock(&fdesc_mtx);
- if (i > 0)
+ if (refcount_release(&fdp->fd_holdcnt) == 0)
return;
}
@@ -1884,9 +1883,7 @@ struct filedesc *
fdshare(struct filedesc *fdp)
{
- FILEDESC_XLOCK(fdp);
- fdp->fd_refcnt++;
- FILEDESC_XUNLOCK(fdp);
+ refcount_acquire(&fdp->fd_refcnt);
return (fdp);
}
@@ -2032,6 +2029,7 @@ retry:
void
fdescfree(struct thread *td)
{
+ struct proc *p;
struct filedesc0 *fdp0;
struct filedesc *fdp;
struct freetable *ft, *tft;
@@ -2040,31 +2038,29 @@ fdescfree(struct thread *td)
struct vnode *cdir, *jdir, *rdir;
int i;
- fdp = td->td_proc->p_fd;
+ p = td->td_proc;
+ fdp = p->p_fd;
MPASS(fdp != NULL);
#ifdef RACCT
if (racct_enable) {
- PROC_LOCK(td->td_proc);
- racct_set(td->td_proc, RACCT_NOFILE, 0);
- PROC_UNLOCK(td->td_proc);
+ PROC_LOCK(p);
+ racct_set(p, RACCT_NOFILE, 0);
+ PROC_UNLOCK(p);
}
#endif
if (td->td_proc->p_fdtol != NULL)
fdclearlocks(td);
- mtx_lock(&fdesc_mtx);
- td->td_proc->p_fd = NULL;
- mtx_unlock(&fdesc_mtx);
+ PROC_LOCK(p);
+ p->p_fd = NULL;
+ PROC_UNLOCK(p);
- FILEDESC_XLOCK(fdp);
- i = --fdp->fd_refcnt;
- if (i > 0) {
- FILEDESC_XUNLOCK(fdp);
+ if (refcount_release(&fdp->fd_refcnt) == 0)
return;
- }
+ FILEDESC_XLOCK(fdp);
cdir = fdp->fd_cdir;
fdp->fd_cdir = NULL;
rdir = fdp->fd_rdir;
@@ -2373,11 +2369,9 @@ fget_unlocked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp,
if (fp == NULL)
return (EBADF);
#ifdef CAPABILITIES
- if (needrightsp != NULL) {
- error = cap_check(&haverights, needrightsp);
- if (error != 0)
- return (error);
- }
+ error = cap_check(&haverights, needrightsp);
+ if (error != 0)
+ return (error);
#endif
retry:
count = fp->f_count;
@@ -2438,11 +2432,9 @@ _fget(struct thread *td, int fd, struct file **fpp, int flags,
*fpp = NULL;
fdp = td->td_proc->p_fd;
- if (needrightsp != NULL)
- needrights = *needrightsp;
- else
- cap_rights_init(&needrights);
- error = fget_unlocked(fdp, fd, &needrights, &fp, seqp);
+ if (needrightsp == NULL)
+ needrightsp = cap_rights_init(&needrights);
+ error = fget_unlocked(fdp, fd, needrightsp, &fp, seqp);
if (error != 0)
return (error);
if (fp->f_ops == &badfileops) {
@@ -2855,7 +2847,7 @@ dupfdopen(struct thread *td, struct filedesc *fdp, int dfd, int mode,
seq_write_begin(&newfde->fde_seq);
#endif
memcpy(newfde, oldfde, fde_change_size);
- bzero(oldfde, fde_change_size);
+ oldfde->fde_file = NULL;
fdunused(fdp, dfd);
#ifdef CAPABILITIES
seq_write_end(&newfde->fde_seq);
@@ -2884,7 +2876,9 @@ mountcheckdirs(struct vnode *olddp, struct vnode *newdp)
nrele = 0;
sx_slock(&allproc_lock);
FOREACH_PROC_IN_SYSTEM(p) {
+ PROC_LOCK(p);
fdp = fdhold(p);
+ PROC_UNLOCK(p);
if (fdp == NULL)
continue;
FILEDESC_XLOCK(fdp);
@@ -2979,9 +2973,13 @@ sysctl_kern_file(SYSCTL_HANDLER_ARGS)
n = 0;
sx_slock(&allproc_lock);
FOREACH_PROC_IN_SYSTEM(p) {
- if (p->p_state == PRS_NEW)
+ PROC_LOCK(p);
+ if (p->p_state == PRS_NEW) {
+ PROC_UNLOCK(p);
continue;
+ }
fdp = fdhold(p);
+ PROC_UNLOCK(p);
if (fdp == NULL)
continue;
/* overestimates sparse tables. */
@@ -3008,8 +3006,8 @@ sysctl_kern_file(SYSCTL_HANDLER_ARGS)
}
xf.xf_pid = p->p_pid;
xf.xf_uid = p->p_ucred->cr_uid;
- PROC_UNLOCK(p);
fdp = fdhold(p);
+ PROC_UNLOCK(p);
if (fdp == NULL)
continue;
FILEDESC_SLOCK(fdp);
@@ -3644,7 +3642,6 @@ filelistinit(void *dummy)
filedesc0_zone = uma_zcreate("filedesc0", sizeof(struct filedesc0),
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
mtx_init(&sigio_lock, "sigio lock", NULL, MTX_DEF);
- mtx_init(&fdesc_mtx, "fdesc", NULL, MTX_DEF);
}
SYSINIT(select, SI_SUB_LOCK, SI_ORDER_FIRST, filelistinit, NULL);
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 9000add..ff17fe9 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -754,14 +754,10 @@ kern_kqueue(struct thread *td, int flags)
p = td->td_proc;
cred = td->td_ucred;
crhold(cred);
- PROC_LOCK(p);
- if (!chgkqcnt(cred->cr_ruidinfo, 1, lim_cur(td->td_proc,
- RLIMIT_KQUEUES))) {
- PROC_UNLOCK(p);
+ if (!chgkqcnt(cred->cr_ruidinfo, 1, lim_cur(td, RLIMIT_KQUEUES))) {
crfree(cred);
return (ENOMEM);
}
- PROC_UNLOCK(p);
fdp = p->p_fd;
error = falloc(td, &fp, &fd, flags);
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index 8668f0d..375e644 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -966,13 +966,10 @@ exec_map_first_page(imgp)
}
initial_pagein = i;
rv = vm_pager_get_pages(object, ma, initial_pagein, 0);
- ma[0] = vm_page_lookup(object, 0);
- if ((rv != VM_PAGER_OK) || (ma[0] == NULL)) {
- if (ma[0] != NULL) {
- vm_page_lock(ma[0]);
- vm_page_free(ma[0]);
- vm_page_unlock(ma[0]);
- }
+ if (rv != VM_PAGER_OK) {
+ vm_page_lock(ma[0]);
+ vm_page_free(ma[0]);
+ vm_page_unlock(ma[0]);
VM_OBJECT_WUNLOCK(object);
return (EIO);
}
@@ -1073,7 +1070,7 @@ exec_new_vmspace(imgp, sv)
if (imgp->stack_sz != 0) {
ssiz = trunc_page(imgp->stack_sz);
PROC_LOCK(p);
- lim_rlimit(p, RLIMIT_STACK, &rlim_stack);
+ lim_rlimit_proc(p, RLIMIT_STACK, &rlim_stack);
PROC_UNLOCK(p);
if (ssiz > rlim_stack.rlim_max)
ssiz = rlim_stack.rlim_max;
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index a3fde18..3fd4f09 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -496,7 +496,6 @@ do_fork(struct thread *td, int flags, struct proc *p2, struct thread *td2,
p2->p_swtick = ticks;
if (p1->p_flag & P_PROFIL)
startprofclock(p2);
- td2->td_ucred = crhold(p2->p_ucred);
if (flags & RFSIGSHARE) {
p2->p_sigacts = sigacts_hold(p1->p_sigacts);
@@ -526,6 +525,8 @@ do_fork(struct thread *td, int flags, struct proc *p2, struct thread *td2,
*/
lim_fork(p1, p2);
+ thread_cow_get_proc(td2, p2);
+
pstats_fork(p1->p_stats, p2->p_stats);
PROC_UNLOCK(p1);
@@ -911,10 +912,8 @@ fork1(struct thread *td, int flags, int pages, struct proc **procp,
if (error == 0)
ok = chgproccnt(td->td_ucred->cr_ruidinfo, 1, 0);
else {
- PROC_LOCK(p1);
ok = chgproccnt(td->td_ucred->cr_ruidinfo, 1,
- lim_cur(p1, RLIMIT_NPROC));
- PROC_UNLOCK(p1);
+ lim_cur(td, RLIMIT_NPROC));
}
if (ok) {
do_fork(td, flags, newproc, td2, vm2, pdflags);
diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c
index c87c4e2..c118d74 100644
--- a/sys/kern/kern_jail.c
+++ b/sys/kern/kern_jail.c
@@ -1331,7 +1331,7 @@ kern_jail_set(struct thread *td, struct uio *optuio, int flags)
pr->pr_securelevel = ppr->pr_securelevel;
pr->pr_allow = JAIL_DEFAULT_ALLOW & ppr->pr_allow;
- pr->pr_enforce_statfs = JAIL_DEFAULT_ENFORCE_STATFS;
+ pr->pr_enforce_statfs = jail_default_enforce_statfs;
pr->pr_devfs_rsnum = ppr->pr_devfs_rsnum;
pr->pr_osreldate = osreldt ? osreldt : ppr->pr_osreldate;
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c
index ee94de0..863bbc6 100644
--- a/sys/kern/kern_kthread.c
+++ b/sys/kern/kern_kthread.c
@@ -289,7 +289,7 @@ kthread_add(void (*func)(void *), void *arg, struct proc *p,
cpu_set_fork_handler(newtd, func, arg);
newtd->td_pflags |= TDP_KTHREAD;
- newtd->td_ucred = crhold(p->p_ucred);
+ thread_cow_get_proc(newtd, p);
/* this code almost the same as create_thread() in kern_thr.c */
p->p_flag |= P_HADTHREADS;
diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c
index ea6f7a6..72fc434 100644
--- a/sys/kern/kern_mutex.c
+++ b/sys/kern/kern_mutex.c
@@ -384,6 +384,7 @@ __mtx_lock_sleep(volatile uintptr_t *c, uintptr_t tid, int opts,
uint64_t spin_cnt = 0;
uint64_t sleep_cnt = 0;
int64_t sleep_time = 0;
+ int64_t all_time = 0;
#endif
if (SCHEDULER_STOPPED())
@@ -414,6 +415,9 @@ __mtx_lock_sleep(volatile uintptr_t *c, uintptr_t tid, int opts,
CTR4(KTR_LOCK,
"_mtx_lock_sleep: %s contested (lock=%p) at %s:%d",
m->lock_object.lo_name, (void *)m->mtx_lock, file, line);
+#ifdef KDTRACE_HOOKS
+ all_time -= lockstat_nsecs();
+#endif
while (!_mtx_obtain_lock(m, tid)) {
#ifdef KDTRACE_HOOKS
@@ -517,6 +521,9 @@ __mtx_lock_sleep(volatile uintptr_t *c, uintptr_t tid, int opts,
sleep_cnt++;
#endif
}
+#ifdef KDTRACE_HOOKS
+ all_time += lockstat_nsecs();
+#endif
#ifdef KTR
if (cont_logged) {
CTR4(KTR_CONTENTION,
@@ -534,7 +541,7 @@ __mtx_lock_sleep(volatile uintptr_t *c, uintptr_t tid, int opts,
* Only record the loops spinning and not sleeping.
*/
if (spin_cnt > sleep_cnt)
- LOCKSTAT_RECORD1(LS_MTX_LOCK_SPIN, m, (spin_cnt - sleep_cnt));
+ LOCKSTAT_RECORD1(LS_MTX_LOCK_SPIN, m, (all_time - sleep_time));
#endif
}
@@ -574,6 +581,9 @@ _mtx_lock_spin_cookie(volatile uintptr_t *c, uintptr_t tid, int opts,
int contested = 0;
uint64_t waittime = 0;
#endif
+#ifdef KDTRACE_HOOKS
+ int64_t spin_time = 0;
+#endif
if (SCHEDULER_STOPPED())
return;
@@ -589,6 +599,9 @@ _mtx_lock_spin_cookie(volatile uintptr_t *c, uintptr_t tid, int opts,
PMC_SOFT_CALL( , , lock, failed);
#endif
lock_profile_obtain_lock_failed(&m->lock_object, &contested, &waittime);
+#ifdef KDTRACE_HOOKS
+ spin_time -= lockstat_nsecs();
+#endif
while (!_mtx_obtain_lock(m, tid)) {
/* Give interrupts a chance while we spin. */
@@ -606,6 +619,9 @@ _mtx_lock_spin_cookie(volatile uintptr_t *c, uintptr_t tid, int opts,
}
spinlock_enter();
}
+#ifdef KDTRACE_HOOKS
+ spin_time += lockstat_nsecs();
+#endif
if (LOCK_LOG_TEST(&m->lock_object, opts))
CTR1(KTR_LOCK, "_mtx_lock_spin: %p spin done", m);
@@ -614,7 +630,7 @@ _mtx_lock_spin_cookie(volatile uintptr_t *c, uintptr_t tid, int opts,
LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE, m,
contested, waittime, (file), (line));
- LOCKSTAT_RECORD1(LS_MTX_SPIN_LOCK_SPIN, m, i);
+ LOCKSTAT_RECORD1(LS_MTX_SPIN_LOCK_SPIN, m, spin_time);
}
#endif /* SMP */
@@ -629,7 +645,7 @@ thread_lock_flags_(struct thread *td, int opts, const char *file, int line)
uint64_t waittime = 0;
#endif
#ifdef KDTRACE_HOOKS
- uint64_t spin_cnt = 0;
+ int64_t spin_time = 0;
#endif
i = 0;
@@ -638,6 +654,9 @@ thread_lock_flags_(struct thread *td, int opts, const char *file, int line)
if (SCHEDULER_STOPPED())
return;
+#ifdef KDTRACE_HOOKS
+ spin_time -= lockstat_nsecs();
+#endif
for (;;) {
retry:
spinlock_enter();
@@ -654,9 +673,6 @@ retry:
WITNESS_CHECKORDER(&m->lock_object,
opts | LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL);
while (!_mtx_obtain_lock(m, tid)) {
-#ifdef KDTRACE_HOOKS
- spin_cnt++;
-#endif
if (m->mtx_lock == tid) {
m->mtx_recurse++;
break;
@@ -685,17 +701,17 @@ retry:
if (m == td->td_lock)
break;
__mtx_unlock_spin(m); /* does spinlock_exit() */
+ }
#ifdef KDTRACE_HOOKS
- spin_cnt++;
+ spin_time += lockstat_nsecs();
#endif
- }
if (m->mtx_recurse == 0)
LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE,
m, contested, waittime, (file), (line));
LOCK_LOG_LOCK("LOCK", &m->lock_object, opts, m->mtx_recurse, file,
line);
WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line);
- LOCKSTAT_RECORD1(LS_THREAD_LOCK_SPIN, m, spin_cnt);
+ LOCKSTAT_RECORD1(LS_THREAD_LOCK_SPIN, m, spin_time);
}
struct mtx *
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index fc33feb..27c6f40 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -2615,7 +2615,7 @@ sysctl_kern_proc_rlimit(SYSCTL_HANDLER_ARGS)
*/
if (req->oldptr != NULL) {
PROC_LOCK(p);
- lim_rlimit(p, which, &rlim);
+ lim_rlimit_proc(p, which, &rlim);
PROC_UNLOCK(p);
}
error = SYSCTL_OUT(req, &rlim, sizeof(rlim));
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c
index 9c49f71..b531763 100644
--- a/sys/kern/kern_prot.c
+++ b/sys/kern/kern_prot.c
@@ -1946,9 +1946,8 @@ cred_update_thread(struct thread *td)
p = td->td_proc;
cred = td->td_ucred;
- PROC_LOCK(p);
+ PROC_LOCK_ASSERT(p, MA_OWNED);
td->td_ucred = crhold(p->p_ucred);
- PROC_UNLOCK(p);
if (cred != NULL)
crfree(cred);
}
@@ -1987,6 +1986,8 @@ proc_set_cred(struct proc *p, struct ucred *newcred)
oldcred = p->p_ucred;
p->p_ucred = newcred;
+ if (newcred != NULL)
+ PROC_UPDATE_COW(p);
return (oldcred);
}
diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c
index e8ae9fe..2a10790 100644
--- a/sys/kern/kern_racct.c
+++ b/sys/kern/kern_racct.c
@@ -500,7 +500,7 @@ racct_destroy(struct racct **racct)
* may be less than zero.
*/
static void
-racct_alloc_resource(struct racct *racct, int resource,
+racct_adjust_resource(struct racct *racct, int resource,
uint64_t amount)
{
@@ -553,7 +553,7 @@ racct_add_locked(struct proc *p, int resource, uint64_t amount)
return (error);
}
#endif
- racct_alloc_resource(p->p_racct, resource, amount);
+ racct_adjust_resource(p->p_racct, resource, amount);
racct_add_cred_locked(p->p_ucred, resource, amount);
return (0);
@@ -587,11 +587,11 @@ racct_add_cred_locked(struct ucred *cred, int resource, uint64_t amount)
SDT_PROBE(racct, kernel, rusage, add__cred, cred, resource, amount,
0, 0);
- racct_alloc_resource(cred->cr_ruidinfo->ui_racct, resource, amount);
+ racct_adjust_resource(cred->cr_ruidinfo->ui_racct, resource, amount);
for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent)
- racct_alloc_resource(pr->pr_prison_racct->prr_racct, resource,
+ racct_adjust_resource(pr->pr_prison_racct->prr_racct, resource,
amount);
- racct_alloc_resource(cred->cr_loginclass->lc_racct, resource, amount);
+ racct_adjust_resource(cred->cr_loginclass->lc_racct, resource, amount);
}
/*
@@ -631,7 +631,7 @@ racct_add_force(struct proc *p, int resource, uint64_t amount)
PROC_LOCK_ASSERT(p, MA_OWNED);
mtx_lock(&racct_lock);
- racct_alloc_resource(p->p_racct, resource, amount);
+ racct_adjust_resource(p->p_racct, resource, amount);
mtx_unlock(&racct_lock);
racct_add_cred(p->p_ucred, resource, amount);
}
@@ -685,7 +685,7 @@ racct_set_locked(struct proc *p, int resource, uint64_t amount)
}
}
#endif
- racct_alloc_resource(p->p_racct, resource, diff_proc);
+ racct_adjust_resource(p->p_racct, resource, diff_proc);
if (diff_cred > 0)
racct_add_cred_locked(p->p_ucred, resource, diff_cred);
else if (diff_cred < 0)
@@ -747,7 +747,7 @@ racct_set_force_locked(struct proc *p, int resource, uint64_t amount)
} else
diff_cred = diff_proc;
- racct_alloc_resource(p->p_racct, resource, diff_proc);
+ racct_adjust_resource(p->p_racct, resource, diff_proc);
if (diff_cred > 0)
racct_add_cred_locked(p->p_ucred, resource, diff_cred);
else if (diff_cred < 0)
@@ -849,7 +849,7 @@ racct_sub(struct proc *p, int resource, uint64_t amount)
"than allocated %jd for %s (pid %d)", __func__, amount, resource,
(intmax_t)p->p_racct->r_resources[resource], p->p_comm, p->p_pid));
- racct_alloc_resource(p->p_racct, resource, -amount);
+ racct_adjust_resource(p->p_racct, resource, -amount);
racct_sub_cred_locked(p->p_ucred, resource, amount);
mtx_unlock(&racct_lock);
}
@@ -870,11 +870,11 @@ racct_sub_cred_locked(struct ucred *cred, int resource, uint64_t amount)
resource));
#endif
- racct_alloc_resource(cred->cr_ruidinfo->ui_racct, resource, -amount);
+ racct_adjust_resource(cred->cr_ruidinfo->ui_racct, resource, -amount);
for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent)
- racct_alloc_resource(pr->pr_prison_racct->prr_racct, resource,
+ racct_adjust_resource(pr->pr_prison_racct->prr_racct, resource,
-amount);
- racct_alloc_resource(cred->cr_loginclass->lc_racct, resource, -amount);
+ racct_adjust_resource(cred->cr_loginclass->lc_racct, resource, -amount);
}
/*
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index dac49cd..546f3b2 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -560,15 +560,11 @@ ogetrlimit(struct thread *td, register struct ogetrlimit_args *uap)
{
struct orlimit olim;
struct rlimit rl;
- struct proc *p;
int error;
if (uap->which >= RLIM_NLIMITS)
return (EINVAL);
- p = td->td_proc;
- PROC_LOCK(p);
- lim_rlimit(p, uap->which, &rl);
- PROC_UNLOCK(p);
+ lim_rlimit(td, uap->which, &rl);
/*
* XXX would be more correct to convert only RLIM_INFINITY to the
@@ -625,7 +621,7 @@ lim_cb(void *arg)
}
PROC_STATUNLOCK(p);
if (p->p_rux.rux_runtime > p->p_cpulimit * cpu_tickrate()) {
- lim_rlimit(p, RLIMIT_CPU, &rlim);
+ lim_rlimit_proc(p, RLIMIT_CPU, &rlim);
if (p->p_rux.rux_runtime >= rlim.rlim_max * cpu_tickrate()) {
killproc(p, "exceeded maximum CPU limit");
} else {
@@ -667,29 +663,21 @@ kern_proc_setrlimit(struct thread *td, struct proc *p, u_int which,
limp->rlim_max = RLIM_INFINITY;
oldssiz.rlim_cur = 0;
- newlim = NULL;
+ newlim = lim_alloc();
PROC_LOCK(p);
- if (lim_shared(p->p_limit)) {
- PROC_UNLOCK(p);
- newlim = lim_alloc();
- PROC_LOCK(p);
- }
oldlim = p->p_limit;
alimp = &oldlim->pl_rlimit[which];
if (limp->rlim_cur > alimp->rlim_max ||
limp->rlim_max > alimp->rlim_max)
if ((error = priv_check(td, PRIV_PROC_SETRLIMIT))) {
PROC_UNLOCK(p);
- if (newlim != NULL)
- lim_free(newlim);
+ lim_free(newlim);
return (error);
}
if (limp->rlim_cur > limp->rlim_max)
limp->rlim_cur = limp->rlim_max;
- if (newlim != NULL) {
- lim_copy(newlim, oldlim);
- alimp = &newlim->pl_rlimit[which];
- }
+ lim_copy(newlim, oldlim);
+ alimp = &newlim->pl_rlimit[which];
switch (which) {
@@ -739,11 +727,10 @@ kern_proc_setrlimit(struct thread *td, struct proc *p, u_int which,
if (p->p_sysent->sv_fixlimit != NULL)
p->p_sysent->sv_fixlimit(limp, which);
*alimp = *limp;
- if (newlim != NULL)
- p->p_limit = newlim;
+ p->p_limit = newlim;
+ PROC_UPDATE_COW(p);
PROC_UNLOCK(p);
- if (newlim != NULL)
- lim_free(oldlim);
+ lim_free(oldlim);
if (which == RLIMIT_STACK &&
/*
@@ -793,15 +780,11 @@ int
sys_getrlimit(struct thread *td, register struct __getrlimit_args *uap)
{
struct rlimit rlim;
- struct proc *p;
int error;
if (uap->which >= RLIM_NLIMITS)
return (EINVAL);
- p = td->td_proc;
- PROC_LOCK(p);
- lim_rlimit(p, uap->which, &rlim);
- PROC_UNLOCK(p);
+ lim_rlimit(td, uap->which, &rlim);
error = copyout(&rlim, uap->rlp, sizeof(struct rlimit));
return (error);
}
@@ -1172,11 +1155,20 @@ lim_copy(struct plimit *dst, struct plimit *src)
* which parameter specifies the index into the rlimit array.
*/
rlim_t
-lim_max(struct proc *p, int which)
+lim_max(struct thread *td, int which)
{
struct rlimit rl;
- lim_rlimit(p, which, &rl);
+ lim_rlimit(td, which, &rl);
+ return (rl.rlim_max);
+}
+
+rlim_t
+lim_max_proc(struct proc *p, int which)
+{
+ struct rlimit rl;
+
+ lim_rlimit_proc(p, which, &rl);
return (rl.rlim_max);
}
@@ -1185,11 +1177,20 @@ lim_max(struct proc *p, int which)
* The which parameter which specifies the index into the rlimit array
*/
rlim_t
-lim_cur(struct proc *p, int which)
+lim_cur(struct thread *td, int which)
{
struct rlimit rl;
- lim_rlimit(p, which, &rl);
+ lim_rlimit(td, which, &rl);
+ return (rl.rlim_cur);
+}
+
+rlim_t
+lim_cur_proc(struct proc *p, int which)
+{
+ struct rlimit rl;
+
+ lim_rlimit_proc(p, which, &rl);
return (rl.rlim_cur);
}
@@ -1198,7 +1199,20 @@ lim_cur(struct proc *p, int which)
* specified by 'which' in the rlimit structure pointed to by 'rlp'.
*/
void
-lim_rlimit(struct proc *p, int which, struct rlimit *rlp)
+lim_rlimit(struct thread *td, int which, struct rlimit *rlp)
+{
+ struct proc *p = td->td_proc;
+
+ MPASS(td == curthread);
+ KASSERT(which >= 0 && which < RLIM_NLIMITS,
+ ("request for invalid resource limit"));
+ *rlp = td->td_limit->pl_rlimit[which];
+ if (p->p_sysent->sv_fixlimit != NULL)
+ p->p_sysent->sv_fixlimit(rlp, which);
+}
+
+void
+lim_rlimit_proc(struct proc *p, int which, struct rlimit *rlp)
{
PROC_LOCK_ASSERT(p, MA_OWNED);
@@ -1441,3 +1455,17 @@ chgkqcnt(struct uidinfo *uip, int diff, rlim_t max)
}
return (1);
}
+
+void
+lim_update_thread(struct thread *td)
+{
+ struct proc *p;
+ struct plimit *lim;
+
+ p = td->td_proc;
+ lim = td->td_limit;
+ PROC_LOCK_ASSERT(p, MA_OWNED);
+ td->td_limit = lim_hold(p->p_limit);
+ if (lim != NULL)
+ lim_free(lim);
+}
diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c
index d3cfbdd..f75912b 100644
--- a/sys/kern/kern_rwlock.c
+++ b/sys/kern/kern_rwlock.c
@@ -300,6 +300,9 @@ __rw_try_wlock(volatile uintptr_t *c, const char *file, int line)
if (rval) {
WITNESS_LOCK(&rw->lock_object, LOP_EXCLUSIVE | LOP_TRYLOCK,
file, line);
+ if (!rw_recursed(rw))
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_RW_WLOCK_ACQUIRE,
+ rw, 0, 0, file, line);
curthread->td_locks++;
}
return (rval);
@@ -352,9 +355,11 @@ __rw_rlock(volatile uintptr_t *c, const char *file, int line)
#endif
uintptr_t v;
#ifdef KDTRACE_HOOKS
+ uintptr_t state;
uint64_t spin_cnt = 0;
uint64_t sleep_cnt = 0;
int64_t sleep_time = 0;
+ int64_t all_time = 0;
#endif
if (SCHEDULER_STOPPED())
@@ -372,6 +377,10 @@ __rw_rlock(volatile uintptr_t *c, const char *file, int line)
rw->lock_object.lo_name, file, line));
WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER, file, line, NULL);
+#ifdef KDTRACE_HOOKS
+ all_time -= lockstat_nsecs();
+ state = rw->rw_lock;
+#endif
for (;;) {
#ifdef KDTRACE_HOOKS
spin_cnt++;
@@ -534,7 +543,19 @@ __rw_rlock(volatile uintptr_t *c, const char *file, int line)
CTR2(KTR_LOCK, "%s: %p resuming from turnstile",
__func__, rw);
}
+#ifdef KDTRACE_HOOKS
+ all_time += lockstat_nsecs();
+ if (sleep_time)
+ LOCKSTAT_RECORD4(LS_RW_RLOCK_BLOCK, rw, sleep_time,
+ LOCKSTAT_READER, (state & RW_LOCK_READ) == 0,
+ (state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
+ /* Record only the loops spinning and not sleeping. */
+ if (spin_cnt > sleep_cnt)
+ LOCKSTAT_RECORD4(LS_RW_RLOCK_SPIN, rw, all_time - sleep_time,
+ LOCKSTAT_READER, (state & RW_LOCK_READ) == 0,
+ (state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
+#endif
/*
* TODO: acquire "owner of record" here. Here be turnstile dragons
* however. turnstiles don't like owners changing between calls to
@@ -546,16 +567,6 @@ __rw_rlock(volatile uintptr_t *c, const char *file, int line)
WITNESS_LOCK(&rw->lock_object, 0, file, line);
curthread->td_locks++;
curthread->td_rw_rlocks++;
-#ifdef KDTRACE_HOOKS
- if (sleep_time)
- LOCKSTAT_RECORD1(LS_RW_RLOCK_BLOCK, rw, sleep_time);
-
- /*
- * Record only the loops spinning and not sleeping.
- */
- if (spin_cnt > sleep_cnt)
- LOCKSTAT_RECORD1(LS_RW_RLOCK_SPIN, rw, (spin_cnt - sleep_cnt));
-#endif
}
int
@@ -583,6 +594,8 @@ __rw_try_rlock(volatile uintptr_t *c, const char *file, int line)
LOCK_LOG_TRY("RLOCK", &rw->lock_object, 0, 1, file,
line);
WITNESS_LOCK(&rw->lock_object, LOP_TRYLOCK, file, line);
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_RW_RLOCK_ACQUIRE,
+ rw, 0, 0, file, line);
curthread->td_locks++;
curthread->td_rw_rlocks++;
return (1);
@@ -727,9 +740,11 @@ __rw_wlock_hard(volatile uintptr_t *c, uintptr_t tid, const char *file,
int contested = 0;
#endif
#ifdef KDTRACE_HOOKS
+ uintptr_t state;
uint64_t spin_cnt = 0;
uint64_t sleep_cnt = 0;
int64_t sleep_time = 0;
+ int64_t all_time = 0;
#endif
if (SCHEDULER_STOPPED())
@@ -751,6 +766,10 @@ __rw_wlock_hard(volatile uintptr_t *c, uintptr_t tid, const char *file,
CTR5(KTR_LOCK, "%s: %s contested (lock=%p) at %s:%d", __func__,
rw->lock_object.lo_name, (void *)rw->rw_lock, file, line);
+#ifdef KDTRACE_HOOKS
+ all_time -= lockstat_nsecs();
+ state = rw->rw_lock;
+#endif
while (!_rw_write_lock(rw, tid)) {
#ifdef KDTRACE_HOOKS
spin_cnt++;
@@ -888,18 +907,21 @@ __rw_wlock_hard(volatile uintptr_t *c, uintptr_t tid, const char *file,
spintries = 0;
#endif
}
- LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_RW_WLOCK_ACQUIRE, rw, contested,
- waittime, file, line);
#ifdef KDTRACE_HOOKS
+ all_time += lockstat_nsecs();
if (sleep_time)
- LOCKSTAT_RECORD1(LS_RW_WLOCK_BLOCK, rw, sleep_time);
+ LOCKSTAT_RECORD4(LS_RW_WLOCK_BLOCK, rw, sleep_time,
+ LOCKSTAT_WRITER, (state & RW_LOCK_READ) == 0,
+ (state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
- /*
- * Record only the loops spinning and not sleeping.
- */
+ /* Record only the loops spinning and not sleeping. */
if (spin_cnt > sleep_cnt)
- LOCKSTAT_RECORD1(LS_RW_WLOCK_SPIN, rw, (spin_cnt - sleep_cnt));
+ LOCKSTAT_RECORD4(LS_RW_WLOCK_SPIN, rw, all_time - sleep_time,
+ LOCKSTAT_READER, (state & RW_LOCK_READ) == 0,
+ (state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
#endif
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_RW_WLOCK_ACQUIRE, rw, contested,
+ waittime, file, line);
}
/*
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 5d48060..b70da5b 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -3309,7 +3309,7 @@ coredump(struct thread *td)
* a corefile is truncated instead of not being created,
* if it is larger than the limit.
*/
- limit = (off_t)lim_cur(p, RLIMIT_CORE);
+ limit = (off_t)lim_cur(td, RLIMIT_CORE);
if (limit == 0 || racct_get_available(p, RACCT_CORE) == 0) {
PROC_UNLOCK(p);
return (EFBIG);
diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c
index a986590..91e8c60 100644
--- a/sys/kern/kern_sx.c
+++ b/sys/kern/kern_sx.c
@@ -288,6 +288,8 @@ sx_try_slock_(struct sx *sx, const char *file, int line)
if (atomic_cmpset_acq_ptr(&sx->sx_lock, x, x + SX_ONE_SHARER)) {
LOCK_LOG_TRY("SLOCK", &sx->lock_object, 0, 1, file, line);
WITNESS_LOCK(&sx->lock_object, LOP_TRYLOCK, file, line);
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_SLOCK_ACQUIRE,
+ sx, 0, 0, file, line);
curthread->td_locks++;
return (1);
}
@@ -348,6 +350,9 @@ sx_try_xlock_(struct sx *sx, const char *file, int line)
if (rval) {
WITNESS_LOCK(&sx->lock_object, LOP_EXCLUSIVE | LOP_TRYLOCK,
file, line);
+ if (!sx_recursed(sx))
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_XLOCK_ACQUIRE,
+ sx, 0, 0, file, line);
curthread->td_locks++;
}
@@ -509,9 +514,11 @@ _sx_xlock_hard(struct sx *sx, uintptr_t tid, int opts, const char *file,
#endif
int error = 0;
#ifdef KDTRACE_HOOKS
+ uintptr_t state;
uint64_t spin_cnt = 0;
uint64_t sleep_cnt = 0;
int64_t sleep_time = 0;
+ int64_t all_time = 0;
#endif
if (SCHEDULER_STOPPED())
@@ -533,6 +540,10 @@ _sx_xlock_hard(struct sx *sx, uintptr_t tid, int opts, const char *file,
CTR5(KTR_LOCK, "%s: %s contested (lock=%p) at %s:%d", __func__,
sx->lock_object.lo_name, (void *)sx->sx_lock, file, line);
+#ifdef KDTRACE_HOOKS
+ all_time -= lockstat_nsecs();
+ state = sx->sx_lock;
+#endif
while (!atomic_cmpset_acq_ptr(&sx->sx_lock, SX_LOCK_UNLOCKED, tid)) {
#ifdef KDTRACE_HOOKS
spin_cnt++;
@@ -705,17 +716,21 @@ _sx_xlock_hard(struct sx *sx, uintptr_t tid, int opts, const char *file,
CTR2(KTR_LOCK, "%s: %p resuming from sleep queue",
__func__, sx);
}
-
- GIANT_RESTORE();
- if (!error)
- LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_XLOCK_ACQUIRE, sx,
- contested, waittime, file, line);
#ifdef KDTRACE_HOOKS
+ all_time += lockstat_nsecs();
if (sleep_time)
- LOCKSTAT_RECORD1(LS_SX_XLOCK_BLOCK, sx, sleep_time);
+ LOCKSTAT_RECORD4(LS_SX_XLOCK_BLOCK, sx, sleep_time,
+ LOCKSTAT_WRITER, (state & SX_LOCK_SHARED) == 0,
+ (state & SX_LOCK_SHARED) == 0 ? 0 : SX_SHARERS(state));
if (spin_cnt > sleep_cnt)
- LOCKSTAT_RECORD1(LS_SX_XLOCK_SPIN, sx, (spin_cnt - sleep_cnt));
+ LOCKSTAT_RECORD4(LS_SX_XLOCK_SPIN, sx, all_time - sleep_time,
+ LOCKSTAT_WRITER, (state & SX_LOCK_SHARED) == 0,
+ (state & SX_LOCK_SHARED) == 0 ? 0 : SX_SHARERS(state));
#endif
+ if (!error)
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_XLOCK_ACQUIRE, sx,
+ contested, waittime, file, line);
+ GIANT_RESTORE();
return (error);
}
@@ -801,14 +816,21 @@ _sx_slock_hard(struct sx *sx, int opts, const char *file, int line)
uintptr_t x;
int error = 0;
#ifdef KDTRACE_HOOKS
+ uintptr_t state;
uint64_t spin_cnt = 0;
uint64_t sleep_cnt = 0;
int64_t sleep_time = 0;
+ int64_t all_time = 0;
#endif
if (SCHEDULER_STOPPED())
return (0);
+#ifdef KDTRACE_HOOKS
+ state = sx->sx_lock;
+ all_time -= lockstat_nsecs();
+#endif
+
/*
* As with rwlocks, we don't make any attempt to try to block
* shared locks once there is an exclusive waiter.
@@ -958,15 +980,20 @@ _sx_slock_hard(struct sx *sx, int opts, const char *file, int line)
CTR2(KTR_LOCK, "%s: %p resuming from sleep queue",
__func__, sx);
}
- if (error == 0)
- LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_SLOCK_ACQUIRE, sx,
- contested, waittime, file, line);
#ifdef KDTRACE_HOOKS
+ all_time += lockstat_nsecs();
if (sleep_time)
- LOCKSTAT_RECORD1(LS_SX_XLOCK_BLOCK, sx, sleep_time);
+ LOCKSTAT_RECORD4(LS_SX_SLOCK_BLOCK, sx, sleep_time,
+ LOCKSTAT_READER, (state & SX_LOCK_SHARED) == 0,
+ (state & SX_LOCK_SHARED) == 0 ? 0 : SX_SHARERS(state));
if (spin_cnt > sleep_cnt)
- LOCKSTAT_RECORD1(LS_SX_XLOCK_SPIN, sx, (spin_cnt - sleep_cnt));
+ LOCKSTAT_RECORD4(LS_SX_SLOCK_SPIN, sx, all_time - sleep_time,
+ LOCKSTAT_READER, (state & SX_LOCK_SHARED) == 0,
+ (state & SX_LOCK_SHARED) == 0 ? 0 : SX_SHARERS(state));
#endif
+ if (error == 0)
+ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_SX_SLOCK_ACQUIRE, sx,
+ contested, waittime, file, line);
GIANT_RESTORE();
return (error);
}
diff --git a/sys/kern/kern_syscalls.c b/sys/kern/kern_syscalls.c
index dada746..15574be 100644
--- a/sys/kern/kern_syscalls.c
+++ b/sys/kern/kern_syscalls.c
@@ -31,6 +31,9 @@ __FBSDID("$FreeBSD$");
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/proc.h>
+#include <sys/resourcevar.h>
#include <sys/sx.h>
#include <sys/syscall.h>
#include <sys/sysent.h>
diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
index 01c61bd..eba0b60 100644
--- a/sys/kern/kern_tc.c
+++ b/sys/kern/kern_tc.c
@@ -34,7 +34,6 @@ __FBSDID("$FreeBSD$");
#include <sys/timetc.h>
#include <sys/timex.h>
#include <sys/vdso.h>
-#include <machine/atomic.h>
/*
* A large step happens on boot. This constant detects such steps.
@@ -190,7 +189,7 @@ tc_delta(struct timehands *th)
tc->tc_counter_mask);
}
-static u_int
+static inline u_int
tc_getgen(struct timehands *th)
{
@@ -205,7 +204,7 @@ tc_getgen(struct timehands *th)
#endif
}
-static void
+static inline void
tc_setgen(struct timehands *th, u_int newgen)
{
diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c
index 6cd215e..e6b0a59 100644
--- a/sys/kern/kern_thr.c
+++ b/sys/kern/kern_thr.c
@@ -220,13 +220,13 @@ create_thread(struct thread *td, mcontext_t *ctx,
bcopy(&td->td_startcopy, &newtd->td_startcopy,
__rangeof(struct thread, td_startcopy, td_endcopy));
newtd->td_proc = td->td_proc;
- newtd->td_ucred = crhold(td->td_ucred);
+ thread_cow_get(newtd, td);
if (ctx != NULL) { /* old way to set user context */
error = set_mcontext(newtd, ctx);
if (error != 0) {
+ thread_cow_free(newtd);
thread_free(newtd);
- crfree(td->td_ucred);
goto fail;
}
} else {
@@ -238,8 +238,8 @@ create_thread(struct thread *td, mcontext_t *ctx,
/* Setup user TLS address and TLS pointer register. */
error = cpu_set_user_tls(newtd, tls_base);
if (error != 0) {
+ thread_cow_free(newtd);
thread_free(newtd);
- crfree(td->td_ucred);
goto fail;
}
}
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index dce760c..4343b64 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -327,8 +327,7 @@ thread_reap(void)
mtx_unlock_spin(&zombie_lock);
while (td_first) {
td_next = TAILQ_NEXT(td_first, td_slpq);
- if (td_first->td_ucred)
- crfree(td_first->td_ucred);
+ thread_cow_free(td_first);
thread_free(td_first);
td_first = td_next;
}
@@ -384,6 +383,50 @@ thread_free(struct thread *td)
uma_zfree(thread_zone, td);
}
+void
+thread_cow_get_proc(struct thread *newtd, struct proc *p)
+{
+
+ PROC_LOCK_ASSERT(p, MA_OWNED);
+ newtd->td_ucred = crhold(p->p_ucred);
+ newtd->td_limit = lim_hold(p->p_limit);
+ newtd->td_cowgen = p->p_cowgen;
+}
+
+void
+thread_cow_get(struct thread *newtd, struct thread *td)
+{
+
+ newtd->td_ucred = crhold(td->td_ucred);
+ newtd->td_limit = lim_hold(td->td_limit);
+ newtd->td_cowgen = td->td_cowgen;
+}
+
+void
+thread_cow_free(struct thread *td)
+{
+
+ if (td->td_ucred)
+ crfree(td->td_ucred);
+ if (td->td_limit)
+ lim_free(td->td_limit);
+}
+
+void
+thread_cow_update(struct thread *td)
+{
+ struct proc *p;
+
+ p = td->td_proc;
+ PROC_LOCK(p);
+ if (td->td_ucred != p->p_ucred)
+ cred_update_thread(td);
+ if (td->td_limit != p->p_limit)
+ lim_update_thread(td);
+ td->td_cowgen = p->p_cowgen;
+ PROC_UNLOCK(p);
+}
+
/*
* Discard the current thread and exit from its context.
* Always called with scheduler locked.
@@ -521,7 +564,7 @@ thread_wait(struct proc *p)
cpuset_rel(td->td_cpuset);
td->td_cpuset = NULL;
cpu_thread_clean(td);
- crfree(td->td_ucred);
+ thread_cow_free(td);
thread_reap(); /* check for zombie threads etc. */
}
diff --git a/sys/kern/stack_protector.c b/sys/kern/stack_protector.c
index b5f9973..77be64f 100644
--- a/sys/kern/stack_protector.c
+++ b/sys/kern/stack_protector.c
@@ -17,15 +17,14 @@ __stack_chk_fail(void)
panic("stack overflow detected; backtrace may be corrupted");
}
-#define __arraycount(__x) (sizeof(__x) / sizeof(__x[0]))
static void
__stack_chk_init(void *dummy __unused)
{
size_t i;
- long guard[__arraycount(__stack_chk_guard)];
+ long guard[nitems(__stack_chk_guard)];
arc4rand(guard, sizeof(guard), 0);
- for (i = 0; i < __arraycount(guard); i++)
+ for (i = 0; i < nitems(guard); i++)
__stack_chk_guard[i] = guard[i];
}
SYSINIT(stack_chk, SI_SUB_RANDOM, SI_ORDER_ANY, __stack_chk_init, NULL);
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index 6509522..4f35838 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -37,10 +37,13 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#ifdef _KERNEL
#include "opt_ddb.h"
#include "opt_printf.h"
+#endif /* _KERNEL */
#include <sys/param.h>
+#ifdef _KERNEL
#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/kdb.h>
@@ -57,7 +60,9 @@ __FBSDID("$FreeBSD$");
#include <sys/syslog.h>
#include <sys/cons.h>
#include <sys/uio.h>
+#endif
#include <sys/ctype.h>
+#include <sys/sbuf.h>
#ifdef DDB
#include <ddb/ddb.h>
@@ -69,6 +74,8 @@ __FBSDID("$FreeBSD$");
*/
#include <machine/stdarg.h>
+#ifdef _KERNEL
+
#define TOCONS 0x01
#define TOTTY 0x02
#define TOLOG 0x04
@@ -1119,3 +1126,59 @@ hexdump(const void *ptr, int length, const char *hdr, int flags)
printf("\n");
}
}
+#endif /* _KERNEL */
+
+void
+sbuf_hexdump(struct sbuf *sb, const void *ptr, int length, const char *hdr,
+ int flags)
+{
+ int i, j, k;
+ int cols;
+ const unsigned char *cp;
+ char delim;
+
+ if ((flags & HD_DELIM_MASK) != 0)
+ delim = (flags & HD_DELIM_MASK) >> 8;
+ else
+ delim = ' ';
+
+ if ((flags & HD_COLUMN_MASK) != 0)
+ cols = flags & HD_COLUMN_MASK;
+ else
+ cols = 16;
+
+ cp = ptr;
+ for (i = 0; i < length; i+= cols) {
+ if (hdr != NULL)
+ sbuf_printf(sb, "%s", hdr);
+
+ if ((flags & HD_OMIT_COUNT) == 0)
+ sbuf_printf(sb, "%04x ", i);
+
+ if ((flags & HD_OMIT_HEX) == 0) {
+ for (j = 0; j < cols; j++) {
+ k = i + j;
+ if (k < length)
+ sbuf_printf(sb, "%c%02x", delim, cp[k]);
+ else
+ sbuf_printf(sb, " ");
+ }
+ }
+
+ if ((flags & HD_OMIT_CHARS) == 0) {
+ sbuf_printf(sb, " |");
+ for (j = 0; j < cols; j++) {
+ k = i + j;
+ if (k >= length)
+ sbuf_printf(sb, " ");
+ else if (cp[k] >= ' ' && cp[k] <= '~')
+ sbuf_printf(sb, "%c", cp[k]);
+ else
+ sbuf_printf(sb, ".");
+ }
+ sbuf_printf(sb, "|");
+ }
+ sbuf_printf(sb, "\n");
+ }
+}
+
diff --git a/sys/kern/subr_syscall.c b/sys/kern/subr_syscall.c
index 1bf78b8..070ba28 100644
--- a/sys/kern/subr_syscall.c
+++ b/sys/kern/subr_syscall.c
@@ -61,8 +61,8 @@ syscallenter(struct thread *td, struct syscall_args *sa)
p = td->td_proc;
td->td_pticks = 0;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
if (p->p_flag & P_TRACED) {
traced = 1;
PROC_LOCK(p);
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index 82387c2..375bb32 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -220,8 +220,8 @@ ast(struct trapframe *framep)
thread_unlock(td);
PCPU_INC(cnt.v_trap);
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
if (td->td_pflags & TDP_OWEUPC && p->p_flag & P_PROFIL) {
addupc_task(td, td->td_profil_addr, td->td_profil_ticks);
td->td_profil_ticks = 0;
diff --git a/sys/kern/subr_uio.c b/sys/kern/subr_uio.c
index 410085e..aac6eb6 100644
--- a/sys/kern/subr_uio.c
+++ b/sys/kern/subr_uio.c
@@ -409,10 +409,8 @@ copyout_map(struct thread *td, vm_offset_t *addr, size_t sz)
/*
* Map somewhere after heap in process memory.
*/
- PROC_LOCK(td->td_proc);
*addr = round_page((vm_offset_t)vms->vm_daddr +
- lim_max(td->td_proc, RLIMIT_DATA));
- PROC_UNLOCK(td->td_proc);
+ lim_max(td, RLIMIT_DATA));
/* round size up to page boundry */
size = (vm_size_t)round_page(sz);
diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c
index 3240a5f..3eb126b 100644
--- a/sys/kern/sysv_shm.c
+++ b/sys/kern/sysv_shm.c
@@ -382,7 +382,7 @@ kern_shmat_locked(struct thread *td, int shmid, const void *shmaddr,
*/
PROC_LOCK(p);
attach_va = round_page((vm_offset_t)p->p_vmspace->vm_daddr +
- lim_max(p, RLIMIT_DATA));
+ lim_max_proc(p, RLIMIT_DATA));
PROC_UNLOCK(p);
}
diff --git a/sys/kern/tty_pts.c b/sys/kern/tty_pts.c
index 2d1e8fe..fcc9c47 100644
--- a/sys/kern/tty_pts.c
+++ b/sys/kern/tty_pts.c
@@ -741,7 +741,7 @@ pts_alloc(int fflags, struct thread *td, struct file *fp)
PROC_UNLOCK(p);
return (EAGAIN);
}
- ok = chgptscnt(cred->cr_ruidinfo, 1, lim_cur(p, RLIMIT_NPTS));
+ ok = chgptscnt(cred->cr_ruidinfo, 1, lim_cur(td, RLIMIT_NPTS));
if (!ok) {
racct_sub(p, RACCT_NPTS, 1);
PROC_UNLOCK(p);
@@ -795,7 +795,7 @@ pts_alloc_external(int fflags, struct thread *td, struct file *fp,
PROC_UNLOCK(p);
return (EAGAIN);
}
- ok = chgptscnt(cred->cr_ruidinfo, 1, lim_cur(p, RLIMIT_NPTS));
+ ok = chgptscnt(cred->cr_ruidinfo, 1, lim_cur(td, RLIMIT_NPTS));
if (!ok) {
racct_sub(p, RACCT_NPTS, 1);
PROC_UNLOCK(p);
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index 3419c51..fb84330 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -189,14 +189,6 @@ uiomove_object_page(vm_object_t obj, size_t len, struct uio *uio)
if (m->valid != VM_PAGE_BITS_ALL) {
if (vm_pager_has_page(obj, idx, NULL, NULL)) {
rv = vm_pager_get_pages(obj, &m, 1, 0);
- m = vm_page_lookup(obj, idx);
- if (m == NULL) {
- printf(
- "uiomove_object: vm_obj %p idx %jd null lookup rv %d\n",
- obj, idx, rv);
- VM_OBJECT_WUNLOCK(obj);
- return (EIO);
- }
if (rv != VM_PAGER_OK) {
printf(
"uiomove_object: vm_obj %p idx %jd valid %x pager error %d\n",
@@ -423,7 +415,7 @@ static int
shm_dotruncate(struct shmfd *shmfd, off_t length)
{
vm_object_t object;
- vm_page_t m, ma[1];
+ vm_page_t m;
vm_pindex_t idx, nobjsize;
vm_ooffset_t delta;
int base, rv;
@@ -465,12 +457,10 @@ retry:
VM_WAIT;
VM_OBJECT_WLOCK(object);
goto retry;
- } else if (m->valid != VM_PAGE_BITS_ALL) {
- ma[0] = m;
- rv = vm_pager_get_pages(object, ma, 1,
+ } else if (m->valid != VM_PAGE_BITS_ALL)
+ rv = vm_pager_get_pages(object, &m, 1,
0);
- m = vm_page_lookup(object, idx);
- } else
+ else
/* A cached page was reactivated. */
rv = VM_PAGER_OK;
vm_page_lock(m);
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c
index 88952ed..243450d 100644
--- a/sys/kern/uipc_sockbuf.c
+++ b/sys/kern/uipc_sockbuf.c
@@ -420,9 +420,7 @@ sbreserve_locked(struct sockbuf *sb, u_long cc, struct socket *so,
if (cc > sb_max_adj)
return (0);
if (td != NULL) {
- PROC_LOCK(td->td_proc);
- sbsize_limit = lim_cur(td->td_proc, RLIMIT_SBSIZE);
- PROC_UNLOCK(td->td_proc);
+ sbsize_limit = lim_cur(td, RLIMIT_SBSIZE);
} else
sbsize_limit = RLIM_INFINITY;
if (!chgsbsize(so->so_cred->cr_uidinfo, &sb->sb_hiwat, cc,
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 1efe3da..e3557ba 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -2026,10 +2026,7 @@ sendfile_readpage(vm_object_t obj, struct vnode *vp, int nd,
if (vm_pager_has_page(obj, pindex, NULL, NULL)) {
rv = vm_pager_get_pages(obj, &m, 1, 0);
SFSTAT_INC(sf_iocnt);
- m = vm_page_lookup(obj, pindex);
- if (m == NULL)
- error = EIO;
- else if (rv != VM_PAGER_OK) {
+ if (rv != VM_PAGER_OK) {
vm_page_lock(m);
vm_page_free(m);
vm_page_unlock(m);
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c
index ef0b83c..acf9fe9 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -1736,7 +1736,7 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags)
int i;
int *fdp;
struct filedesc *fdesc = td->td_proc->p_fd;
- struct filedescent *fde, **fdep;
+ struct filedescent **fdep;
void *data;
socklen_t clen = control->m_len, datalen;
int error, newfds;
@@ -1787,7 +1787,7 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags)
fdp = (int *)
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
if (fdallocn(td, 0, fdp, newfds) != 0) {
- FILEDESC_XUNLOCK(td->td_proc->p_fd);
+ FILEDESC_XUNLOCK(fdesc);
error = EMSGSIZE;
unp_freerights(fdep, newfds);
m_freem(*controlp);
@@ -1795,13 +1795,10 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags)
goto next;
}
for (i = 0; i < newfds; i++, fdp++) {
- fde = &fdesc->fd_ofiles[*fdp];
- fde->fde_file = fdep[i]->fde_file;
- filecaps_move(&fdep[i]->fde_caps,
- &fde->fde_caps);
- if ((flags & MSG_CMSG_CLOEXEC) != 0)
- fde->fde_flags |= UF_EXCLOSE;
- unp_externalize_fp(fde->fde_file);
+ _finstall(fdesc, fdep[i]->fde_file, *fdp,
+ (flags & MSG_CMSG_CLOEXEC) != 0 ? UF_EXCLOSE : 0,
+ &fdep[i]->fde_caps);
+ unp_externalize_fp(fdep[i]->fde_file);
}
FILEDESC_XUNLOCK(fdesc);
free(fdep[0], M_FILECAPS);
diff --git a/sys/kern/vfs_acl.c b/sys/kern/vfs_acl.c
index e9361e5..56cc6c9 100644
--- a/sys/kern/vfs_acl.c
+++ b/sys/kern/vfs_acl.c
@@ -406,7 +406,7 @@ sys___acl_get_fd(struct thread *td, struct __acl_get_fd_args *uap)
cap_rights_t rights;
int error;
- error = getvnode(td->td_proc->p_fd, uap->filedes,
+ error = getvnode(td, uap->filedes,
cap_rights_init(&rights, CAP_ACL_GET), &fp);
if (error == 0) {
error = vacl_get_acl(td, fp->f_vnode, uap->type, uap->aclp);
@@ -425,7 +425,7 @@ sys___acl_set_fd(struct thread *td, struct __acl_set_fd_args *uap)
cap_rights_t rights;
int error;
- error = getvnode(td->td_proc->p_fd, uap->filedes,
+ error = getvnode(td, uap->filedes,
cap_rights_init(&rights, CAP_ACL_SET), &fp);
if (error == 0) {
error = vacl_set_acl(td, fp->f_vnode, uap->type, uap->aclp);
@@ -480,7 +480,7 @@ sys___acl_delete_fd(struct thread *td, struct __acl_delete_fd_args *uap)
cap_rights_t rights;
int error;
- error = getvnode(td->td_proc->p_fd, uap->filedes,
+ error = getvnode(td, uap->filedes,
cap_rights_init(&rights, CAP_ACL_DELETE), &fp);
if (error == 0) {
error = vacl_delete(td, fp->f_vnode, uap->type);
@@ -535,7 +535,7 @@ sys___acl_aclcheck_fd(struct thread *td, struct __acl_aclcheck_fd_args *uap)
cap_rights_t rights;
int error;
- error = getvnode(td->td_proc->p_fd, uap->filedes,
+ error = getvnode(td, uap->filedes,
cap_rights_init(&rights, CAP_ACL_CHECK), &fp);
if (error == 0) {
error = vacl_aclcheck(td, fp->f_vnode, uap->type, uap->aclp);
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 24935ce..0f82c2b 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -226,7 +226,7 @@ sys_extattr_set_fd(td, uap)
return (error);
AUDIT_ARG_TEXT(attrname);
- error = getvnode(td->td_proc->p_fd, uap->fd,
+ error = getvnode(td, uap->fd,
cap_rights_init(&rights, CAP_EXTATTR_SET), &fp);
if (error)
return (error);
@@ -401,7 +401,7 @@ sys_extattr_get_fd(td, uap)
return (error);
AUDIT_ARG_TEXT(attrname);
- error = getvnode(td->td_proc->p_fd, uap->fd,
+ error = getvnode(td, uap->fd,
cap_rights_init(&rights, CAP_EXTATTR_GET), &fp);
if (error)
return (error);
@@ -545,7 +545,7 @@ sys_extattr_delete_fd(td, uap)
return (error);
AUDIT_ARG_TEXT(attrname);
- error = getvnode(td->td_proc->p_fd, uap->fd,
+ error = getvnode(td, uap->fd,
cap_rights_init(&rights, CAP_EXTATTR_DELETE), &fp);
if (error)
return (error);
@@ -697,7 +697,7 @@ sys_extattr_list_fd(td, uap)
AUDIT_ARG_FD(uap->fd);
AUDIT_ARG_VALUE(uap->attrnamespace);
- error = getvnode(td->td_proc->p_fd, uap->fd,
+ error = getvnode(td, uap->fd,
cap_rights_init(&rights, CAP_EXTATTR_LIST), &fp);
if (error)
return (error);
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 625d193..ce194f9 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -173,6 +173,11 @@ static int reassignbufcalls;
SYSCTL_INT(_vfs, OID_AUTO, reassignbufcalls, CTLFLAG_RW, &reassignbufcalls, 0,
"Number of calls to reassignbuf");
+static u_long free_owe_inact;
+SYSCTL_ULONG(_vfs, OID_AUTO, free_owe_inact, CTLFLAG_RD, &free_owe_inact, 0,
+ "Number of times free vnodes kept on active list due to VFS "
+ "owing inactivation");
+
/*
* Cache for the mount type id assigned to NFS. This is used for
* special checks in nfs/nfs_nqlease.c and vm/vnode_pager.c.
@@ -2368,11 +2373,8 @@ vholdl(struct vnode *vp)
CTR2(KTR_VFS, "%s: vp %p", __func__, vp);
#ifdef INVARIANTS
/* getnewvnode() calls v_incr_usecount() without holding interlock. */
- if (vp->v_type != VNON || vp->v_data != NULL) {
+ if (vp->v_type != VNON || vp->v_data != NULL)
ASSERT_VI_LOCKED(vp, "vholdl");
- VNASSERT(vp->v_holdcnt > 0 || (vp->v_iflag & VI_FREE) != 0,
- vp, ("vholdl: free vnode is held"));
- }
#endif
vp->v_holdcnt++;
if ((vp->v_iflag & VI_FREE) == 0)
@@ -2443,23 +2445,29 @@ vdropl(struct vnode *vp)
VNASSERT(vp->v_holdcnt == 0, vp,
("vdropl: freeing when we shouldn't"));
active = vp->v_iflag & VI_ACTIVE;
- vp->v_iflag &= ~VI_ACTIVE;
- mp = vp->v_mount;
- mtx_lock(&vnode_free_list_mtx);
- if (active) {
- TAILQ_REMOVE(&mp->mnt_activevnodelist, vp,
- v_actfreelist);
- mp->mnt_activevnodelistsize--;
- }
- if (vp->v_iflag & VI_AGE) {
- TAILQ_INSERT_HEAD(&vnode_free_list, vp, v_actfreelist);
+ if ((vp->v_iflag & VI_OWEINACT) == 0) {
+ vp->v_iflag &= ~VI_ACTIVE;
+ mp = vp->v_mount;
+ mtx_lock(&vnode_free_list_mtx);
+ if (active) {
+ TAILQ_REMOVE(&mp->mnt_activevnodelist, vp,
+ v_actfreelist);
+ mp->mnt_activevnodelistsize--;
+ }
+ if (vp->v_iflag & VI_AGE) {
+ TAILQ_INSERT_HEAD(&vnode_free_list, vp,
+ v_actfreelist);
+ } else {
+ TAILQ_INSERT_TAIL(&vnode_free_list, vp,
+ v_actfreelist);
+ }
+ freevnodes++;
+ vp->v_iflag &= ~VI_AGE;
+ vp->v_iflag |= VI_FREE;
+ mtx_unlock(&vnode_free_list_mtx);
} else {
- TAILQ_INSERT_TAIL(&vnode_free_list, vp, v_actfreelist);
+ atomic_add_long(&free_owe_inact, 1);
}
- freevnodes++;
- vp->v_iflag &= ~VI_AGE;
- vp->v_iflag |= VI_FREE;
- mtx_unlock(&vnode_free_list_mtx);
VI_UNLOCK(vp);
return;
}
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index d2f0df1..9088017 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -365,8 +365,7 @@ kern_fstatfs(struct thread *td, int fd, struct statfs *buf)
int error;
AUDIT_ARG_FD(fd);
- error = getvnode(td->td_proc->p_fd, fd,
- cap_rights_init(&rights, CAP_FSTATFS), &fp);
+ error = getvnode(td, fd, cap_rights_init(&rights, CAP_FSTATFS), &fp);
if (error != 0)
return (error);
vp = fp->f_vnode;
@@ -737,7 +736,7 @@ sys_fchdir(td, uap)
int error;
AUDIT_ARG_FD(uap->fd);
- error = getvnode(fdp, uap->fd, cap_rights_init(&rights, CAP_FCHDIR),
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_FCHDIR),
&fp);
if (error != 0)
return (error);
@@ -2671,8 +2670,8 @@ sys_fchflags(td, uap)
AUDIT_ARG_FD(uap->fd);
AUDIT_ARG_FFLAGS(uap->flags);
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_FCHFLAGS), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_FCHFLAGS),
+ &fp);
if (error != 0)
return (error);
#ifdef AUDIT
@@ -3239,8 +3238,7 @@ kern_futimes(struct thread *td, int fd, struct timeval *tptr,
error = getutimes(tptr, tptrseg, ts);
if (error != 0)
return (error);
- error = getvnode(td->td_proc->p_fd, fd,
- cap_rights_init(&rights, CAP_FUTIMES), &fp);
+ error = getvnode(td, fd, cap_rights_init(&rights, CAP_FUTIMES), &fp);
if (error != 0)
return (error);
#ifdef AUDIT
@@ -3275,8 +3273,7 @@ kern_futimens(struct thread *td, int fd, struct timespec *tptr,
return (error);
if (flags & UTIMENS_EXIT)
return (0);
- error = getvnode(td->td_proc->p_fd, fd,
- cap_rights_init(&rights, CAP_FUTIMES), &fp);
+ error = getvnode(td, fd, cap_rights_init(&rights, CAP_FUTIMES), &fp);
if (error != 0)
return (error);
#ifdef AUDIT
@@ -3470,8 +3467,7 @@ sys_fsync(td, uap)
int error, lock_flags;
AUDIT_ARG_FD(uap->fd);
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_FSYNC), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_FSYNC), &fp);
if (error != 0)
return (error);
vp = fp->f_vnode;
@@ -3894,8 +3890,7 @@ kern_ogetdirentries(struct thread *td, struct ogetdirentries_args *uap,
/* XXX arbitrary sanity limit on `count'. */
if (uap->count > 64 * 1024)
return (EINVAL);
- error = getvnode(td->td_proc->p_fd, uap->fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, uap->fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
if ((fp->f_flag & FREAD) == 0) {
@@ -4058,8 +4053,7 @@ kern_getdirentries(struct thread *td, int fd, char *buf, u_int count,
if (count > IOSIZE_MAX)
return (EINVAL);
auio.uio_resid = count;
- error = getvnode(td->td_proc->p_fd, fd,
- cap_rights_init(&rights, CAP_READ), &fp);
+ error = getvnode(td, fd, cap_rights_init(&rights, CAP_READ), &fp);
if (error != 0)
return (error);
if ((fp->f_flag & FREAD) == 0) {
@@ -4225,12 +4219,12 @@ out:
* entry is held upon returning.
*/
int
-getvnode(struct filedesc *fdp, int fd, cap_rights_t *rightsp, struct file **fpp)
+getvnode(struct thread *td, int fd, cap_rights_t *rightsp, struct file **fpp)
{
struct file *fp;
int error;
- error = fget_unlocked(fdp, fd, rightsp, &fp, NULL);
+ error = fget_unlocked(td->td_proc->p_fd, fd, rightsp, &fp, NULL);
if (error != 0)
return (error);
@@ -4247,7 +4241,7 @@ getvnode(struct filedesc *fdp, int fd, cap_rights_t *rightsp, struct file **fpp)
* checking f_ops.
*/
if (fp->f_vnode == NULL || fp->f_ops == &badfileops) {
- fdrop(fp, curthread);
+ fdrop(fp, td);
return (EINVAL);
}
*fpp = fp;
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 573d009..0b073b9 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -2106,19 +2106,18 @@ vn_vget_ino_gen(struct vnode *vp, vn_get_ino_t alloc, void *alloc_arg,
int
vn_rlimit_fsize(const struct vnode *vp, const struct uio *uio,
- const struct thread *td)
+ struct thread *td)
{
if (vp->v_type != VREG || td == NULL)
return (0);
- PROC_LOCK(td->td_proc);
if ((uoff_t)uio->uio_offset + uio->uio_resid >
- lim_cur(td->td_proc, RLIMIT_FSIZE)) {
+ lim_cur(td, RLIMIT_FSIZE)) {
+ PROC_LOCK(td->td_proc);
kern_psignal(td->td_proc, SIGXFSZ);
PROC_UNLOCK(td->td_proc);
return (EFBIG);
}
- PROC_UNLOCK(td->td_proc);
return (0);
}
diff --git a/sys/mips/conf/AR934X_BASE b/sys/mips/conf/AR934X_BASE
index 7a62633..50af5f2 100644
--- a/sys/mips/conf/AR934X_BASE
+++ b/sys/mips/conf/AR934X_BASE
@@ -20,7 +20,7 @@ files "../atheros/files.ar71xx"
hints "AR934X_BASE.hints"
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
-makeoptions MODULES_OVERRIDE="random gpio ar71xx if_gif if_gre if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr ath ath_ahb hwpmc"
+makeoptions MODULES_OVERRIDE="random gpio ar71xx if_gif if_gre if_vlan if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr ath ath_ahb hwpmc ipfw ipfw_nat libalias"
# makeoptions MODULES_OVERRIDE=""
options DDB
diff --git a/sys/modules/usb/Makefile b/sys/modules/usb/Makefile
index 84d5ef2..da3d776 100644
--- a/sys/modules/usb/Makefile
+++ b/sys/modules/usb/Makefile
@@ -53,7 +53,7 @@ SUBDIR += ${_dwc_otg} ehci ${_musb} ohci uhci xhci ${_uss820dci} ${_at91dci} \
${_atmegadci} ${_avr32dci} ${_rsu} ${_rsufw} ${_saf1761otg}
SUBDIR += ${_rum} ${_run} ${_runfw} ${_uath} upgt usie ural ${_zyd} ${_urtw}
SUBDIR += ${_urtwn} ${_urtwnfw}
-SUBDIR += atp uhid ukbd ums udbp ufm uep wsp uled
+SUBDIR += atp uhid ukbd ums udbp ufm uep wsp ugold uled
SUBDIR += ucom u3g uark ubsa ubser uchcom ucycom ufoma uftdi ugensa uipaq ulpt \
umct umcs umodem umoscom uplcom uslcom uvisor uvscom
SUBDIR += udl
diff --git a/sys/modules/usb/ugold/Makefile b/sys/modules/usb/ugold/Makefile
new file mode 100644
index 0000000..48af6ef
--- /dev/null
+++ b/sys/modules/usb/ugold/Makefile
@@ -0,0 +1,13 @@
+#
+# $FreeBSD$
+#
+
+S= ${.CURDIR}/../../..
+
+.PATH: $S/dev/usb/misc
+
+KMOD= ugold
+SRCS= opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.h vnode_if.h \
+ usbdevs.h ugold.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index faa7681..c6bcfdf 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -1033,9 +1033,12 @@ bridge_delete_member(struct bridge_softc *sc, struct bridge_iflist *bif,
case IFT_ETHER:
case IFT_L2VLAN:
/*
- * Take the interface out of promiscuous mode.
+ * Take the interface out of promiscuous mode, but only
+ * if it was promiscuous in the first place. It might
+ * not be if we're in the bridge_ioctl_add() error path.
*/
- (void) ifpromisc(ifs, 0);
+ if (ifs->if_flags & IFF_PROMISC)
+ (void) ifpromisc(ifs, 0);
break;
case IFT_GIF:
@@ -1203,10 +1206,8 @@ bridge_ioctl_add(struct bridge_softc *sc, void *arg)
break;
}
- if (error) {
+ if (error)
bridge_delete_member(sc, bif, 0);
- free(bif, M_DEVBUF);
- }
return (error);
}
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index fec6aa0..aa370d6 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -364,6 +364,7 @@ retry:
if ((la->la_flags & LLE_VALID) &&
((la->la_flags & LLE_STATIC) || la->la_expire > time_uptime)) {
bcopy(&la->ll_addr, desten, ifp->if_addrlen);
+ renew = 0;
/*
* If entry has an expiry time and it is approaching,
* see if we need to send an ARP request within this
@@ -371,14 +372,22 @@ retry:
*/
if (!(la->la_flags & LLE_STATIC) &&
time_uptime + la->la_preempt > la->la_expire) {
- arprequest(ifp, NULL, &SIN(dst)->sin_addr, NULL);
+ renew = 1;
la->la_preempt--;
}
if (pflags != NULL)
*pflags = la->la_flags;
- error = 0;
- goto done;
+
+ if (flags & LLE_EXCLUSIVE)
+ LLE_WUNLOCK(la);
+ else
+ LLE_RUNLOCK(la);
+
+ if (renew == 1)
+ arprequest(ifp, NULL, &SIN(dst)->sin_addr, NULL);
+
+ return (0);
}
if (la->la_flags & LLE_STATIC) { /* should not happen! */
diff --git a/sys/netinet/ip_encap.c b/sys/netinet/ip_encap.c
index fcd048a..d3d0116 100644
--- a/sys/netinet/ip_encap.c
+++ b/sys/netinet/ip_encap.c
@@ -95,14 +95,14 @@ static MALLOC_DEFINE(M_NETADDR, "encap_export_host", "Export host address struct
static void encap_add(struct encaptab *);
static int mask_match(const struct encaptab *, const struct sockaddr *,
const struct sockaddr *);
-static void encap_fillarg(struct mbuf *, const struct encaptab *);
+static void encap_fillarg(struct mbuf *, void *);
/*
* All global variables in ip_encap.c are locked using encapmtx.
*/
static struct mtx encapmtx;
MTX_SYSINIT(encapmtx, &encapmtx, "encapmtx", MTX_DEF);
-LIST_HEAD(, encaptab) encaptab = LIST_HEAD_INITIALIZER(encaptab);
+static LIST_HEAD(, encaptab) encaptab = LIST_HEAD_INITIALIZER(encaptab);
/*
* We currently keey encap_init() for source code compatibility reasons --
@@ -122,12 +122,12 @@ encap4_input(struct mbuf **mp, int *offp, int proto)
struct sockaddr_in s, d;
const struct protosw *psw;
struct encaptab *ep, *match;
+ void *arg;
int matchprio, off, prio;
m = *mp;
off = *offp;
ip = mtod(m, struct ip *);
- *mp = NULL;
bzero(&s, sizeof(s));
s.sin_family = AF_INET;
@@ -138,6 +138,8 @@ encap4_input(struct mbuf **mp, int *offp, int proto)
d.sin_len = sizeof(struct sockaddr_in);
d.sin_addr = ip->ip_dst;
+ arg = NULL;
+ psw = NULL;
match = NULL;
matchprio = 0;
mtx_lock(&encapmtx);
@@ -182,14 +184,16 @@ encap4_input(struct mbuf **mp, int *offp, int proto)
match = ep;
}
}
+ if (match != NULL) {
+ psw = match->psw;
+ arg = match->arg;
+ }
mtx_unlock(&encapmtx);
- if (match) {
+ if (match != NULL) {
/* found a match, "match" has the best one */
- psw = match->psw;
- if (psw && psw->pr_input) {
- encap_fillarg(m, match);
- *mp = m;
+ if (psw != NULL && psw->pr_input != NULL) {
+ encap_fillarg(m, arg);
(*psw->pr_input)(mp, offp, proto);
} else
m_freem(m);
@@ -197,7 +201,6 @@ encap4_input(struct mbuf **mp, int *offp, int proto)
}
/* last resort: inject to raw socket */
- *mp = m;
return (rip_input(mp, offp, proto));
}
#endif
@@ -211,6 +214,7 @@ encap6_input(struct mbuf **mp, int *offp, int proto)
struct sockaddr_in6 s, d;
const struct protosw *psw;
struct encaptab *ep, *match;
+ void *arg;
int prio, matchprio;
ip6 = mtod(m, struct ip6_hdr *);
@@ -224,6 +228,8 @@ encap6_input(struct mbuf **mp, int *offp, int proto)
d.sin6_len = sizeof(struct sockaddr_in6);
d.sin6_addr = ip6->ip6_dst;
+ arg = NULL;
+ psw = NULL;
match = NULL;
matchprio = 0;
mtx_lock(&encapmtx);
@@ -251,17 +257,20 @@ encap6_input(struct mbuf **mp, int *offp, int proto)
match = ep;
}
}
+ if (match != NULL) {
+ psw = match->psw;
+ arg = match->arg;
+ }
mtx_unlock(&encapmtx);
- if (match) {
+ if (match != NULL) {
/* found a match */
- psw = match->psw;
- if (psw && psw->pr_input) {
- encap_fillarg(m, match);
+ if (psw != NULL && psw->pr_input != NULL) {
+ encap_fillarg(m, arg);
return (*psw->pr_input)(mp, offp, proto);
} else {
m_freem(m);
- return IPPROTO_DONE;
+ return (IPPROTO_DONE);
}
}
@@ -440,14 +449,16 @@ mask_match(const struct encaptab *ep, const struct sockaddr *sp,
}
static void
-encap_fillarg(struct mbuf *m, const struct encaptab *ep)
+encap_fillarg(struct mbuf *m, void *arg)
{
struct m_tag *tag;
- tag = m_tag_get(PACKET_TAG_ENCAP, sizeof (void*), M_NOWAIT);
- if (tag) {
- *(void**)(tag+1) = ep->arg;
- m_tag_prepend(m, tag);
+ if (arg != NULL) {
+ tag = m_tag_get(PACKET_TAG_ENCAP, sizeof(void *), M_NOWAIT);
+ if (tag != NULL) {
+ *(void**)(tag+1) = arg;
+ m_tag_prepend(m, tag);
+ }
}
}
diff --git a/sys/netinet/sctp_asconf.c b/sys/netinet/sctp_asconf.c
index 21add43..a64e7f9 100644
--- a/sys/netinet/sctp_asconf.c
+++ b/sys/netinet/sctp_asconf.c
@@ -1109,7 +1109,8 @@ sctp_path_check_and_react(struct sctp_tcb *stcb, struct sctp_ifa *newifa)
* not be changed.
*/
SCTP_RTALLOC((sctp_route_t *) & net->ro,
- stcb->sctp_ep->def_vrf_id);
+ stcb->sctp_ep->def_vrf_id,
+ stcb->sctp_ep->fibnum);
if (net->ro.ro_rt == NULL)
continue;
@@ -1328,6 +1329,7 @@ sctp_asconf_queue_add(struct sctp_tcb *stcb, struct sctp_ifa *ifa,
{
uint32_t status;
int pending_delete_queued = 0;
+ int last;
/* see if peer supports ASCONF */
if (stcb->asoc.asconf_supported == 0) {
@@ -1337,15 +1339,21 @@ sctp_asconf_queue_add(struct sctp_tcb *stcb, struct sctp_ifa *ifa,
* if this is deleting the last address from the assoc, mark it as
* pending.
*/
- if ((type == SCTP_DEL_IP_ADDRESS) && !stcb->asoc.asconf_del_pending &&
- (sctp_local_addr_count(stcb) < 2)) {
- /* set the pending delete info only */
- stcb->asoc.asconf_del_pending = 1;
- stcb->asoc.asconf_addr_del_pending = ifa;
- atomic_add_int(&ifa->refcount, 1);
- SCTPDBG(SCTP_DEBUG_ASCONF2,
- "asconf_queue_add: mark delete last address pending\n");
- return (-1);
+ if ((type == SCTP_DEL_IP_ADDRESS) && !stcb->asoc.asconf_del_pending) {
+ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) {
+ last = (sctp_local_addr_count(stcb) == 0);
+ } else {
+ last = (sctp_local_addr_count(stcb) == 1);
+ }
+ if (last) {
+ /* set the pending delete info only */
+ stcb->asoc.asconf_del_pending = 1;
+ stcb->asoc.asconf_addr_del_pending = ifa;
+ atomic_add_int(&ifa->refcount, 1);
+ SCTPDBG(SCTP_DEBUG_ASCONF2,
+ "asconf_queue_add: mark delete last address pending\n");
+ return (-1);
+ }
}
/* queue an asconf parameter */
status = sctp_asconf_queue_mgmt(stcb, ifa, type);
diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c
index 89047cb..c6bea83 100644
--- a/sys/netinet/sctp_input.c
+++ b/sys/netinet/sctp_input.c
@@ -186,7 +186,7 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset,
op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code),
"No listener");
sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
}
goto outnow;
@@ -1484,7 +1484,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
sctp_send_shutdown_ack(stcb, stcb->asoc.primary_destination);
op_err = sctp_generate_cause(SCTP_CAUSE_COOKIE_IN_SHUTDOWN, "");
sctp_send_operr_to(src, dst, sh, cookie->peers_vtag, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, net->port);
if (how_indx < sizeof(asoc->cookie_how))
asoc->cookie_how[how_indx] = 2;
@@ -1694,7 +1694,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
*/
op_err = sctp_generate_cause(SCTP_CAUSE_NAT_COLLIDING_STATE, "");
sctp_send_abort(m, iphlen, src, dst, sh, 0, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
return (NULL);
}
@@ -2572,7 +2572,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
tim = now.tv_usec - cookie->time_entered.tv_usec;
scm->time_usec = htonl(tim);
sctp_send_operr_to(src, dst, sh, cookie->peers_vtag, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, l_inp->fibnum,
vrf_id, port);
return (NULL);
}
@@ -2676,8 +2676,9 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
/* still no TCB... must be bad cookie-echo */
return (NULL);
}
- if ((*netp != NULL) && (mflowtype != M_HASHTYPE_NONE)) {
+ if (*netp != NULL) {
(*netp)->flowtype = mflowtype;
+ (*netp)->flowid = mflowid;
}
/*
* Ok, we built an association so confirm the address we sent the
@@ -2794,6 +2795,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
inp->partial_delivery_point = (*inp_p)->partial_delivery_point;
inp->sctp_context = (*inp_p)->sctp_context;
inp->local_strreset_support = (*inp_p)->local_strreset_support;
+ inp->fibnum = (*inp_p)->fibnum;
inp->inp_starting_point_for_iterator = NULL;
/*
* copy in the authentication parameters from the
@@ -4404,7 +4406,7 @@ __attribute__((noinline))
struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh, struct sctp_chunkhdr *ch, struct sctp_inpcb *inp,
struct sctp_tcb *stcb, struct sctp_nets **netp, int *fwd_tsn_seen,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
struct sctp_association *asoc;
@@ -4568,7 +4570,7 @@ __attribute__((noinline))
msg);
/* no association, so it's out of the blue... */
sctp_handle_ootb(m, iphlen, *offset, src, dst, sh, inp, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
*offset = length;
if (locked_tcb) {
@@ -4612,7 +4614,7 @@ __attribute__((noinline))
msg);
sctp_handle_ootb(m, iphlen, *offset, src, dst,
sh, inp, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
return (NULL);
}
@@ -5622,7 +5624,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
uint8_t compute_crc,
#endif
uint8_t ecn_bits,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
uint32_t high_tsn;
@@ -5661,8 +5663,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
net->port = port;
}
#endif
- if ((net != NULL) && (mflowtype != M_HASHTYPE_NONE)) {
+ if (net != NULL) {
net->flowtype = mflowtype;
+ net->flowid = mflowid;
}
if ((inp != NULL) && (stcb != NULL)) {
sctp_send_packet_dropped(stcb, net, m, length, iphlen, 1);
@@ -5691,8 +5694,9 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
net->port = port;
}
#endif
- if ((net != NULL) && (mflowtype != M_HASHTYPE_NONE)) {
+ if (net != NULL) {
net->flowtype = mflowtype;
+ net->flowid = mflowid;
}
if (inp == NULL) {
SCTP_STAT_INCR(sctps_noport);
@@ -5701,7 +5705,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
}
if (ch->chunk_type == SCTP_SHUTDOWN_ACK) {
sctp_send_shutdown_complete2(src, dst, sh,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
goto out;
}
@@ -5716,7 +5720,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
"Out of the blue");
sctp_send_abort(m, iphlen, src, dst,
sh, 0, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
}
}
@@ -5775,7 +5779,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code),
msg);
sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
goto out;
}
@@ -5786,7 +5790,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
stcb = sctp_process_control(m, iphlen, &offset, length,
src, dst, sh, ch,
inp, stcb, &net, &fwd_tsn_seen,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
if (stcb) {
/*
@@ -5827,7 +5831,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code),
msg);
sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
goto out;
}
@@ -5899,7 +5903,7 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code),
msg);
sctp_handle_ootb(m, iphlen, offset, src, dst, sh, inp, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
goto out;
/* sa_ignore NOTREACHED */
@@ -6023,6 +6027,7 @@ sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port)
#endif
uint32_t mflowid;
uint8_t mflowtype;
+ uint16_t fibnum;
iphlen = off;
if (SCTP_GET_PKT_VRFID(i_pak, vrf_id)) {
@@ -6048,6 +6053,7 @@ sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port)
(int)m->m_pkthdr.csum_flags, CSUM_BITS);
mflowid = m->m_pkthdr.flowid;
mflowtype = M_HASHTYPE_GET(m);
+ fibnum = M_GETFIB(m);
SCTP_STAT_INCR(sctps_recvpackets);
SCTP_STAT_INCR_COUNTER64(sctps_inpackets);
/* Get IP, SCTP, and first chunk header together in the first mbuf. */
@@ -6107,7 +6113,7 @@ sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port)
compute_crc,
#endif
ecn_bits,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
out:
if (m) {
diff --git a/sys/netinet/sctp_input.h b/sys/netinet/sctp_input.h
index 0c3f8a5..148864b 100644
--- a/sys/netinet/sctp_input.h
+++ b/sys/netinet/sctp_input.h
@@ -45,7 +45,7 @@ sctp_common_input_processing(struct mbuf **, int, int, int,
uint8_t,
#endif
uint8_t,
- uint8_t, uint32_t,
+ uint8_t, uint32_t, uint16_t,
uint32_t, uint16_t);
struct sctp_stream_reset_request *
diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h
index 140f341..bae67f0 100644
--- a/sys/netinet/sctp_os_bsd.h
+++ b/sys/netinet/sctp_os_bsd.h
@@ -413,13 +413,8 @@ typedef struct callout sctp_os_timer_t;
typedef struct route sctp_route_t;
typedef struct rtentry sctp_rtentry_t;
-/*
- * XXX multi-FIB support was backed out in r179783 and it seems clear that the
- * VRF support as currently in FreeBSD is not ready to support multi-FIB.
- * It might be best to implement multi-FIB support for both v4 and v6 indepedent
- * of VRFs and leave those to a real MPLS stack.
- */
-#define SCTP_RTALLOC(ro, vrf_id) rtalloc_ign((struct route *)ro, 0UL)
+#define SCTP_RTALLOC(ro, vrf_id, fibnum) \
+ rtalloc_ign_fib((struct route *)ro, 0UL, fibnum)
/* Future zero copy wakeup/send function */
#define SCTP_ZERO_COPY_EVENT(inp, so)
diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c
index 515ee13..3ef837c 100644
--- a/sys/netinet/sctp_output.c
+++ b/sys/netinet/sctp_output.c
@@ -3389,7 +3389,7 @@ sctp_source_address_selection(struct sctp_inpcb *inp,
/*
* Need a route to cache.
*/
- SCTP_RTALLOC(ro, vrf_id);
+ SCTP_RTALLOC(ro, vrf_id, inp->fibnum);
}
if (ro->ro_rt == NULL) {
return (NULL);
@@ -4170,7 +4170,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
sctp_free_ifa(_lsrc);
} else {
ip->ip_src = over_addr->sin.sin_addr;
- SCTP_RTALLOC(ro, vrf_id);
+ SCTP_RTALLOC(ro, vrf_id, inp->fibnum);
}
}
if (port) {
@@ -4484,7 +4484,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
sctp_free_ifa(_lsrc);
} else {
lsa6->sin6_addr = over_addr->sin6.sin6_addr;
- SCTP_RTALLOC(ro, vrf_id);
+ SCTP_RTALLOC(ro, vrf_id, inp->fibnum);
}
(void)sa6_recoverscope(sin6);
}
@@ -5511,7 +5511,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
op_err = sctp_generate_cause(SCTP_BASE_SYSCTL(sctp_diag_info_code),
"Address added");
sctp_send_abort(init_pkt, iphlen, src, dst, sh, 0, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
return;
}
@@ -5530,7 +5530,7 @@ do_a_abort:
}
sctp_send_abort(init_pkt, iphlen, src, dst, sh,
init_chk->init.initiate_tag, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
return;
}
@@ -7985,6 +7985,7 @@ again_one_more_time:
} else {
r_mtu = mtu;
}
+ error = 0;
/************************/
/* ASCONF transmission */
/************************/
@@ -8108,6 +8109,12 @@ again_one_more_time:
* it is used to do appropriate
* source address selection.
*/
+ if (*now_filled == 0) {
+ (void)SCTP_GETTIME_TIMEVAL(now);
+ *now_filled = 1;
+ }
+ net->last_sent_time = *now;
+ hbflag = 0;
if ((error = sctp_lowlevel_chunk_output(inp, stcb, net,
(struct sockaddr *)&net->ro._l_addr,
outchain, auth_offset, auth,
@@ -8118,21 +8125,18 @@ again_one_more_time:
net->port, NULL,
0, 0,
so_locked))) {
- if (error == ENOBUFS) {
- asoc->ifp_had_enobuf = 1;
- SCTP_STAT_INCR(sctps_lowlevelerr);
- }
+ /*
+ * error, we could not
+ * output
+ */
+ SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error);
if (from_where == 0) {
SCTP_STAT_INCR(sctps_lowlevelerrusr);
}
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
- } else {
- net->last_sent_time = *now;
+ if (error == ENOBUFS) {
+ asoc->ifp_had_enobuf = 1;
+ SCTP_STAT_INCR(sctps_lowlevelerr);
}
- hbflag = 0;
/* error, could not output */
if (error == EHOSTUNREACH) {
/*
@@ -8143,17 +8147,10 @@ again_one_more_time:
sctp_move_chunks_from_net(stcb, net);
}
*reason_code = 7;
- continue;
- } else
- asoc->ifp_had_enobuf = 0;
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
+ break;
} else {
- net->last_sent_time = *now;
+ asoc->ifp_had_enobuf = 0;
}
- hbflag = 0;
/*
* increase the number we sent, if a
* cookie is sent we don't tell them
@@ -8186,6 +8183,10 @@ again_one_more_time:
}
}
}
+ if (error != 0) {
+ /* try next net */
+ continue;
+ }
/************************/
/* Control transmission */
/************************/
@@ -8382,6 +8383,15 @@ again_one_more_time:
sctp_timer_start(SCTP_TIMER_TYPE_COOKIE, inp, stcb, net);
cookie = 0;
}
+ /* Only HB or ASCONF advances time */
+ if (hbflag) {
+ if (*now_filled == 0) {
+ (void)SCTP_GETTIME_TIMEVAL(now);
+ *now_filled = 1;
+ }
+ net->last_sent_time = *now;
+ hbflag = 0;
+ }
if ((error = sctp_lowlevel_chunk_output(inp, stcb, net,
(struct sockaddr *)&net->ro._l_addr,
outchain,
@@ -8393,23 +8403,17 @@ again_one_more_time:
net->port, NULL,
0, 0,
so_locked))) {
- if (error == ENOBUFS) {
- asoc->ifp_had_enobuf = 1;
- SCTP_STAT_INCR(sctps_lowlevelerr);
- }
+ /*
+ * error, we could not
+ * output
+ */
+ SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error);
if (from_where == 0) {
SCTP_STAT_INCR(sctps_lowlevelerrusr);
}
- /* error, could not output */
- if (hbflag) {
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
- } else {
- net->last_sent_time = *now;
- }
- hbflag = 0;
+ if (error == ENOBUFS) {
+ asoc->ifp_had_enobuf = 1;
+ SCTP_STAT_INCR(sctps_lowlevelerr);
}
if (error == EHOSTUNREACH) {
/*
@@ -8420,19 +8424,9 @@ again_one_more_time:
sctp_move_chunks_from_net(stcb, net);
}
*reason_code = 7;
- continue;
- } else
+ break;
+ } else {
asoc->ifp_had_enobuf = 0;
- /* Only HB or ASCONF advances time */
- if (hbflag) {
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
- } else {
- net->last_sent_time = *now;
- }
- hbflag = 0;
}
/*
* increase the number we sent, if a
@@ -8466,6 +8460,10 @@ again_one_more_time:
}
}
}
+ if (error != 0) {
+ /* try next net */
+ continue;
+ }
/* JRI: if dest is in PF state, do not send data to it */
if ((asoc->sctp_cmt_on_off > 0) &&
(net != stcb->asoc.alternate) &&
@@ -8720,6 +8718,14 @@ no_data_fill:
*/
sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net);
}
+ if (bundle_at || hbflag) {
+ /* For data/asconf and hb set time */
+ if (*now_filled == 0) {
+ (void)SCTP_GETTIME_TIMEVAL(now);
+ *now_filled = 1;
+ }
+ net->last_sent_time = *now;
+ }
/* Now send it, if there is anything to send :> */
if ((error = sctp_lowlevel_chunk_output(inp,
stcb,
@@ -8738,23 +8744,13 @@ no_data_fill:
0, 0,
so_locked))) {
/* error, we could not output */
- if (error == ENOBUFS) {
- SCTP_STAT_INCR(sctps_lowlevelerr);
- asoc->ifp_had_enobuf = 1;
- }
+ SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error);
if (from_where == 0) {
SCTP_STAT_INCR(sctps_lowlevelerrusr);
}
- SCTPDBG(SCTP_DEBUG_OUTPUT3, "Gak send error %d\n", error);
- if (hbflag) {
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
- } else {
- net->last_sent_time = *now;
- }
- hbflag = 0;
+ if (error == ENOBUFS) {
+ SCTP_STAT_INCR(sctps_lowlevelerr);
+ asoc->ifp_had_enobuf = 1;
}
if (error == EHOSTUNREACH) {
/*
@@ -8779,16 +8775,6 @@ no_data_fill:
endoutchain = NULL;
auth = NULL;
auth_offset = 0;
- if (bundle_at || hbflag) {
- /* For data/asconf and hb set time */
- if (*now_filled == 0) {
- (void)SCTP_GETTIME_TIMEVAL(&net->last_sent_time);
- *now_filled = 1;
- *now = net->last_sent_time;
- } else {
- net->last_sent_time = *now;
- }
- }
if (!no_out_cnt) {
*num_out += (ctl_cnt + bundle_at);
}
@@ -10853,7 +10839,7 @@ static void
sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh, uint32_t vtag,
uint8_t type, struct mbuf *cause,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
struct mbuf *o_pak;
@@ -10933,6 +10919,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
SCTP_BUF_RESV_UF(mout, max_linkhdr);
SCTP_BUF_LEN(mout) = len;
SCTP_BUF_NEXT(mout) = cause;
+ M_SETFIB(mout, fibnum);
mout->m_pkthdr.flowid = mflowid;
M_HASHTYPE_SET(mout, mflowtype);
#ifdef INET
@@ -11120,11 +11107,11 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
void
sctp_send_shutdown_complete2(struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
sctp_send_resp_msg(src, dst, sh, 0, SCTP_SHUTDOWN_COMPLETE, NULL,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
}
@@ -11943,7 +11930,7 @@ skip_stuff:
void
sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh, uint32_t vtag, struct mbuf *cause,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
/* Don't respond to an ABORT with an ABORT. */
@@ -11953,7 +11940,7 @@ sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockadd
return;
}
sctp_send_resp_msg(src, dst, sh, vtag, SCTP_ABORT_ASSOCIATION, cause,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
return;
}
@@ -11961,11 +11948,11 @@ sctp_send_abort(struct mbuf *m, int iphlen, struct sockaddr *src, struct sockadd
void
sctp_send_operr_to(struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh, uint32_t vtag, struct mbuf *cause,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
sctp_send_resp_msg(src, dst, sh, vtag, SCTP_OPERATION_ERROR, cause,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
return;
}
diff --git a/sys/netinet/sctp_output.h b/sys/netinet/sctp_output.h
index 8789df9..8e45e5c 100644
--- a/sys/netinet/sctp_output.h
+++ b/sys/netinet/sctp_output.h
@@ -117,7 +117,7 @@ void sctp_send_shutdown_complete(struct sctp_tcb *, struct sctp_nets *, int);
void
sctp_send_shutdown_complete2(struct sockaddr *, struct sockaddr *,
struct sctphdr *,
- uint8_t, uint32_t,
+ uint8_t, uint32_t, uint16_t,
uint32_t, uint16_t);
void sctp_send_asconf(struct sctp_tcb *, struct sctp_nets *, int addr_locked);
@@ -187,13 +187,13 @@ sctp_send_str_reset_req(struct sctp_tcb *, uint16_t, uint16_t *, uint8_t,
void
sctp_send_abort(struct mbuf *, int, struct sockaddr *, struct sockaddr *,
struct sctphdr *, uint32_t, struct mbuf *,
- uint8_t, uint32_t,
+ uint8_t, uint32_t, uint16_t,
uint32_t, uint16_t);
void
sctp_send_operr_to(struct sockaddr *, struct sockaddr *,
struct sctphdr *, uint32_t, struct mbuf *,
- uint8_t, uint32_t,
+ uint8_t, uint32_t, uint16_t,
uint32_t, uint16_t);
#endif /* _KERNEL || __Userspace__ */
diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
index 6fcb6d2..541d4ca 100644
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -2485,6 +2485,7 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id)
inp->reconfig_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_reconfig_enable);
inp->nrsack_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_nrsack_enable);
inp->pktdrop_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_pktdrop_enable);
+ inp->fibnum = so->so_fibnum;
/* init the small hash table we use to track asocid <-> tcb */
inp->sctp_asocidhash = SCTP_HASH_INIT(SCTP_STACK_VTAG_HASH_SIZE, &inp->hashasocidmark);
if (inp->sctp_asocidhash == NULL) {
@@ -3949,7 +3950,9 @@ sctp_add_remote_addr(struct sctp_tcb *stcb, struct sockaddr *newaddr,
sin6->sin6_scope_id = 0;
}
#endif
- SCTP_RTALLOC((sctp_route_t *) & net->ro, stcb->asoc.vrf_id);
+ SCTP_RTALLOC((sctp_route_t *) & net->ro,
+ stcb->asoc.vrf_id,
+ stcb->sctp_ep->fibnum);
if (SCTP_ROUTE_HAS_VALID_IFN(&net->ro)) {
/* Get source address */
diff --git a/sys/netinet/sctp_pcb.h b/sys/netinet/sctp_pcb.h
index 963b89f..f5ede2a 100644
--- a/sys/netinet/sctp_pcb.h
+++ b/sys/netinet/sctp_pcb.h
@@ -430,6 +430,7 @@ struct sctp_inpcb {
struct mtx inp_rdata_mtx;
int32_t refcount;
uint32_t def_vrf_id;
+ uint16_t fibnum;
uint32_t total_sends;
uint32_t total_recvs;
uint32_t last_abort_code;
diff --git a/sys/netinet/sctp_syscalls.c b/sys/netinet/sctp_syscalls.c
index 28b4445..71e2f72 100644
--- a/sys/netinet/sctp_syscalls.c
+++ b/sys/netinet/sctp_syscalls.c
@@ -277,6 +277,10 @@ sys_sctp_generic_sendmsg (td, uap)
auio.uio_td = td;
auio.uio_offset = 0; /* XXX */
auio.uio_resid = 0;
+#ifdef KTRACE
+ if (KTRPOINT(td, KTR_GENIO))
+ ktruio = cloneuio(&auio);
+#endif /* KTRACE */
len = auio.uio_resid = uap->mlen;
CURVNET_SET(so->so_vnet);
error = sctp_lower_sosend(so, to, &auio, (struct mbuf *)NULL,
@@ -400,6 +404,10 @@ sys_sctp_generic_sendmsg_iov(td, uap)
goto sctp_bad;
}
}
+#ifdef KTRACE
+ if (KTRPOINT(td, KTR_GENIO))
+ ktruio = cloneuio(&auio);
+#endif /* KTRACE */
len = auio.uio_resid;
CURVNET_SET(so->so_vnet);
error = sctp_lower_sosend(so, to, &auio,
diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c
index 2a59e13..907412c 100644
--- a/sys/netinet/sctp_usrreq.c
+++ b/sys/netinet/sctp_usrreq.c
@@ -2464,9 +2464,9 @@ flags_out:
}
/* get flags for PMTU */
if (net->dest_state & SCTP_ADDR_NO_PMTUD) {
- paddrp->spp_flags |= SPP_PMTUD_ENABLE;
- } else {
paddrp->spp_flags |= SPP_PMTUD_DISABLE;
+ } else {
+ paddrp->spp_flags |= SPP_PMTUD_ENABLE;
}
if (net->dscp & 0x01) {
paddrp->spp_dscp = net->dscp & 0xfc;
@@ -5678,16 +5678,23 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
}
if ((stcb != NULL) && (net != NULL)) {
- if ((net != stcb->asoc.primary_destination) &&
- (!(net->dest_state & SCTP_ADDR_UNCONFIRMED))) {
- /* Ok we need to set it */
- if (sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net) == 0) {
- if ((stcb->asoc.alternate) &&
- (!(net->dest_state & SCTP_ADDR_PF)) &&
- (net->dest_state & SCTP_ADDR_REACHABLE)) {
- sctp_free_remote_addr(stcb->asoc.alternate);
- stcb->asoc.alternate = NULL;
+ if (net != stcb->asoc.primary_destination) {
+ if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) {
+ /* Ok we need to set it */
+ if (sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net) == 0) {
+ if ((stcb->asoc.alternate) &&
+ (!(net->dest_state & SCTP_ADDR_PF)) &&
+ (net->dest_state & SCTP_ADDR_REACHABLE)) {
+ sctp_free_remote_addr(stcb->asoc.alternate);
+ stcb->asoc.alternate = NULL;
+ }
+ } else {
+ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
+ error = EINVAL;
}
+ } else {
+ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
+ error = EINVAL;
}
}
} else {
@@ -6712,7 +6719,20 @@ sctp_ctloutput(struct socket *so, struct sockopt *sopt)
size_t optsize = 0;
void *p;
int error = 0;
+ struct sctp_inpcb *inp;
+ if ((sopt->sopt_level == SOL_SOCKET) &&
+ (sopt->sopt_name == SO_SETFIB)) {
+ inp = (struct sctp_inpcb *)so->so_pcb;
+ if (inp == NULL) {
+ SCTP_LTRACE_ERR_RET(so->so_pcb, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOBUFS);
+ return (EINVAL);
+ }
+ SCTP_INP_WLOCK(inp);
+ inp->fibnum = so->so_fibnum;
+ SCTP_INP_WUNLOCK(inp);
+ return (0);
+ }
if (sopt->sopt_level != IPPROTO_SCTP) {
/* wrong proto level... send back up to IP */
#ifdef INET6
diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h
index 31d93dd..ae1b3eb 100644
--- a/sys/netinet/sctp_var.h
+++ b/sys/netinet/sctp_var.h
@@ -178,6 +178,7 @@ extern struct pr_usrreqs sctp_usrreqs;
if (SCTP_DECREMENT_AND_CHECK_REFCOUNT(&(__net)->ref_count)) { \
(void)SCTP_OS_TIMER_STOP(&(__net)->rxt_timer.timer); \
(void)SCTP_OS_TIMER_STOP(&(__net)->pmtu_timer.timer); \
+ (void)SCTP_OS_TIMER_STOP(&(__net)->hb_timer.timer); \
if ((__net)->ro.ro_rt) { \
RTFREE((__net)->ro.ro_rt); \
(__net)->ro.ro_rt = NULL; \
diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c
index 24110dd..c25ec39 100644
--- a/sys/netinet/sctputil.c
+++ b/sys/netinet/sctputil.c
@@ -3895,7 +3895,7 @@ sctp_abort_association(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
stcb->asoc.state |= SCTP_STATE_WAS_ABORTED;
}
sctp_send_abort(m, iphlen, src, dst, sh, vtag, op_err,
- mflowtype, mflowid,
+ mflowtype, mflowid, inp->fibnum,
vrf_id, port);
if (stcb != NULL) {
/* Ok, now lets free it */
@@ -4051,7 +4051,7 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset,
struct sockaddr *src, struct sockaddr *dst,
struct sctphdr *sh, struct sctp_inpcb *inp,
struct mbuf *cause,
- uint8_t mflowtype, uint32_t mflowid,
+ uint8_t mflowtype, uint32_t mflowid, uint16_t fibnum,
uint32_t vrf_id, uint16_t port)
{
struct sctp_chunkhdr *ch, chunk_buf;
@@ -4093,7 +4093,7 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset,
return;
case SCTP_SHUTDOWN_ACK:
sctp_send_shutdown_complete2(src, dst, sh,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
return;
default:
@@ -4107,7 +4107,7 @@ sctp_handle_ootb(struct mbuf *m, int iphlen, int offset,
((SCTP_BASE_SYSCTL(sctp_blackhole) == 1) &&
(contains_init_chunk == 0))) {
sctp_send_abort(m, iphlen, src, dst, sh, 0, cause,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
}
}
diff --git a/sys/netinet/sctputil.h b/sys/netinet/sctputil.h
index 2ffbc2a..7df0a6c 100644
--- a/sys/netinet/sctputil.h
+++ b/sys/netinet/sctputil.h
@@ -208,7 +208,7 @@ sctp_handle_ootb(struct mbuf *, int, int,
struct sockaddr *, struct sockaddr *,
struct sctphdr *, struct sctp_inpcb *,
struct mbuf *,
- uint8_t, uint32_t,
+ uint8_t, uint32_t, uint16_t,
uint32_t, uint16_t);
int
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index a64e403..d992492 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -347,11 +347,12 @@ tcp_timer_2msl(void *xtp)
tp = tcp_close(tp);
} else {
if (tp->t_state != TCPS_TIME_WAIT &&
- ticks - tp->t_rcvtime <= TP_MAXIDLE(tp))
- callout_reset_on(&tp->t_timers->tt_2msl,
- TP_KEEPINTVL(tp), tcp_timer_2msl, tp,
- inp_to_cpuid(inp));
- else
+ ticks - tp->t_rcvtime <= TP_MAXIDLE(tp)) {
+ if (!callout_reset(&tp->t_timers->tt_2msl,
+ TP_KEEPINTVL(tp), tcp_timer_2msl, tp)) {
+ tp->t_timers->tt_flags &= ~TT_2MSL_RST;
+ }
+ } else
tp = tcp_close(tp);
}
@@ -431,11 +432,14 @@ tcp_timer_keep(void *xtp)
tp->rcv_nxt, tp->snd_una - 1, 0);
free(t_template, M_TEMP);
}
- callout_reset_on(&tp->t_timers->tt_keep, TP_KEEPINTVL(tp),
- tcp_timer_keep, tp, inp_to_cpuid(inp));
- } else
- callout_reset_on(&tp->t_timers->tt_keep, TP_KEEPIDLE(tp),
- tcp_timer_keep, tp, inp_to_cpuid(inp));
+ if (!callout_reset(&tp->t_timers->tt_keep, TP_KEEPINTVL(tp),
+ tcp_timer_keep, tp)) {
+ tp->t_timers->tt_flags &= ~TT_KEEP_RST;
+ }
+ } else if (!callout_reset(&tp->t_timers->tt_keep, TP_KEEPIDLE(tp),
+ tcp_timer_keep, tp)) {
+ tp->t_timers->tt_flags &= ~TT_KEEP_RST;
+ }
#ifdef TCPDEBUG
if (inp->inp_socket->so_options & SO_DEBUG)
@@ -810,6 +814,7 @@ tcp_timer_activate(struct tcpcb *tp, uint32_t timer_type, u_int delta)
timeout_t *f_callout;
struct inpcb *inp = tp->t_inpcb;
int cpu = inp_to_cpuid(inp);
+ uint32_t f_reset;
#ifdef TCP_OFFLOAD
if (tp->t_flags & TF_TOE)
@@ -823,38 +828,49 @@ tcp_timer_activate(struct tcpcb *tp, uint32_t timer_type, u_int delta)
case TT_DELACK:
t_callout = &tp->t_timers->tt_delack;
f_callout = tcp_timer_delack;
+ f_reset = TT_DELACK_RST;
break;
case TT_REXMT:
t_callout = &tp->t_timers->tt_rexmt;
f_callout = tcp_timer_rexmt;
+ f_reset = TT_REXMT_RST;
break;
case TT_PERSIST:
t_callout = &tp->t_timers->tt_persist;
f_callout = tcp_timer_persist;
+ f_reset = TT_PERSIST_RST;
break;
case TT_KEEP:
t_callout = &tp->t_timers->tt_keep;
f_callout = tcp_timer_keep;
+ f_reset = TT_KEEP_RST;
break;
case TT_2MSL:
t_callout = &tp->t_timers->tt_2msl;
f_callout = tcp_timer_2msl;
+ f_reset = TT_2MSL_RST;
break;
default:
panic("tp %p bad timer_type %#x", tp, timer_type);
}
if (delta == 0) {
if ((tp->t_timers->tt_flags & timer_type) &&
- callout_stop(t_callout)) {
- tp->t_timers->tt_flags &= ~timer_type;
+ callout_stop(t_callout) &&
+ (tp->t_timers->tt_flags & f_reset)) {
+ tp->t_timers->tt_flags &= ~(timer_type | f_reset);
}
} else {
if ((tp->t_timers->tt_flags & timer_type) == 0) {
- tp->t_timers->tt_flags |= timer_type;
+ tp->t_timers->tt_flags |= (timer_type | f_reset);
callout_reset_on(t_callout, delta, f_callout, tp, cpu);
} else {
/* Reset already running callout on the same CPU. */
- callout_reset(t_callout, delta, f_callout, tp);
+ if (!callout_reset(t_callout, delta, f_callout, tp)) {
+ /*
+ * Callout not cancelled, consider it as not
+ * properly restarted. */
+ tp->t_timers->tt_flags &= ~f_reset;
+ }
}
}
}
@@ -891,6 +907,7 @@ tcp_timer_stop(struct tcpcb *tp, uint32_t timer_type)
{
struct callout *t_callout;
timeout_t *f_callout;
+ uint32_t f_reset;
tp->t_timers->tt_flags |= TT_STOPPED;
@@ -898,30 +915,36 @@ tcp_timer_stop(struct tcpcb *tp, uint32_t timer_type)
case TT_DELACK:
t_callout = &tp->t_timers->tt_delack;
f_callout = tcp_timer_delack_discard;
+ f_reset = TT_DELACK_RST;
break;
case TT_REXMT:
t_callout = &tp->t_timers->tt_rexmt;
f_callout = tcp_timer_rexmt_discard;
+ f_reset = TT_REXMT_RST;
break;
case TT_PERSIST:
t_callout = &tp->t_timers->tt_persist;
f_callout = tcp_timer_persist_discard;
+ f_reset = TT_PERSIST_RST;
break;
case TT_KEEP:
t_callout = &tp->t_timers->tt_keep;
f_callout = tcp_timer_keep_discard;
+ f_reset = TT_KEEP_RST;
break;
case TT_2MSL:
t_callout = &tp->t_timers->tt_2msl;
f_callout = tcp_timer_2msl_discard;
+ f_reset = TT_2MSL_RST;
break;
default:
panic("tp %p bad timer_type %#x", tp, timer_type);
}
if (tp->t_timers->tt_flags & timer_type) {
- if (callout_stop(t_callout)) {
- tp->t_timers->tt_flags &= ~timer_type;
+ if (callout_stop(t_callout) &&
+ (tp->t_timers->tt_flags & f_reset)) {
+ tp->t_timers->tt_flags &= ~(timer_type | f_reset);
} else {
/*
* Can't stop the callout, defer tcpcb actual deletion
diff --git a/sys/netinet/tcp_timer.h b/sys/netinet/tcp_timer.h
index 02a7782..dbb8aee 100644
--- a/sys/netinet/tcp_timer.h
+++ b/sys/netinet/tcp_timer.h
@@ -160,6 +160,12 @@ struct tcp_timer {
#define TT_2MSL 0x0010
#define TT_MASK (TT_DELACK|TT_REXMT|TT_PERSIST|TT_KEEP|TT_2MSL)
+#define TT_DELACK_RST 0x0100
+#define TT_REXMT_RST 0x0200
+#define TT_PERSIST_RST 0x0400
+#define TT_KEEP_RST 0x0800
+#define TT_2MSL_RST 0x1000
+
#define TT_STOPPED 0x00010000
#define TP_KEEPINIT(tp) ((tp)->t_keepinit ? (tp)->t_keepinit : tcp_keepinit)
diff --git a/sys/netinet6/sctp6_usrreq.c b/sys/netinet6/sctp6_usrreq.c
index 54c65b6..009c47f 100644
--- a/sys/netinet6/sctp6_usrreq.c
+++ b/sys/netinet6/sctp6_usrreq.c
@@ -84,6 +84,7 @@ sctp6_input_with_port(struct mbuf **i_pak, int *offp, uint16_t port)
#endif
uint32_t mflowid;
uint8_t mflowtype;
+ uint16_t fibnum;
iphlen = *offp;
if (SCTP_GET_PKT_VRFID(*i_pak, vrf_id)) {
@@ -109,6 +110,7 @@ sctp6_input_with_port(struct mbuf **i_pak, int *offp, uint16_t port)
(int)m->m_pkthdr.csum_flags, CSUM_BITS);
mflowid = m->m_pkthdr.flowid;
mflowtype = M_HASHTYPE_GET(m);
+ fibnum = M_GETFIB(m);
SCTP_STAT_INCR(sctps_recvpackets);
SCTP_STAT_INCR_COUNTER64(sctps_inpackets);
/* Get IP, SCTP, and first chunk header together in the first mbuf. */
@@ -169,7 +171,7 @@ sctp6_input_with_port(struct mbuf **i_pak, int *offp, uint16_t port)
compute_crc,
#endif
ecn_bits,
- mflowtype, mflowid,
+ mflowtype, mflowid, fibnum,
vrf_id, port);
out:
if (m) {
diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c
index 1e70fb2..b6c6a6a 100644
--- a/sys/netipsec/key.c
+++ b/sys/netipsec/key.c
@@ -7714,14 +7714,6 @@ key_sa_chgstate(struct secasvar *sav, u_int8_t state)
}
}
-void
-key_sa_stir_iv(struct secasvar *sav)
-{
-
- IPSEC_ASSERT(sav->iv != NULL, ("null IV"));
- key_randomfill(sav->iv, sav->ivlen);
-}
-
/*
* Take one of the kernel's security keys and convert it into a PF_KEY
* structure within an mbuf, suitable for sending up to a waiting
diff --git a/sys/netipsec/key.h b/sys/netipsec/key.h
index 29abb80..82811be 100644
--- a/sys/netipsec/key.h
+++ b/sys/netipsec/key.h
@@ -105,7 +105,6 @@ extern void key_init(void);
extern void key_destroy(void);
#endif
extern void key_sa_recordxfer(struct secasvar *, struct mbuf *);
-extern void key_sa_stir_iv(struct secasvar *);
#ifdef IPSEC_NAT_T
u_int16_t key_portfromsaddr(struct sockaddr *);
#define KEY_PORTFROMSADDR(saddr) \
diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c
index 3f210c2..384f565 100644
--- a/sys/netpfil/pf/pf_norm.c
+++ b/sys/netpfil/pf/pf_norm.c
@@ -76,7 +76,6 @@ struct pf_fragment_cmp {
uint32_t frc_id;
sa_family_t frc_af;
uint8_t frc_proto;
- uint8_t frc_direction;
};
struct pf_fragment {
@@ -86,7 +85,6 @@ struct pf_fragment {
#define fr_id fr_key.frc_id
#define fr_af fr_key.frc_af
#define fr_proto fr_key.frc_proto
-#define fr_direction fr_key.frc_direction
RB_ENTRY(pf_fragment) fr_entry;
TAILQ_ENTRY(pf_fragment) frag_next;
@@ -157,7 +155,7 @@ static struct mbuf *pf_fragcache(struct mbuf **, struct ip*,
#endif /* INET */
#ifdef INET6
static int pf_reassemble6(struct mbuf **, struct ip6_hdr *,
- struct ip6_frag *, uint16_t, uint16_t, int, u_short *);
+ struct ip6_frag *, uint16_t, uint16_t, u_short *);
static void pf_scrub_ip6(struct mbuf **, uint8_t);
#endif /* INET6 */
@@ -178,7 +176,6 @@ pf_ip2key(struct ip *ip, int dir, struct pf_fragment_cmp *key)
key->frc_af = AF_INET;
key->frc_proto = ip->ip_p;
key->frc_id = ip->ip_id;
- key->frc_direction = dir;
}
#endif /* INET */
@@ -663,7 +660,7 @@ pf_reassemble(struct mbuf **m0, struct ip *ip, int dir, u_short *reason)
#ifdef INET6
static int
pf_reassemble6(struct mbuf **m0, struct ip6_hdr *ip6, struct ip6_frag *fraghdr,
- uint16_t hdrlen, uint16_t extoff, int dir, u_short *reason)
+ uint16_t hdrlen, uint16_t extoff, u_short *reason)
{
struct mbuf *m = *m0;
struct pf_frent *frent;
@@ -697,7 +694,6 @@ pf_reassemble6(struct mbuf **m0, struct ip6_hdr *ip6, struct ip6_frag *fraghdr,
/* Only the first fragment's protocol is relevant. */
key.frc_proto = 0;
key.frc_id = fraghdr->ip6f_ident;
- key.frc_direction = dir;
if ((frag = pf_fillup_fragment(&key, frent, reason)) == NULL) {
PF_FRAG_UNLOCK();
@@ -823,6 +819,8 @@ pf_fragcache(struct mbuf **m0, struct ip *h, struct pf_fragment **frag, int mff,
(*frag)->fr_max = 0;
(*frag)->fr_src.v4 = h->ip_src;
(*frag)->fr_dst.v4 = h->ip_dst;
+ (*frag)->fr_af = AF_INET;
+ (*frag)->fr_proto = h->ip_p;
(*frag)->fr_id = h->ip_id;
(*frag)->fr_timeout = time_uptime;
@@ -1553,7 +1551,7 @@ pf_normalize_ip6(struct mbuf **m0, int dir, struct pfi_kif *kif,
off += sizeof(frag);
/* Returns PF_DROP or *m0 is NULL or completely reassembled mbuf. */
- if (pf_reassemble6(m0, h, &frag, off, extoff, dir, reason) != PF_PASS)
+ if (pf_reassemble6(m0, h, &frag, off, extoff, reason) != PF_PASS)
return (PF_DROP);
m = *m0;
if (m == NULL)
diff --git a/sys/ofed/drivers/infiniband/core/umem.c b/sys/ofed/drivers/infiniband/core/umem.c
index cdd2e67..5f4465f 100644
--- a/sys/ofed/drivers/infiniband/core/umem.c
+++ b/sys/ofed/drivers/infiniband/core/umem.c
@@ -272,7 +272,7 @@ struct ib_umem *ib_umem_get_ex(struct ib_ucontext *context, unsigned long addr,
PROC_LOCK(proc);
if (ptoa(npages +
pmap_wired_count(vm_map_pmap(&proc->p_vmspace->vm_map))) >
- lim_cur(proc, RLIMIT_MEMLOCK)) {
+ lim_cur_proc(proc, RLIMIT_MEMLOCK)) {
PROC_UNLOCK(proc);
kfree(umem);
return ERR_PTR(-ENOMEM);
diff --git a/sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c b/sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c
index 0cdebaf..ad5818e 100644
--- a/sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/sys/ofed/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -553,7 +553,8 @@ out:
proc = curproc;
pmap = vm_map_pmap(&proc->p_vmspace->vm_map);
PROC_LOCK(proc);
- if (ptoa(pmap_wired_count(pmap) + 1) > lim_cur(proc, RLIMIT_MEMLOCK)) {
+ if (ptoa(pmap_wired_count(pmap) + 1) >
+ lim_cur_proc(proc, RLIMIT_MEMLOCK)) {
PROC_UNLOCK(proc);
ret = -ENOMEM;
goto out;
diff --git a/sys/ofed/include/linux/file.h b/sys/ofed/include/linux/file.h
index f1a7398..e2cebab 100644
--- a/sys/ofed/include/linux/file.h
+++ b/sys/ofed/include/linux/file.h
@@ -33,6 +33,7 @@
#include <sys/file.h>
#include <sys/filedesc.h>
#include <sys/refcount.h>
+#include <sys/capsicum.h>
#include <sys/proc.h>
#include <linux/fs.h>
@@ -46,10 +47,11 @@ extern struct fileops linuxfileops;
static inline struct linux_file *
linux_fget(unsigned int fd)
{
+ cap_rights_t rights;
struct file *file;
- if (fget_unlocked(curthread->td_proc->p_fd, fd, NULL, &file,
- NULL) != 0) {
+ if (fget_unlocked(curthread->td_proc->p_fd, fd,
+ cap_rights_init(&rights), &file, NULL) != 0) {
return (NULL);
}
return (struct linux_file *)file->f_data;
@@ -71,10 +73,11 @@ fput(struct linux_file *filp)
static inline void
put_unused_fd(unsigned int fd)
{
+ cap_rights_t rights;
struct file *file;
- if (fget_unlocked(curthread->td_proc->p_fd, fd, NULL, &file,
- NULL) != 0) {
+ if (fget_unlocked(curthread->td_proc->p_fd, fd,
+ cap_rights_init(&rights), &file, NULL) != 0) {
return;
}
/*
@@ -91,10 +94,11 @@ put_unused_fd(unsigned int fd)
static inline void
fd_install(unsigned int fd, struct linux_file *filp)
{
+ cap_rights_t rights;
struct file *file;
- if (fget_unlocked(curthread->td_proc->p_fd, fd, NULL, &file,
- NULL) != 0) {
+ if (fget_unlocked(curthread->td_proc->p_fd, fd,
+ cap_rights_init(&rights), &file, NULL) != 0) {
file = NULL;
}
filp->_file = file;
diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c
index 0ecdeb3..d084b77 100644
--- a/sys/opencrypto/crypto.c
+++ b/sys/opencrypto/crypto.c
@@ -1181,8 +1181,8 @@ crypto_kdone(struct cryptkop *krp)
/* XXX: What if driver is loaded in the meantime? */
if (krp->krp_hid < crypto_drivers_num) {
cap = &crypto_drivers[krp->krp_hid];
+ KASSERT(cap->cc_koperations > 0, ("cc_koperations == 0"));
cap->cc_koperations--;
- KASSERT(cap->cc_koperations >= 0, ("cc_koperations < 0"));
if (cap->cc_flags & CRYPTOCAP_F_CLEANUP)
crypto_remove(cap);
}
diff --git a/sys/powerpc/conf/NOTES b/sys/powerpc/conf/NOTES
index 974c91b..9bfe6a9 100644
--- a/sys/powerpc/conf/NOTES
+++ b/sys/powerpc/conf/NOTES
@@ -3,6 +3,28 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
+#
+# Enable the kernel DTrace hooks which are required to load the DTrace
+# kernel modules.
+#
+options KDTRACE_HOOKS
+
+# DTrace core
+# NOTE: introduces CDDL-licensed components into the kernel
+#device dtrace
+
+# DTrace modules
+#device dtrace_lockstat
+#device dtrace_profile
+#device dtrace_sdt
+#device dtrace_fbt
+#device dtrace_systrace
+#device dtrace_prototype
+#device dtnfscl
+#device dtmalloc
+
+# Alternatively include all the DTrace modules
+#device dtraceall
#####################################################################
diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c
index 0ceb170..bfbd94d 100644
--- a/sys/powerpc/powerpc/trap.c
+++ b/sys/powerpc/powerpc/trap.c
@@ -196,8 +196,8 @@ trap(struct trapframe *frame)
if (user) {
td->td_pticks = 0;
td->td_frame = frame;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
/* User Mode Traps */
switch (type) {
diff --git a/sys/security/audit/audit_arg.c b/sys/security/audit/audit_arg.c
index 2e86842..c006b90 100644
--- a/sys/security/audit/audit_arg.c
+++ b/sys/security/audit/audit_arg.c
@@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/filedesc.h>
+#include <sys/capsicum.h>
#include <sys/ipc.h>
#include <sys/mount.h>
#include <sys/proc.h>
@@ -894,6 +895,7 @@ audit_arg_fcntl_rights(uint32_t fcntlrights)
void
audit_sysclose(struct thread *td, int fd)
{
+ cap_rights_t rights;
struct kaudit_record *ar;
struct vnode *vp;
struct file *fp;
@@ -906,7 +908,7 @@ audit_sysclose(struct thread *td, int fd)
audit_arg_fd(fd);
- if (getvnode(td->td_proc->p_fd, fd, 0, &fp) != 0)
+ if (getvnode(td, fd, cap_rights_init(&rights), &fp) != 0)
return;
vp = fp->f_vnode;
diff --git a/sys/sparc64/sparc64/trap.c b/sys/sparc64/sparc64/trap.c
index b4f0e27..e9917e5 100644
--- a/sys/sparc64/sparc64/trap.c
+++ b/sys/sparc64/sparc64/trap.c
@@ -277,8 +277,8 @@ trap(struct trapframe *tf)
td->td_pticks = 0;
td->td_frame = tf;
addr = tf->tf_tpc;
- if (td->td_ucred != p->p_ucred)
- cred_update_thread(td);
+ if (td->td_cowgen != p->p_cowgen)
+ thread_cow_update(td);
switch (tf->tf_type) {
case T_DATA_MISS:
diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h
index eca30ff..fe95111 100644
--- a/sys/sys/filedesc.h
+++ b/sys/sys/filedesc.h
@@ -83,8 +83,8 @@ struct filedesc {
int fd_lastfile; /* high-water mark of fd_ofiles */
int fd_freefile; /* approx. next free file */
u_short fd_cmask; /* mask for file creation */
- u_short fd_refcnt; /* thread reference count */
- u_short fd_holdcnt; /* hold count on structure + mutex */
+ int fd_refcnt; /* thread reference count */
+ int fd_holdcnt; /* hold count on structure + mutex */
struct sx fd_sx; /* protects members of this struct */
struct kqlist fd_kqlist; /* list of kqueues on this filedesc */
int fd_holdleaderscount; /* block fdfree() for shared close() */
@@ -147,7 +147,9 @@ int dupfdopen(struct thread *td, struct filedesc *fdp, int dfd, int mode,
int falloc(struct thread *td, struct file **resultfp, int *resultfd,
int flags);
int falloc_noinstall(struct thread *td, struct file **resultfp);
-int finstall(struct thread *td, struct file *fp, int *resultfp, int flags,
+void _finstall(struct filedesc *fdp, struct file *fp, int fd, int flags,
+ struct filecaps *fcaps);
+int finstall(struct thread *td, struct file *fp, int *resultfd, int flags,
struct filecaps *fcaps);
int fdalloc(struct thread *td, int minfd, int *result);
int fdallocn(struct thread *td, int minfd, int *fds, int n);
@@ -163,7 +165,7 @@ struct filedesc *fdshare(struct filedesc *fdp);
struct filedesc_to_leader *
filedesc_to_leader_alloc(struct filedesc_to_leader *old,
struct filedesc *fdp, struct proc *leader);
-int getvnode(struct filedesc *fdp, int fd, cap_rights_t *rightsp,
+int getvnode(struct thread *td, int fd, cap_rights_t *rightsp,
struct file **fpp);
void mountcheckdirs(struct vnode *olddp, struct vnode *newdp);
diff --git a/sys/sys/lockstat.h b/sys/sys/lockstat.h
index ed9cffa..2a7853f 100644
--- a/sys/sys/lockstat.h
+++ b/sys/sys/lockstat.h
@@ -198,6 +198,9 @@ extern uint64_t lockstat_nsecs(void);
(*lockstat_probe_func)(id, (uintptr_t)(lp), 0, 0, 0, 0); \
} while (0)
+#define LOCKSTAT_WRITER 0
+#define LOCKSTAT_READER 1
+
#else /* !KDTRACE_HOOKS */
#define LOCKSTAT_RECORD(probe, lp, arg1)
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 098d8f8..a146da8 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -58,7 +58,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1100076 /* Master, propagated to newvers */
+#define __FreeBSD_version 1100077 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
index f4d46b2..e0e7fcb 100644
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -105,7 +105,12 @@
__PMC_CPU(PPC_MPC85XX, 0x340, "Freescale PowerPC MPC85XX") \
__PMC_CPU(PPC_970, 0x380, "IBM PowerPC 970") \
__PMC_CPU(GENERIC, 0x400, "Generic") \
- __PMC_CPU(ARMV7, 0x500, "ARMv7") \
+ __PMC_CPU(ARMV7_CORTEX_A5, 0x500, "ARMv7 Cortex A5") \
+ __PMC_CPU(ARMV7_CORTEX_A7, 0x501, "ARMv7 Cortex A7") \
+ __PMC_CPU(ARMV7_CORTEX_A8, 0x502, "ARMv7 Cortex A8") \
+ __PMC_CPU(ARMV7_CORTEX_A9, 0x503, "ARMv7 Cortex A9") \
+ __PMC_CPU(ARMV7_CORTEX_A15, 0x504, "ARMv7 Cortex A15") \
+ __PMC_CPU(ARMV7_CORTEX_A17, 0x505, "ARMv7 Cortex A17") \
__PMC_CPU(ARMV8_CORTEX_A53, 0x600, "ARMv8 Cortex A53") \
__PMC_CPU(ARMV8_CORTEX_A57, 0x601, "ARMv8 Cortex A57")
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 018b595..e6c83b4 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -246,6 +246,7 @@ struct thread {
int td_intr_nesting_level; /* (k) Interrupt recursion. */
int td_pinned; /* (k) Temporary cpu pin count. */
struct ucred *td_ucred; /* (k) Reference to credentials. */
+ struct plimit *td_limit; /* (k) Resource limits. */
u_int td_estcpu; /* (t) estimated cpu utilization */
int td_slptick; /* (t) Time at sleep. */
int td_blktick; /* (t) Time spent blocked. */
@@ -308,6 +309,7 @@ struct thread {
off_t tdu_off;
} td_uretoff; /* (k) Syscall aux returns. */
#define td_retval td_uretoff.tdu_retval
+ u_int td_cowgen; /* (k) Generation of COW pointers. */
struct callout td_slpcallout; /* (h) Callout for sleep. */
struct trapframe *td_frame; /* (k) */
struct vm_object *td_kstack_obj;/* (a) Kstack object. */
@@ -498,7 +500,7 @@ struct proc {
struct filedesc *p_fd; /* (b) Open files. */
struct filedesc_to_leader *p_fdtol; /* (b) Tracking node */
struct pstats *p_stats; /* (b) Accounting/statistics (CPU). */
- struct plimit *p_limit; /* (c) Process limits. */
+ struct plimit *p_limit; /* (c) Resource limits. */
struct callout p_limco; /* (c) Limit callout handle */
struct sigacts *p_sigacts; /* (x) Signal actions, state (CPU). */
@@ -533,6 +535,7 @@ struct proc {
pid_t p_oppid; /* (c + e) Save ppid in ptrace. XXX */
struct vmspace *p_vmspace; /* (b) Address space. */
u_int p_swtick; /* (c) Tick when swapped in or out. */
+ u_int p_cowgen; /* (c) Generation of COW pointers. */
struct itimerval p_realtimer; /* (c) Alarm timer. */
struct rusage p_ru; /* (a) Exit information. */
struct rusage_ext p_rux; /* (cu) Internal resource usage. */
@@ -833,6 +836,11 @@ extern pid_t pid_max;
KASSERT((p)->p_lock == 0, ("process held")); \
} while (0)
+#define PROC_UPDATE_COW(p) do { \
+ PROC_LOCK_ASSERT((p), MA_OWNED); \
+ (p)->p_cowgen++; \
+} while (0)
+
/* Check whether a thread is safe to be swapped out. */
#define thread_safetoswapout(td) ((td)->td_flags & TDF_CANSWAP)
@@ -977,6 +985,10 @@ void cpu_thread_swapin(struct thread *);
void cpu_thread_swapout(struct thread *);
struct thread *thread_alloc(int pages);
int thread_alloc_stack(struct thread *, int pages);
+void thread_cow_get_proc(struct thread *newtd, struct proc *p);
+void thread_cow_get(struct thread *newtd, struct thread *td);
+void thread_cow_free(struct thread *td);
+void thread_cow_update(struct thread *td);
void thread_exit(void) __dead2;
void thread_free(struct thread *td);
void thread_link(struct thread *td, struct proc *p);
diff --git a/sys/sys/resourcevar.h b/sys/sys/resourcevar.h
index a07fdf8..b4c707d 100644
--- a/sys/sys/resourcevar.h
+++ b/sys/sys/resourcevar.h
@@ -130,13 +130,16 @@ int kern_proc_setrlimit(struct thread *td, struct proc *p, u_int which,
struct plimit
*lim_alloc(void);
void lim_copy(struct plimit *dst, struct plimit *src);
-rlim_t lim_cur(struct proc *p, int which);
+rlim_t lim_cur(struct thread *td, int which);
+rlim_t lim_cur_proc(struct proc *p, int which);
void lim_fork(struct proc *p1, struct proc *p2);
void lim_free(struct plimit *limp);
struct plimit
*lim_hold(struct plimit *limp);
-rlim_t lim_max(struct proc *p, int which);
-void lim_rlimit(struct proc *p, int which, struct rlimit *rlp);
+rlim_t lim_max(struct thread *td, int which);
+rlim_t lim_max_proc(struct proc *p, int which);
+void lim_rlimit(struct thread *td, int which, struct rlimit *rlp);
+void lim_rlimit_proc(struct proc *p, int which, struct rlimit *rlp);
void ruadd(struct rusage *ru, struct rusage_ext *rux, struct rusage *ru2,
struct rusage_ext *rux2);
void rucollect(struct rusage *ru, struct rusage *ru2);
@@ -156,5 +159,7 @@ void ui_racct_foreach(void (*callback)(struct racct *racct,
void *arg2, void *arg3), void *arg2, void *arg3);
#endif
+void lim_update_thread(struct thread *td);
+
#endif /* _KERNEL */
#endif /* !_SYS_RESOURCEVAR_H_ */
diff --git a/sys/sys/sbuf.h b/sys/sys/sbuf.h
index 40de36e..580cbd2 100644
--- a/sys/sys/sbuf.h
+++ b/sys/sys/sbuf.h
@@ -58,6 +58,14 @@ struct sbuf {
ssize_t s_sect_len; /* current length of section */
};
+#ifndef HD_COLUMN_MASK
+#define HD_COLUMN_MASK 0xff
+#define HD_DELIM_MASK 0xff00
+#define HD_OMIT_COUNT (1 << 16)
+#define HD_OMIT_HEX (1 << 17)
+#define HD_OMIT_CHARS (1 << 18)
+#endif /* HD_COLUMN_MASK */
+
__BEGIN_DECLS
/*
* API functions
@@ -89,6 +97,8 @@ int sbuf_done(const struct sbuf *);
void sbuf_delete(struct sbuf *);
void sbuf_start_section(struct sbuf *, ssize_t *);
ssize_t sbuf_end_section(struct sbuf *, ssize_t, size_t, int);
+void sbuf_hexdump(struct sbuf *, const void *, int, const char *,
+ int);
#ifdef _KERNEL
struct uio;
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index a30130f..36ef8af 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -692,7 +692,7 @@ int vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, void *base,
struct ucred *active_cred, struct ucred *file_cred, size_t *aresid,
struct thread *td);
int vn_rlimit_fsize(const struct vnode *vn, const struct uio *uio,
- const struct thread *td);
+ struct thread *td);
int vn_stat(struct vnode *vp, struct stat *sb, struct ucred *active_cred,
struct ucred *file_cred, struct thread *td);
int vn_start_write(struct vnode *vp, struct mount **mpp, int flags);
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c
index c384064..2b9c334 100644
--- a/sys/ufs/ffs/ffs_alloc.c
+++ b/sys/ufs/ffs/ffs_alloc.c
@@ -2766,7 +2766,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
return (error);
if (cmd.version != FFS_CMD_VERSION)
return (ERPCMISMATCH);
- if ((error = getvnode(td->td_proc->p_fd, cmd.handle,
+ if ((error = getvnode(td, cmd.handle,
cap_rights_init(&rights, CAP_FSCK), &fp)) != 0)
return (error);
vp = fp->f_data;
@@ -3080,7 +3080,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
(intmax_t)cmd.value);
}
#endif /* DEBUG */
- if ((error = getvnode(td->td_proc->p_fd, cmd.value,
+ if ((error = getvnode(td, cmd.value,
cap_rights_init(&rights, CAP_FSCK), &vfp)) != 0)
break;
if (vfp->f_vnode->v_type != VCHR) {
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index ce43bcd..ffd8802 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1410,6 +1410,14 @@ ffs_statfs(mp, sbp)
return (0);
}
+static bool
+sync_doupdate(struct inode *ip)
+{
+
+ return ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED |
+ IN_UPDATE)) != 0);
+}
+
/*
* For a lazy sync, we only care about access times, quotas and the
* superblock. Other filesystem changes are already converted to
@@ -1443,15 +1451,15 @@ ffs_sync_lazy(mp)
* Test also all the other timestamp flags too, to pick up
* any other cases that could be missed.
*/
- if ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED |
- IN_UPDATE)) == 0) {
+ if (!sync_doupdate(ip) && (vp->v_iflag & VI_OWEINACT) == 0) {
VI_UNLOCK(vp);
continue;
}
if ((error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK,
td)) != 0)
continue;
- error = ffs_update(vp, 0);
+ if (sync_doupdate(ip))
+ error = ffs_update(vp, 0);
if (error != 0)
allerror = error;
vput(vp);
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 3005491..b3ad70e 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -224,16 +224,14 @@ swap_reserve_by_cred(vm_ooffset_t incr, struct ucred *cred)
mtx_unlock(&sw_dev_mtx);
if (res) {
- PROC_LOCK(curproc);
UIDINFO_VMSIZE_LOCK(uip);
if ((overcommit & SWAP_RESERVE_RLIMIT_ON) != 0 &&
- uip->ui_vmsize + incr > lim_cur(curproc, RLIMIT_SWAP) &&
+ uip->ui_vmsize + incr > lim_cur(curthread, RLIMIT_SWAP) &&
priv_check(curthread, PRIV_VM_SWAP_NORLIMIT))
res = 0;
else
uip->ui_vmsize += incr;
UIDINFO_VMSIZE_UNLOCK(uip);
- PROC_UNLOCK(curproc);
if (!res) {
mtx_lock(&sw_dev_mtx);
swap_reserved -= incr;
@@ -1120,10 +1118,6 @@ swap_pager_getpages(vm_object_t object, vm_page_t *m, int count, int reqpage)
mreq = m[reqpage];
- KASSERT(mreq->object == object,
- ("swap_pager_getpages: object mismatch %p/%p",
- object, mreq->object));
-
/*
* Calculate range to retrieve. The pages have already been assigned
* their swapblks. We require a *contiguous* range but we know it to
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 0c84d44..7391465 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -679,19 +679,12 @@ vnode_locked:
/*
* Found the page. Leave it busy while we play
* with it.
- */
-
- /*
- * Relookup in case pager changed page. Pager
+ *
+ * Pager could have changed the page. Pager
* is responsible for disposition of old page
* if moved.
*/
- fs.m = vm_page_lookup(fs.object, fs.pindex);
- if (!fs.m) {
- unlock_and_deallocate(&fs);
- goto RetryFault;
- }
-
+ fs.m = marray[reqpage];
hardfault++;
break; /* break to PAGE HAS BEEN FOUND */
}
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index c9ee890..1ff17c2 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -230,7 +230,7 @@ vsunlock(void *addr, size_t len)
static vm_page_t
vm_imgact_hold_page(vm_object_t object, vm_ooffset_t offset)
{
- vm_page_t m, ma[1];
+ vm_page_t m;
vm_pindex_t pindex;
int rv;
@@ -238,11 +238,7 @@ vm_imgact_hold_page(vm_object_t object, vm_ooffset_t offset)
pindex = OFF_TO_IDX(offset);
m = vm_page_grab(object, pindex, VM_ALLOC_NORMAL);
if (m->valid != VM_PAGE_BITS_ALL) {
- ma[0] = m;
- rv = vm_pager_get_pages(object, ma, 1, 0);
- m = vm_page_lookup(object, pindex);
- if (m == NULL)
- goto out;
+ rv = vm_pager_get_pages(object, &m, 1, 0);
if (rv != VM_PAGER_OK) {
vm_page_lock(m);
vm_page_free(m);
@@ -571,7 +567,7 @@ vm_thread_swapin(struct thread *td)
{
vm_object_t ksobj;
vm_page_t ma[KSTACK_MAX_PAGES];
- int i, j, k, pages, rv;
+ int i, j, pages, rv;
pages = td->td_kstack_pages;
ksobj = td->td_kstack_obj;
@@ -593,9 +589,12 @@ vm_thread_swapin(struct thread *td)
if (rv != VM_PAGER_OK)
panic("vm_thread_swapin: cannot get kstack for proc: %d",
td->td_proc->p_pid);
+ /*
+ * All pages in the array are in place, due to the
+ * pager is always the swap pager, which doesn't
+ * free or remove wired non-req pages from object.
+ */
vm_object_pip_wakeup(ksobj);
- for (k = i; k < j; k++)
- ma[k] = vm_page_lookup(ksobj, k);
vm_page_xunbusy(ma[i]);
} else if (vm_page_xbusied(ma[i]))
vm_page_xunbusy(ma[i]);
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
index d4527b3..fd16bf2 100644
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -391,8 +391,7 @@ void
kmem_unback(vm_object_t object, vm_offset_t addr, vm_size_t size)
{
vm_page_t m;
- vm_offset_t offset;
- int i;
+ vm_offset_t i, offset;
KASSERT(object == kmem_object || object == kernel_object,
("kmem_unback: only supports kernel objects."));
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index bad9994..12ebf5d 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -3424,10 +3424,8 @@ vm_map_stack(vm_map_t map, vm_offset_t addrbos, vm_size_t max_ssize,
growsize = sgrowsiz;
init_ssize = (max_ssize < growsize) ? max_ssize : growsize;
vm_map_lock(map);
- PROC_LOCK(curproc);
- lmemlim = lim_cur(curproc, RLIMIT_MEMLOCK);
- vmemlim = lim_cur(curproc, RLIMIT_VMEM);
- PROC_UNLOCK(curproc);
+ lmemlim = lim_cur(curthread, RLIMIT_MEMLOCK);
+ vmemlim = lim_cur(curthread, RLIMIT_VMEM);
if (!old_mlock && map->flags & MAP_WIREFUTURE) {
if (ptoa(pmap_wired_count(map->pmap)) + init_ssize > lmemlim) {
rv = KERN_NO_SPACE;
@@ -3556,12 +3554,10 @@ vm_map_growstack(struct proc *p, vm_offset_t addr)
int error;
#endif
+ lmemlim = lim_cur(curthread, RLIMIT_MEMLOCK);
+ stacklim = lim_cur(curthread, RLIMIT_STACK);
+ vmemlim = lim_cur(curthread, RLIMIT_VMEM);
Retry:
- PROC_LOCK(p);
- lmemlim = lim_cur(p, RLIMIT_MEMLOCK);
- stacklim = lim_cur(p, RLIMIT_STACK);
- vmemlim = lim_cur(p, RLIMIT_VMEM);
- PROC_UNLOCK(p);
vm_map_lock_read(map);
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 489a987..d331a9b 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -316,9 +316,9 @@ sys_mmap(td, uap)
if (addr == 0 ||
(addr >= round_page((vm_offset_t)vms->vm_taddr) &&
addr < round_page((vm_offset_t)vms->vm_daddr +
- lim_max(td->td_proc, RLIMIT_DATA))))
+ lim_max_proc(td->td_proc, RLIMIT_DATA))))
addr = round_page((vm_offset_t)vms->vm_daddr +
- lim_max(td->td_proc, RLIMIT_DATA));
+ lim_max_proc(td->td_proc, RLIMIT_DATA));
PROC_UNLOCK(td->td_proc);
}
if (size == 0) {
@@ -1028,7 +1028,7 @@ vm_mlock(struct proc *proc, struct ucred *cred, const void *addr0, size_t len)
map = &proc->p_vmspace->vm_map;
PROC_LOCK(proc);
nsize = ptoa(npages + pmap_wired_count(map->pmap));
- if (nsize > lim_cur(proc, RLIMIT_MEMLOCK)) {
+ if (nsize > lim_cur_proc(proc, RLIMIT_MEMLOCK)) {
PROC_UNLOCK(proc);
return (ENOMEM);
}
@@ -1088,7 +1088,7 @@ sys_mlockall(td, uap)
*/
if (!old_mlock && uap->how & MCL_CURRENT) {
PROC_LOCK(td->td_proc);
- if (map->size > lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
+ if (map->size > lim_cur(td, RLIMIT_MEMLOCK)) {
PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
@@ -1481,7 +1481,7 @@ vm_mmap_object(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
if (map == &td->td_proc->p_vmspace->vm_map) {
PROC_LOCK(td->td_proc);
- if (map->size + size > lim_cur(td->td_proc, RLIMIT_VMEM)) {
+ if (map->size + size > lim_cur_proc(td->td_proc, RLIMIT_VMEM)) {
PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
@@ -1491,7 +1491,7 @@ vm_mmap_object(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
}
if (!old_mlock && map->flags & MAP_WIREFUTURE) {
if (ptoa(pmap_wired_count(map->pmap)) + size >
- lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
+ lim_cur_proc(td->td_proc, RLIMIT_MEMLOCK)) {
racct_set_force(td->td_proc, RACCT_VMEM,
map->size);
PROC_UNLOCK(td->td_proc);
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index e240b67..c7f3153 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -2046,7 +2046,7 @@ vm_object_page_cache(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
boolean_t
vm_object_populate(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
{
- vm_page_t m, ma[1];
+ vm_page_t m;
vm_pindex_t pindex;
int rv;
@@ -2054,11 +2054,7 @@ vm_object_populate(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
for (pindex = start; pindex < end; pindex++) {
m = vm_page_grab(object, pindex, VM_ALLOC_NORMAL);
if (m->valid != VM_PAGE_BITS_ALL) {
- ma[0] = m;
- rv = vm_pager_get_pages(object, ma, 1, 0);
- m = vm_page_lookup(object, pindex);
- if (m == NULL)
- break;
+ rv = vm_pager_get_pages(object, &m, 1, 0);
if (rv != VM_PAGER_OK) {
vm_page_lock(m);
vm_page_free(m);
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 2f57579..bd77500 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -1159,6 +1159,17 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
queues_locked = FALSE;
/*
+ * Invalid pages can be easily freed. They cannot be
+ * mapped, vm_page_free() asserts this.
+ */
+ if (m->valid == 0 && m->hold_count == 0) {
+ vm_page_free(m);
+ PCPU_INC(cnt.v_dfree);
+ --page_shortage;
+ goto drop_page;
+ }
+
+ /*
* We bump the activation count if the page has been
* referenced while in the inactive queue. This makes
* it less likely that the page will be added back to the
@@ -1192,15 +1203,10 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
queues_locked = TRUE;
vm_page_requeue_locked(m);
}
- VM_OBJECT_WUNLOCK(object);
- vm_page_unlock(m);
- goto relock_queues;
+ goto drop_page;
}
if (m->hold_count != 0) {
- vm_page_unlock(m);
- VM_OBJECT_WUNLOCK(object);
-
/*
* Held pages are essentially stuck in the
* queue. So, they ought to be discounted
@@ -1209,7 +1215,7 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
* loop over the active queue below.
*/
addl_page_shortage++;
- goto relock_queues;
+ goto drop_page;
}
/*
@@ -1224,20 +1230,13 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
if (m->dirty == 0 && object->ref_count != 0)
pmap_remove_all(m);
- if (m->valid == 0) {
+ if (m->dirty == 0) {
/*
- * Invalid pages can be easily freed
+ * Clean pages can be freed.
*/
vm_page_free(m);
PCPU_INC(cnt.v_dfree);
--page_shortage;
- } else if (m->dirty == 0) {
- /*
- * Clean pages can be placed onto the cache queue.
- * This effectively frees them.
- */
- vm_page_cache(m);
- --page_shortage;
} else if ((m->flags & PG_WINATCFLS) == 0 && pass < 2) {
/*
* Dirty pages need to be paged out, but flushing
@@ -1305,6 +1304,7 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
vm_page_lock_assert(m, MA_NOTOWNED);
goto relock_queues;
}
+drop_page:
vm_page_unlock(m);
VM_OBJECT_WUNLOCK(object);
relock_queues:
@@ -1851,7 +1851,7 @@ again:
/*
* get a limit
*/
- lim_rlimit(p, RLIMIT_RSS, &rsslim);
+ lim_rlimit_proc(p, RLIMIT_RSS, &rsslim);
limit = OFF_TO_IDX(
qmin(rsslim.rlim_cur, rsslim.rlim_max));
diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c
index ed9b562..b4fe8d0 100644
--- a/sys/vm/vm_pager.c
+++ b/sys/vm/vm_pager.c
@@ -250,8 +250,78 @@ vm_pager_deallocate(object)
(*pagertab[object->type]->pgo_dealloc) (object);
}
+static void
+vm_pager_assert_in(vm_object_t object, vm_page_t *m, int count)
+{
+#ifdef INVARIANTS
+
+ VM_OBJECT_ASSERT_WLOCKED(object);
+ KASSERT(count > 0, ("%s: 0 count", __func__));
+ /*
+ * All pages must be busied, not mapped, not fully valid,
+ * not dirty and belong to the proper object.
+ */
+ for (int i = 0 ; i < count; i++) {
+ vm_page_assert_xbusied(m[i]);
+ KASSERT(!pmap_page_is_mapped(m[i]),
+ ("%s: page %p is mapped", __func__, m[i]));
+ KASSERT(m[i]->valid != VM_PAGE_BITS_ALL,
+ ("%s: request for a valid page %p", __func__, m[i]));
+ KASSERT(m[i]->dirty == 0,
+ ("%s: page %p is dirty", __func__, m[i]));
+ KASSERT(m[i]->object == object,
+ ("%s: wrong object %p/%p", __func__, object, m[i]->object));
+ }
+#endif
+}
+
+/*
+ * Page in the pages for the object using its associated pager.
+ * The requested page must be fully valid on successful return.
+ */
+int
+vm_pager_get_pages(vm_object_t object, vm_page_t *m, int count, int reqpage)
+{
+ int r;
+
+ vm_pager_assert_in(object, m, count);
+
+ r = (*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage);
+ if (r != VM_PAGER_OK)
+ return (r);
+
+ /*
+ * If pager has replaced the page, assert that it had
+ * updated the array. Also assert that page is still
+ * busied.
+ */
+ KASSERT(m[reqpage] == vm_page_lookup(object, m[reqpage]->pindex),
+ ("%s: mismatch page %p pindex %ju", __func__,
+ m[reqpage], (uintmax_t )m[reqpage]->pindex));
+ vm_page_assert_xbusied(m[reqpage]);
+
+ /*
+ * Pager didn't fill up entire page. Zero out
+ * partially filled data.
+ */
+ if (m[reqpage]->valid != VM_PAGE_BITS_ALL)
+ vm_page_zero_invalid(m[reqpage], TRUE);
+
+ return (VM_PAGER_OK);
+}
+
+int
+vm_pager_get_pages_async(vm_object_t object, vm_page_t *m, int count,
+ int reqpage, pgo_getpages_iodone_t iodone, void *arg)
+{
+
+ vm_pager_assert_in(object, m, count);
+
+ return ((*pagertab[object->type]->pgo_getpages_async)(object, m,
+ count, reqpage, iodone, arg));
+}
+
/*
- * vm_pager_get_pages() - inline, see vm/vm_pager.h
* vm_pager_put_pages() - inline, see vm/vm_pager.h
* vm_pager_has_page() - inline, see vm/vm_pager.h
*/
diff --git a/sys/vm/vm_pager.h b/sys/vm/vm_pager.h
index 3accc69..6884729 100644
--- a/sys/vm/vm_pager.h
+++ b/sys/vm/vm_pager.h
@@ -106,49 +106,15 @@ vm_object_t vm_pager_allocate(objtype_t, void *, vm_ooffset_t, vm_prot_t,
vm_ooffset_t, struct ucred *);
void vm_pager_bufferinit(void);
void vm_pager_deallocate(vm_object_t);
-static __inline int vm_pager_get_pages(vm_object_t, vm_page_t *, int, int);
-static inline int vm_pager_get_pages_async(vm_object_t, vm_page_t *, int,
- int, pgo_getpages_iodone_t, void *);
+int vm_pager_get_pages(vm_object_t, vm_page_t *, int, int);
+int vm_pager_get_pages_async(vm_object_t, vm_page_t *, int, int,
+ pgo_getpages_iodone_t, void *);
static __inline boolean_t vm_pager_has_page(vm_object_t, vm_pindex_t, int *, int *);
void vm_pager_init(void);
vm_object_t vm_pager_object_lookup(struct pagerlst *, void *);
void vm_pager_free_nonreq(vm_object_t object, vm_page_t ma[], int reqpage,
int npages, boolean_t object_locked);
-/*
- * vm_page_get_pages:
- *
- * Retrieve pages from the VM system in order to map them into an object
- * ( or into VM space somewhere ). If the pagein was successful, we
- * must fully validate it.
- */
-static __inline int
-vm_pager_get_pages(
- vm_object_t object,
- vm_page_t *m,
- int count,
- int reqpage
-) {
- int r;
-
- VM_OBJECT_ASSERT_WLOCKED(object);
- r = (*pagertab[object->type]->pgo_getpages)(object, m, count, reqpage);
- if (r == VM_PAGER_OK && m[reqpage]->valid != VM_PAGE_BITS_ALL) {
- vm_page_zero_invalid(m[reqpage], TRUE);
- }
- return (r);
-}
-
-static inline int
-vm_pager_get_pages_async(vm_object_t object, vm_page_t *m, int count,
- int reqpage, pgo_getpages_iodone_t iodone, void *arg)
-{
-
- VM_OBJECT_ASSERT_WLOCKED(object);
- return ((*pagertab[object->type]->pgo_getpages_async)(object, m,
- count, reqpage, iodone, arg));
-}
-
static __inline void
vm_pager_put_pages(
vm_object_t object,
diff --git a/sys/vm/vm_unix.c b/sys/vm/vm_unix.c
index cc77ff7..201c13b 100644
--- a/sys/vm/vm_unix.c
+++ b/sys/vm/vm_unix.c
@@ -83,11 +83,9 @@ sys_obreak(td, uap)
int error = 0;
boolean_t do_map_wirefuture;
- PROC_LOCK(td->td_proc);
- datalim = lim_cur(td->td_proc, RLIMIT_DATA);
- lmemlim = lim_cur(td->td_proc, RLIMIT_MEMLOCK);
- vmemlim = lim_cur(td->td_proc, RLIMIT_VMEM);
- PROC_UNLOCK(td->td_proc);
+ datalim = lim_cur(td, RLIMIT_DATA);
+ lmemlim = lim_cur(td, RLIMIT_MEMLOCK);
+ vmemlim = lim_cur(td, RLIMIT_VMEM);
do_map_wirefuture = FALSE;
new = round_page((vm_offset_t)uap->nsize);
diff --git a/sys/x86/acpica/acpi_wakeup.c b/sys/x86/acpica/acpi_wakeup.c
index 0eb6823..bc1c55c 100644
--- a/sys/x86/acpica/acpi_wakeup.c
+++ b/sys/x86/acpica/acpi_wakeup.c
@@ -210,7 +210,7 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state)
if (acpi_resume_beep != 0)
timer_spkr_acquire();
- AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc));
+ AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc), 0);
intr_suspend();
@@ -298,7 +298,7 @@ acpi_wakeup_machdep(struct acpi_softc *sc, int state, int sleep_result,
#endif
intr_resume(/*suspend_cancelled*/false);
- AcpiSetFirmwareWakingVector(0);
+ AcpiSetFirmwareWakingVector(0, 0);
} else {
/* Wakeup MD procedures in interrupt enabled context */
if (sleep_result == 1 && mem_range_softc.mr_op != NULL &&
diff --git a/sys/xen/blkif.h b/sys/xen/blkif.h
index 48b71ea..8a19d5d 100644
--- a/sys/xen/blkif.h
+++ b/sys/xen/blkif.h
@@ -46,7 +46,7 @@ struct blkif_x86_32_request {
blkif_vdev_t handle; /* only for read/write requests */
uint64_t id; /* private guest value, echoed in resp */
blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */
- struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK];
+ struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
};
struct blkif_x86_32_response {
uint64_t id; /* copied from request */
@@ -64,7 +64,7 @@ struct blkif_x86_64_request {
blkif_vdev_t handle; /* only for read/write requests */
uint64_t __attribute__((__aligned__(8))) id;
blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */
- struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK];
+ struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
};
struct blkif_x86_64_response {
uint64_t __attribute__((__aligned__(8))) id;
@@ -114,7 +114,7 @@ enum blkif_protocol {
static void inline blkif_get_x86_32_req(blkif_request_t *dst, blkif_x86_32_request_t *src)
{
- int i, n = BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK;
+ int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST;
dst->operation = src->operation;
dst->nr_segments = src->nr_segments;
dst->handle = src->handle;
@@ -129,7 +129,7 @@ static void inline blkif_get_x86_32_req(blkif_request_t *dst, blkif_x86_32_reque
static void inline blkif_get_x86_64_req(blkif_request_t *dst, blkif_x86_64_request_t *src)
{
- int i, n = BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK;
+ int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST;
dst->operation = src->operation;
dst->nr_segments = src->nr_segments;
dst->handle = src->handle;
diff --git a/sys/xen/interface/io/blkif.h b/sys/xen/interface/io/blkif.h
index 9155662..b725776 100644
--- a/sys/xen/interface/io/blkif.h
+++ b/sys/xen/interface/io/blkif.h
@@ -457,21 +457,9 @@
#define BLKIF_OP_DISCARD 5
/*
- * Maximum scatter/gather segments associated with a request header block.
- * This is carefully chosen so that sizeof(blkif_ring_t) <= PAGE_SIZE.
- * NB. This could be 12 if the ring indexes weren't stored in the same page.
- */
-#define BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK 11
-
-/*
- * Maximum scatter/gather segments associated with a segment block.
- */
-#define BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK 14
-
-/*
* Maximum scatter/gather segments per request (header + segment blocks).
*/
-#define BLKIF_MAX_SEGMENTS_PER_REQUEST 255
+#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
/*
* NB. first_sect and last_sect in blkif_request_segment, as well as
@@ -512,22 +500,11 @@ struct blkif_request {
blkif_vdev_t handle; /* only for read/write requests */
uint64_t id; /* private guest value, echoed in resp */
blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */
- blkif_request_segment_t seg[BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK];
+ blkif_request_segment_t seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
};
typedef struct blkif_request blkif_request_t;
/*
- * A segment block is a ring request structure that contains only
- * segment data.
- *
- * sizeof(struct blkif_segment_block) <= sizeof(struct blkif_request)
- */
-struct blkif_segment_block {
- blkif_request_segment_t seg[BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK];
-};
-typedef struct blkif_segment_block blkif_segment_block_t;
-
-/*
* Cast to this structure when blkif_request.operation == BLKIF_OP_DISCARD
* sizeof(struct blkif_request_discard) <= sizeof(struct blkif_request)
*/
@@ -564,21 +541,6 @@ typedef struct blkif_response blkif_response_t;
*/
DEFINE_RING_TYPES(blkif, struct blkif_request, struct blkif_response);
-/*
- * Index to, and treat as a segment block, an entry in the ring.
- */
-#define BLKRING_GET_SEG_BLOCK(_r, _idx) \
- (((blkif_segment_block_t *)RING_GET_REQUEST(_r, _idx))->seg)
-
-/*
- * The number of ring request blocks required to handle an I/O
- * request containing _segs segments.
- */
-#define BLKIF_SEGS_TO_BLOCKS(_segs) \
- ((((_segs - BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK) \
- + (BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK - 1)) \
- / BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK) + /*header_block*/1)
-
#define VDISK_CDROM 0x1
#define VDISK_REMOVABLE 0x2
#define VDISK_READONLY 0x4
diff --git a/targets/Makefile b/targets/Makefile
new file mode 100644
index 0000000..b5be7d2
--- /dev/null
+++ b/targets/Makefile
@@ -0,0 +1,181 @@
+# $FreeBSD$
+
+# This is the top-level makefile - derrived from the Junos version
+#
+# If a subdir that matches the requested target exists, we assume
+# a build target and initialize DIRDEPS, dirdeps.mk does the rest.
+#
+# Otherwise we include Makefile.xtras and hope it knows what to do.
+#
+
+# Copyright (c) 2010-2012, Juniper Networks, Inc.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.if ${.MAKE.LEVEL} == 0
+
+# this is our top-level makefile
+.if make(pkg-*)
+DIRDEPS_FILTER = Mtargets/*
+.endif
+
+# in theory, this is what we want
+target_dirs = targets targets/pseudo
+# these tweak how we do it
+target_prefix = pkg- build-
+DIRDEPS := ${.TARGETS:Nall:${target_prefix:@p@S,^$p,,@:ts:}:@t@${target_dirs:@d@$d/$t@}@:@d@${exists(${SRCTOP}/$d):?$d:}@}
+
+all_machine_list = ${ALL_MACHINE_LIST} host common
+
+.if ${DIRDEPS:Mtargets/pseudo/*} != ""
+# all bets are off
+PKG_MACHINE_LIST = ${all_machine_list}
+.endif
+
+.if make(check-commit)
+# a special case
+DIRDEPS = targets/pseudo/check-commit
+.if defined(ALL_MACHINES)
+CHECK_MACHINE_LIST = all
+.undef ALL_MACHINES
+.endif
+SHIPDIR = no
+
+.else
+
+.if defined(ALL_MACHINES)
+DIRDEPS := ${DIRDEPS:O:u:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@}
+.undef ALL_MACHINES
+PKG_MACHINE_LIST ?= ${DIRDEPS:E:O:u}
+.elif empty(REQUESTED_MACHINE)
+# the above may be insufficient.
+# some packages only support one machine which may not be ${MACHINE}
+# some support multiple, in which case unless ALL_MACHINES is defined
+# we only want ${MACHINE}
+plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@}
+.if ${plain} != ${DIRDEPS}
+qual := ${DIRDEPS:${plain:${M_ListToSkip}}:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@}
+DIRDEPS := ${plain} ${qual}
+PKG_MACHINE_LIST ?= ${MACHINE} ${qual:E:O:u}
+.endif
+.else
+# check that a .MAKE.DEPENDFILE exists
+DIRDEPS := ${.MAKE.DEPENDFILE_PREFERENCE:T:@m@${DIRDEPS:@d@${exists(${SRCTOP}/$d/$m):?$d:}@}@:O:u}
+.endif
+.if !empty(PKG_MACHINE_LIST)
+.if ${PKG_MACHINE_LIST:Mdepend} != ""
+PKG_MACHINE_LIST = ${ALL_MACHINE_LIST}
+.endif
+PKG_MACHINE_LIST := ${PKG_MACHINE_LIST}
+.endif
+.endif
+
+# we don't use DIRDEPS_FILTER, since we only want it to
+# apply to this initial list
+.if !empty(REQUESTED_MACHINE) && !empty(DIRDEPS)
+# this is a variant of the logic above, we want plain
+# but need to filter the qualified DIRDEPS to REQUESTED_MACHINE
+plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@}
+.if !empty(plain) && ${plain} != ${DIRDEPS}
+qual := ${DIRDEPS:${plain:${M_ListToSkip}}:M*.${REQUESTED_MACHINE}}
+.if empty(qual)
+qual := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE:T}):?$d.${.MAKE.DEPENDFILE:E}:}@}
+.endif
+DIRDEPS := ${plain} ${qual}
+.endif
+.if empty(DIRDEPS)
+.error ${REQUESTED_MACHINE} is not appropriate for ${.TARGETS}
+.endif
+.endif
+
+.if !empty(build_options)
+build_options := ${build_options:O:u}
+.for v in ${build_options}
+$v = yes
+.endfor
+.export ${build_options}
+.endif
+
+.if !empty(DIRDEPS)
+# This is printed as we read the makefile
+# so provides a useful clue as to when we really started.
+# This allows us to work out how long reading
+# Makefile.depend* takes.
+.if ${.MAKEFLAGS:M-V} == ""
+.if ${BUILD_DIRDEPS_CACHE:Uno} == "no"
+.info ${.newline}${TIME_STAMP} Start ${.TARGETS}
+.endif
+now_utc = ${%s:L:gmtime}
+start_utc := ${now_utc}
+.endif
+
+_begin =
+.if ${BUILD_DIRDEPS_CACHE:Uno} == "no"
+__DEFAULT_YES_OPTIONS+= \
+ CLEAN_ERROR_LOGS
+
+.include <bsd.mkopt.mk>
+
+.if ${MK_CLEAN_ERROR_LOGS} == "yes"
+_begin += clean-error-logs
+.endif
+
+.if !empty(_begin) && !make(clean*)
+dirdeps: ${_begin} .WAIT
+.endif
+.endif
+
+.include "Makefile.inc"
+
+.include <dirdeps.mk>
+
+.for t in ${.TARGETS:Nall:Nclean*:${_begin:Uall:${M_ListToSkip}}}
+$t: dirdeps
+.endfor
+
+elapsed_time= seconds=`expr ${now_utc} - ${start_utc}`
+
+.if ${BUILD_DIRDEPS_CACHE:Uno} == "no"
+.END: _build_finish
+_build_finish: .NOMETA
+ @echo "${TIME_STAMP} Finished ${.TARGETS} ${elapsed_time}"
+.endif
+
+.ERROR: _build_failed
+_build_failed: .NOMETA
+ @echo "${TIME_STAMP} Failed ${.TARGETS} ${elapsed_time}"
+
+.endif # !empty(DIRDEPS)
+
+clean-error-logs: .NOMETA
+ @test ! -d ${meta_error_log:H} || rm -f ${meta_error_log:H}/*log
+
+.if !target(_DIRDEP_USE)
+# we did not read dirdeps.mk above, the target may be here
+.include "Makefile.xtras"
+.endif
+
+.else
+# dirdeps does it all
+all:
+.endif # .MAKE.LEVEL == 0
+
diff --git a/targets/Makefile.inc b/targets/Makefile.inc
new file mode 100644
index 0000000..2dc3b81
--- /dev/null
+++ b/targets/Makefile.inc
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+.if !target(__${_this}__)
+__${_this}__:
+
+_CURDIR ?= ${.CURDIR}
+_OBJDIR ?= ${.OBJDIR}
+
+.if ${RELDIR:Mtargets/*} != "" || ${RELDIR} == "."
+
+.if ${.MAKE.LEVEL} == 0 && ${RELDIR:Mtargets/*} != ""
+.if make(bootstrap*) || !exists(${_CURDIR}/${.MAKE.DEPENDFILE:T})
+_bootstrap_dirdeps = yes
+.else
+# BUILD_AT_LEVEL0=no tells dirdeps.mk to use a sub-make for .CURDIR
+# This is useful if we need to leverage DIRDEPS
+BUILD_AT_LEVEL0 = no
+# this renders the rest harmless
+PKG_METHOD = no
+.endif
+.endif
+
+# The makefile in subdirs should set this to something useful
+# the default should do nothing.
+PKG_METHOD ?= none
+
+.MAIN: all
+
+.if ${build-*:${M_L_TARGETS}} != ""
+# just build the bits, skip packaging
+all:
+SHIPDIR = no
+.if ${RELDIR} != "."
+PKG_METHOD = no
+.endif
+.endif
+
+.if ${PKG_METHOD:Mno*} != ""
+all: ${PKG_METHOD}
+
+# set this to "no" for manual control
+UPDATE_DEPENDFILE ?= yes
+.endif
+
+.if ${UPDATE_DEPENDFILE:Uno} == "yes"
+.include <meta.autodep.mk>
+.endif
+
+# all the clever packaging methods go here....
+
+.endif # level 0
+
+.endif # _this
diff --git a/targets/Makefile.xtras b/targets/Makefile.xtras
new file mode 100644
index 0000000..57a0453
--- /dev/null
+++ b/targets/Makefile.xtras
@@ -0,0 +1,59 @@
+# $FreeBSD$
+#
+# Makefile.xtras - non-build targets
+
+# Resist the urge to fill this with miscellaneous junk
+
+# We are not building here (shouldn't be), so no meta mode.
+.MAKE.MODE = normal
+
+_here := ${_PARSEDIR}
+
+.MAIN: no-default
+
+.if !empty(SB_NAME)
+# mk wrapper
+MAKE_CMD= mk
+MAKE_MACHINE_CMD= mk --machine <machine>
+.else
+# not using 'mk'
+MAKE_CMD= ${.MAKE:T}
+MAKE_MACHINE_CMD= env MACHINE=<machine> ${.MAKE:T}
+.endif
+
+no-default:
+ @echo "ERROR: there is no supported default target."; \
+ echo "Try '${MAKE_CMD} help'"
+
+
+.if make(show-valid-targets)
+OTHER_TARGETS = \
+ destroy \
+
+BUILD_TARGETS != cd ${_here} && \
+ find . \( -name Makefile.depend -o -name ${.MAKE.DEPENDFILE:T} \) | \
+ sed 's,/Makefile.*,,;s,^./,,' | sort -u
+
+show-valid-targets:
+ @echo "Build targets for ${MACHINE} (leave out the ${target_dirs:S,${_here:T},,:S,^/,,:S,$,/,}):"
+ @echo "${BUILD_TARGETS:ts\n}"
+ @echo; echo "Other targets:"; echo "${OTHER_TARGETS:ts\n}"
+.endif
+
+help: show-help
+show-help:
+ @echo; \
+ echo "You can see the targets which are valid for a given machine"; \
+ echo "by running '${MAKE_MACHINE_CMD} show-valid-targets'"; \
+ echo "For other information, read: ${HELP_DOCS:@d@${.newline}$d@}"; \
+ echo
+
+not-valid-target:
+ @echo "ERROR: '${_TARGETS}' is not a valid target for ${MACHINE}."
+
+
+.for t in ${_TARGETS:Nlove}
+.if !target($t)
+$t: not-valid-target show-help
+.endif
+.endfor
diff --git a/targets/pseudo/Makefile.inc b/targets/pseudo/Makefile.inc
new file mode 100644
index 0000000..40f3828
--- /dev/null
+++ b/targets/pseudo/Makefile.inc
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+# we don't do anything in these dirs
+# they are just for triggering building of other things
+
+UPDATE_DEPENDFILE= no
+
+.if !target(all)
+all:
+ @echo Done!
+.endif
+
+
diff --git a/targets/pseudo/bootstrap-tools/Makefile b/targets/pseudo/bootstrap-tools/Makefile
new file mode 100644
index 0000000..a267e95
--- /dev/null
+++ b/targets/pseudo/bootstrap-tools/Makefile
@@ -0,0 +1,79 @@
+# $FreeBSD$
+
+# building clang is particularly tedious - so avoid re-inventing wheels
+
+all: bootstrap-toolchain
+
+UPDATE_DEPENDFILE= no
+.export UPDATE_DEPENDFILE
+
+# we build for the pseudo machine "host"
+TARGET_MACHINE= host
+
+HOST_MACHINE!= uname -m
+HOST_MACHINE_ARCH!= uname -p
+BTOOLSDIR?= ${HOST_OBJTOP}/tools
+LEGACY_TOOLS?= ${BTOOLSDIR}/legacy
+
+BSENV= \
+ unset MAKEOBJDIR; MAKEOBJDIRPREFIX=${BTOOLSDIR} \
+ MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \
+ TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \
+ WITHOUT_STAGING=1 STAGE_ROOT= BOOTSTRAPPING_TOOLS=1 \
+ WORLDTMP=${BTOOLSDIR} LEGACY_TOOLS=${LEGACY_TOOLS}
+
+.if !defined(OSRELDATE)
+ord_h= /usr/include/osreldate.h
+.if exists(${ord_h})
+OSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h}
+.endif
+OSRELDATE?= 0
+.endif
+
+# need to keep this in sync with src/Makefile.inc1
+BSARGS= \
+ DESTDIR= \
+ BOOTSTRAPPING=${OSRELDATE} \
+ SSP_CFLAGS= \
+ MK_HTML=no NO_LINT=yes MK_MAN=no \
+ -DNO_PIC MK_PROFILE=no -DNO_SHARED \
+ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
+ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
+ MK_LLDB=no MK_TESTS=no \
+ MK_INCLUDES=yes
+
+
+legacy: .MAKE .META
+ mkdir -p ${LEGACY_TOOLS}
+ ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${BTOOLSDIR} > $@2
+ ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${LEGACY_TOOLS} > $@
+ ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
+ touch $@
+
+bootstrap-tools: legacy
+build-tools: bootstrap-tools
+cross-tools: build-tools
+
+cross-tools build-tools bootstrap-tools: .MAKE .META
+ ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
+ touch $@
+
+# MAKELEVEL=0 so that dirdeps.mk does its thing
+# LEGACY_TOOLS lets us use the bootstaped stuff above
+# TARGET* is so that MK_CLANG gets set correctly.
+BSTCENV= \
+ MAKELEVEL=0 \
+ MACHINE=host \
+ LEGACY_TOOLS=${LEGACY_TOOLS} \
+ TARGET=${HOST_MACHINE} \
+ TARGET_ARCH=${HOST_MACHINE_ARCH}
+
+BSTCARGS= \
+ ${BSARGS} \
+ BUILD_DIRDEPS=yes \
+ -DWITH_STAGING \
+ -DWITH_TOOLSDIR
+
+# finally we build toolchain leveraging the above.
+bootstrap-toolchain: .MAKE cross-tools
+ ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain
diff --git a/targets/pseudo/bootstrap-tools/Makefile.depend.host b/targets/pseudo/bootstrap-tools/Makefile.depend.host
new file mode 100644
index 0000000..fc65dd3
--- /dev/null
+++ b/targets/pseudo/bootstrap-tools/Makefile.depend.host
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS =
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/clang/Makefile b/targets/pseudo/clang/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/clang/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/clang/Makefile.depend b/targets/pseudo/clang/Makefile.depend
new file mode 100644
index 0000000..4dbc0af
--- /dev/null
+++ b/targets/pseudo/clang/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+.if !defined(MK_LLDB)
+.include <src.opts.mk>
+.endif
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ lib/clang/include \
+ share/doc/llvm/clang \
+ usr.bin/clang/clang \
+ usr.bin/clang/clang-tblgen \
+ usr.bin/clang/tblgen \
+
+.if ${MK_LLDB} == "yes"
+DIRDEPS+= \
+ usr.bin/clang/lldb
+.endif
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/gcc/Makefile b/targets/pseudo/gcc/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/gcc/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/gcc/Makefile.depend b/targets/pseudo/gcc/Makefile.depend
new file mode 100644
index 0000000..8136da6
--- /dev/null
+++ b/targets/pseudo/gcc/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc \
+ gnu/usr.bin/cc/cc1 \
+ gnu/usr.bin/cc/include \
+ gnu/usr.bin/cc/doc \
+ gnu/usr.bin/cc/cpp \
+ gnu/usr.bin/cc/cc1plus \
+ gnu/usr.bin/cc/c++ \
+ gnu/usr.bin/cc/c++filt \
+ gnu/usr.bin/cc/gcov \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/hosttools/Makefile b/targets/pseudo/hosttools/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/hosttools/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/hosttools/Makefile.depend b/targets/pseudo/hosttools/Makefile.depend
new file mode 100644
index 0000000..83c8848
--- /dev/null
+++ b/targets/pseudo/hosttools/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ lib/clang/include.host \
+ lib/libc++.host \
+ lib/libcxxrt.host \
+ share/doc/llvm/clang.host \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/clang.host \
+ usr.bin/clang/tblgen.host \
+ usr.bin/lex/lib.host \
+ usr.bin/mkcsmapper_static.host \
+ usr.bin/mkesdb_static.host \
+ usr.bin/mkuzip.host \
+ usr.bin/xinstall.host \
+ usr.sbin/config.host \
+
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/kernel/Makefile b/targets/pseudo/kernel/Makefile
new file mode 100644
index 0000000..b619eeb
--- /dev/null
+++ b/targets/pseudo/kernel/Makefile
@@ -0,0 +1,31 @@
+# $FreeBSD$
+
+# Build the kernel ${KERNCONF}
+KERNCONF?= ${KERNEL:UGENERIC}
+
+TARGET?= ${MACHINE}
+# keep this compatible with peoples expectations...
+KERN_OBJDIR= ${OBJTOP}/sys/compile/${KERNCONF}
+KERN_CONFDIR= ${SRCTOP}/sys/${TARGET}/conf
+
+CONFIG= ${STAGE_HOST_OBJTOP}/usr/sbin/config
+
+${KERNCONF}.config: .MAKE .META
+ mkdir -p ${KERN_OBJDIR:H}
+ (cd ${KERN_CONFDIR} && \
+ ${CONFIG} ${CONFIGARGS} -d ${KERN_OBJDIR} ${KERNCONF})
+ (cd ${KERN_OBJDIR} && ${.MAKE} depend)
+ @touch $@
+
+# we need to pass curdirOk=yes to meta mode, since we want .meta files
+# in ${KERN_OBJDIR}
+${KERNCONF}.build: .MAKE ${KERNCONF}.config
+ (cd ${KERN_OBJDIR} && META_MODE="${.MAKE.MODE} curdirOk=yes" ${.MAKE})
+
+.if ${.MAKE.LEVEL} > 0
+all: ${KERNCONF}.build
+.endif
+
+UPDATE_DEPENDFILE= no
+
+.include <bsd.prog.mk>
diff --git a/targets/pseudo/kernel/Makefile.depend b/targets/pseudo/kernel/Makefile.depend
new file mode 100644
index 0000000..7bcff69
--- /dev/null
+++ b/targets/pseudo/kernel/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ usr.sbin/config.host \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/stage/Makefile b/targets/pseudo/stage/Makefile
new file mode 100644
index 0000000..0889ad2
--- /dev/null
+++ b/targets/pseudo/stage/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# this makefile gets hooked into everyone's dependencies so that
+# distrib-dirs can be done in STAGE_OBJTOP
+all:
+
+# mtree makes a lot of noise if we are not root,
+# we don't need to see it.
+stage-distrib-dirs: .META
+ mkdir -p ${STAGE_OBJTOP}
+ ${.MAKE} -C ${SRCTOP}/etc distrib-dirs -DWITH_TESTS DESTDIR=${STAGE_OBJTOP} > $@
+
+.include <bsd.prog.mk>
+
+.if ${.MAKE.LEVEL} > 0 && ${MK_STAGING} == "yes"
+all: stage-distrib-dirs
+.endif
diff --git a/targets/pseudo/the-lot/Makefile b/targets/pseudo/the-lot/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/the-lot/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/the-lot/Makefile.depend b/targets/pseudo/the-lot/Makefile.depend
new file mode 100644
index 0000000..d54c59c
--- /dev/null
+++ b/targets/pseudo/the-lot/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ targets/pseudo/kernel \
+ targets/pseudo/toolchain \
+ targets/pseudo/userland \
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/toolchain/Makefile b/targets/pseudo/toolchain/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/toolchain/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/toolchain/Makefile.depend b/targets/pseudo/toolchain/Makefile.depend
new file mode 100644
index 0000000..e2e0202
--- /dev/null
+++ b/targets/pseudo/toolchain/Makefile.depend
@@ -0,0 +1,51 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+.if !defined(MK_CLANG)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+DIRDEPS=
+
+.if ${MK_ELFTOOLCHAIN_TOOLS} == "yes"
+DIRDEPS+= \
+ usr.bin/addr2line \
+ usr.bin/cxxflit \
+ usr.bin/elfcopy \
+ usr.bin/nm \
+ usr.bin/readelf \
+ usr.bin/size \
+ usr.bin/strip \
+ usr.bin/strings \
+
+.else
+DIRDEPS+= \
+ gnu/usr.bin/binutils/addr2line \
+ gnu/usr.bin/binutils/nm \
+ gnu/usr.bin/binutils/readelf \
+ gnu/usr.bin/binutils/size \
+ gnu/usr.bin/binutils/strip \
+ gnu/usr.bin/binutils/strings \
+
+.endif
+
+DIRDEPS+= \
+ usr.bin/xinstall \
+ gnu/usr.bin/binutils/ar \
+ gnu/usr.bin/binutils/as \
+ gnu/usr.bin/binutils/ld \
+ gnu/usr.bin/binutils/objcopy \
+ gnu/usr.bin/binutils/objdump \
+ gnu/usr.bin/binutils/ranlib \
+
+
+.if ${MK_CLANG} == "yes"
+DIRDEPS+= targets/pseudo/clang
+.endif
+.if ${MK_GCC} == "yes"
+DIRDEPS+= targets/pseudo/gcc
+.endif
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/universe/Makefile b/targets/pseudo/universe/Makefile
new file mode 100644
index 0000000..ef696d3
--- /dev/null
+++ b/targets/pseudo/universe/Makefile
@@ -0,0 +1,73 @@
+# $FreeBSD$
+
+# This target is "special".
+#
+# The actual work is done via another target;
+# UNIVERSE_TARGET_RELDIR is used to identify it.
+#
+# We leverage dirdeps.mk to run a sub-make per
+# MACHINE/ARCH to each build ${UNIVERSE_TARGET_RELDIR}
+# in meta mode.
+#
+# We simply override the level at which dirdeps.mk normally does
+# its thing, and give it a DIRDEPS list that corresponds to
+# ${UNIVERSE_TARGET_RELDIR}.${TARGET_SPEC} for each TARGET_SPEC we
+# want.
+#
+# This allows the computation of dependencies for each ${TARGET_SPEC}
+# to happen in parallel - avoiding a very long startup time.
+# We can even export each sub-make to a different machine if using a
+# cluster.
+#
+# The above works fine so long as our sub-makes remain independent.
+# That is; none of them attempts to visit any directory for a machine
+# other than the TARGET_SPEC we gave it.
+# For example; to build some tool for the pseudo machine "host".
+# To avoid that, our Makefile.depend lists all the hosttools we might
+# need and these will thus be built before we launch the
+# ${UNIVERSE_TARGET_RELDIR} sub-makes.
+# Further we add a filter to skip any "host" dirdeps during those
+# sub-makes.
+#
+#
+
+# this is the RELDIR of the target we build
+UNIVERSE_TARGET_RELDIR?= targets/pseudo/the-lot
+
+# the list of machines
+TARGET_MACHINE_LIST = i386 amd64
+# some machines have more than one arch
+TARGET_ARCHES_arm?= arm armeb armv6 armv6hf
+
+# avoid ../Makefile.inc defining this
+all:
+
+.include "../Makefile.inc"
+
+.if ${.MAKE.LEVEL} > 0
+# ok our prerequisites have been built
+.if !defined(UNIVERSE_GUARD)
+# just incase we end up back here,
+# we cannot rely on .MAKE.LEVEL as we normally would
+UNIVERSE_GUARD=1
+.export UNIVERSE_GUARD
+
+# we want to re-use dirdeps
+_DIRDEP_USE_LEVEL = ${.MAKE.LEVEL}
+
+# we want our sub-makes to think they are level 0
+# and we don't want failure of one to stop all.
+DIRDEP_USE_ENV= \
+ MAKELEVEL=0 \
+ MAKE_JOB_ERROR_TOKEN=no
+
+
+_target_specs:= ${TARGET_MACHINE_LIST:@m@${TARGET_ARCHES_$m:U$m:@a@$m,$a@}@:O:u}
+
+DIRDEPS:= ${_target_specs:@t@${UNIVERSE_TARGET_RELDIR}.$t@}
+
+all: dirdeps
+
+.include <dirdeps.mk>
+.endif
+.endif
diff --git a/targets/pseudo/universe/Makefile.depend b/targets/pseudo/universe/Makefile.depend
new file mode 100644
index 0000000..b55179d
--- /dev/null
+++ b/targets/pseudo/universe/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+# this is not normally needed, but we are not normal
+.if ${.MAKE.LEVEL} == 0
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+# our role here is to build all the host tools etc.
+DIRDEPS = \
+ targets/pseudo/hosttools.host \
+
+
+.include <dirdeps.mk>
+.endif
diff --git a/targets/pseudo/userland/Makefile b/targets/pseudo/userland/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/Makefile.depend b/targets/pseudo/userland/Makefile.depend
new file mode 100644
index 0000000..c1e0662
--- /dev/null
+++ b/targets/pseudo/userland/Makefile.depend
@@ -0,0 +1,788 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+.if !defined(MK_MANDOCDB)
+.include <src.opts.mk>
+.endif
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS=
+.if ${MK_MANDOCDB} == "no"
+DIRDEPS+= usr.bin/makewhatis
+.endif
+DIRDEPS+= \
+ bin/cat \
+ bin/chflags \
+ bin/chio \
+ bin/chmod \
+ bin/cp \
+ bin/csh \
+ bin/date \
+ bin/dd \
+ bin/df \
+ bin/domainname \
+ bin/echo \
+ bin/ed \
+ bin/expr \
+ bin/freebsd-version \
+ bin/getfacl \
+ bin/hostname \
+ bin/kenv \
+ bin/kill \
+ bin/ln \
+ bin/ls \
+ bin/mkdir \
+ bin/mv \
+ bin/pax \
+ bin/pkill \
+ bin/ps \
+ bin/pwait \
+ bin/pwd \
+ bin/rcp \
+ bin/realpath \
+ bin/rm \
+ bin/rmail \
+ bin/rmdir \
+ bin/setfacl \
+ bin/sh \
+ bin/sleep \
+ bin/stty \
+ bin/sync \
+ bin/test \
+ bin/uuidgen \
+ sbin/adjkerntz \
+ sbin/atacontrol \
+ sbin/atm/atmconfig \
+ sbin/badsect \
+ sbin/camcontrol \
+ sbin/ccdconfig \
+ sbin/clri \
+ sbin/comcontrol \
+ sbin/conscontrol \
+ sbin/ddb \
+ sbin/devd \
+ sbin/devfs \
+ sbin/dhclient \
+ sbin/dmesg \
+ sbin/dump \
+ sbin/dumpfs \
+ sbin/dumpon \
+ sbin/etherswitchcfg \
+ sbin/ffsinfo \
+ sbin/fsck \
+ sbin/fsck_ffs \
+ sbin/fsck_msdosfs \
+ sbin/fsdb \
+ sbin/fsirand \
+ sbin/gbde \
+ sbin/geom/class/cache \
+ sbin/geom/class/concat \
+ sbin/geom/class/eli \
+ sbin/geom/class/journal \
+ sbin/geom/class/label \
+ sbin/geom/class/mirror \
+ sbin/geom/class/mountver \
+ sbin/geom/class/multipath \
+ sbin/geom/class/nop \
+ sbin/geom/class/part \
+ sbin/geom/class/raid \
+ sbin/geom/class/raid3 \
+ sbin/geom/class/sched \
+ sbin/geom/class/shsec \
+ sbin/geom/class/stripe \
+ sbin/geom/class/virstor \
+ sbin/geom/core \
+ sbin/ggate/ggatec \
+ sbin/ggate/ggated \
+ sbin/ggate/ggatel \
+ sbin/growfs \
+ sbin/gvinum \
+ sbin/hastctl \
+ sbin/hastd \
+ sbin/ifconfig \
+ sbin/init \
+ sbin/ipf/ipf \
+ sbin/ipf/ipfs \
+ sbin/ipf/ipfstat \
+ sbin/ipf/ipftest \
+ sbin/ipf/ipmon \
+ sbin/ipf/ipnat \
+ sbin/ipf/ippool \
+ sbin/ipf/ipresend \
+ sbin/ipf/libipf \
+ sbin/ipfw \
+ sbin/iscontrol \
+ sbin/kldconfig \
+ sbin/kldload \
+ sbin/kldstat \
+ sbin/kldunload \
+ sbin/ldconfig \
+ sbin/md5 \
+ sbin/mdconfig \
+ sbin/mdmfs \
+ sbin/mknod \
+ sbin/mksnap_ffs \
+ sbin/mount \
+ sbin/mount_cd9660 \
+ sbin/mount_fusefs \
+ sbin/mount_msdosfs \
+ sbin/mount_nfs \
+ sbin/mount_nullfs \
+ sbin/mount_udf \
+ sbin/mount_unionfs \
+ sbin/natd \
+ sbin/newfs \
+ sbin/newfs_msdos \
+ sbin/nfsiod \
+ sbin/nos-tun \
+ sbin/pfctl \
+ sbin/pflogd \
+ sbin/ping \
+ sbin/ping6 \
+ sbin/quotacheck \
+ sbin/rcorder \
+ sbin/reboot \
+ sbin/recoverdisk \
+ sbin/resolvconf \
+ sbin/restore \
+ sbin/route \
+ sbin/routed/rtquery \
+ sbin/rtsol \
+ sbin/savecore \
+ sbin/setkey \
+ sbin/shutdown \
+ sbin/spppcontrol \
+ sbin/swapon \
+ sbin/sysctl \
+ sbin/tunefs \
+ sbin/umount \
+ usr.bin/alias \
+ usr.bin/apply \
+ usr.bin/ar \
+ usr.bin/asa \
+ usr.bin/at \
+ usr.bin/atf/atf-config \
+ usr.bin/atf/atf-report \
+ usr.bin/atf/atf-run \
+ usr.bin/atf/atf-version \
+ usr.bin/atm/sscop \
+ usr.bin/awk \
+ usr.bin/banner \
+ usr.bin/basename \
+ usr.bin/bc \
+ usr.bin/biff \
+ usr.bin/bluetooth/bthost \
+ usr.bin/bluetooth/btsockstat \
+ usr.bin/bluetooth/rfcomm_sppd \
+ usr.bin/bmake \
+ usr.bin/brandelf \
+ usr.bin/bsdiff/bsdiff \
+ usr.bin/bsdiff/bspatch \
+ usr.bin/bzip2 \
+ usr.bin/bzip2recover \
+ usr.bin/c89 \
+ usr.bin/c99 \
+ usr.bin/calendar \
+ usr.bin/cap_mkdb \
+ usr.bin/catman \
+ usr.bin/chat \
+ usr.bin/checknr \
+ usr.bin/chkey \
+ usr.bin/chpass \
+ usr.bin/cksum \
+ usr.bin/cmp \
+ usr.bin/col \
+ usr.bin/colcrt \
+ usr.bin/colldef \
+ usr.bin/colrm \
+ usr.bin/column \
+ usr.bin/comm \
+ usr.bin/compile_et \
+ usr.bin/compress \
+ usr.bin/cpio \
+ usr.bin/cpuset \
+ usr.bin/csplit \
+ usr.bin/csup \
+ usr.bin/ctags \
+ usr.bin/ctlstat \
+ usr.bin/cut \
+ usr.bin/dc \
+ usr.bin/dig \
+ usr.bin/dirname \
+ usr.bin/du \
+ usr.bin/ee \
+ usr.bin/elf2aout \
+ usr.bin/elfdump \
+ usr.bin/enigma \
+ usr.bin/env \
+ usr.bin/expand \
+ usr.bin/false \
+ usr.bin/fetch \
+ usr.bin/file \
+ usr.bin/file2c \
+ usr.bin/find \
+ usr.bin/finger \
+ usr.bin/fmt \
+ usr.bin/fold \
+ usr.bin/from \
+ usr.bin/fstat \
+ usr.bin/fsync \
+ usr.bin/ftp \
+ usr.bin/gcore \
+ usr.bin/gencat \
+ usr.bin/getconf \
+ usr.bin/getent \
+ usr.bin/getopt \
+ usr.bin/gprof \
+ usr.bin/grep \
+ usr.bin/gzip \
+ usr.bin/head \
+ usr.bin/hexdump \
+ usr.bin/host \
+ usr.bin/id \
+ usr.bin/indent \
+ usr.bin/ipcrm \
+ usr.bin/ipcs \
+ usr.bin/join \
+ usr.bin/jot \
+ usr.bin/kdump \
+ usr.bin/keylogin \
+ usr.bin/keylogout \
+ usr.bin/killall \
+ usr.bin/ktrace \
+ usr.bin/ktrdump \
+ usr.bin/lam \
+ usr.bin/last \
+ usr.bin/lastcomm \
+ usr.bin/ldd \
+ usr.bin/leave \
+ usr.bin/less \
+ usr.bin/lessecho \
+ usr.bin/lesskey \
+ usr.bin/lex/lib \
+ usr.bin/limits \
+ usr.bin/locale \
+ usr.bin/locate/bigram \
+ usr.bin/locate/code \
+ usr.bin/locate/locate \
+ usr.bin/lock \
+ usr.bin/lockf \
+ usr.bin/logger \
+ usr.bin/login \
+ usr.bin/logins \
+ usr.bin/logname \
+ usr.bin/look \
+ usr.bin/lorder \
+ usr.bin/lsvfs \
+ usr.bin/lzmainfo \
+ usr.bin/m4 \
+ usr.bin/mail \
+ usr.bin/man \
+ usr.bin/mandoc \
+ usr.bin/mesg \
+ usr.bin/minigzip \
+ usr.bin/ministat \
+ usr.bin/mkdep \
+ usr.bin/mkfifo \
+ usr.bin/mklocale \
+ usr.bin/mkstr \
+ usr.bin/mktemp \
+ usr.bin/mkulzma \
+ usr.bin/mkuzip \
+ usr.bin/msgs \
+ usr.bin/mt \
+ usr.bin/nc \
+ usr.bin/ncal \
+ usr.bin/netstat \
+ usr.bin/newgrp \
+ usr.bin/newkey \
+ usr.bin/nfsstat \
+ usr.bin/nice \
+ usr.bin/nl \
+ usr.bin/nohup \
+ usr.bin/nslookup \
+ usr.bin/nsupdate \
+ usr.bin/opieinfo \
+ usr.bin/opiekey \
+ usr.bin/opiepasswd \
+ usr.bin/pagesize \
+ usr.bin/passwd \
+ usr.bin/paste \
+ usr.bin/pathchk \
+ usr.bin/perror \
+ usr.bin/pr \
+ usr.bin/printenv \
+ usr.bin/printf \
+ usr.bin/procstat \
+ usr.bin/quota \
+ usr.bin/rctl \
+ usr.bin/renice \
+ usr.bin/rev \
+ usr.bin/revoke \
+ usr.bin/rlogin \
+ usr.bin/rpcgen \
+ usr.bin/rpcinfo \
+ usr.bin/rs \
+ usr.bin/rsh \
+ usr.bin/rup \
+ usr.bin/ruptime \
+ usr.bin/rusers \
+ usr.bin/rwall \
+ usr.bin/rwho \
+ usr.bin/script \
+ usr.bin/sed \
+ usr.bin/seq \
+ usr.bin/shar \
+ usr.bin/showmount \
+ usr.bin/sockstat \
+ usr.bin/sort \
+ usr.bin/split \
+ usr.bin/ssh-copy-id \
+ usr.bin/stat \
+ usr.bin/stdbuf \
+ usr.bin/su \
+ usr.bin/systat \
+ usr.bin/tabs \
+ usr.bin/tail \
+ usr.bin/talk \
+ usr.bin/tar \
+ usr.bin/tcopy \
+ usr.bin/tee \
+ usr.bin/telnet \
+ usr.bin/tftp \
+ usr.bin/time \
+ usr.bin/timeout \
+ usr.bin/tip/tip \
+ usr.bin/top \
+ usr.bin/touch \
+ usr.bin/tput \
+ usr.bin/tr \
+ usr.bin/true \
+ usr.bin/truncate \
+ usr.bin/truss \
+ usr.bin/tset \
+ usr.bin/tsort \
+ usr.bin/tty \
+ usr.bin/ul \
+ usr.bin/uname \
+ usr.bin/unexpand \
+ usr.bin/unifdef \
+ usr.bin/uniq \
+ usr.bin/units \
+ usr.bin/unvis \
+ usr.bin/unzip \
+ usr.bin/usbhidaction \
+ usr.bin/usbhidctl \
+ usr.bin/users \
+ usr.bin/uudecode \
+ usr.bin/uuencode \
+ usr.bin/vacation \
+ usr.bin/vgrind \
+ usr.bin/vi \
+ usr.bin/vis \
+ usr.bin/vmstat \
+ usr.bin/vtfontcvt \
+ usr.bin/w \
+ usr.bin/wall \
+ usr.bin/wc \
+ usr.bin/what \
+ usr.bin/whereis \
+ usr.bin/which \
+ usr.bin/who \
+ usr.bin/whois \
+ usr.bin/write \
+ usr.bin/xargs \
+ usr.bin/xinstall \
+ usr.bin/xlint/lint1 \
+ usr.bin/xlint/lint2 \
+ usr.bin/xlint/xlint \
+ usr.bin/xlint/llib \
+ usr.bin/xstr \
+ usr.bin/xz \
+ usr.bin/xzdec \
+ usr.bin/yacc \
+ usr.bin/yes \
+ usr.bin/ypcat \
+ usr.bin/ypmatch \
+ usr.bin/ypwhich \
+ usr.sbin/IPXrouted \
+ usr.sbin/ac \
+ usr.sbin/accton \
+ usr.sbin/adduser \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+ usr.sbin/amd/amd \
+ usr.sbin/amd/amq \
+ usr.sbin/amd/doc \
+ usr.sbin/amd/fixmount \
+ usr.sbin/amd/fsinfo \
+ usr.sbin/amd/hlfsd \
+ usr.sbin/amd/mk-amd-map \
+ usr.sbin/amd/pawd \
+ usr.sbin/amd/scripts \
+ usr.sbin/amd/wire-test \
+ usr.sbin/ancontrol \
+ usr.sbin/apm \
+ usr.sbin/arp \
+ usr.sbin/arpaname \
+ usr.sbin/audit \
+ usr.sbin/auditd \
+ usr.sbin/auditreduce \
+ usr.sbin/authpf \
+ usr.sbin/bluetooth/ath3kfw \
+ usr.sbin/bluetooth/bcmfw \
+ usr.sbin/bluetooth/bt3cfw \
+ usr.sbin/bluetooth/bthidcontrol \
+ usr.sbin/bluetooth/bthidd \
+ usr.sbin/bluetooth/btpand \
+ usr.sbin/bluetooth/hccontrol \
+ usr.sbin/bluetooth/hcsecd \
+ usr.sbin/bluetooth/hcseriald \
+ usr.sbin/bluetooth/l2control \
+ usr.sbin/bluetooth/l2ping \
+ usr.sbin/bluetooth/rfcomm_pppd \
+ usr.sbin/bluetooth/sdpcontrol \
+ usr.sbin/bluetooth/sdpd \
+ usr.sbin/bootparamd/bootparamd \
+ usr.sbin/bootparamd/callbootd \
+ usr.sbin/bsdinstall/distextract \
+ usr.sbin/bsdinstall/distfetch \
+ usr.sbin/bsdinstall/partedit \
+ usr.sbin/bsdinstall/scripts \
+ usr.sbin/bsnmpd/gensnmptree \
+ usr.sbin/bsnmpd/bsnmpd \
+ usr.sbin/bsnmpd/modules/snmp_atm \
+ usr.sbin/bsnmpd/modules/snmp_bridge \
+ usr.sbin/bsnmpd/modules/snmp_hostres \
+ usr.sbin/bsnmpd/modules/snmp_lm75 \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+ usr.sbin/bsnmpd/modules/snmp_pf \
+ usr.sbin/bsnmpd/modules/snmp_target \
+ usr.sbin/bsnmpd/modules/snmp_usm \
+ usr.sbin/bsnmpd/modules/snmp_vacm \
+ usr.sbin/bsnmpd/modules/snmp_wlan \
+ usr.sbin/bsnmpd/modules/snmp_netgraph \
+ usr.sbin/bsnmpd/tools/libbsnmptools \
+ usr.sbin/bsnmpd/tools/bsnmptools \
+ usr.sbin/burncd \
+ usr.sbin/cdcontrol \
+ usr.sbin/chkgrp \
+ usr.sbin/chown \
+ usr.sbin/chroot \
+ usr.sbin/ckdist \
+ usr.sbin/clear_locks \
+ usr.sbin/config \
+ usr.sbin/crashinfo \
+ usr.sbin/cron/lib \
+ usr.sbin/cron/cron \
+ usr.sbin/cron/crontab \
+ usr.sbin/crunch/crunchgen \
+ usr.sbin/crunch/crunchide \
+ usr.sbin/ctladm \
+ usr.sbin/ctm/ctm \
+ usr.sbin/ctm/ctm_rmail \
+ usr.sbin/ctm/ctm_smail \
+ usr.sbin/ctm/ctm_dequeue \
+ usr.sbin/daemon \
+ usr.sbin/dconschat \
+ usr.sbin/ddns-confgen \
+ usr.sbin/devinfo \
+ usr.sbin/digictl \
+ usr.sbin/diskinfo \
+ usr.sbin/dnssec-dsfromkey \
+ usr.sbin/dnssec-keyfromlabel \
+ usr.sbin/dnssec-keygen \
+ usr.sbin/dnssec-revoke \
+ usr.sbin/dnssec-settime \
+ usr.sbin/dnssec-signzone \
+ usr.sbin/dumpcis \
+ usr.sbin/editmap \
+ usr.sbin/edquota \
+ usr.sbin/etcupdate \
+ usr.sbin/extattr \
+ usr.sbin/extattrctl \
+ usr.sbin/fdcontrol \
+ usr.sbin/fdformat \
+ usr.sbin/fdread \
+ usr.sbin/fdwrite \
+ usr.sbin/fifolog/lib \
+ usr.sbin/fifolog/fifolog_create \
+ usr.sbin/fifolog/fifolog_writer \
+ usr.sbin/fifolog/fifolog_reader \
+ usr.sbin/flowctl \
+ usr.sbin/freebsd-update \
+ usr.sbin/fwcontrol \
+ usr.sbin/genrandom \
+ usr.sbin/getfmac \
+ usr.sbin/getpmac \
+ usr.sbin/gpioctl \
+ usr.sbin/gssd \
+ usr.sbin/gstat \
+ usr.sbin/i2c \
+ usr.sbin/ifmcstat \
+ usr.sbin/inetd \
+ usr.sbin/iostat \
+ usr.sbin/ip6addrctl \
+ usr.sbin/ipfwpcap \
+ usr.sbin/isc-hmac-fixup \
+ usr.sbin/isfctl \
+ usr.sbin/jail \
+ usr.sbin/jexec \
+ usr.sbin/jls \
+ usr.sbin/kbdcontrol \
+ usr.sbin/kbdmap \
+ usr.sbin/keyserv \
+ usr.sbin/kldxref \
+ usr.sbin/lastlogin \
+ usr.sbin/lmcconfig \
+ usr.sbin/lpr/common_source \
+ usr.sbin/lpr/chkprintcap \
+ usr.sbin/lpr/lp \
+ usr.sbin/lpr/lpc \
+ usr.sbin/lpr/lpd \
+ usr.sbin/lpr/lpq \
+ usr.sbin/lpr/lpr \
+ usr.sbin/lpr/lprm \
+ usr.sbin/lpr/lptest \
+ usr.sbin/lpr/pac \
+ usr.sbin/lpr/filters \
+ usr.sbin/lpr/filters.ru/koi2alt \
+ usr.sbin/lpr/filters.ru/koi2855 \
+ usr.sbin/mailstats \
+ usr.sbin/mailwrapper \
+ usr.sbin/makefs \
+ usr.sbin/makemap \
+ usr.sbin/manctl \
+ usr.sbin/manctl \
+ usr.sbin/memcontrol \
+ usr.sbin/mergemaster \
+ usr.sbin/mfiutil \
+ usr.sbin/mixer \
+ usr.sbin/mld6query \
+ usr.sbin/mlxcontrol \
+ usr.sbin/mountd \
+ usr.sbin/moused \
+ usr.sbin/mptutil \
+ usr.sbin/mtest \
+ usr.sbin/mtree \
+ usr.sbin/named \
+ usr.sbin/named-checkconf \
+ usr.sbin/named-checkzone \
+ usr.sbin/named-journalprint \
+ usr.sbin/ndp \
+ usr.sbin/newsyslog \
+ usr.sbin/nfscbd \
+ usr.sbin/nfsd \
+ usr.sbin/nfsdumpstate \
+ usr.sbin/nfsrevoke \
+ usr.sbin/nfsuserd \
+ usr.sbin/ngctl \
+ usr.sbin/nghook \
+ usr.sbin/nologin \
+ usr.sbin/nscd \
+ usr.sbin/nsec3hash \
+ usr.sbin/ntp/libopts \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libparse \
+ usr.sbin/ntp/ntpd \
+ usr.sbin/ntp/ntpdc \
+ usr.sbin/ntp/ntpq \
+ usr.sbin/ntp/ntpdate \
+ usr.sbin/ntp/ntptime \
+ usr.sbin/ntp/ntp-keygen \
+ usr.sbin/ntp/sntp \
+ usr.sbin/ntp/doc \
+ usr.sbin/pc-sysinstall/backend \
+ usr.sbin/pc-sysinstall/backend-partmanager \
+ usr.sbin/pc-sysinstall/backend-query \
+ usr.sbin/pc-sysinstall/conf \
+ usr.sbin/pc-sysinstall/doc \
+ usr.sbin/pc-sysinstall/examples \
+ usr.sbin/pc-sysinstall/pc-sysinstall \
+ usr.sbin/pciconf \
+ usr.sbin/periodic \
+ usr.sbin/pkg \
+ usr.sbin/pkg_install/lib \
+ usr.sbin/pkg_install/add \
+ usr.sbin/pkg_install/create \
+ usr.sbin/pkg_install/delete \
+ usr.sbin/pkg_install/info \
+ usr.sbin/pkg_install/updating \
+ usr.sbin/pkg_install/version \
+ usr.sbin/pmcannotate \
+ usr.sbin/pmccontrol \
+ usr.sbin/pmcstat \
+ usr.sbin/portsnap/portsnap \
+ usr.sbin/portsnap/make_index \
+ usr.sbin/portsnap/phttpget \
+ usr.sbin/powerd \
+ usr.sbin/ppp \
+ usr.sbin/pppctl \
+ usr.sbin/praliases \
+ usr.sbin/praudit \
+ usr.sbin/procctl \
+ usr.sbin/pstat \
+ usr.sbin/pw \
+ usr.sbin/pwd_mkdb \
+ usr.sbin/quot \
+ usr.sbin/quotaon \
+ usr.sbin/rarpd \
+ usr.sbin/repquota \
+ usr.sbin/rip6query \
+ usr.sbin/rmt \
+ usr.sbin/rndc \
+ usr.sbin/rndc-confgen \
+ usr.sbin/route6d \
+ usr.sbin/rpc.lockd \
+ usr.sbin/rpc.statd \
+ usr.sbin/rpc.umntall \
+ usr.sbin/rpc.yppasswdd \
+ usr.sbin/rpc.ypupdated \
+ usr.sbin/rpc.ypxfrd \
+ usr.sbin/rpcbind \
+ usr.sbin/rrenumd \
+ usr.sbin/rtadvctl \
+ usr.sbin/rtadvd \
+ usr.sbin/rtprio \
+ usr.sbin/rtsold \
+ usr.sbin/rwhod \
+ usr.sbin/sa \
+ usr.sbin/sendmail \
+ usr.sbin/service \
+ usr.sbin/services_mkdb \
+ usr.sbin/setfib \
+ usr.sbin/setfmac \
+ usr.sbin/setpmac \
+ usr.sbin/smbmsg \
+ usr.sbin/snapinfo \
+ usr.sbin/spray \
+ usr.sbin/syslogd \
+ usr.sbin/tcpdchk \
+ usr.sbin/tcpdmatch \
+ usr.sbin/tcpdrop \
+ usr.sbin/tcpdump/tcpdump \
+ usr.sbin/timed/timed \
+ usr.sbin/timed/timedc \
+ usr.sbin/traceroute \
+ usr.sbin/traceroute6 \
+ usr.sbin/trpt \
+ usr.sbin/tzsetup \
+ usr.sbin/uathload \
+ usr.sbin/ugidfw \
+ usr.sbin/uhsoctl \
+ usr.sbin/usbconfig \
+ usr.sbin/usbdump \
+ usr.sbin/utx \
+ usr.sbin/vidcontrol \
+ usr.sbin/vipw \
+ usr.sbin/wake \
+ usr.sbin/watch \
+ usr.sbin/watchdogd \
+ usr.sbin/wlandebug \
+ usr.sbin/wpa/wpa_supplicant \
+ usr.sbin/wpa/wpa_cli \
+ usr.sbin/wpa/wpa_passphrase \
+ usr.sbin/wpa/hostapd \
+ usr.sbin/wpa/hostapd_cli \
+ usr.sbin/wpa/ndis_events \
+ usr.sbin/yp_mkdb \
+ usr.sbin/ypbind \
+ usr.sbin/yppoll \
+ usr.sbin/yppush \
+ usr.sbin/ypserv \
+ usr.sbin/ypset \
+ usr.sbin/zic/zic \
+ usr.sbin/zic/zdump \
+ ${DEP_RELDIR}/cddl \
+ ${DEP_RELDIR}/games \
+ ${DEP_RELDIR}/gnu \
+ ${DEP_RELDIR}/include \
+ ${DEP_RELDIR}/kerberos5 \
+ ${DEP_RELDIR}/libexec \
+ ${DEP_RELDIR}/secure \
+ ${DEP_RELDIR}/share \
+
+DIRDEPS.amd64= \
+ sbin/bsdlabel \
+ sbin/fdisk \
+ sbin/nvmecontrol \
+ usr.sbin/acpi/acpiconf \
+ usr.sbin/acpi/acpidb \
+ usr.sbin/acpi/acpidump \
+ usr.sbin/acpi/iasl \
+ usr.sbin/apm \
+ usr.sbin/asf \
+ usr.sbin/boot0cfg \
+ usr.sbin/btxld \
+ usr.sbin/cpucontrol \
+ usr.sbin/kgmon \
+ usr.sbin/lptcontrol \
+ usr.sbin/mptable \
+ usr.sbin/ndiscvt \
+ usr.sbin/sicontrol \
+ usr.sbin/spkrtest \
+ usr.sbin/sade \
+ usr.sbin/zzz
+
+DIRDEPS.arm= \
+ sbin/bsdlabel \
+ sbin/fdisk \
+ usr.sbin/ofwdump \
+ usr.sbin/kgmon
+
+DIRDEPS.i386= \
+ sbin/bsdlabel \
+ sbin/fdisk \
+ sbin/nvmecontrol \
+ sbin/sconfig \
+ usr.sbin/apm \
+ usr.sbin/apmd \
+ usr.sbin/asf \
+ usr.sbin/btxld \
+ usr.sbin/cpucontrol \
+ usr.sbin/kgmon \
+ usr.sbin/kgzip \
+ usr.sbin/lptcontrol \
+ usr.sbin/mptable \
+ usr.sbin/ndiscvt \
+ usr.sbin/pnpinfo \
+ usr.sbin/sade \
+ usr.sbin/sicontrol \
+ usr.sbin/spkrtest \
+ usr.sbin/zzz \
+ usr.sbin/acpi \
+ usr.sbin/boot0cfg \
+ usr.sbin/wlconfig
+
+DIRDEPS.ia64= \
+ sbin/mca \
+ usr.sbin/acpi \
+ usr.sbin/kgmon \
+ usr.sbin/zzz
+
+DIRDEPS.mips= \
+ sbin/bsdlabel \
+ sbin/fdisk
+
+DIRDEPS.pc98= \
+ sbin/bsdlabel \
+ sbin/fdisk_pc98 \
+ sbin/sconfig
+
+DIRDEPS.sparc64= \
+ sbin/bsdlabel \
+ sbin/sunlabel \
+ usr.sbin/eeprom \
+ usr.sbin/ofwdump \
+ usr.sbin/sade
+
+DIRDEPS.powerpc= \
+ usr.sbin/nvram \
+ usr.sbin/ofwdump
+
+DIRDEPS+= ${DIRDEPS.${MACHINE}:U}
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/Makefile.inc b/targets/pseudo/userland/Makefile.inc
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/Makefile.inc
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/cddl/Makefile b/targets/pseudo/userland/cddl/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/cddl/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/cddl/Makefile.depend b/targets/pseudo/userland/cddl/Makefile.depend
new file mode 100644
index 0000000..a4cbff7
--- /dev/null
+++ b/targets/pseudo/userland/cddl/Makefile.depend
@@ -0,0 +1,50 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+.if !defined(MK_CTF)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+
+DIRDEPS = \
+ cddl/lib/drti \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/usr.bin/sgsmsg \
+
+
+DIRDEPS.CTF = \
+ cddl/lib/libctf \
+ cddl/usr.bin/ctfconvert \
+ cddl/usr.bin/ctfdump \
+ cddl/usr.bin/ctfmerge \
+ cddl/lib/libdtrace \
+ cddl/usr.sbin/dtrace \
+ cddl/usr.sbin/dtruss \
+
+
+DIRDEPS.ZFS = \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ cddl/sbin/zfs \
+ cddl/sbin/zpool \
+ cddl/usr.bin/zinject \
+ cddl/usr.bin/zstreamdump \
+ cddl/usr.bin/ztest \
+ cddl/usr.sbin/lockstat \
+ cddl/usr.sbin/zdb \
+ cddl/usr.sbin/zhack \
+
+
+.for O in CTF ZFS
+.if ${MK_$O} == "yes"
+DIRDEPS+= ${DIRDEPS.$O}
+.endif
+.endfor
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/games/Makefile b/targets/pseudo/userland/games/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/games/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/games/Makefile.depend b/targets/pseudo/userland/games/Makefile.depend
new file mode 100644
index 0000000..7f5cfa2
--- /dev/null
+++ b/targets/pseudo/userland/games/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ games/bcd \
+ games/caesar \
+ games/factor \
+ games/fortune/fortune \
+ games/fortune/strfile \
+ games/fortune/datfiles \
+ games/fortune/unstr \
+ games/grdc \
+ games/morse \
+ games/number \
+ games/pom \
+ games/ppt \
+ games/primes \
+ games/random \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/gnu/Makefile b/targets/pseudo/userland/gnu/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/gnu/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/gnu/Makefile.depend b/targets/pseudo/userland/gnu/Makefile.depend
new file mode 100644
index 0000000..fb5f711
--- /dev/null
+++ b/targets/pseudo/userland/gnu/Makefile.depend
@@ -0,0 +1,110 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ gnu/lib/libgcov \
+ gnu/lib/libgomp \
+ gnu/lib/libreadline/history/doc \
+ gnu/lib/libreadline/readline/doc \
+ gnu/lib/libregex/doc \
+ gnu/lib/libssp/libssp_nonshared \
+ gnu/lib/libstdc++ \
+ gnu/lib/libsupc++ \
+ gnu/usr.bin/binutils/ar \
+ gnu/usr.bin/binutils/as \
+ gnu/usr.bin/binutils/doc \
+ gnu/usr.bin/binutils/ld \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/binutils/objcopy \
+ gnu/usr.bin/binutils/objdump \
+ gnu/usr.bin/binutils/ranlib \
+ gnu/usr.bin/dialog \
+ gnu/usr.bin/diff/doc \
+ gnu/usr.bin/diff3 \
+ gnu/usr.bin/gdb/doc \
+ gnu/usr.bin/gdb/gdb \
+ gnu/usr.bin/gdb/gdbserver \
+ gnu/usr.bin/gdb/gdbtui \
+ gnu/usr.bin/gdb/kgdb \
+ gnu/usr.bin/gdb/libgdb \
+ gnu/usr.bin/gperf/doc \
+ gnu/usr.bin/grep/doc \
+ gnu/usr.bin/groff/contrib/mm \
+ gnu/usr.bin/groff/doc \
+ gnu/usr.bin/groff/font/devX100 \
+ gnu/usr.bin/groff/font/devX100-12 \
+ gnu/usr.bin/groff/font/devX75 \
+ gnu/usr.bin/groff/font/devX75-12 \
+ gnu/usr.bin/groff/font/devascii \
+ gnu/usr.bin/groff/font/devcp1047 \
+ gnu/usr.bin/groff/font/devdvi \
+ gnu/usr.bin/groff/font/devhtml \
+ gnu/usr.bin/groff/font/devkoi8-r \
+ gnu/usr.bin/groff/font/devlatin1 \
+ gnu/usr.bin/groff/font/devlbp \
+ gnu/usr.bin/groff/font/devlj4 \
+ gnu/usr.bin/groff/font/devps \
+ gnu/usr.bin/groff/font/devutf8 \
+ gnu/usr.bin/groff/man \
+ gnu/usr.bin/groff/src/devices/grodvi \
+ gnu/usr.bin/groff/src/devices/grohtml \
+ gnu/usr.bin/groff/src/devices/grolbp \
+ gnu/usr.bin/groff/src/devices/grolj4 \
+ gnu/usr.bin/groff/src/devices/grops \
+ gnu/usr.bin/groff/src/devices/grotty \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ gnu/usr.bin/groff/src/preproc/eqn \
+ gnu/usr.bin/groff/src/preproc/grn \
+ gnu/usr.bin/groff/src/preproc/html \
+ gnu/usr.bin/groff/src/preproc/pic \
+ gnu/usr.bin/groff/src/preproc/refer \
+ gnu/usr.bin/groff/src/preproc/soelim \
+ gnu/usr.bin/groff/src/preproc/tbl \
+ gnu/usr.bin/groff/src/roff/groff \
+ gnu/usr.bin/groff/src/roff/grog \
+ gnu/usr.bin/groff/src/roff/nroff \
+ gnu/usr.bin/groff/src/roff/psroff \
+ gnu/usr.bin/groff/src/roff/troff \
+ gnu/usr.bin/groff/src/utils/addftinfo \
+ gnu/usr.bin/groff/src/utils/afmtodit \
+ gnu/usr.bin/groff/src/utils/hpftodit \
+ gnu/usr.bin/groff/src/utils/indxbib \
+ gnu/usr.bin/groff/src/utils/lkbib \
+ gnu/usr.bin/groff/src/utils/lookbib \
+ gnu/usr.bin/groff/src/utils/pfbtops \
+ gnu/usr.bin/groff/src/utils/tfmtodit \
+ gnu/usr.bin/groff/tmac \
+ gnu/usr.bin/rcs/ci \
+ gnu/usr.bin/rcs/co \
+ gnu/usr.bin/rcs/ident \
+ gnu/usr.bin/rcs/lib \
+ gnu/usr.bin/rcs/merge \
+ gnu/usr.bin/rcs/rcs \
+ gnu/usr.bin/rcs/rcsclean \
+ gnu/usr.bin/rcs/rcsdiff \
+ gnu/usr.bin/rcs/rcsfreeze \
+ gnu/usr.bin/rcs/rcsmerge \
+ gnu/usr.bin/rcs/rlog \
+ gnu/usr.bin/sdiff \
+ gnu/usr.bin/send-pr/doc \
+ gnu/usr.bin/texinfo/doc \
+ gnu/usr.bin/texinfo/info \
+ gnu/usr.bin/texinfo/infokey \
+ gnu/usr.bin/texinfo/install-info \
+ gnu/usr.bin/texinfo/libtxi \
+ gnu/usr.bin/texinfo/makeinfo \
+ gnu/usr.bin/texinfo/texindex \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/include/Makefile b/targets/pseudo/userland/include/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/include/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/include/Makefile.depend b/targets/pseudo/userland/include/Makefile.depend
new file mode 100644
index 0000000..e8e6e09
--- /dev/null
+++ b/targets/pseudo/userland/include/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include/arpa \
+ include/gssapi \
+ include/protocols \
+ include/rpcsvc \
+ include/rpc \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/kerberos5/Makefile b/targets/pseudo/userland/kerberos5/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/kerberos5/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/kerberos5/Makefile.depend b/targets/pseudo/userland/kerberos5/Makefile.depend
new file mode 100644
index 0000000..fe1a488
--- /dev/null
+++ b/targets/pseudo/userland/kerberos5/Makefile.depend
@@ -0,0 +1,61 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ kerberos5/doc \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libgssapi_krb5 \
+ kerberos5/lib/libgssapi_ntlm \
+ kerberos5/lib/libgssapi_spnego \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ kerberos5/libexec/digest-service \
+ kerberos5/libexec/hprop \
+ kerberos5/libexec/hpropd \
+ kerberos5/libexec/ipropd-master \
+ kerberos5/libexec/ipropd-slave \
+ kerberos5/libexec/kadmind \
+ kerberos5/libexec/kcm \
+ kerberos5/libexec/kdc \
+ kerberos5/libexec/kdigest \
+ kerberos5/libexec/kfd \
+ kerberos5/libexec/kimpersonate \
+ kerberos5/libexec/kpasswdd \
+ kerberos5/tools/asn1_compile \
+ kerberos5/tools/make-roken \
+ kerberos5/tools/slc \
+ kerberos5/usr.bin/hxtool \
+ kerberos5/usr.bin/kadmin \
+ kerberos5/usr.bin/kcc \
+ kerberos5/usr.bin/kdestroy \
+ kerberos5/usr.bin/kf \
+ kerberos5/usr.bin/kgetcred \
+ kerberos5/usr.bin/kinit \
+ kerberos5/usr.bin/kpasswd \
+ kerberos5/usr.bin/krb5-config \
+ kerberos5/usr.bin/ksu \
+ kerberos5/usr.bin/string2key \
+ kerberos5/usr.bin/verify_krb5_conf \
+ kerberos5/usr.sbin/iprop-log \
+ kerberos5/usr.sbin/kstash \
+ kerberos5/usr.sbin/ktutil \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/lib/Makefile b/targets/pseudo/userland/lib/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/lib/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/lib/Makefile.depend b/targets/pseudo/userland/lib/Makefile.depend
new file mode 100644
index 0000000..027f820
--- /dev/null
+++ b/targets/pseudo/userland/lib/Makefile.depend
@@ -0,0 +1,160 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libalias/libalias \
+ lib/libalias/modules/cuseeme \
+ lib/libalias/modules/dummy \
+ lib/libalias/modules/ftp \
+ lib/libalias/modules/irc \
+ lib/libalias/modules/nbt \
+ lib/libalias/modules/pptp \
+ lib/libalias/modules/skinny \
+ lib/libalias/modules/smedia \
+ lib/libarchive \
+ lib/libauditd \
+ lib/libbegemot \
+ lib/libblocksruntime \
+ lib/libbluetooth \
+ lib/libbsm \
+ lib/libbsnmp/libbsnmp \
+ lib/libbz2 \
+ lib/libc \
+ lib/libc++ \
+ lib/libcalendar \
+ lib/libcam \
+ lib/libcom_err/doc \
+ lib/libcompat \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libcuse \
+ lib/libcxxrt \
+ lib/libdevinfo \
+ lib/libdevstat \
+ lib/libdwarf \
+ lib/libedit/edit/readline \
+ lib/libelf \
+ lib/libexecinfo \
+ lib/libexpat \
+ lib/libfetch \
+ lib/libgeom \
+ lib/libgpib \
+ lib/libgssapi \
+ lib/libiconv_modules/BIG5 \
+ lib/libiconv_modules/DECHanyu \
+ lib/libiconv_modules/EUC \
+ lib/libiconv_modules/EUCTW \
+ lib/libiconv_modules/GBK2K \
+ lib/libiconv_modules/HZ \
+ lib/libiconv_modules/ISO2022 \
+ lib/libiconv_modules/JOHAB \
+ lib/libiconv_modules/MSKanji \
+ lib/libiconv_modules/UES \
+ lib/libiconv_modules/UTF1632 \
+ lib/libiconv_modules/UTF7 \
+ lib/libiconv_modules/UTF8 \
+ lib/libiconv_modules/VIQR \
+ lib/libiconv_modules/ZW \
+ lib/libiconv_modules/iconv_none \
+ lib/libiconv_modules/iconv_std \
+ lib/libiconv_modules/mapper_646 \
+ lib/libiconv_modules/mapper_none \
+ lib/libiconv_modules/mapper_parallel \
+ lib/libiconv_modules/mapper_serial \
+ lib/libiconv_modules/mapper_std \
+ lib/libiconv_modules/mapper_zone \
+ lib/libipsec \
+ lib/libipx \
+ lib/libjail \
+ lib/libkiconv \
+ lib/libkvm \
+ lib/libldns \
+ lib/liblzma \
+ lib/libmagic \
+ lib/libmandoc \
+ lib/libmd \
+ lib/libmemstat \
+ lib/libmilter \
+ lib/libmp \
+ lib/libnetgraph \
+ lib/libngatm \
+ lib/libopie \
+ lib/libpam/libpam \
+ lib/libpam/modules/pam_chroot \
+ lib/libpam/modules/pam_deny \
+ lib/libpam/modules/pam_echo \
+ lib/libpam/modules/pam_exec \
+ lib/libpam/modules/pam_ftpusers \
+ lib/libpam/modules/pam_group \
+ lib/libpam/modules/pam_guest \
+ lib/libpam/modules/pam_krb5 \
+ lib/libpam/modules/pam_ksu \
+ lib/libpam/modules/pam_lastlog \
+ lib/libpam/modules/pam_login_access \
+ lib/libpam/modules/pam_nologin \
+ lib/libpam/modules/pam_opie \
+ lib/libpam/modules/pam_opieaccess \
+ lib/libpam/modules/pam_passwdqc \
+ lib/libpam/modules/pam_permit \
+ lib/libpam/modules/pam_radius \
+ lib/libpam/modules/pam_rhosts \
+ lib/libpam/modules/pam_rootok \
+ lib/libpam/modules/pam_securetty \
+ lib/libpam/modules/pam_self \
+ lib/libpam/modules/pam_ssh \
+ lib/libpam/modules/pam_tacplus \
+ lib/libpam/modules/pam_unix \
+ lib/libpcap \
+ lib/libpmc \
+ lib/libproc \
+ lib/libprocstat \
+ lib/libradius \
+ lib/librpcsec_gss \
+ lib/librpcsvc \
+ lib/librt \
+ lib/librtld_db \
+ lib/libsbuf \
+ lib/libsdp \
+ lib/libsm \
+ lib/libsmb \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libstand \
+ lib/libstdbuf \
+ lib/libstdthreads \
+ lib/libtacplus \
+ lib/libtelnet \
+ lib/libthr \
+ lib/libthread_db \
+ lib/libufs \
+ lib/libugidfw \
+ lib/libulog \
+ lib/libunbound \
+ lib/libusb \
+ lib/libusbhid \
+ lib/libutil \
+ lib/libvgl \
+ lib/libvmmapi \
+ lib/libwrap \
+ lib/liby \
+ lib/libyaml \
+ lib/libypclnt \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/form \
+ lib/ncurses/formw \
+ lib/ncurses/menu \
+ lib/ncurses/menuw \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ lib/ncurses/panel \
+ lib/ncurses/panelw \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/libexec/Makefile b/targets/pseudo/userland/libexec/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/libexec/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/libexec/Makefile.depend b/targets/pseudo/userland/libexec/Makefile.depend
new file mode 100644
index 0000000..a7c9ee4
--- /dev/null
+++ b/targets/pseudo/userland/libexec/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ libexec/atf/atf-check \
+ libexec/atf/atf-sh \
+ libexec/atrun \
+ libexec/bootpd/bootpgw \
+ libexec/bootpd/tools/bootpef \
+ libexec/bootpd/tools/bootptest \
+ libexec/comsat \
+ libexec/fingerd \
+ libexec/ftpd \
+ libexec/getty \
+ libexec/mail.local \
+ libexec/mknetid \
+ libexec/pppoed \
+ libexec/rbootd \
+ libexec/revnetgroup \
+ libexec/rlogind \
+ libexec/rpc.rquotad \
+ libexec/rpc.rstatd \
+ libexec/rpc.rusersd \
+ libexec/rpc.rwalld \
+ libexec/rpc.sprayd \
+ libexec/rshd \
+ libexec/rtld-elf \
+ libexec/save-entropy \
+ libexec/smrsh \
+ libexec/talkd \
+ libexec/tcpd \
+ libexec/telnetd \
+ libexec/tftp-proxy \
+ libexec/tftpd \
+ libexec/ulog-helper \
+ libexec/ypxfr \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/misc/Makefile b/targets/pseudo/userland/misc/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/misc/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/misc/Makefile.depend b/targets/pseudo/userland/misc/Makefile.depend
new file mode 100644
index 0000000..efc3bb7
--- /dev/null
+++ b/targets/pseudo/userland/misc/Makefile.depend
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ rescue/librescue \
+ rescue/rescue \
+ sys/boot/ficl \
+ etc/sendmail \
+
+
+
+DIRDEPS.x86sys= \
+ sys/boot/i386/mbr \
+ sys/boot/i386/pmbr \
+ sys/boot/i386/boot0 \
+ sys/boot/i386/boot0sio \
+ sys/boot/i386/btx/btx \
+ sys/boot/i386/btx/btxldr \
+ sys/boot/i386/btx/lib \
+ sys/boot/i386/boot2 \
+ sys/boot/i386/cdboot \
+ sys/boot/i386/gptboot \
+ sys/boot/i386/kgzldr \
+ sys/boot/i386/libi386 \
+ sys/boot/i386/libfirewire \
+ sys/boot/i386/loader \
+ sys/boot/i386/pxeldr \
+ sys/boot/i386/zfsboot \
+ sys/boot/i386/gptzfsboot \
+ sys/boot/i386/zfsloader \
+
+
+DIRDEPS.amd64= \
+ ${DIRDEPS.x86sys} \
+ sys/boot/efi/libefi \
+ sys/boot/zfs \
+ sys/boot/userboot/ficl \
+ sys/boot/userboot/libstand \
+ sys/boot/userboot/test \
+ sys/boot/userboot/userboot \
+
+DIRDEPS.arm= sys/boot/fdt sys/boot/uboot
+DIRDEPS.i386= ${DIRDEPS.x86sys} sys/boot/efi/libefi sys/boot/zfs
+DIRDEPS.ia64= sys/boot/efi/libefi sys/boot/zfs
+DIRDEPS.powerpc= sys/boot/fdt sys/boot/ofw sys/boot/uboot
+DIRDEPS.sparc64= sys/boot/ofw sys/boot/zfs
+
+DIRDEPS+= ${DIRDEPS.${MACHINE}:U}
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/secure/Makefile b/targets/pseudo/userland/secure/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/secure/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/secure/Makefile.depend b/targets/pseudo/userland/secure/Makefile.depend
new file mode 100644
index 0000000..ab046f0
--- /dev/null
+++ b/targets/pseudo/userland/secure/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ secure/lib/libcrypto \
+ secure/lib/libcrypto/engines/lib4758cca \
+ secure/lib/libcrypto/engines/libaep \
+ secure/lib/libcrypto/engines/libatalla \
+ secure/lib/libcrypto/engines/libchil \
+ secure/lib/libcrypto/engines/libcswift \
+ secure/lib/libcrypto/engines/libgost \
+ secure/lib/libcrypto/engines/libnuron \
+ secure/lib/libcrypto/engines/libsureware \
+ secure/lib/libcrypto/engines/libubsec \
+ secure/lib/libssh \
+ secure/lib/libssl \
+ secure/libexec/sftp-server \
+ secure/libexec/ssh-keysign \
+ secure/libexec/ssh-pkcs11-helper \
+ secure/usr.bin/bdes \
+ secure/usr.bin/openssl \
+ secure/usr.bin/scp \
+ secure/usr.bin/sftp \
+ secure/usr.bin/ssh \
+ secure/usr.bin/ssh-add \
+ secure/usr.bin/ssh-agent \
+ secure/usr.bin/ssh-keygen \
+ secure/usr.bin/ssh-keyscan \
+ secure/usr.sbin/sshd \
+
+
+.include <dirdeps.mk>
diff --git a/targets/pseudo/userland/share/Makefile b/targets/pseudo/userland/share/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/targets/pseudo/userland/share/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/targets/pseudo/userland/share/Makefile.depend b/targets/pseudo/userland/share/Makefile.depend
new file mode 100644
index 0000000..058dfd4
--- /dev/null
+++ b/targets/pseudo/userland/share/Makefile.depend
@@ -0,0 +1,155 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ share/atf \
+ share/colldef \
+ share/dict \
+ share/doc/IPv6 \
+ share/doc/atf \
+ share/doc/legal/intel_ipw \
+ share/doc/legal/intel_iwi \
+ share/doc/legal/intel_iwn \
+ share/doc/legal/intel_wpi \
+ share/doc/llvm/clang \
+ share/doc/papers/beyond4.3 \
+ share/doc/papers/bufbio \
+ share/doc/papers/contents \
+ share/doc/papers/devfs \
+ share/doc/papers/diskperf \
+ share/doc/papers/fsinterface \
+ share/doc/papers/hwpmc \
+ share/doc/papers/jail \
+ share/doc/papers/kernmalloc \
+ share/doc/papers/kerntune \
+ share/doc/papers/malloc \
+ share/doc/papers/newvm \
+ share/doc/papers/relengr \
+ share/doc/papers/sysperf \
+ share/doc/papers/timecounter \
+ share/doc/psd/01.cacm \
+ share/doc/psd/02.implement \
+ share/doc/psd/03.iosys \
+ share/doc/psd/04.uprog \
+ share/doc/psd/05.sysman \
+ share/doc/psd/06.Clang \
+ share/doc/psd/12.make \
+ share/doc/psd/13.rcs/rcs \
+ share/doc/psd/13.rcs/rcs_func \
+ share/doc/psd/15.yacc \
+ share/doc/psd/16.lex \
+ share/doc/psd/17.m4 \
+ share/doc/psd/18.gprof \
+ share/doc/psd/20.ipctut \
+ share/doc/psd/21.ipc \
+ share/doc/psd/22.rpcgen \
+ share/doc/psd/23.rpc \
+ share/doc/psd/24.xdr \
+ share/doc/psd/25.xdrrfc \
+ share/doc/psd/26.rpcrfc \
+ share/doc/psd/27.nfsrpc \
+ share/doc/psd/contents \
+ share/doc/psd/title \
+ share/doc/smm/01.setup \
+ share/doc/smm/02.config \
+ share/doc/smm/03.fsck \
+ share/doc/smm/04.quotas \
+ share/doc/smm/05.fastfs \
+ share/doc/smm/06.nfs \
+ share/doc/smm/07.lpd \
+ share/doc/smm/08.sendmailop \
+ share/doc/smm/11.timedop \
+ share/doc/smm/12.timed \
+ share/doc/smm/18.net \
+ share/doc/smm/contents \
+ share/doc/smm/title \
+ share/doc/usd/04.csh \
+ share/doc/usd/05.dc \
+ share/doc/usd/06.bc \
+ share/doc/usd/07.mail \
+ share/doc/usd/10.exref/exref \
+ share/doc/usd/10.exref/summary \
+ share/doc/usd/11.vitut \
+ share/doc/usd/12.vi/summary \
+ share/doc/usd/12.vi/vi \
+ share/doc/usd/12.vi/viapwh \
+ share/doc/usd/13.viref \
+ share/doc/usd/18.msdiffs \
+ share/doc/usd/19.memacros \
+ share/doc/usd/20.meref \
+ share/doc/usd/21.troff \
+ share/doc/usd/22.trofftut \
+ share/doc/usd/contents \
+ share/doc/usd/title \
+ share/dtrace/toolkit \
+ share/examples/atf \
+ share/examples/ipfilter \
+ share/examples/pf \
+ share/i18n/csmapper \
+ share/i18n/csmapper/APPLE \
+ share/i18n/csmapper/AST \
+ share/i18n/csmapper/BIG5 \
+ share/i18n/csmapper/CNS \
+ share/i18n/csmapper/CP \
+ share/i18n/csmapper/EBCDIC \
+ share/i18n/csmapper/GB \
+ share/i18n/csmapper/GEORGIAN \
+ share/i18n/csmapper/ISO-8859 \
+ share/i18n/csmapper/ISO646 \
+ share/i18n/csmapper/JIS \
+ share/i18n/csmapper/KAZAKH \
+ share/i18n/csmapper/KOI \
+ share/i18n/csmapper/KS \
+ share/i18n/csmapper/MISC \
+ share/i18n/csmapper/TCVN \
+ share/i18n/esdb \
+ share/i18n/esdb/APPLE \
+ share/i18n/esdb/AST \
+ share/i18n/esdb/BIG5 \
+ share/i18n/esdb/CP \
+ share/i18n/esdb/DEC \
+ share/i18n/esdb/EBCDIC \
+ share/i18n/esdb/EUC \
+ share/i18n/esdb/GB \
+ share/i18n/esdb/GEORGIAN \
+ share/i18n/esdb/ISO-2022 \
+ share/i18n/esdb/ISO-8859 \
+ share/i18n/esdb/ISO646 \
+ share/i18n/esdb/KAZAKH \
+ share/i18n/esdb/KOI \
+ share/i18n/esdb/MISC \
+ share/i18n/esdb/TCVN \
+ share/i18n/esdb/UTF \
+ share/info \
+ share/man/man1 \
+ share/man/man3 \
+ share/man/man4 \
+ share/man/man5 \
+ share/man/man6 \
+ share/man/man7 \
+ share/man/man8 \
+ share/man/man9 \
+ share/me \
+ share/misc \
+ share/mklocale \
+ share/monetdef \
+ share/msgdef \
+ share/numericdef \
+ share/sendmail \
+ share/skel \
+ share/snmp/mibs \
+ share/syscons/fonts \
+ share/syscons/keymaps \
+ share/syscons/scrnmaps \
+ share/tabset \
+ share/termcap \
+ share/timedef \
+ share/xml/atf \
+ share/xsl/atf \
+ share/zoneinfo \
+
+
+.include <dirdeps.mk>
diff --git a/tests/sys/pjdfstest/pjdfstest/Makefile b/tests/sys/pjdfstest/pjdfstest/Makefile
index c0e82a4..29bee82 100644
--- a/tests/sys/pjdfstest/pjdfstest/Makefile
+++ b/tests/sys/pjdfstest/pjdfstest/Makefile
@@ -8,7 +8,7 @@ BINDIR= ${TESTSBASE}/sys/pjdfstest
PROG= pjdfstest
MAN=
-CFLAGS= -D__OS_FreeBSD__ -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS
+CFLAGS+= -D__OS_FreeBSD__ -DHAS_LCHMOD -DHAS_CHFLAGS -DHAS_FCHFLAGS
CFLAGS+= -DHAS_CHFLAGSAT -DHAS_LCHFLAGS -DHAS_FREEBSD_ACL -DHAS_BINDAT
CFLAGS+= -DHAS_CONNECTAT
diff --git a/tools/build/Makefile.depend b/tools/build/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/tools/build/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/build/mk/Makefile.boot b/tools/build/mk/Makefile.boot
index 0707ae2..b75809b 100644
--- a/tools/build/mk/Makefile.boot
+++ b/tools/build/mk/Makefile.boot
@@ -4,3 +4,6 @@ CFLAGS+= -I${WORLDTMP}/legacy/usr/include
DPADD+= ${WORLDTMP}/legacy/usr/lib/libegacy.a
LDADD+= -legacy
LDFLAGS+= -L${WORLDTMP}/legacy/usr/lib
+
+# we do not want to capture dependencies refering to the above
+UPDATE_DEPENDFILE= no
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 3db7213..357c429 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -410,6 +410,21 @@ OLD_FILES+=usr/share/man/man1/bsdcpio.1.gz
OLD_FILES+=usr/share/man/man1/cpio.1.gz
.endif
+.if ${MK_BSD_GREP} == no
+OLD_FILES+=usr/bin/lzegrep
+OLD_FILES+=usr/bin/lzfgrep
+OLD_FILES+=usr/bin/lzgrep
+OLD_FILES+=usr/bin/xzegrep
+OLD_FILES+=usr/bin/xzfgrep
+OLD_FILES+=usr/bin/xzgrep
+OLD_FILES+=usr/share/man/man1/lzegrep.1.gz
+OLD_FILES+=usr/share/man/man1/lzfgrep.1.gz
+OLD_FILES+=usr/share/man/man1/lzgrep.1.gz
+OLD_FILES+=usr/share/man/man1/xzegrep.1.gz
+OLD_FILES+=usr/share/man/man1/xzfgrep.1.gz
+OLD_FILES+=usr/share/man/man1/xzgrep.1.gz
+.endif
+
.if ${MK_BSDINSTALL} == no
OLD_FILES+=usr/libexec/bsdinstall/adduser
OLD_FILES+=usr/libexec/bsdinstall/auto
@@ -1766,6 +1781,11 @@ OLD_FILES+=usr/lib/libgomp.a
OLD_FILES+=usr/lib/libgomp.so
OLD_LIBS+=usr/lib/libgomp.so.1
OLD_FILES+=usr/lib/libgomp_p.a
+OLD_FILES+=usr/lib32/libgcov.a
+OLD_FILES+=usr/lib32/libgomp.a
+OLD_FILES+=usr/lib32/libgomp.so
+OLD_LIBS+=usr/lib32/libgomp.so.1
+OLD_FILES+=usr/lib32/libgomp_p.a
OLD_FILES+=usr/libexec/cc1
OLD_FILES+=usr/libexec/cc1plus
OLD_FILES+=usr/share/info/cpp.info.gz
@@ -5115,9 +5135,7 @@ OLD_FILES+=usr/share/misc/mail.tildehelp
.if ${MK_MAILWRAPPER} == no
OLD_FILES+=etc/mail/mailer.conf
-.if ${MK_SENDMAIL} == no
OLD_FILES+=usr/sbin/mailwrapper
-.endif
OLD_FILES+=usr/share/man/man8/mailwrapper.8.gz
.endif
@@ -6348,9 +6366,7 @@ OLD_FILES+=etc/periodic/daily/150.clean-hoststat
OLD_FILES+=etc/periodic/daily/440.status-mailq
OLD_FILES+=etc/periodic/daily/460.status-mail-rejects
OLD_FILES+=etc/periodic/daily/500.queuerun
-.if ${MK_MAILWRAPPER} == no
OLD_FILES+=bin/rmail
-.endif
OLD_FILES+=usr/bin/vacation
OLD_FILES+=usr/include/libmilter/mfapi.h
OLD_FILES+=usr/include/libmilter/mfdef.h
diff --git a/tools/bus_space/C/Makefile b/tools/bus_space/C/Makefile
index cb4d43f..5fd64c7 100644
--- a/tools/bus_space/C/Makefile
+++ b/tools/bus_space/C/Makefile
@@ -1,9 +1,9 @@
# $FreeBSD$
-LIB= bus_space
+LIB= bus
SHLIB_MAJOR= 0
SRCS= lang.c
-INCS= libbus_space.h
+INCS= libbus.h
CFLAGS+= -I${.CURDIR}/..
diff --git a/tools/bus_space/C/lang.c b/tools/bus_space/C/lang.c
index 9d3c7fb..345957e 100644
--- a/tools/bus_space/C/lang.c
+++ b/tools/bus_space/C/lang.c
@@ -30,12 +30,12 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <errno.h>
-#include "bus_space.h"
+#include "bus.h"
#include "busdma.h"
-#include "libbus_space.h"
+#include "libbus.h"
int16_t
-bus_space_read_1(int rid, long ofs)
+bus_read_1(int rid, long ofs)
{
uint8_t val;
@@ -43,7 +43,7 @@ bus_space_read_1(int rid, long ofs)
}
int32_t
-bus_space_read_2(int rid, long ofs)
+bus_read_2(int rid, long ofs)
{
uint16_t val;
@@ -51,7 +51,7 @@ bus_space_read_2(int rid, long ofs)
}
int64_t
-bus_space_read_4(int rid, long ofs)
+bus_read_4(int rid, long ofs)
{
uint32_t val;
@@ -59,42 +59,42 @@ bus_space_read_4(int rid, long ofs)
}
int
-bus_space_write_1(int rid, long ofs, uint8_t val)
+bus_write_1(int rid, long ofs, uint8_t val)
{
return ((!bs_write(rid, ofs, &val, sizeof(val))) ? errno : 0);
}
int
-bus_space_write_2(int rid, long ofs, uint16_t val)
+bus_write_2(int rid, long ofs, uint16_t val)
{
return ((!bs_write(rid, ofs, &val, sizeof(val))) ? errno : 0);
}
int
-bus_space_write_4(int rid, long ofs, uint32_t val)
+bus_write_4(int rid, long ofs, uint32_t val)
{
return ((!bs_write(rid, ofs, &val, sizeof(val))) ? errno : 0);
}
int
-bus_space_map(const char *dev)
+bus_map(const char *dev)
{
return (bs_map(dev));
}
int
-bus_space_unmap(int rid)
+bus_unmap(int rid)
{
return ((!bs_unmap(rid)) ? errno : 0);
}
int
-bus_space_subregion(int rid, long ofs, long sz)
+bus_subregion(int rid, long ofs, long sz)
{
return (bs_subregion(rid, ofs, sz));
@@ -155,3 +155,40 @@ busdma_mem_free(busdma_md_t md)
return (bd_mem_free(md));
}
+
+busdma_seg_t
+busdma_md_first_seg(busdma_md_t md, int space)
+{
+ busdma_seg_t seg;
+
+ seg = bd_md_first_seg(md, space);
+ return (seg);
+}
+
+busdma_seg_t
+busdma_md_next_seg(busdma_md_t md, busdma_seg_t seg)
+{
+
+ seg = bd_md_next_seg(md, seg);
+ return (seg);
+}
+
+bus_addr_t
+busdma_seg_get_addr(busdma_seg_t seg)
+{
+ u_long addr;
+ int error;
+
+ error = bd_seg_get_addr(seg, &addr);
+ return ((error) ? ~0UL : addr);
+}
+
+bus_size_t
+busdma_seg_get_size(busdma_seg_t seg)
+{
+ u_long size;
+ int error;
+
+ error = bd_seg_get_size(seg, &size);
+ return ((error) ? ~0UL : size);
+}
diff --git a/tools/bus_space/C/libbus_space.h b/tools/bus_space/C/libbus.h
index 5522238..76ab402 100644
--- a/tools/bus_space/C/libbus_space.h
+++ b/tools/bus_space/C/libbus.h
@@ -29,20 +29,21 @@
#ifndef _LIBBUS_SPACE_H_
#define _LIBBUS_SPACE_H_
-int bus_space_map(const char *dev);
-int16_t bus_space_read_1(int rid, long ofs);
-int32_t bus_space_read_2(int rid, long ofs);
-int64_t bus_space_read_4(int rid, long ofs);
-int bus_space_subregion(int rid, long ofs, long sz);
-int bus_space_unmap(int rid);
-int bus_space_write_1(int rid, long ofs, uint8_t val);
-int bus_space_write_2(int rid, long ofs, uint16_t val);
-int bus_space_write_4(int rid, long ofs, uint32_t val);
+int bus_map(const char *dev);
+int16_t bus_read_1(int rid, long ofs);
+int32_t bus_read_2(int rid, long ofs);
+int64_t bus_read_4(int rid, long ofs);
+int bus_subregion(int rid, long ofs, long sz);
+int bus_unmap(int rid);
+int bus_write_1(int rid, long ofs, uint8_t val);
+int bus_write_2(int rid, long ofs, uint16_t val);
+int bus_write_4(int rid, long ofs, uint32_t val);
typedef unsigned long bus_addr_t;
typedef unsigned long bus_size_t;
typedef int busdma_tag_t;
typedef int busdma_md_t;
+typedef int busdma_seg_t;
int busdma_tag_create(const char *dev, bus_addr_t align, bus_addr_t bndry,
bus_addr_t maxaddr, bus_size_t maxsz, u_int nsegs,
@@ -57,4 +58,14 @@ int busdma_tag_destroy(busdma_tag_t tag);
int busdma_mem_alloc(busdma_tag_t tag, u_int flags, busdma_md_t *out_p);
int busdma_mem_free(busdma_md_t md);
+#define BUSDMA_MD_BUS_SPACE 0
+#define BUSDMA_MD_PHYS_SPACE 1
+#define BUSDMA_MD_VIRT_SPACE 2
+
+int busdma_md_first_seg(busdma_md_t, int space);
+int busdma_md_next_seg(busdma_md_t, busdma_seg_t seg);
+
+bus_addr_t busdma_seg_get_addr(busdma_seg_t seg);
+bus_size_t busdma_seg_get_size(busdma_seg_t seg);
+
#endif /* _LIBBUS_SPACE_H_ */
diff --git a/tools/bus_space/Makefile.inc b/tools/bus_space/Makefile.inc
index 947c85f..080689a 100644
--- a/tools/bus_space/Makefile.inc
+++ b/tools/bus_space/Makefile.inc
@@ -1,4 +1,4 @@
# $FreeBSD$
.PATH: ${.CURDIR}/..
-SRCS+= bus_space.c busdma.c
+SRCS+= bus.c busdma.c
diff --git a/tools/bus_space/Python/Makefile b/tools/bus_space/Python/Makefile
index 8e38ed3..5bc9b77 100644
--- a/tools/bus_space/Python/Makefile
+++ b/tools/bus_space/Python/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-SHLIB_NAME= bus_space.so
+SHLIB_NAME= bus.so
SRCS= lang.c
CFLAGS+= -I${.CURDIR}/.. -I/usr/local/include/python2.7
diff --git a/tools/bus_space/Python/lang.c b/tools/bus_space/Python/lang.c
index 2247360..2127df5 100644
--- a/tools/bus_space/Python/lang.c
+++ b/tools/bus_space/Python/lang.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2014 Marcel Moolenaar
+ * Copyright (c) 2014, 2015 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@ __FBSDID("$FreeBSD$");
#include <Python.h>
-#include "bus_space.h"
+#include "bus.h"
#include "busdma.h"
static PyObject *
@@ -259,7 +259,69 @@ busdma_mem_free(PyObject *self, PyObject *args)
Py_RETURN_NONE;
}
-static PyMethodDef bus_space_methods[] = {
+static PyObject *
+busdma_md_first_seg(PyObject *self, PyObject *args)
+{
+ int error, mdid, sid, what;
+
+ if (!PyArg_ParseTuple(args, "ii", &mdid, &what))
+ return (NULL);
+ sid = bd_md_first_seg(mdid, what);
+ if (sid == -1) {
+ PyErr_SetString(PyExc_IOError, strerror(errno));
+ return (NULL);
+ }
+ return (Py_BuildValue("i", sid));
+}
+
+static PyObject *
+busdma_md_next_seg(PyObject *self, PyObject *args)
+{
+ int error, mdid, sid;
+
+ if (!PyArg_ParseTuple(args, "ii", &mdid, &sid))
+ return (NULL);
+ sid = bd_md_next_seg(mdid, sid);
+ if (sid == -1) {
+ PyErr_SetString(PyExc_IOError, strerror(errno));
+ return (NULL);
+ }
+ return (Py_BuildValue("i", sid));
+}
+
+static PyObject *
+busdma_seg_get_addr(PyObject *self, PyObject *args)
+{
+ u_long addr;
+ int error, sid;
+
+ if (!PyArg_ParseTuple(args, "i", &sid))
+ return (NULL);
+ error = bd_seg_get_addr(sid, &addr);
+ if (error) {
+ PyErr_SetString(PyExc_IOError, strerror(error));
+ return (NULL);
+ }
+ return (Py_BuildValue("k", addr));
+}
+
+static PyObject *
+busdma_seg_get_size(PyObject *self, PyObject *args)
+{
+ u_long size;
+ int error, sid;
+
+ if (!PyArg_ParseTuple(args, "i", &sid))
+ return (NULL);
+ error = bd_seg_get_size(sid, &size);
+ if (error) {
+ PyErr_SetString(PyExc_IOError, strerror(error));
+ return (NULL);
+ }
+ return (Py_BuildValue("k", size));
+}
+
+static PyMethodDef bus_methods[] = {
{ "read_1", bus_read_1, METH_VARARGS, "Read a 1-byte data item." },
{ "read_2", bus_read_2, METH_VARARGS, "Read a 2-byte data item." },
{ "read_4", bus_read_4, METH_VARARGS, "Read a 4-byte data item." },
@@ -289,13 +351,22 @@ static PyMethodDef busdma_methods[] = {
"Allocate memory according to the DMA constraints." },
{ "mem_free", busdma_mem_free, METH_VARARGS,
"Free allocated memory." },
+
+ { "md_first_seg", busdma_md_first_seg, METH_VARARGS,
+ "Return first segment in one of the segment lists." },
+ { "md_next_seg", busdma_md_next_seg, METH_VARARGS,
+ "Return next segment in the segment list." },
+ { "seg_get_addr", busdma_seg_get_addr, METH_VARARGS,
+ "Return the address of the segment." },
+ { "seg_get_size", busdma_seg_get_size, METH_VARARGS,
+ "Return the size of the segment." },
{ NULL, NULL, 0, NULL }
};
PyMODINIT_FUNC
-initbus_space(void)
+initbus(void)
{
- Py_InitModule("bus_space", bus_space_methods);
+ Py_InitModule("bus", bus_methods);
Py_InitModule("busdma", busdma_methods);
}
diff --git a/tools/bus_space/bus_space.c b/tools/bus_space/bus.c
index 260222c..01b7693 100644
--- a/tools/bus_space/bus_space.c
+++ b/tools/bus_space/bus.c
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h>
#include <unistd.h>
-#include "bus_space.h"
+#include "bus.h"
#include "../../sys/dev/proto/proto_dev.h"
diff --git a/tools/bus_space/bus_space.h b/tools/bus_space/bus.h
index d347106..d347106 100644
--- a/tools/bus_space/bus_space.h
+++ b/tools/bus_space/bus.h
diff --git a/tools/bus_space/busdma.c b/tools/bus_space/busdma.c
index 4c6e37c..e1e5a00 100644
--- a/tools/bus_space/busdma.c
+++ b/tools/bus_space/busdma.c
@@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$");
#include <sys/ioctl.h>
#include <sys/mman.h>
+#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
@@ -46,6 +47,7 @@ struct obj {
#define OBJ_TYPE_NONE 0
#define OBJ_TYPE_TAG 1
#define OBJ_TYPE_MD 2
+#define OBJ_TYPE_SEG 3
u_int refcnt;
int fd;
struct obj *parent;
@@ -61,9 +63,17 @@ struct obj {
unsigned long datarate;
} tag;
struct {
- unsigned long physaddr;
- void *virtaddr;
- } mem;
+ struct obj *seg[3];
+ int nsegs[3];
+#define BUSDMA_MD_BUS 0
+#define BUSDMA_MD_PHYS 1
+#define BUSDMA_MD_VIRT 2
+ } md;
+ struct {
+ struct obj *next;
+ unsigned long address;
+ unsigned long size;
+ } seg;
} u;
};
@@ -76,9 +86,8 @@ obj_alloc(u_int type)
struct obj **newtbl, *obj;
int oid;
- obj = malloc(sizeof(struct obj));
+ obj = calloc(1, sizeof(struct obj));
obj->type = type;
- obj->refcnt = 0;
for (oid = 0; oid < noids; oid++) {
if (oidtbl[oid] == 0)
@@ -239,6 +248,7 @@ bd_mem_alloc(int tid, u_int flags)
{
struct proto_ioc_busdma ioc;
struct obj *md, *tag;
+ struct obj *bseg, *pseg, *vseg;
tag = obj_lookup(tid, OBJ_TYPE_TAG);
if (tag == NULL)
@@ -262,25 +272,88 @@ bd_mem_alloc(int tid, u_int flags)
md->parent = tag;
tag->refcnt++;
md->key = ioc.result;
- md->u.mem.physaddr = ioc.u.mem.physaddr;
- md->u.mem.virtaddr = mmap(NULL, tag->u.tag.maxsz,
+
+ /* XXX we need to support multiple segments */
+ assert(ioc.u.mem.phys_nsegs == 1);
+ assert(ioc.u.mem.bus_nsegs == 1);
+
+ bseg = pseg = vseg = NULL;
+
+ bseg = obj_alloc(OBJ_TYPE_SEG);
+ if (bseg == NULL)
+ goto fail;
+ bseg->refcnt = 1;
+ bseg->parent = md;
+ bseg->u.seg.address = ioc.u.mem.bus_addr;
+ bseg->u.seg.size = tag->u.tag.maxsz;
+ md->u.md.seg[BUSDMA_MD_BUS] = bseg;
+ md->u.md.nsegs[BUSDMA_MD_BUS] = ioc.u.mem.bus_nsegs;
+
+ pseg = obj_alloc(OBJ_TYPE_SEG);
+ if (pseg == NULL)
+ goto fail;
+ pseg->refcnt = 1;
+ pseg->parent = md;
+ pseg->u.seg.address = ioc.u.mem.phys_addr;
+ pseg->u.seg.size = tag->u.tag.maxsz;
+ md->u.md.seg[BUSDMA_MD_PHYS] = pseg;
+ md->u.md.nsegs[BUSDMA_MD_PHYS] = ioc.u.mem.phys_nsegs;
+
+ vseg = obj_alloc(OBJ_TYPE_SEG);
+ if (vseg == NULL)
+ goto fail;
+ vseg->refcnt = 1;
+ vseg->parent = md;
+ vseg->u.seg.address = (uintptr_t)mmap(NULL, pseg->u.seg.size,
PROT_READ | PROT_WRITE, MAP_NOCORE | MAP_SHARED, md->fd,
- md->u.mem.physaddr);
+ pseg->u.seg.address);
+ if (vseg->u.seg.address == (uintptr_t)MAP_FAILED)
+ goto fail;
+ vseg->u.seg.size = pseg->u.seg.size;
+ md->u.md.seg[BUSDMA_MD_VIRT] = vseg;
+ md->u.md.nsegs[BUSDMA_MD_VIRT] = 1;
+
return (md->oid);
+
+ fail:
+ if (vseg != NULL)
+ obj_free(vseg);
+ if (pseg != NULL)
+ obj_free(pseg);
+ if (bseg != NULL)
+ obj_free(bseg);
+ memset(&ioc, 0, sizeof(ioc));
+ ioc.request = PROTO_IOC_BUSDMA_MEM_FREE;
+ ioc.key = md->key;
+ ioctl(md->fd, PROTO_IOC_BUSDMA, &ioc);
+ md->parent->refcnt--;
+ obj_free(md);
+ return (-1);
}
int
bd_mem_free(int mdid)
{
struct proto_ioc_busdma ioc;
- struct obj *md;
+ struct obj *md, *seg, *seg0;
md = obj_lookup(mdid, OBJ_TYPE_MD);
if (md == NULL)
return (errno);
- if (md->u.mem.virtaddr != MAP_FAILED)
- munmap(md->u.mem.virtaddr, md->parent->u.tag.maxsz);
+ for (seg = md->u.md.seg[BUSDMA_MD_VIRT]; seg != NULL; seg = seg0) {
+ munmap((void *)seg->u.seg.address, seg->u.seg.size);
+ seg0 = seg->u.seg.next;
+ obj_free(seg);
+ }
+ for (seg = md->u.md.seg[BUSDMA_MD_PHYS]; seg != NULL; seg = seg0) {
+ seg0 = seg->u.seg.next;
+ obj_free(seg);
+ }
+ for (seg = md->u.md.seg[BUSDMA_MD_BUS]; seg != NULL; seg = seg0) {
+ seg0 = seg->u.seg.next;
+ obj_free(seg);
+ }
memset(&ioc, 0, sizeof(ioc));
ioc.request = PROTO_IOC_BUSDMA_MEM_FREE;
ioc.key = md->key;
@@ -291,3 +364,74 @@ bd_mem_free(int mdid)
obj_free(md);
return (0);
}
+
+int
+bd_md_first_seg(int mdid, int space)
+{
+ struct obj *md, *seg;
+
+ md = obj_lookup(mdid, OBJ_TYPE_MD);
+ if (md == NULL)
+ return (-1);
+
+ if (space != BUSDMA_MD_BUS && space != BUSDMA_MD_PHYS &&
+ space != BUSDMA_MD_VIRT) {
+ errno = EINVAL;
+ return (-1);
+ }
+ seg = md->u.md.seg[space];
+ if (seg == NULL) {
+ errno = ENXIO;
+ return (-1);
+ }
+ return (seg->oid);
+}
+
+int
+bd_md_next_seg(int mdid, int sid)
+{
+ struct obj *seg;
+
+ seg = obj_lookup(sid, OBJ_TYPE_SEG);
+ if (seg == NULL)
+ return (-1);
+
+ seg = seg->u.seg.next;
+ if (seg == NULL) {
+ errno = ENXIO;
+ return (-1);
+ }
+ return (seg->oid);
+}
+
+int
+bd_seg_get_addr(int sid, u_long *addr_p)
+{
+ struct obj *seg;
+
+ if (addr_p == NULL)
+ return (EINVAL);
+
+ seg = obj_lookup(sid, OBJ_TYPE_SEG);
+ if (seg == NULL)
+ return (errno);
+
+ *addr_p = seg->u.seg.address;
+ return (0);
+}
+
+int
+bd_seg_get_size(int sid, u_long *size_p)
+{
+ struct obj *seg;
+
+ if (size_p == NULL)
+ return (EINVAL);
+
+ seg = obj_lookup(sid, OBJ_TYPE_SEG);
+ if (seg == NULL)
+ return (errno);
+
+ *size_p = seg->u.seg.size;
+ return (0);
+}
diff --git a/tools/bus_space/busdma.h b/tools/bus_space/busdma.h
index 357cb30..7394b26 100644
--- a/tools/bus_space/busdma.h
+++ b/tools/bus_space/busdma.h
@@ -40,4 +40,10 @@ int bd_tag_destroy(int tid);
int bd_mem_alloc(int tid, u_int flags);
int bd_mem_free(int mdid);
+int bd_md_first_seg(int mdid, int what);
+int bd_md_next_seg(int mdid, int sid);
+
+int bd_seg_get_addr(int sid, u_long *);
+int bd_seg_get_size(int sid, u_long *);
+
#endif /* _TOOLS_BUS_DMA_H_ */
diff --git a/tools/regression/include/stdatomic/Makefile.depend b/tools/regression/include/stdatomic/Makefile.depend
new file mode 100644
index 0000000..abf239e
--- /dev/null
+++ b/tools/regression/include/stdatomic/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/ath/ath_ee_9300_print/Makefile.depend b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
new file mode 100644
index 0000000..c9ce330
--- /dev/null
+++ b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+main.o: opt_ah.h
+main.po: opt_ah.h
+.endif
diff --git a/tools/tools/drm/radeon/mkregtable/Makefile.depend b/tools/tools/drm/radeon/mkregtable/Makefile.depend
new file mode 100644
index 0000000..abf239e
--- /dev/null
+++ b/tools/tools/drm/radeon/mkregtable/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/makeroot/Makefile.depend b/tools/tools/makeroot/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/tools/tools/makeroot/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/usbtest/Makefile.depend b/tools/tools/usbtest/Makefile.depend
new file mode 100644
index 0000000..e33ad82
--- /dev/null
+++ b/tools/tools/usbtest/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index c77f89a..1187dc2 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -253,10 +253,6 @@ SUBDIR+= file
SUBDIR+= finger
.endif
-.if ${MK_FMAKE} != "no"
-SUBDIR+= make
-.endif
-
.if ${MK_FTP} != "no"
SUBDIR+= ftp
.endif
diff --git a/usr.bin/addr2line/Makefile.depend b/usr.bin/addr2line/Makefile.depend
new file mode 100644
index 0000000..20f498c
--- /dev/null
+++ b/usr.bin/addr2line/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libelftc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/alias/Makefile b/usr.bin/alias/Makefile
index 474499f..e6345cf 100644
--- a/usr.bin/alias/Makefile
+++ b/usr.bin/alias/Makefile
@@ -2,7 +2,6 @@
SCRIPTS=generic.sh
SCRIPTSNAME=alias
-NO_OBJ=
LINKS= ${BINDIR}/alias ${BINDIR}/bg \
${BINDIR}/alias ${BINDIR}/cd \
diff --git a/usr.bin/alias/Makefile.depend b/usr.bin/alias/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/alias/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/apply/Makefile.depend b/usr.bin/apply/Makefile.depend
new file mode 100644
index 0000000..6002005
--- /dev/null
+++ b/usr.bin/apply/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ar/Makefile.depend b/usr.bin/ar/Makefile.depend
new file mode 100644
index 0000000..cabff68
--- /dev/null
+++ b/usr.bin/ar/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acplex.o: acplex.c
+acplex.o: y.tab.h
+acplex.po: acplex.c
+acplex.po: y.tab.h
+acpyacc.o: acpyacc.c
+acpyacc.po: acpyacc.c
+.endif
diff --git a/usr.bin/asa/Makefile.depend b/usr.bin/asa/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/asa/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/at/Makefile.depend b/usr.bin/at/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/at/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/atm/sscop/Makefile.depend b/usr.bin/atm/sscop/Makefile.depend
new file mode 100644
index 0000000..a49eafb
--- /dev/null
+++ b/usr.bin/atm/sscop/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbegemot \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libngatm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/awk/Makefile.depend b/usr.bin/awk/Makefile.depend
new file mode 100644
index 0000000..2fddd14
--- /dev/null
+++ b/usr.bin/awk/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+awkgram.o: awkgram.c
+awkgram.po: awkgram.c
+b.o: ytab.h
+b.po: ytab.h
+lex.o: ytab.h
+lex.po: ytab.h
+lib.o: ytab.h
+lib.po: ytab.h
+main.o: ytab.h
+main.po: ytab.h
+parse.o: ytab.h
+parse.po: ytab.h
+proctab.o: proctab.c
+proctab.o: ytab.h
+proctab.po: proctab.c
+proctab.po: ytab.h
+run.o: ytab.h
+run.po: ytab.h
+tran.o: ytab.h
+tran.po: ytab.h
+.endif
diff --git a/usr.bin/banner/Makefile.depend b/usr.bin/banner/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/banner/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/basename/Makefile.depend b/usr.bin/basename/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/basename/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bc/Makefile.depend b/usr.bin/bc/Makefile.depend
new file mode 100644
index 0000000..e759653
--- /dev/null
+++ b/usr.bin/bc/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bc.o: bc.c
+bc.po: bc.c
+scan.o: bc.h
+scan.o: scan.c
+scan.po: bc.h
+scan.po: scan.c
+.endif
diff --git a/usr.bin/biff/Makefile.depend b/usr.bin/biff/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/biff/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/bthost/Makefile.depend b/usr.bin/bluetooth/bthost/Makefile.depend
new file mode 100644
index 0000000..5d21038
--- /dev/null
+++ b/usr.bin/bluetooth/bthost/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/btsockstat/Makefile.depend b/usr.bin/bluetooth/btsockstat/Makefile.depend
new file mode 100644
index 0000000..0929154
--- /dev/null
+++ b/usr.bin/bluetooth/btsockstat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend b/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend
new file mode 100644
index 0000000..4633528
--- /dev/null
+++ b/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bmake/Makefile b/usr.bin/bmake/Makefile
index 4abb45fe..4f83731 100644
--- a/usr.bin/bmake/Makefile
+++ b/usr.bin/bmake/Makefile
@@ -14,10 +14,10 @@ CFLAGS+= -I${.CURDIR}
CLEANDIRS+= FreeBSD
CLEANFILES+= bootstrap
-# $Id: Makefile,v 1.38 2015/05/05 21:58:05 sjg Exp $
+# $Id: Makefile,v 1.39 2015/06/07 15:54:37 sjg Exp $
# Base version on src date
-MAKE_VERSION= 20150505
+MAKE_VERSION= 20150606
PROG?= ${.CURDIR:T}
diff --git a/usr.bin/bmake/Makefile.depend b/usr.bin/bmake/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/bmake/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/brandelf/Makefile.depend b/usr.bin/brandelf/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/brandelf/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bsdiff/bsdiff/Makefile.depend b/usr.bin/bsdiff/bsdiff/Makefile.depend
new file mode 100644
index 0000000..36fe468
--- /dev/null
+++ b/usr.bin/bsdiff/bsdiff/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bsdiff/bspatch/Makefile.depend b/usr.bin/bsdiff/bspatch/Makefile.depend
new file mode 100644
index 0000000..36fe468
--- /dev/null
+++ b/usr.bin/bsdiff/bspatch/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bzip2/Makefile.depend b/usr.bin/bzip2/Makefile.depend
new file mode 100644
index 0000000..509010f
--- /dev/null
+++ b/usr.bin/bzip2/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bzip2recover/Makefile.depend b/usr.bin/bzip2recover/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/bzip2recover/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/c89/Makefile.depend b/usr.bin/c89/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/c89/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/c99/Makefile.depend b/usr.bin/c99/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/c99/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/calendar/Makefile.depend b/usr.bin/calendar/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/usr.bin/calendar/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/calendar/calendars/calendar.freebsd b/usr.bin/calendar/calendars/calendar.freebsd
index 9ea3d81..41e8ea6 100644
--- a/usr.bin/calendar/calendars/calendar.freebsd
+++ b/usr.bin/calendar/calendars/calendar.freebsd
@@ -199,6 +199,7 @@
06/06 Alan Eldridge <alane@FreeBSD.org> died in Denver, Colorado, 2003
06/07 Jimmy Olgeni <olgeni@FreeBSD.org> born in Milano, Italy, 1976
06/07 Benjamin Close <benjsc@FreeBSD.org> born in Adelaide, Australia, 1978
+06/11 Alonso Cardenas Marquez <acm@FreeBSD.org> born in Arequipa, Peru, 1979
06/14 Josh Paetzel <jpaetzel@FreeBSD.org> born in Minneapolis, Minnesota, United States, 1973
06/17 Tilman Linneweh <arved@FreeBSD.org> born in Weinheim, Baden-Wuerttemberg, Germany, 1978
06/18 Li-Wen Hsu <lwhsu@FreeBSD.org> born in Taipei, Taiwan, Republic of China, 1984
diff --git a/usr.bin/calendar/calendars/calendar.holiday b/usr.bin/calendar/calendars/calendar.holiday
index fe9029e..f3115c6 100644
--- a/usr.bin/calendar/calendars/calendar.holiday
+++ b/usr.bin/calendar/calendars/calendar.holiday
@@ -357,7 +357,7 @@
08/31 Independence Day (Merdeka) in Malaysia
08/31 Independence Day in Trinidad and Tobago
08/31 Pashtoonian Day in Afghanistan
-08/FriThird Admission Day in Hawaii, 1984 (3rd Friday)
+08/FriThird Admission Day in Hawaii, 1959 (3rd Friday)
09/01 Army Day in Chile
09/03 Independence Day in Qatar
09/03 Memorial Day in Tunisia
diff --git a/usr.bin/cap_mkdb/Makefile.depend b/usr.bin/cap_mkdb/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/cap_mkdb/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/catman/Makefile.depend b/usr.bin/catman/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/catman/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chat/Makefile.depend b/usr.bin/chat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/chat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/checknr/Makefile.depend b/usr.bin/checknr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/checknr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chkey/Makefile.depend b/usr.bin/chkey/Makefile.depend
new file mode 100644
index 0000000..bae15c2
--- /dev/null
+++ b/usr.bin/chkey/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chpass/Makefile.depend b/usr.bin/chpass/Makefile.depend
new file mode 100644
index 0000000..3dc74b2
--- /dev/null
+++ b/usr.bin/chpass/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+ lib/libypclnt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cksum/Makefile.depend b/usr.bin/cksum/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/cksum/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/clang/clang-tblgen/Makefile.depend b/usr.bin/clang/clang-tblgen/Makefile.depend
new file mode 100644
index 0000000..0e9e94c
--- /dev/null
+++ b/usr.bin/clang/clang-tblgen/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtablegen \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/clang/clang.prog.mk b/usr.bin/clang/clang.prog.mk
index 538c55a..14f7609 100644
--- a/usr.bin/clang/clang.prog.mk
+++ b/usr.bin/clang/clang.prog.mk
@@ -14,4 +14,9 @@ LDADD+= -lncursesw
BINDIR?= /usr/bin
+
+.if ${MK_SHARED_TOOLCHAIN} == "no"
+NO_SHARED= yes
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/clang/clang/Makefile.depend b/usr.bin/clang/clang/Makefile.depend
new file mode 100644
index 0000000..9d31380
--- /dev/null
+++ b/usr.bin/clang/clang/Makefile.depend
@@ -0,0 +1,128 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libclanganalysis \
+ lib/clang/libclangarcmigrate \
+ lib/clang/libclangast \
+ lib/clang/libclangbasic \
+ lib/clang/libclangcodegen \
+ lib/clang/libclangdriver \
+ lib/clang/libclangedit \
+ lib/clang/libclangfrontend \
+ lib/clang/libclangfrontendtool \
+ lib/clang/libclanglex \
+ lib/clang/libclangparse \
+ lib/clang/libclangrewrite \
+ lib/clang/libclangrewritefrontend \
+ lib/clang/libclangsema \
+ lib/clang/libclangserialization \
+ lib/clang/libclangstaticanalyzercheckers \
+ lib/clang/libclangstaticanalyzercore \
+ lib/clang/libclangstaticanalyzerfrontend \
+ lib/clang/libllvmaarch64asmparser \
+ lib/clang/libllvmaarch64codegen \
+ lib/clang/libllvmaarch64desc \
+ lib/clang/libllvmaarch64disassembler \
+ lib/clang/libllvmaarch64info \
+ lib/clang/libllvmaarch64instprinter \
+ lib/clang/libllvmaarch64utils \
+ lib/clang/libllvmanalysis \
+ lib/clang/libllvmarmasmparser \
+ lib/clang/libllvmarmcodegen \
+ lib/clang/libllvmarmdesc \
+ lib/clang/libllvmarmdisassembler \
+ lib/clang/libllvmarminfo \
+ lib/clang/libllvmarminstprinter \
+ lib/clang/libllvmasmparser \
+ lib/clang/libllvmasmprinter \
+ lib/clang/libllvmbitreader \
+ lib/clang/libllvmbitwriter \
+ lib/clang/libllvmcodegen \
+ lib/clang/libllvmcore \
+ lib/clang/libllvminstcombine \
+ lib/clang/libllvminstrumentation \
+ lib/clang/libllvmipa \
+ lib/clang/libllvmipo \
+ lib/clang/libllvmirreader \
+ lib/clang/libllvmlinker \
+ lib/clang/libllvmmc \
+ lib/clang/libllvmmcdisassembler \
+ lib/clang/libllvmmcparser \
+ lib/clang/libllvmmipsasmparser \
+ lib/clang/libllvmmipscodegen \
+ lib/clang/libllvmmipsdesc \
+ lib/clang/libllvmmipsdisassembler \
+ lib/clang/libllvmmipsinfo \
+ lib/clang/libllvmmipsinstprinter \
+ lib/clang/libllvmobjcarcopts \
+ lib/clang/libllvmobject \
+ lib/clang/libllvmoption \
+ lib/clang/libllvmpowerpcasmparser \
+ lib/clang/libllvmpowerpccodegen \
+ lib/clang/libllvmpowerpcdesc \
+ lib/clang/libllvmpowerpcdisassembler \
+ lib/clang/libllvmpowerpcinfo \
+ lib/clang/libllvmpowerpcinstprinter \
+ lib/clang/libllvmprofiledata \
+ lib/clang/libllvmscalaropts \
+ lib/clang/libllvmselectiondag \
+ lib/clang/libllvmsparcasmparser \
+ lib/clang/libllvmsparccodegen \
+ lib/clang/libllvmsparcdesc \
+ lib/clang/libllvmsparcdisassembler \
+ lib/clang/libllvmsparcinfo \
+ lib/clang/libllvmsparcinstprinter \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtarget \
+ lib/clang/libllvmtransformutils \
+ lib/clang/libllvmvectorize \
+ lib/clang/libllvmx86asmparser \
+ lib/clang/libllvmx86codegen \
+ lib/clang/libllvmx86desc \
+ lib/clang/libllvmx86disassembler \
+ lib/clang/libllvmx86info \
+ lib/clang/libllvmx86instprinter \
+ lib/clang/libllvmx86utils \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1_main.o: DiagnosticCommonKinds.inc.h
+cc1_main.o: DiagnosticDriverKinds.inc.h
+cc1_main.o: DiagnosticFrontendKinds.inc.h
+cc1_main.o: Options.inc.h
+cc1_main.po: DiagnosticCommonKinds.inc.h
+cc1_main.po: DiagnosticDriverKinds.inc.h
+cc1_main.po: DiagnosticFrontendKinds.inc.h
+cc1_main.po: Options.inc.h
+cc1as_main.o: DiagnosticCommonKinds.inc.h
+cc1as_main.o: DiagnosticDriverKinds.inc.h
+cc1as_main.o: DiagnosticFrontendKinds.inc.h
+cc1as_main.o: Options.inc.h
+cc1as_main.po: DiagnosticCommonKinds.inc.h
+cc1as_main.po: DiagnosticDriverKinds.inc.h
+cc1as_main.po: DiagnosticFrontendKinds.inc.h
+cc1as_main.po: Options.inc.h
+driver.o: DiagnosticCommonKinds.inc.h
+driver.o: DiagnosticDriverKinds.inc.h
+driver.o: Options.inc.h
+driver.po: DiagnosticCommonKinds.inc.h
+driver.po: DiagnosticDriverKinds.inc.h
+driver.po: Options.inc.h
+.endif
diff --git a/usr.bin/clang/lldb/Makefile b/usr.bin/clang/lldb/Makefile
index 5102835..127df91 100644
--- a/usr.bin/clang/lldb/Makefile
+++ b/usr.bin/clang/lldb/Makefile
@@ -16,8 +16,7 @@ SRCS= Driver.cpp \
lldb.1:
ln -fs ${LLDB_SRCS}/docs/lldb.1 ${.TARGET}
-DPADD= ${LIBEDIT} ${LIBNCURSESW} ${LIBEXECINFO} ${LIBPANEL} ${LIBZ}
-LDADD= -ledit -lncursesw -lexecinfo -lpanel -lz
+LIBADD= edit panel ncursesw execinfo z
LLDB_LIBS=\
lldb \
diff --git a/usr.bin/clang/lldb/Makefile.depend b/usr.bin/clang/lldb/Makefile.depend
new file mode 100644
index 0000000..17b44d8
--- /dev/null
+++ b/usr.bin/clang/lldb/Makefile.depend
@@ -0,0 +1,146 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libclanganalysis \
+ lib/clang/libclangast \
+ lib/clang/libclangbasic \
+ lib/clang/libclangcodegen \
+ lib/clang/libclangdriver \
+ lib/clang/libclangedit \
+ lib/clang/libclangfrontend \
+ lib/clang/libclanglex \
+ lib/clang/libclangparse \
+ lib/clang/libclangsema \
+ lib/clang/libclangserialization \
+ lib/clang/liblldb \
+ lib/clang/liblldbAPI \
+ lib/clang/liblldbBreakpoint \
+ lib/clang/liblldbCommands \
+ lib/clang/liblldbCore \
+ lib/clang/liblldbDataFormatters \
+ lib/clang/liblldbExpression \
+ lib/clang/liblldbHostCommon \
+ lib/clang/liblldbHostFreeBSD \
+ lib/clang/liblldbHostPOSIX \
+ lib/clang/liblldbInterpreter \
+ lib/clang/liblldbPluginABISysV_ppc \
+ lib/clang/liblldbPluginABISysV_ppc64 \
+ lib/clang/liblldbPluginABISysV_x86_64 \
+ lib/clang/liblldbPluginCXXItaniumABI \
+ lib/clang/liblldbPluginDisassemblerLLVM \
+ lib/clang/liblldbPluginDynamicLoaderPosixDYLD \
+ lib/clang/liblldbPluginDynamicLoaderStatic \
+ lib/clang/liblldbPluginInstructionARM \
+ lib/clang/liblldbPluginInstructionARM64 \
+ lib/clang/liblldbPluginInstrumentationRuntimeAddressSanitizer \
+ lib/clang/liblldbPluginJITLoaderGDB \
+ lib/clang/liblldbPluginMemoryHistoryASan \
+ lib/clang/liblldbPluginObjectContainerBSDArchive \
+ lib/clang/liblldbPluginObjectFileELF \
+ lib/clang/liblldbPluginObjectFileJIT \
+ lib/clang/liblldbPluginPlatformFreeBSD \
+ lib/clang/liblldbPluginPlatformGDB \
+ lib/clang/liblldbPluginProcessElfCore \
+ lib/clang/liblldbPluginProcessFreeBSD \
+ lib/clang/liblldbPluginProcessGDBRemote \
+ lib/clang/liblldbPluginProcessPOSIX \
+ lib/clang/liblldbPluginProcessUtility \
+ lib/clang/liblldbPluginSymbolFileDWARF \
+ lib/clang/liblldbPluginSymbolFileSymtab \
+ lib/clang/liblldbPluginSymbolVendorELF \
+ lib/clang/liblldbPluginUnwindAssemblyInstEmulation \
+ lib/clang/liblldbPluginUnwindAssemblyX86 \
+ lib/clang/liblldbSymbol \
+ lib/clang/liblldbTarget \
+ lib/clang/liblldbUtility \
+ lib/clang/libllvmaarch64asmparser \
+ lib/clang/libllvmaarch64codegen \
+ lib/clang/libllvmaarch64desc \
+ lib/clang/libllvmaarch64disassembler \
+ lib/clang/libllvmaarch64info \
+ lib/clang/libllvmaarch64instprinter \
+ lib/clang/libllvmaarch64utils \
+ lib/clang/libllvmanalysis \
+ lib/clang/libllvmarmasmparser \
+ lib/clang/libllvmarmcodegen \
+ lib/clang/libllvmarmdesc \
+ lib/clang/libllvmarmdisassembler \
+ lib/clang/libllvmarminfo \
+ lib/clang/libllvmarminstprinter \
+ lib/clang/libllvmasmparser \
+ lib/clang/libllvmasmprinter \
+ lib/clang/libllvmbitreader \
+ lib/clang/libllvmbitwriter \
+ lib/clang/libllvmcodegen \
+ lib/clang/libllvmcore \
+ lib/clang/libllvmexecutionengine \
+ lib/clang/libllvminstcombine \
+ lib/clang/libllvminstrumentation \
+ lib/clang/libllvmipa \
+ lib/clang/libllvmipo \
+ lib/clang/libllvmirreader \
+ lib/clang/libllvmlinker \
+ lib/clang/libllvmmc \
+ lib/clang/libllvmmcdisassembler \
+ lib/clang/libllvmmcjit \
+ lib/clang/libllvmmcparser \
+ lib/clang/libllvmmipsasmparser \
+ lib/clang/libllvmmipscodegen \
+ lib/clang/libllvmmipsdesc \
+ lib/clang/libllvmmipsdisassembler \
+ lib/clang/libllvmmipsinfo \
+ lib/clang/libllvmmipsinstprinter \
+ lib/clang/libllvmobjcarcopts \
+ lib/clang/libllvmobject \
+ lib/clang/libllvmoption \
+ lib/clang/libllvmpowerpcasmparser \
+ lib/clang/libllvmpowerpccodegen \
+ lib/clang/libllvmpowerpcdesc \
+ lib/clang/libllvmpowerpcdisassembler \
+ lib/clang/libllvmpowerpcinfo \
+ lib/clang/libllvmpowerpcinstprinter \
+ lib/clang/libllvmprofiledata \
+ lib/clang/libllvmruntimedyld \
+ lib/clang/libllvmscalaropts \
+ lib/clang/libllvmselectiondag \
+ lib/clang/libllvmsparcasmparser \
+ lib/clang/libllvmsparccodegen \
+ lib/clang/libllvmsparcdesc \
+ lib/clang/libllvmsparcdisassembler \
+ lib/clang/libllvmsparcinfo \
+ lib/clang/libllvmsparcinstprinter \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtarget \
+ lib/clang/libllvmtransformutils \
+ lib/clang/libllvmvectorize \
+ lib/clang/libllvmx86asmparser \
+ lib/clang/libllvmx86codegen \
+ lib/clang/libllvmx86desc \
+ lib/clang/libllvmx86disassembler \
+ lib/clang/libllvmx86info \
+ lib/clang/libllvmx86instprinter \
+ lib/clang/libllvmx86utils \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libelf \
+ lib/libexecinfo \
+ lib/libthr \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ lib/ncurses/panel \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/clang/tblgen/Makefile.depend b/usr.bin/clang/tblgen/Makefile.depend
new file mode 100644
index 0000000..0e9e94c
--- /dev/null
+++ b/usr.bin/clang/tblgen/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtablegen \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cmp/Makefile.depend b/usr.bin/cmp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/cmp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/col/Makefile.depend b/usr.bin/col/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/col/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/colcrt/Makefile.depend b/usr.bin/colcrt/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/colcrt/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/colldef/Makefile.depend b/usr.bin/colldef/Makefile.depend
new file mode 100644
index 0000000..3ca32c6
--- /dev/null
+++ b/usr.bin/colldef/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+scan.o: scan.c
+scan.o: y.tab.h
+scan.po: scan.c
+scan.po: y.tab.h
+.endif
diff --git a/usr.bin/colrm/Makefile.depend b/usr.bin/colrm/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/colrm/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/column/Makefile.depend b/usr.bin/column/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/column/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/comm/Makefile.depend b/usr.bin/comm/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/comm/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/compile_et/Makefile.depend b/usr.bin/compile_et/Makefile.depend
new file mode 100644
index 0000000..94ad84e
--- /dev/null
+++ b/usr.bin/compile_et/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+compile_et.o: parse.h
+compile_et.po: parse.h
+lex.o: lex.c
+lex.o: parse.h
+lex.po: lex.c
+lex.po: parse.h
+parse.o: parse.c
+parse.po: parse.c
+.endif
diff --git a/usr.bin/compress/Makefile.depend b/usr.bin/compress/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/compress/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cpio/Makefile.depend b/usr.bin/cpio/Makefile.depend
new file mode 100644
index 0000000..4e7906b
--- /dev/null
+++ b/usr.bin/cpio/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cpuset/Makefile.depend b/usr.bin/cpuset/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/cpuset/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/csplit/Makefile.depend b/usr.bin/csplit/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/csplit/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ctags/Makefile.depend b/usr.bin/ctags/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/ctags/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ctlstat/Makefile.depend b/usr.bin/ctlstat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/ctlstat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cut/Makefile.depend b/usr.bin/cut/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/cut/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/dc/Makefile.depend b/usr.bin/dc/Makefile.depend
new file mode 100644
index 0000000..9d5105e
--- /dev/null
+++ b/usr.bin/dc/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/dirname/Makefile.depend b/usr.bin/dirname/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/dirname/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/du/Makefile.depend b/usr.bin/du/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/du/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ee/Makefile.depend b/usr.bin/ee/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/ee/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/elf2aout/Makefile.depend b/usr.bin/elf2aout/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/elf2aout/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/elfcopy/Makefile.depend b/usr.bin/elfcopy/Makefile.depend
new file mode 100644
index 0000000..7c3c6db
--- /dev/null
+++ b/usr.bin/elfcopy/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libelftc \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/elfdump/Makefile.depend b/usr.bin/elfdump/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/elfdump/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/enigma/Makefile.depend b/usr.bin/enigma/Makefile.depend
new file mode 100644
index 0000000..4d4fe05
--- /dev/null
+++ b/usr.bin/enigma/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/env/Makefile.depend b/usr.bin/env/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/env/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/expand/Makefile.depend b/usr.bin/expand/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/expand/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/false/Makefile.depend b/usr.bin/false/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/false/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fetch/Makefile.depend b/usr.bin/fetch/Makefile.depend
new file mode 100644
index 0000000..30112de
--- /dev/null
+++ b/usr.bin/fetch/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libfetch \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/file/Makefile.depend b/usr.bin/file/Makefile.depend
new file mode 100644
index 0000000..4057a4c
--- /dev/null
+++ b/usr.bin/file/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmagic \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/file2c/Makefile.depend b/usr.bin/file2c/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/file2c/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/find/Makefile.depend b/usr.bin/find/Makefile.depend
new file mode 100644
index 0000000..9de4374
--- /dev/null
+++ b/usr.bin/find/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+getdate.o: getdate.c
+getdate.po: getdate.c
+.endif
diff --git a/usr.bin/finger/Makefile.depend b/usr.bin/finger/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/finger/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fmt/Makefile.depend b/usr.bin/fmt/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/fmt/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fold/Makefile.depend b/usr.bin/fold/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/fold/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/from/Makefile.depend b/usr.bin/from/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/from/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fstat/Makefile.depend b/usr.bin/fstat/Makefile.depend
new file mode 100644
index 0000000..5cba1bd
--- /dev/null
+++ b/usr.bin/fstat/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fsync/Makefile.depend b/usr.bin/fsync/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/fsync/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ftp/Makefile.depend b/usr.bin/ftp/Makefile.depend
new file mode 100644
index 0000000..d6c8db8
--- /dev/null
+++ b/usr.bin/ftp/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gcore/Makefile.depend b/usr.bin/gcore/Makefile.depend
new file mode 100644
index 0000000..8df34bc
--- /dev/null
+++ b/usr.bin/gcore/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gencat/Makefile.depend b/usr.bin/gencat/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/gencat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/getconf/Makefile.depend b/usr.bin/getconf/Makefile.depend
new file mode 100644
index 0000000..cd02691
--- /dev/null
+++ b/usr.bin/getconf/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+confstr.o: confstr.c
+confstr.po: confstr.c
+limits.o: limits.c
+limits.po: limits.c
+pathconf.o: pathconf.c
+pathconf.po: pathconf.c
+progenv.o: progenv.c
+progenv.po: progenv.c
+sysconf.o: sysconf.c
+sysconf.po: sysconf.c
+.endif
diff --git a/usr.bin/getent/Makefile.depend b/usr.bin/getent/Makefile.depend
new file mode 100644
index 0000000..1eb0f33
--- /dev/null
+++ b/usr.bin/getent/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/getopt/Makefile.depend b/usr.bin/getopt/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/getopt/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gprof/Makefile.depend b/usr.bin/gprof/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/gprof/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/grep/Makefile b/usr.bin/grep/Makefile
index 38df85a..af21471 100644
--- a/usr.bin/grep/Makefile
+++ b/usr.bin/grep/Makefile
@@ -39,6 +39,7 @@ LIBADD= z
.if ${MK_LZMA_SUPPORT} != "no"
LIBADD+= lzma
+.if ${MK_BSD_GREP} == "yes"
LINKS+= ${BINDIR}/${PROG} ${BINDIR}/xzgrep \
${BINDIR}/${PROG} ${BINDIR}/xzegrep \
${BINDIR}/${PROG} ${BINDIR}/xzfgrep \
@@ -52,6 +53,7 @@ MLINKS+= grep.1 xzgrep.1 \
grep.1 lzgrep.1 \
grep.1 lzegrep.1 \
grep.1 lzfgrep.1
+.endif
.else
CFLAGS+= -DWITHOUT_LZMA
.endif
diff --git a/usr.bin/grep/Makefile.depend b/usr.bin/grep/Makefile.depend
new file mode 100644
index 0000000..ca0df56
--- /dev/null
+++ b/usr.bin/grep/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gzip/Makefile.depend b/usr.bin/gzip/Makefile.depend
new file mode 100644
index 0000000..f3f02a1
--- /dev/null
+++ b/usr.bin/gzip/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/head/Makefile.depend b/usr.bin/head/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/head/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/hexdump/Makefile.depend b/usr.bin/hexdump/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/hexdump/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/host/Makefile.depend b/usr.bin/host/Makefile.depend
new file mode 100644
index 0000000..0c13258
--- /dev/null
+++ b/usr.bin/host/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libldns \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/id/Makefile.depend b/usr.bin/id/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/id/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/indent/Makefile.depend b/usr.bin/indent/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/indent/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ipcrm/Makefile.depend b/usr.bin/ipcrm/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.bin/ipcrm/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ipcs/Makefile.depend b/usr.bin/ipcs/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.bin/ipcs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/join/Makefile.depend b/usr.bin/join/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/join/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/jot/Makefile.depend b/usr.bin/jot/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/jot/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/kdump/Makefile b/usr.bin/kdump/Makefile
index 78a1763..72e6305 100644
--- a/usr.bin/kdump/Makefile
+++ b/usr.bin/kdump/Makefile
@@ -23,30 +23,36 @@ NO_WERROR?= YES
CLEANFILES= ioctl.c kdump_subr.c kdump_subr.h
+beforedepend: ioctl.c
+
.if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386")
+beforedepend: linux_syscalls.c
+
CLEANFILES+= linux_syscalls.c
+kdump.o: linux_syscalls.c
+linux_syscalls.c: linux_syscalls.conf
+ sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
+ ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux/syscalls.master ${.CURDIR}/linux_syscalls.conf
.endif
.if (${MACHINE_ARCH} == "amd64")
+beforedepend: linux32_syscalls.c
+
CLEANFILES+= linux32_syscalls.c
+kdump.o: linux32_syscalls.c
+linux32_syscalls.c: linux32_syscalls.conf
+ sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
+ ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux32/syscalls.master ${.CURDIR}/linux32_syscalls.conf
.endif
ioctl.c: mkioctls
env MACHINE=${MACHINE} CPP="${CPP}" \
- sh ${.CURDIR}/mkioctls print ${DESTDIR}/usr/include > ${.TARGET}
+ sh ${.CURDIR}/mkioctls print ${DESTDIR}${INCLUDEDIR} > ${.TARGET}
kdump_subr.h: mksubr
- sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include | \
+ sh ${.CURDIR}/mksubr ${DESTDIR}${INCLUDEDIR} | \
sed -n 's/^\([a-z].*)\)$$/void \1;/p' >${.TARGET}
kdump_subr.c: mksubr kdump_subr.h
- sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include >${.TARGET}
-.if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386")
- sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
- ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux/syscalls.master ${.CURDIR}/linux_syscalls.conf
-.endif
-.if (${MACHINE_ARCH} == "amd64")
- sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
- ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux32/syscalls.master ${.CURDIR}/linux32_syscalls.conf
-.endif
+ sh ${.CURDIR}/mksubr ${DESTDIR}${INCLUDEDIR} >${.TARGET}
.include <bsd.prog.mk>
diff --git a/usr.bin/kdump/Makefile.depend b/usr.bin/kdump/Makefile.depend
new file mode 100644
index 0000000..e0397fe
--- /dev/null
+++ b/usr.bin/kdump/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libnv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ioctl.o: ioctl.c
+ioctl.po: ioctl.c
+kdump.o: kdump_subr.h
+kdump.o: linux32_syscalls.c
+kdump.o: linux_syscalls.c
+kdump.po: kdump_subr.h
+kdump.po: linux32_syscalls.c
+kdump.po: linux_syscalls.c
+kdump_subr.o: kdump_subr.c
+kdump_subr.o: kdump_subr.h
+kdump_subr.po: kdump_subr.c
+kdump_subr.po: kdump_subr.h
+.endif
diff --git a/usr.bin/kdump/mkioctls b/usr.bin/kdump/mkioctls
index 525e143..a563341 100644
--- a/usr.bin/kdump/mkioctls
+++ b/usr.bin/kdump/mkioctls
@@ -39,7 +39,7 @@ case "${MACHINE}" in
esac
awk -v x="$ioctl_includes" 'BEGIN {print x}' |
- $CPP -I$1 -dM -DCOMPAT_43TTY - |
+ $CPP -nostdinc -I$includedir -dM -DCOMPAT_43TTY - |
awk -v ioctl_includes="$ioctl_includes" -v style="$style" '
BEGIN {
print "/* XXX obnoxious prerequisites. */"
diff --git a/usr.bin/keylogin/Makefile.depend b/usr.bin/keylogin/Makefile.depend
new file mode 100644
index 0000000..c8383bd
--- /dev/null
+++ b/usr.bin/keylogin/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/keylogout/Makefile.depend b/usr.bin/keylogout/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.bin/keylogout/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/killall/Makefile.depend b/usr.bin/killall/Makefile.depend
new file mode 100644
index 0000000..41ef6ec
--- /dev/null
+++ b/usr.bin/killall/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ktrace/Makefile.depend b/usr.bin/ktrace/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/ktrace/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ktrdump/Makefile.depend b/usr.bin/ktrdump/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.bin/ktrdump/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lam/Makefile.depend b/usr.bin/lam/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/lam/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/last/Makefile.depend b/usr.bin/last/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/last/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lastcomm/Makefile.depend b/usr.bin/lastcomm/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/lastcomm/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ldd/Makefile.depend b/usr.bin/ldd/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/ldd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/leave/Makefile.depend b/usr.bin/leave/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/leave/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/less/Makefile.depend b/usr.bin/less/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/less/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lessecho/Makefile.depend b/usr.bin/lessecho/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/lessecho/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lesskey/Makefile.depend b/usr.bin/lesskey/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/lesskey/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lex/Makefile.depend b/usr.bin/lex/Makefile.depend
new file mode 100644
index 0000000..738376b
--- /dev/null
+++ b/usr.bin/lex/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+scan.o: parse.h
+scan.o: scan.c
+scan.po: parse.h
+scan.po: scan.c
+skel.o: skel.c
+skel.po: skel.c
+yylex.o: parse.h
+yylex.po: parse.h
+.endif
diff --git a/usr.bin/lex/lib/Makefile.depend b/usr.bin/lex/lib/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/lex/lib/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/limits/Makefile.depend b/usr.bin/limits/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/limits/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locale/Makefile.depend b/usr.bin/locale/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/locale/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/bigram/Makefile.depend b/usr.bin/locate/bigram/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/locate/bigram/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/code/Makefile.depend b/usr.bin/locate/code/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/locate/code/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/locate/Makefile.depend b/usr.bin/locate/locate/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/locate/locate/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lock/Makefile.depend b/usr.bin/lock/Makefile.depend
new file mode 100644
index 0000000..4d4fe05
--- /dev/null
+++ b/usr.bin/lock/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lockf/Makefile.depend b/usr.bin/lockf/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/lockf/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logger/Makefile.depend b/usr.bin/logger/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/logger/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/login/Makefile.depend b/usr.bin/login/Makefile.depend
new file mode 100644
index 0000000..85813bf
--- /dev/null
+++ b/usr.bin/login/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logins/Makefile.depend b/usr.bin/logins/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/logins/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logname/Makefile.depend b/usr.bin/logname/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/logname/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/look/Makefile.depend b/usr.bin/look/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/look/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lorder/Makefile.depend b/usr.bin/lorder/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/lorder/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lsvfs/Makefile.depend b/usr.bin/lsvfs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/lsvfs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lzmainfo/Makefile.depend b/usr.bin/lzmainfo/Makefile.depend
new file mode 100644
index 0000000..987c487
--- /dev/null
+++ b/usr.bin/lzmainfo/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/m4/Makefile.depend b/usr.bin/m4/Makefile.depend
new file mode 100644
index 0000000..f5fa771
--- /dev/null
+++ b/usr.bin/m4/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libohash \
+ lib/liby \
+ lib/msun \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parser.o: parser.c
+parser.po: parser.c
+tokenizer.o: parser.h
+tokenizer.o: tokenizer.c
+tokenizer.po: parser.h
+tokenizer.po: tokenizer.c
+.endif
diff --git a/usr.bin/mail/Makefile.depend b/usr.bin/mail/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/mail/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/make/GNode.h b/usr.bin/make/GNode.h
deleted file mode 100644
index 05af1d0..0000000
--- a/usr.bin/make/GNode.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef GNode_h_39503bf2
-#define GNode_h_39503bf2
-
-#include "lst.h"
-#include "util.h"
-
-struct Suff;
-
-/*
- * The structure for an individual graph node. Each node has several
- * pieces of data associated with it.
- */
-typedef struct GNode {
- char *name; /* The target's name */
- char *path; /* The full pathname of the target file */
-
- /*
- * The type of operator used to define the sources (qv. parse.c)
- *
- * The OP_ constants are used when parsing a dependency line as a way of
- * communicating to other parts of the program the way in which a target
- * should be made. These constants are bitwise-OR'ed together and
- * placed in the 'type' field of each node. Any node that has
- * a 'type' field which satisfies the OP_NOP function was never never on
- * the lefthand side of an operator, though it may have been on the
- * righthand side...
- */
- int type;
-#define OP_DEPENDS 0x00000001 /* Execution of commands depends on
- * kids (:) */
-#define OP_FORCE 0x00000002 /* Always execute commands (!) */
-#define OP_DOUBLEDEP 0x00000004 /* Execution of commands depends on
- * kids per line (::) */
-#define OP_OPMASK (OP_DEPENDS|OP_FORCE|OP_DOUBLEDEP)
-
-#define OP_OPTIONAL 0x00000008 /* Don't care if the target doesn't
- * exist and can't be created */
-#define OP_USE 0x00000010 /*
- * Use associated commands for
- * parents
- */
-#define OP_EXEC 0x00000020 /* Target is never out of date, but
- * always execute commands anyway.
- * Its time doesn't matter, so it has
- * none...sort of
- */
-#define OP_IGNORE 0x00000040 /*
- * Ignore errors when creating the node
- */
-#define OP_PRECIOUS 0x00000080 /* Don't remove the target when
- * interrupted */
-#define OP_SILENT 0x00000100 /* Don't echo commands when executed */
-#define OP_MAKE 0x00000200 /*
- * Target is a recurrsive make so its
- * commands should always be executed
- * when it is out of date, regardless
- * of the state of the -n or -t flags
- */
-#define OP_JOIN 0x00000400 /* Target is out-of-date only if any of
- * its children was out-of-date */
-#define OP_INVISIBLE 0x00004000 /* The node is invisible to its parents.
- * I.e. it doesn't show up in the
- * parents's local variables. */
-#define OP_NOTMAIN 0x00008000 /* The node is exempt from normal 'main
- * target' processing in parse.c */
-#define OP_PHONY 0x00010000 /* Not a file target; run always */
-/* Attributes applied by PMake */
-#define OP_TRANSFORM 0x80000000 /* The node is a transformation rule */
-#define OP_MEMBER 0x40000000 /* Target is a member of an archive */
-#define OP_LIB 0x20000000 /* Target is a library */
-#define OP_ARCHV 0x10000000 /* Target is an archive construct */
-#define OP_HAS_COMMANDS 0x08000000 /* Target has all the commands it
- * should. Used when parsing to catch
- * multiple commands for a target */
-#define OP_SAVE_CMDS 0x04000000 /* Saving commands on .END (Compat) */
-#define OP_DEPS_FOUND 0x02000000 /* Already processed by Suff_FindDeps */
-
-/*
- * OP_NOP will return TRUE if the node with the given type was not the
- * object of a dependency operator
- */
-#define OP_NOP(t) (((t) & OP_OPMASK) == 0x00000000)
-
- int order; /* Its wait weight */
-
- Boolean make; /* TRUE if this target needs to be remade */
-
- /* Set to reflect the state of processing on this node */
- enum {
- UNMADE, /* Not examined yet */
-
- /*
- * Target is already being made. Indicates a cycle in the graph.
- * (compat mode only)
- */
- BEINGMADE,
-
- MADE, /* Was out-of-date and has been made */
- UPTODATE, /* Was already up-to-date */
-
- /*
- * An error occurred while it was being
- * made (used only in compat mode)
- */
- ERROR,
-
- /*
- * The target was aborted due to an
- * error making an inferior (compat).
- */
- ABORTED,
-
- /*
- * Marked as potentially being part of a graph cycle. If we
- * come back to a node marked this way, it is printed and
- * 'made' is changed to ENDCYCLE.
- */
- CYCLE,
-
- /*
- * The cycle has been completely printed. Go back and
- * unmark all its members.
- */
- ENDCYCLE
- } made;
-
- /* TRUE if one of this target's children was made */
- Boolean childMade;
-
- int unmade; /* The number of unmade children */
- int mtime; /* Its modification time */
- int cmtime; /* Modification time of its youngest child */
- struct GNode *cmtime_gn;/* Youngest child */
-
- /*
- * Links to parents for which this is an implied source, if any. (nodes
- * that depend on this, as gleaned from the transformation rules.
- */
- Lst iParents;
-
- /* List of nodes of the same name created by the :: operator */
- Lst cohorts;
-
- /* Lst of nodes for which this is a source (that depend on this one) */
- Lst parents;
-
- /* List of nodes on which this depends */
- Lst children;
-
- /*
- * List of nodes that must be made (if they're made) after this node is,
- * but that do not depend on this node, in the normal sense.
- */
- Lst successors;
-
- /*
- * List of nodes that must be made (if they're made) before this node
- * can be, but that do no enter into the datedness of this node.
- */
- Lst preds;
-
- /*
- * List of ``local'' variables that are specific to this target
- * and this target only (qv. var.c [$@ $< $?, etc.])
- */
- Lst context;
-
- /*
- * List of strings that are commands to be given to a shell
- * to create this target.
- */
- Lst commands;
-
- /* current command executing in compat mode */
- LstNode *compat_command;
-
- /*
- * Suffix for the node (determined by Suff_FindDeps and opaque to
- * everyone but the Suff module)
- */
- struct Suff *suffix;
-} GNode;
-
-#endif /* GNode_h_39503bf2 */
diff --git a/usr.bin/make/Makefile b/usr.bin/make/Makefile
deleted file mode 100644
index 1d366a5..0000000
--- a/usr.bin/make/Makefile
+++ /dev/null
@@ -1,120 +0,0 @@
-# @(#)Makefile 5.2 (Berkeley) 12/28/90
-# $Id: Makefile,v 1.6 1994/06/30 05:33:39 cgd Exp $
-# $FreeBSD$
-
-.include <src.opts.mk>
-
-PROG= make
-CFLAGS+=-I${.CURDIR}
-SRCS= arch.c buf.c cond.c dir.c for.c hash.c hash_tables.c job.c \
- lst.c main.c make.c parse.c proc.c shell.c str.c suff.c targ.c \
- util.c var.c
-
-.if !defined(MK_SHARED_TOOLCHAIN) || ${MK_SHARED_TOOLCHAIN} == "no"
-NO_SHARED?= YES
-.endif
-
-# Version has the RYYYYMMDDX format, where R is from RELENG_<R>
-CFLAGS+=-DMAKE_VERSION=\"10201205300\"
-
-# There is no obvious performance improvement currently.
-# CFLAGS+=-DUSE_KQUEUE
-
-# Make object files which depend on preprocessor symbols defined in
-# the Makefile which are not compilation options but rather configuration
-# options dependend on the Makefile. main.c needs MAKE_VERSION while
-# shell.c uses DEFSHELLNAME. This will cause recompilation in the case
-# the definition is changed in the makefile. It will of course not cause
-# recompilation if one does 'make MAKE_SHELL=csh'.
-main.o shell.o: ${MAKEFILE}
-
-# Directive and keyword tables. We use hash tables. These hash tables have been
-# generated with mph (ports/devel/mph)
-# If you change the directives or keywords (adding, deleting, reordering) you
-# need to create new tables and hash functions (directive_hash, keyword_hash).
-#
-# The following changes have been made to the generated code:
-#
-# o prefix the names of the g, T0 and T1 arrays with 'directive_'
-# resp. 'keyword_'.
-#
-# o make the type of the tables 'const [un]signed char' (if you change
-# anything make sure that the numbers fit into a char).
-#
-# o make the hash function use the length for termination,
-# not the trailing '\0', via the -l flag in emitc and some editing
-# (only for directive_hash).
-
-LOCALBASE ?= /usr/local
-MPH ?= ${LOCALBASE}/bin/mph
-EMITC ?= ${LOCALBASE}/bin/emitc
-
-.PRECIOUS: hash
-
-hash:
- ( echo '/*' ; \
- echo ' * DO NOT EDIT' ; \
- echo ' * $$''FreeBSD$$' ; \
- echo -n ' * auto-generated from ' ; \
- sed -nEe '/\$$FreeBSD/s/^.*\$$(.*)\$$.*$$/\1/p' \
- ${.CURDIR}/parse.c ; \
- echo ' * DO NOT EDIT' ; \
- echo ' */' ; \
- echo '#include <sys/types.h>' ; \
- echo ; \
- echo '#include "hash_tables.h"' ; \
- echo ; \
- cat ${.CURDIR}/parse.c | sed \
- -e '1,/DIRECTIVES-START-TAG/d' \
- -e '/DIRECTIVES-END-TAG/,$$d' \
- -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \
- ${MPH} -d2 -m1 | ${EMITC} -l -s | \
- sed \
- -e 's/^static int g\[\]/static const signed char directive_g[]/' \
- -e 's/^static int T0\[\]/static const u_char directive_T0[]/' \
- -e 's/^static int T1\[\]/static const u_char directive_T1[]/' \
- -e '/^#define uchar unsigned char/d' \
- -e 's/uchar/u_char/g' \
- -e 's/^hash(/directive_hash(/' \
- -e 's/; \*kp;/; kp < key + len;/' \
- -e 's/int len)/size_t len)/' \
- -e 's/= T0\[/= directive_T0\[/' \
- -e 's/= T1\[/= directive_T1\[/' \
- -e 's/g\[f/directive_g[f/g' ; \
- cat ${.CURDIR}/parse.c | sed \
- -e '1,/KEYWORD-START-TAG/d' \
- -e '/KEYWORD-END-TAG/,$$d' \
- -e 's/^[^"]*"\([^"]*\)".*$$/\1/' | \
- ${MPH} -d2 -m1 | ${EMITC} -l -s | \
- sed \
- -e 's/^static int g\[\]/static const signed char keyword_g[]/' \
- -e 's/^static int T0\[\]/static const u_char keyword_T0[]/' \
- -e 's/^static int T1\[\]/static const u_char keyword_T1[]/' \
- -e '/^#define uchar unsigned char/d' \
- -e 's/uchar/u_char/g' \
- -e 's/^hash(/keyword_hash(/' \
- -e 's/int len)/size_t len)/' \
- -e 's/= T0\[/= keyword_T0\[/' \
- -e 's/= T1\[/= keyword_T1\[/' \
- -e 's/g\[f/keyword_g[f/g' \
- ) > ${.CURDIR}/hash_tables.c
-
-# Set the shell which make(1) uses. Bourne is the default, but a decent
-# Korn shell works fine, and much faster. Using the C shell for this
-# will almost certainly break everything, but it's Unix tradition to
-# allow you to shoot yourself in the foot if you want to :-)
-
-MAKE_SHELL?= sh
-.if ${MAKE_SHELL} == "csh" || ${MAKE_SHELL} == "sh" || ${MAKE_SHELL} == "ksh"
-CFLAGS+= -DDEFSHELLNAME=\"${MAKE_SHELL}\"
-.else
-.error "MAKE_SHELL must be set to one of \"csh\", \"sh\" or \"ksh\"."
-.endif
-
-# if we are here we don't want this called 'make'
-PROG= fmake
-CLEANFILES+= fmake.1
-fmake.1: make.1
- ${CP} ${.ALLSRC} ${.TARGET}
-
-.include <bsd.prog.mk>
diff --git a/usr.bin/make/Makefile.dist b/usr.bin/make/Makefile.dist
deleted file mode 100644
index 8823d74..0000000
--- a/usr.bin/make/Makefile.dist
+++ /dev/null
@@ -1,10 +0,0 @@
-# $FreeBSD$
-# a simple makefile to help builds on !FreeBSD systems
-pmake:
- @echo 'make started.'
- cc -D__dead2="" -D__unused="" -Darc4random=random -D__FBSDID="static const char *id=" -DDEFSHELLNAME=\"sh\" -I. -c *.c
- cc *.o -o pmake
- @echo 'make completed.'
-
-clean:
- @rm -f *.o pmake
diff --git a/usr.bin/make/arch.c b/usr.bin/make/arch.c
deleted file mode 100644
index e4f6b0d..0000000
--- a/usr.bin/make/arch.c
+++ /dev/null
@@ -1,1224 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)arch.c 8.2 (Berkeley) 1/2/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * arch.c --
- * Functions to manipulate libraries, archives and their members.
- *
- * Once again, cacheing/hashing comes into play in the manipulation
- * of archives. The first time an archive is referenced, all of its members'
- * headers are read and hashed and the archive closed again. All hashed
- * archives are kept on a list which is searched each time an archive member
- * is referenced.
- *
- * The interface to this module is:
- * Arch_ParseArchive Given an archive specification, return a list
- * of GNode's, one for each member in the spec.
- * FALSE is returned if the specification is
- * invalid for some reason.
- *
- * Arch_Touch Alter the modification time of the archive
- * member described by the given node to be
- * the current time.
- *
- * Arch_TouchLib Update the modification time of the library
- * described by the given node. This is special
- * because it also updates the modification time
- * of the library's table of contents.
- *
- * Arch_MTime Find the modification time of a member of
- * an archive *in the archive*. The time is also
- * placed in the member's GNode. Returns the
- * modification time.
- *
- * Arch_MemTime Find the modification time of a member of
- * an archive. Called when the member doesn't
- * already exist. Looks in the archive for the
- * modification time. Returns the modification
- * time.
- *
- * Arch_FindLib Search for a library along a path. The
- * library name in the GNode should be in
- * -l<name> format.
- *
- * Arch_LibOODate Special function to decide if a library node
- * is out-of-date.
- *
- * Arch_Init Initialize this module.
- */
-
-#include <sys/param.h>
-#include <sys/queue.h>
-#include <sys/types.h>
-#include <ar.h>
-#include <ctype.h>
-#include <errno.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <regex.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <utime.h>
-
-#include "arch.h"
-#include "buf.h"
-#include "config.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "hash.h"
-#include "make.h"
-#include "parse.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-typedef struct Arch {
- char *name; /* Name of archive */
-
- /*
- * All the members of the archive described
- * by <name, struct ar_hdr *> key/value pairs
- */
- Hash_Table members;
-
- TAILQ_ENTRY(Arch) link; /* link all cached archives */
-} Arch;
-
-/* Lst of archives we've already examined */
-static TAILQ_HEAD(, Arch) archives = TAILQ_HEAD_INITIALIZER(archives);
-
-
-/* size of the name field in the archive member header */
-#define AR_NAMSIZ sizeof(((struct ar_hdr *)0)->ar_name)
-
-/*
- * This structure is used while reading/writing an archive
- */
-struct arfile {
- FILE *fp; /* archive file */
- char *fname; /* name of the file */
- struct ar_hdr hdr; /* current header */
- char sname[AR_NAMSIZ + 1]; /* short name */
- char *member; /* (long) member name */
- size_t mlen; /* size of the above */
- char *nametab; /* name table */
- size_t nametablen; /* size of the table */
- int64_t time; /* from ar_date */
- uint64_t size; /* from ar_size */
- off_t pos; /* header pos of current entry */
-};
-
-/*
- * Name of the symbol table. The original BSD used "__.SYMDEF". Rumours go
- * that this name may have a slash appended sometimes. Actually FreeBSD
- * uses "/" which probably came from SVR4.
- */
-#define SVR4_RANLIBMAG "/"
-#define BSD_RANLIBMAG "__.SYMDEF"
-
-/*
- * Name of the filename table. The 4.4BSD ar format did not use this, but
- * puts long filenames directly between the member header and the object
- * file.
- */
-#define SVR4_NAMEMAG "//"
-#define BSD_NAMEMAG "ARFILENAMES/"
-
-/*
- * 44BSD long filename key. Use a local define here instead of relying
- * on ar.h because we want this to continue working even when the
- * definition is removed from ar.h.
- */
-#define BSD_EXT1 "#1/"
-#define BSD_EXT1LEN 3
-
-/* if this is TRUE make archive errors fatal */
-Boolean arch_fatal = TRUE;
-
-/**
- * ArchError
- * An error happened while handling an archive. BSDmake traditionally
- * ignored these errors. Now this is dependent on the global arch_fatal
- * which, if true, makes these errors fatal and, if false, just emits an
- * error message.
- */
-#define ArchError(ARGS) do { \
- if (arch_fatal) \
- Fatal ARGS; \
- else \
- Error ARGS; \
- } while (0)
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_ParseArchive --
- * Parse the archive specification in the given line and find/create
- * the nodes for the specified archive members, placing their nodes
- * on the given list, given the pointer to the start of the
- * specification, a Lst on which to place the nodes, and a context
- * in which to expand variables.
- *
- * Results:
- * TRUE if it was a valid specification. The linePtr is updated
- * to point to the first non-space after the archive spec. The
- * nodes for the members are placed on the given list.
- *
- * Side Effects:
- * Some nodes may be created. The given list is extended.
- *
- *-----------------------------------------------------------------------
- */
-Boolean
-Arch_ParseArchive(char **linePtr, Lst *nodeLst, GNode *ctxt)
-{
- char *cp; /* Pointer into line */
- GNode *gn; /* New node */
- char *libName; /* Library-part of specification */
- char *memName; /* Member-part of specification */
- char *nameBuf; /* temporary place for node name */
- char saveChar; /* Ending delimiter of member-name */
- Boolean subLibName; /* TRUE if libName should have/had
- * variable substitution performed on it */
-
- libName = *linePtr;
-
- subLibName = FALSE;
-
- for (cp = libName; *cp != '(' && *cp != '\0'; cp++) {
- if (*cp == '$') {
- /*
- * Variable spec, so call the Var module to parse the
- * puppy so we can safely advance beyond it...
- */
- size_t length = 0;
- Boolean freeIt;
- char *result;
-
- result = Var_Parse(cp, ctxt, TRUE, &length, &freeIt);
- if (result == var_Error) {
- return (FALSE);
- }
- subLibName = TRUE;
-
- if (freeIt) {
- free(result);
- }
- cp += length - 1;
- }
- }
-
- *cp++ = '\0';
- if (subLibName) {
- libName = Buf_Peel(Var_Subst(libName, ctxt, TRUE));
- }
-
- for (;;) {
- /*
- * First skip to the start of the member's name, mark that
- * place and skip to the end of it (either white-space or
- * a close paren).
- */
-
- /*
- * TRUE if need to substitute in memName
- */
- Boolean doSubst = FALSE;
-
- while (*cp != '\0' && *cp != ')' &&
- isspace((unsigned char)*cp)) {
- cp++;
- }
-
- memName = cp;
- while (*cp != '\0' && *cp != ')' &&
- !isspace((unsigned char)*cp)) {
- if (*cp == '$') {
- /*
- * Variable spec, so call the Var module to
- * parse the puppy so we can safely advance
- * beyond it...
- */
- size_t length = 0;
- Boolean freeIt;
- char *result;
-
- result = Var_Parse(cp, ctxt, TRUE,
- &length, &freeIt);
- if (result == var_Error) {
- return (FALSE);
- }
- doSubst = TRUE;
-
- if (freeIt) {
- free(result);
- }
- cp += length;
- } else {
- cp++;
- }
- }
-
- /*
- * If the specification ends without a closing parenthesis,
- * chances are there's something wrong (like a missing
- * backslash), so it's better to return failure than allow
- * such things to happen
- */
- if (*cp == '\0') {
- printf("No closing parenthesis in archive "
- "specification\n");
- return (FALSE);
- }
-
- /*
- * If we didn't move anywhere, we must be done
- */
- if (cp == memName) {
- break;
- }
-
- saveChar = *cp;
- *cp = '\0';
-
- /*
- * XXX: This should be taken care of intelligently by
- * SuffExpandChildren, both for the archive and the member
- * portions.
- */
- /*
- * If member contains variables, try and substitute for them.
- * This will slow down archive specs with dynamic sources, of
- * course, since we'll be (non-)substituting them three times,
- * but them's the breaks -- we need to do this since
- * SuffExpandChildren calls us, otherwise we could assume the
- * thing would be taken care of later.
- */
- if (doSubst) {
- char *buf;
- char *sacrifice;
- char *oldMemName = memName;
- size_t sz;
- Buffer *buf1;
-
- /*
- * Now form an archive spec and recurse to deal with
- * nested variables and multi-word variable values....
- * The results are just placed at the end of the
- * nodeLst we're returning.
- */
- buf1 = Var_Subst(memName, ctxt, TRUE);
- memName = Buf_Data(buf1);
-
- sz = strlen(memName) + strlen(libName) + 3;
- buf = emalloc(sz);
-
- snprintf(buf, sz, "%s(%s)", libName, memName);
-
- sacrifice = buf;
-
- if (strchr(memName, '$') &&
- strcmp(memName, oldMemName) == 0) {
- /*
- * Must contain dynamic sources, so we can't
- * deal with it now.
- * Just create an ARCHV node for the thing and
- * let SuffExpandChildren handle it...
- */
- gn = Targ_FindNode(buf, TARG_CREATE);
-
- if (gn == NULL) {
- free(buf);
- Buf_Destroy(buf1, FALSE);
- return (FALSE);
- }
- gn->type |= OP_ARCHV;
- Lst_AtEnd(nodeLst, (void *)gn);
- } else if (!Arch_ParseArchive(&sacrifice, nodeLst,
- ctxt)) {
- /*
- * Error in nested call -- free buffer and
- * return FALSE ourselves.
- */
- free(buf);
- Buf_Destroy(buf1, FALSE);
- return (FALSE);
- }
-
- /* Free buffer and continue with our work. */
- free(buf);
- Buf_Destroy(buf1, FALSE);
-
- } else if (Dir_HasWildcards(memName)) {
- Lst members = Lst_Initializer(members);
- char *member;
- size_t sz = MAXPATHLEN;
- size_t nsz;
-
- nameBuf = emalloc(sz);
-
- Path_Expand(memName, &dirSearchPath, &members);
- while (!Lst_IsEmpty(&members)) {
- member = Lst_DeQueue(&members);
- nsz = strlen(libName) + strlen(member) + 3;
- if (nsz > sz) {
- sz = nsz * 2;
- nameBuf = erealloc(nameBuf, sz);
- }
-
- snprintf(nameBuf, sz, "%s(%s)",
- libName, member);
- free(member);
- gn = Targ_FindNode(nameBuf, TARG_CREATE);
- if (gn == NULL) {
- free(nameBuf);
- /* XXXHB Lst_Destroy(&members) */
- return (FALSE);
- }
- /*
- * We've found the node, but have to make sure
- * the rest of the world knows it's an archive
- * member, without having to constantly check
- * for parentheses, so we type the thing with
- * the OP_ARCHV bit before we place it on the
- * end of the provided list.
- */
- gn->type |= OP_ARCHV;
- Lst_AtEnd(nodeLst, gn);
- }
- free(nameBuf);
- } else {
- size_t sz = strlen(libName) + strlen(memName) + 3;
-
- nameBuf = emalloc(sz);
- snprintf(nameBuf, sz, "%s(%s)", libName, memName);
- gn = Targ_FindNode(nameBuf, TARG_CREATE);
- free(nameBuf);
- if (gn == NULL) {
- return (FALSE);
- }
- /*
- * We've found the node, but have to make sure the
- * rest of the world knows it's an archive member,
- * without having to constantly check for parentheses,
- * so we type the thing with the OP_ARCHV bit before
- * we place it on the end of the provided list.
- */
- gn->type |= OP_ARCHV;
- Lst_AtEnd(nodeLst, gn);
- }
- if (doSubst) {
- free(memName);
- }
-
- *cp = saveChar;
- }
-
- /*
- * If substituted libName, free it now, since we need it no longer.
- */
- if (subLibName) {
- free(libName);
- }
-
- /*
- * We promised the pointer would be set up at the next non-space, so
- * we must advance cp there before setting *linePtr... (note that on
- * entrance to the loop, cp is guaranteed to point at a ')')
- */
- do {
- cp++;
- } while (*cp != '\0' && isspace((unsigned char)*cp));
-
- *linePtr = cp;
- return (TRUE);
-}
-
-/*
- * Close an archive file an free all resources
- */
-static void
-ArchArchiveClose(struct arfile *ar)
-{
-
- if (ar->nametab != NULL)
- free(ar->nametab);
- free(ar->member);
- if (ar->fp != NULL) {
- if (fclose(ar->fp) == EOF)
- ArchError(("%s: close error", ar->fname));
- }
- free(ar->fname);
- free(ar);
-}
-
-/*
- * Open an archive file.
- */
-static struct arfile *
-ArchArchiveOpen(const char *archive, const char *mode)
-{
- struct arfile *ar;
- char magic[SARMAG];
-
- ar = emalloc(sizeof(*ar));
- ar->fname = estrdup(archive);
- ar->mlen = 100;
- ar->member = emalloc(ar->mlen);
- ar->nametab = NULL;
- ar->nametablen = 0;
-
- if ((ar->fp = fopen(ar->fname, mode)) == NULL) {
- DEBUGM(ARCH, ("%s", ar->fname));
- ArchArchiveClose(ar);
- return (NULL);
- }
-
- /* read MAGIC */
- if (fread(magic, SARMAG, 1, ar->fp) != 1 ||
- strncmp(magic, ARMAG, SARMAG) != 0) {
- ArchError(("%s: bad archive magic\n", ar->fname));
- ArchArchiveClose(ar);
- return (NULL);
- }
-
- ar->pos = 0;
- return (ar);
-}
-
-/*
- * Read the next header from the archive. The return value will be +1 if
- * the header is read successfully, 0 on EOF and -1 if an error happened.
- * On a successful return sname contains the truncated member name and
- * member the full name. hdr contains the member header. For the symbol table
- * names of length 0 are returned. The entry for the file name table is never
- * returned.
- */
-static int
-ArchArchiveNext(struct arfile *ar)
-{
- char *end;
- int have_long_name;
- u_long offs;
- char *ptr;
- size_t ret;
- char buf[MAX(sizeof(ar->hdr.ar_size), sizeof(ar->hdr.ar_date)) + 1];
-
- next:
- /*
- * Seek to the next header.
- */
- if (ar->pos == 0) {
- ar->pos = SARMAG;
- } else {
- ar->pos += sizeof(ar->hdr) + ar->size;
- if (ar->size % 2 == 1)
- ar->pos++;
- }
-
- if (fseeko(ar->fp, ar->pos, SEEK_SET) == -1) {
- ArchError(("%s: cannot seek to %jd: %s", ar->fname,
- (intmax_t)ar->pos, strerror(errno)));
- return (-1);
- }
-
- /*
- * Read next member header
- */
- ret = fread(&ar->hdr, sizeof(ar->hdr), 1, ar->fp);
- if (ret != 1) {
- if (feof(ar->fp))
- return (0);
- ArchError(("%s: error reading member header: %s", ar->fname,
- strerror(errno)));
- return (-1);
- }
- if (strncmp(ar->hdr.ar_fmag, ARFMAG, sizeof(ar->hdr.ar_fmag)) != 0) {
- ArchError(("%s: bad entry magic", ar->fname));
- return (-1);
- }
-
- /*
- * looks like a member - get name by stripping trailing spaces
- * and NUL terminating.
- */
- strlcpy(ar->sname, ar->hdr.ar_name, AR_NAMSIZ + 1);
- for (ptr = ar->sname + AR_NAMSIZ; ptr > ar->sname; ptr--)
- if (ptr[-1] != ' ')
- break;
-
- *ptr = '\0';
-
- /*
- * Parse the size. All entries need to have a size. Be careful
- * to not allow buffer overruns.
- */
- strlcpy(buf, ar->hdr.ar_size, sizeof(ar->hdr.ar_size) + 1);
-
- errno = 0;
- ar->size = strtoumax(buf, &end, 10);
- if (errno != 0 || strspn(end, " ") != strlen(end)) {
- ArchError(("%s: bad size format in archive '%s'",
- ar->fname, buf));
- return (-1);
- }
-
- /*
- * Look for the extended name table. Do this before parsing
- * the date because this table doesn't need a date.
- */
- if (strcmp(ar->sname, BSD_NAMEMAG) == 0 ||
- strcmp(ar->sname, SVR4_NAMEMAG) == 0) {
- /* filename table - read it in */
- ar->nametablen = ar->size;
- ar->nametab = emalloc(ar->nametablen);
-
- ret = fread(ar->nametab, 1, ar->nametablen, ar->fp);
- if (ret != ar->nametablen) {
- if (ferror(ar->fp)) {
- ArchError(("%s: cannot read nametab: %s",
- ar->fname, strerror(errno)));
- } else {
- ArchError(("%s: cannot read nametab: "
- "short read", ar->fname, strerror(errno)));
- }
- return (-1);
- }
-
- /*
- * NUL terminate the entries. Entries are \n terminated
- * and may have a trailing / or \.
- */
- ptr = ar->nametab;
- while (ptr < ar->nametab + ar->nametablen) {
- if (*ptr == '\n') {
- if (ptr[-1] == '/' || ptr[-1] == '\\')
- ptr[-1] = '\0';
- *ptr = '\0';
- }
- ptr++;
- }
-
- /* get next archive entry */
- goto next;
- }
-
- /*
- * Now parse the modification date. Be careful to not overrun
- * buffers.
- */
- strlcpy(buf, ar->hdr.ar_date, sizeof(ar->hdr.ar_date) + 1);
-
- errno = 0;
- ar->time = (int64_t)strtoll(buf, &end, 10);
- if (errno != 0 || strspn(end, " ") != strlen(end)) {
- ArchError(("%s: bad date format in archive '%s'",
- ar->fname, buf));
- return (-1);
- }
-
- /*
- * Now check for the symbol table. This should really be the first
- * entry, but we don't check this.
- */
- if (strcmp(ar->sname, BSD_RANLIBMAG) == 0 ||
- strcmp(ar->sname, SVR4_RANLIBMAG) == 0) {
- /* symbol table - return a zero length name */
- ar->member[0] = '\0';
- ar->sname[0] = '\0';
- return (1);
- }
-
- have_long_name = 0;
-
- /*
- * Look whether this is a long name. There are several variants
- * of long names:
- * "#1/12 " - 12 length of following filename
- * "/17 " - index into name table
- * " 17 " - index into name table
- * Note that in the last case we must also check that there is no
- * slash in the name because of filenames with leading spaces:
- * " 777.o/ " - filename 777.o
- */
- if (ar->sname[0] == '/' || (ar->sname[0] == ' ' &&
- strchr(ar->sname, '/') == NULL)) {
- /* SVR4 extended name */
- errno = 0;
- offs = strtoul(ar->sname + 1, &end, 10);
- if (errno != 0 || *end != '\0' || offs >= ar->nametablen ||
- end == ar->sname + 1) {
- ArchError(("%s: bad extended name '%s'", ar->fname,
- ar->sname));
- return (-1);
- }
-
- /* fetch the name */
- if (ar->mlen <= strlen(ar->nametab + offs)) {
- ar->mlen = strlen(ar->nametab + offs) + 1;
- ar->member = erealloc(ar->member, ar->mlen);
- }
- strcpy(ar->member, ar->nametab + offs);
-
- have_long_name = 1;
-
- } else if (strncmp(ar->sname, BSD_EXT1, BSD_EXT1LEN) == 0 &&
- isdigit(ar->sname[BSD_EXT1LEN])) {
- /* BSD4.4 extended name */
- errno = 0;
- offs = strtoul(ar->sname + BSD_EXT1LEN, &end, 10);
- if (errno != 0 || *end != '\0' ||
- end == ar->sname + BSD_EXT1LEN) {
- ArchError(("%s: bad extended name '%s'", ar->fname,
- ar->sname));
- return (-1);
- }
-
- /* read it from the archive */
- if (ar->mlen <= offs) {
- ar->mlen = offs + 1;
- ar->member = erealloc(ar->member, ar->mlen);
- }
- ret = fread(ar->member, 1, offs, ar->fp);
- if (ret != offs) {
- if (ferror(ar->fp)) {
- ArchError(("%s: reading extended name: %s",
- ar->fname, strerror(errno)));
- } else {
- ArchError(("%s: reading extended name: "
- "short read", ar->fname));
- }
- return (-1);
- }
- ar->member[offs] = '\0';
-
- have_long_name = 1;
- }
-
- /*
- * Now remove the trailing slash that Svr4 puts at
- * the end of the member name to support trailing spaces in names.
- */
- if (ptr > ar->sname && ptr[-1] == '/')
- *--ptr = '\0';
-
- if (!have_long_name) {
- if (strlen(ar->sname) >= ar->mlen) {
- ar->mlen = strlen(ar->sname) + 1;
- ar->member = erealloc(ar->member, ar->mlen);
- }
- strcpy(ar->member, ar->sname);
- }
-
- return (1);
-}
-
-/*
- * Touch the current archive member by writing a new header with an
- * updated timestamp. The return value is 0 for success and -1 for errors.
- */
-static int
-ArchArchiveTouch(struct arfile *ar, int64_t ts)
-{
-
- /* seek to our header */
- if (fseeko(ar->fp, ar->pos, SEEK_SET) == -1) {
- ArchError(("%s: cannot seek to %jd: %s", ar->fname,
- (intmax_t)ar->pos, strerror(errno)));
- return (-1);
- }
-
- /*
- * change timestamp, be sure to not NUL-terminated it, but
- * to fill with spaces.
- */
- snprintf(ar->hdr.ar_date, sizeof(ar->hdr.ar_date), "%jd",
- (intmax_t)ts);
- memset(ar->hdr.ar_date + strlen(ar->hdr.ar_date),
- ' ', sizeof(ar->hdr.ar_date) - strlen(ar->hdr.ar_date));
-
- if (fwrite(&ar->hdr, sizeof(ar->hdr), 1, ar->fp) != 1) {
- ArchError(("%s: cannot touch: %s", ar->fname, strerror(errno)));
- return (-1);
- }
- return (0);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ArchFindMember --
- * Locate a member of an archive, given the path of the archive and
- * the path of the desired member. If the archive is to be modified,
- * the mode should be "r+", if not, it should be "r". The archive
- * file is returned positioned at the correct header.
- *
- * Results:
- * A struct arfile *, opened for reading and, possibly writing,
- * positioned at the member's header, or NULL if the member was
- * nonexistent.
- *
- *-----------------------------------------------------------------------
- */
-static struct arfile *
-ArchFindMember(const char *archive, const char *member, const char *mode)
-{
- struct arfile *ar;
- const char *cp; /* Useful character pointer */
-
- if ((ar = ArchArchiveOpen(archive, mode)) == NULL)
- return (NULL);
-
- /*
- * Because of space constraints and similar things, files are archived
- * using their final path components, not the entire thing, so we need
- * to point 'member' to the final component, if there is one, to make
- * the comparisons easier...
- */
- if (member != NULL) {
- cp = strrchr(member, '/');
- if (cp != NULL) {
- member = cp + 1;
- }
- }
-
- while (ArchArchiveNext(ar) > 0) {
- /*
- * When comparing there are actually three cases:
- * (1) the name fits into the limit og af_name,
- * (2) the name is longer and the archive supports long names,
- * (3) the name is longer and the archive doesn't support long
- * names.
- * Because we don't know whether the archive supports long
- * names or not we need to be careful.
- */
- if (member == NULL) {
- /* special case - symbol table */
- if (ar->member[0] == '\0')
- return (ar);
- } else if (strlen(member) <= AR_NAMSIZ) {
- /* case (1) */
- if (strcmp(ar->member, member) == 0)
- return (ar);
- } else if (strcmp(ar->member, member) == 0) {
- /* case (3) */
- return (ar);
- } else {
- /* case (2) */
- if (strlen(ar->member) == AR_NAMSIZ &&
- strncmp(member, ar->member, AR_NAMSIZ) == 0)
- return (ar);
- }
- }
-
- /* not found */
- ArchArchiveClose(ar);
- return (NULL);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ArchStatMember --
- * Locate a member of an archive, given the path of the archive and
- * the path of the desired member, and a boolean representing whether
- * or not the archive should be hashed (if not already hashed).
- *
- * Results:
- * A pointer to the current struct ar_hdr structure for the member. Note
- * That no position is returned, so this is not useful for touching
- * archive members. This is mostly because we have no assurances that
- * The archive will remain constant after we read all the headers, so
- * there's not much point in remembering the position...
- *
- * Side Effects:
- *
- *-----------------------------------------------------------------------
- */
-static int64_t
-ArchStatMember(const char *archive, const char *member, Boolean hash)
-{
- struct arfile *arf;
- int64_t ret;
- int t;
- char *cp; /* Useful character pointer */
- Arch *ar; /* Archive descriptor */
- Hash_Entry *he; /* Entry containing member's description */
- char copy[AR_NAMSIZ + 1];
-
- /*
- * Because of space constraints and similar things, files are archived
- * using their final path components, not the entire thing, so we need
- * to point 'member' to the final component, if there is one, to make
- * the comparisons easier...
- */
- if (member != NULL) {
- cp = strrchr(member, '/');
- if (cp != NULL)
- member = cp + 1;
- }
-
- TAILQ_FOREACH(ar, &archives, link) {
- if (strcmp(archive, ar->name) == 0)
- break;
- }
- if (ar == NULL) {
- /* archive not found */
- if (!hash) {
- /*
- * Caller doesn't want the thing hashed, just use
- * ArchFindMember to read the header for the member
- * out and close down the stream again.
- */
- arf = ArchFindMember(archive, member, "r");
- if (arf == NULL) {
- return (INT64_MIN);
- }
- ret = arf->time;
- ArchArchiveClose(arf);
- return (ret);
- }
-
- /*
- * We don't have this archive on the list yet, so we want to
- * find out everything that's in it and cache it so we can get
- * at it quickly.
- */
- arf = ArchArchiveOpen(archive, "r");
- if (arf == NULL) {
- return (INT64_MIN);
- }
-
- /* create archive data structure */
- ar = emalloc(sizeof(*ar));
- ar->name = estrdup(archive);
- Hash_InitTable(&ar->members, -1);
-
- while ((t = ArchArchiveNext(arf)) > 0) {
- he = Hash_CreateEntry(&ar->members, arf->member, NULL);
- Hash_SetValue(he, emalloc(sizeof(int64_t)));
- *(int64_t *)Hash_GetValue(he) = arf->time;
- }
-
- ArchArchiveClose(arf);
-
- if (t < 0) {
- /* error happened - throw away everything */
- Hash_DeleteTable(&ar->members);
- free(ar->name);
- free(ar);
- return (INT64_MIN);
- }
-
- TAILQ_INSERT_TAIL(&archives, ar, link);
- }
-
- /*
- * Now that the archive has been read and cached, we can look into
- * the hash table to find the desired member's header.
- */
- he = Hash_FindEntry(&ar->members, member);
- if (he != NULL)
- return (*(int64_t *)Hash_GetValue (he));
-
- if (member != NULL && strlen(member) > AR_NAMSIZ) {
- /* Try truncated name */
- strlcpy(copy, member, AR_NAMSIZ + 1);
-
- if ((he = Hash_FindEntry(&ar->members, copy)) != NULL)
- return (*(int64_t *)Hash_GetValue(he));
- }
-
- return (INT64_MIN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_Touch --
- * Touch a member of an archive.
- *
- * Results:
- * The 'time' field of the member's header is updated.
- *
- * Side Effects:
- * The modification time of the entire archive is also changed.
- * For a library, this could necessitate the re-ranlib'ing of the
- * whole thing.
- *
- *-----------------------------------------------------------------------
- */
-void
-Arch_Touch(GNode *gn)
-{
- struct arfile *ar;
-
- ar = ArchFindMember(Var_Value(ARCHIVE, gn),
- Var_Value(TARGET, gn), "r+");
-
- if (ar != NULL) {
- ArchArchiveTouch(ar, (int64_t)now);
- ArchArchiveClose(ar);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_TouchLib --
- * Given a node which represents a library, touch the thing, making
- * sure that the table of contents also is touched.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Both the modification time of the library and of the RANLIBMAG
- * member are set to 'now'.
- *
- *-----------------------------------------------------------------------
- */
-void
-Arch_TouchLib(GNode *gn)
-{
- struct arfile *ar; /* Open archive */
- struct utimbuf times; /* Times for utime() call */
-
- ar = ArchFindMember(gn->path, NULL, "r+");
- if (ar != NULL) {
- ArchArchiveTouch(ar, (int64_t)now);
- ArchArchiveClose(ar);
-
- times.actime = times.modtime = now;
- utime(gn->path, &times);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_MTime --
- * Return the modification time of a member of an archive, given its
- * name.
- *
- * Results:
- * The modification time(seconds).
- * XXXHB this should be a long.
- *
- * Side Effects:
- * The mtime field of the given node is filled in with the value
- * returned by the function.
- *
- *-----------------------------------------------------------------------
- */
-int
-Arch_MTime(GNode *gn)
-{
- int64_t mtime;
-
- mtime = ArchStatMember(Var_Value(ARCHIVE, gn),
- Var_Value(TARGET, gn), TRUE);
-
- if (mtime == INT_MIN) {
- mtime = 0;
- }
- gn->mtime = (int)mtime; /* XXX */
- return (gn->mtime);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_MemMTime --
- * Given a non-existent archive member's node, get its modification
- * time from its archived form, if it exists.
- *
- * Results:
- * The modification time.
- *
- * Side Effects:
- * The mtime field is filled in.
- *
- *-----------------------------------------------------------------------
- */
-int
-Arch_MemMTime(GNode *gn)
-{
- LstNode *ln;
- GNode *pgn;
- char *nameStart;
- char *nameEnd;
-
- for (ln = Lst_First(&gn->parents); ln != NULL; ln = Lst_Succ(ln)) {
- pgn = Lst_Datum(ln);
-
- if (pgn->type & OP_ARCHV) {
- /*
- * If the parent is an archive specification and is
- * being made and its member's name matches the name of
- * the node we were given, record the modification time
- * of the parent in the child. We keep searching its
- * parents in case some other parent requires this
- * child to exist...
- */
- nameStart = strchr(pgn->name, '(') + 1;
- nameEnd = strchr(nameStart, ')');
-
- if (pgn->make && strncmp(nameStart, gn->name,
- nameEnd - nameStart) == 0) {
- gn->mtime = Arch_MTime(pgn);
- }
- } else if (pgn->make) {
- /*
- * Something which isn't a library depends on the
- * existence of this target, so it needs to exist.
- */
- gn->mtime = 0;
- break;
- }
- }
- return (gn->mtime);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_FindLib --
- * Search for a named library along the given search path.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The node's 'path' field is set to the found path (including the
- * actual file name, not -l...). If the system can handle the -L
- * flag when linking (or we cannot find the library), we assume that
- * the user has placed the .LIBRARIES variable in the final linking
- * command (or the linker will know where to find it) and set the
- * TARGET variable for this node to be the node's name. Otherwise,
- * we set the TARGET variable to be the full path of the library,
- * as returned by Path_FindFile.
- *
- *-----------------------------------------------------------------------
- */
-void
-Arch_FindLib(GNode *gn, struct Path *path)
-{
- char *libName; /* file name for archive */
- size_t sz;
-
- sz = strlen(gn->name) + 4;
- libName = emalloc(sz);
- snprintf(libName, sz, "lib%s.a", &gn->name[2]);
-
- gn->path = Path_FindFile(libName, path);
-
- free(libName);
-
-#ifdef LIBRARIES
- Var_Set(TARGET, gn->name, gn);
-#else
- Var_Set(TARGET, gn->path == NULL ? gn->name : gn->path, gn);
-#endif /* LIBRARIES */
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Arch_LibOODate --
- * Decide if a node with the OP_LIB attribute is out-of-date. Called
- * from Make_OODate to make its life easier, with the library's
- * graph node.
- *
- * There are several ways for a library to be out-of-date that are
- * not available to ordinary files. In addition, there are ways
- * that are open to regular files that are not available to
- * libraries. A library that is only used as a source is never
- * considered out-of-date by itself. This does not preclude the
- * library's modification time from making its parent be out-of-date.
- * A library will be considered out-of-date for any of these reasons,
- * given that it is a target on a dependency line somewhere:
- * Its modification time is less than that of one of its
- * sources (gn->mtime < gn->cmtime).
- * Its modification time is greater than the time at which the
- * make began (i.e. it's been modified in the course
- * of the make, probably by archiving).
- * The modification time of one of its sources is greater than
- * the one of its RANLIBMAG member (i.e. its table of contents
- * is out-of-date). We don't compare of the archive time
- * vs. TOC time because they can be too close. In my
- * opinion we should not bother with the TOC at all since
- * this is used by 'ar' rules that affect the data contents
- * of the archive, not by ranlib rules, which affect the
- * TOC.
- *
- * Results:
- * TRUE if the library is out-of-date. FALSE otherwise.
- *
- * Side Effects:
- * The library will be hashed if it hasn't been already.
- *
- *-----------------------------------------------------------------------
- */
-Boolean
-Arch_LibOODate(GNode *gn)
-{
- int64_t mtime; /* The table-of-contents's mod time */
-
- if (OP_NOP(gn->type) && Lst_IsEmpty(&gn->children)) {
- return (FALSE);
- }
- if (gn->mtime > now || gn->mtime < gn->cmtime) {
- return (TRUE);
- }
-
- mtime = ArchStatMember(gn->path, NULL, FALSE);
- if (mtime == INT64_MIN) {
- /*
- * Not found. A library w/o a table of contents is out-of-date
- */
- if (DEBUG(ARCH) || DEBUG(MAKE)) {
- Debug("No TOC...");
- }
- return (TRUE);
- }
-
- /* XXX choose one. */
- if (DEBUG(ARCH) || DEBUG(MAKE)) {
- Debug("TOC modified %s...", Targ_FmtTime(mtime));
- }
- return (gn->cmtime > mtime);
-}
diff --git a/usr.bin/make/arch.h b/usr.bin/make/arch.h
deleted file mode 100644
index 3c28b2f..0000000
--- a/usr.bin/make/arch.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef arch_h_488adf7a
-#define arch_h_488adf7a
-
-#include "util.h"
-
-struct GNode;
-struct Lst;
-struct Path;
-
-/* archive errors are fatal */
-extern Boolean arch_fatal;
-
-Boolean Arch_ParseArchive(char **, struct Lst *, struct GNode *);
-void Arch_Touch(struct GNode *);
-void Arch_TouchLib(struct GNode *);
-int Arch_MTime(struct GNode *);
-int Arch_MemMTime(struct GNode *);
-void Arch_FindLib(struct GNode *, struct Path *);
-Boolean Arch_LibOODate(struct GNode *);
-
-#endif /* arch_h_488adf7a */
diff --git a/usr.bin/make/buf.c b/usr.bin/make/buf.c
deleted file mode 100644
index fa866d3..0000000
--- a/usr.bin/make/buf.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*-
- * Copyright (c) 2005 Max Okumoto
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)buf.c 8.1 (Berkeley) 6/6/93
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * buf.c
- * Functions for automatically-expanded buffers.
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include "buf.h"
-#include "util.h"
-
-/**
- * Returns the number of bytes in the buffer. Doesn't include the
- * null-terminating byte.
- */
-size_t
-Buf_Size(const Buffer *buf)
-{
-
- return (buf->end - buf->buf);
-}
-
-/**
- * Returns a reference to the data contained in the buffer.
- *
- * @note Adding data to the Buffer object may invalidate the reference.
- */
-char *
-Buf_Data(const Buffer *bp)
-{
-
- return (bp->buf);
-}
-
-/**
- * Expand the buffer to hold the number of additional bytes, plus
- * space to store a terminating NULL byte.
- */
-static inline void
-BufExpand(Buffer *bp, size_t nb)
-{
- size_t len = Buf_Size(bp);
- size_t size;
-
- if (bp->size < len + nb + 1) {
- size = bp->size + MAX(nb + 1, BUF_ADD_INC);
- bp->size = size;
- bp->buf = erealloc(bp->buf, size);
- bp->end = bp->buf + len;
- }
-}
-
-/**
- * Add a single byte to the buffer.
- */
-void
-Buf_AddByte(Buffer *bp, Byte byte)
-{
-
- BufExpand(bp, 1);
-
- *bp->end = byte;
- bp->end++;
- *bp->end = '\0';
-}
-
-/**
- * Add bytes to the buffer.
- */
-void
-Buf_AddBytes(Buffer *bp, size_t len, const Byte *bytes)
-{
-
- BufExpand(bp, len);
-
- memcpy(bp->end, bytes, len);
- bp->end += len;
- *bp->end = '\0';
-}
-
-/**
- * Get a reference to the internal buffer.
- *
- * len:
- * Pointer to where we return the number of bytes in the internal buffer.
- *
- * Returns:
- * return A pointer to the data.
- */
-Byte *
-Buf_GetAll(Buffer *bp, size_t *len)
-{
-
- if (len != NULL)
- *len = Buf_Size(bp);
-
- return (bp->buf);
-}
-
-/**
- * Get the contents of a buffer and destroy the buffer. If the buffer
- * is NULL, return NULL.
- *
- * Returns:
- * the pointer to the data.
- */
-char *
-Buf_Peel(Buffer *bp)
-{
- char *ret;
-
- if (bp == NULL)
- return (NULL);
- ret = bp->buf;
- free(bp);
- return (ret);
-}
-
-/**
- * Initialize a buffer. If no initial size is given, a reasonable
- * default is used.
- *
- * Returns:
- * A buffer object to be given to other functions in this library.
- *
- * Side Effects:
- * Space is allocated for the Buffer object and a internal buffer.
- */
-Buffer *
-Buf_Init(size_t size)
-{
- Buffer *bp; /* New Buffer */
-
- if (size <= 0)
- size = BUF_DEF_SIZE;
-
- bp = emalloc(sizeof(*bp));
- bp->size = size;
- bp->buf = emalloc(size);
- bp->end = bp->buf;
- *bp->end = '\0';
-
- return (bp);
-}
-
-/**
- * Destroy a buffer, and optionally free its data, too.
- *
- * Side Effects:
- * Space for the Buffer object and possibly the internal buffer
- * is de-allocated.
- */
-void
-Buf_Destroy(Buffer *buf, Boolean freeData)
-{
-
- if (freeData)
- free(buf->buf);
- free(buf);
-}
-
-/**
- * Replace the last byte in a buffer. If the buffer was empty
- * initially, then a new byte will be added.
- */
-void
-Buf_ReplaceLastByte(Buffer *bp, Byte byte)
-{
-
- if (bp->end == bp->buf) {
- Buf_AddByte(bp, byte);
- } else {
- *(bp->end - 1) = byte;
- }
-}
-
-/**
- * Append characters in str to Buffer object
- */
-void
-Buf_Append(Buffer *bp, const char str[])
-{
-
- Buf_AddBytes(bp, strlen(str), str);
-}
-
-/**
- * Append characters in buf to Buffer object
- */
-void
-Buf_AppendBuf(Buffer *bp, const Buffer *buf)
-{
-
- Buf_AddBytes(bp, Buf_Size(buf), buf->buf);
-}
-
-/**
- * Append characters between str and end to Buffer object.
- */
-void
-Buf_AppendRange(Buffer *bp, const char str[], const char *end)
-{
-
- Buf_AddBytes(bp, end - str, str);
-}
-
-/**
- * Convert newlines in buffer to spaces. The trailing newline is
- * removed.
- */
-void
-Buf_StripNewlines(Buffer *bp)
-{
- char *ptr = bp->end;
-
- /*
- * If there is anything in the buffer, remove the last
- * newline character.
- */
- if (ptr != bp->buf) {
- if (*(ptr - 1) == '\n') {
- /* shorten buffer */
- *(ptr - 1) = '\0';
- --bp->end;
- }
- --ptr;
- }
-
- /* Convert newline characters to a space characters. */
- while (ptr != bp->buf) {
- if (*ptr == '\n') {
- *ptr = ' ';
- }
- --ptr;
- }
-}
-/**
- * Clear the contents of the buffer.
- */
-void
-Buf_Clear(Buffer *bp)
-{
-
- bp->end = bp->buf;
- *bp->end = '\0';
-}
diff --git a/usr.bin/make/buf.h b/usr.bin/make/buf.h
deleted file mode 100644
index 106f348..0000000
--- a/usr.bin/make/buf.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)buf.h 8.2 (Berkeley) 4/28/95
- * $FreeBSD$
- */
-
-#ifndef buf_h_a61a6812
-#define buf_h_a61a6812
-
-/*-
- * buf.h --
- * Header for users of the buf library.
- */
-
-#include <sys/types.h>
-
-#include "util.h"
-
-/*
- * There are several places where expandable buffers are used (parse.c and
- * var.c). This constant is merely the starting point for those buffers. If
- * lines tend to be much shorter than this, it would be best to reduce BSIZE.
- * If longer, it should be increased. Reducing it will cause more copying to
- * be done for longer lines, but will save space for shorter ones. In any
- * case, it ought to be a power of two simply because most storage allocation
- * schemes allocate in powers of two.
- */
-#define MAKE_BSIZE 256 /* starting size for expandable buffers */
-
-#define BUF_DEF_SIZE 256 /* Default buffer size */
-#define BUF_ADD_INC 256 /* Expansion increment when Adding */
-
-typedef char Byte;
-
-typedef struct Buffer {
- size_t size; /* Current size of the buffer */
- Byte *buf; /* The buffer itself */
- Byte *end; /* Place to write to */
-} Buffer;
-
-void Buf_AddByte(Buffer *, Byte);
-void Buf_AddBytes(Buffer *, size_t, const Byte *);
-void Buf_Append(Buffer *, const char []);
-void Buf_AppendBuf(Buffer *, const Buffer *);
-void Buf_AppendRange(Buffer *, const char [], const char *);
-void Buf_Clear(Buffer *);
-char *Buf_Data(const Buffer *);
-void Buf_Destroy(Buffer *, Boolean);
-Byte *Buf_GetAll(Buffer *, size_t *);
-Buffer *Buf_Init(size_t);
-char *Buf_Peel(Buffer *);
-void Buf_ReplaceLastByte(Buffer *, Byte);
-size_t Buf_Size(const Buffer *);
-void Buf_StripNewlines(Buffer *);
-
-#endif /* buf_h_a61a6812 */
diff --git a/usr.bin/make/cond.c b/usr.bin/make/cond.c
deleted file mode 100644
index 6e7a094..0000000
--- a/usr.bin/make/cond.c
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cond.c 8.2 (Berkeley) 1/2/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * Functions to handle conditionals in a makefile.
- *
- * Interface:
- * Cond_Eval Evaluate the conditional in the passed line.
- */
-
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "buf.h"
-#include "cond.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "make.h"
-#include "parse.h"
-#include "str.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/*
- * The parsing of conditional expressions is based on this grammar:
- * E -> F || E
- * E -> F
- * F -> T && F
- * F -> T
- * T -> defined(variable)
- * T -> make(target)
- * T -> exists(file)
- * T -> empty(varspec)
- * T -> target(name)
- * T -> symbol
- * T -> $(varspec) op value
- * T -> $(varspec) == "string"
- * T -> $(varspec) != "string"
- * T -> ( E )
- * T -> ! T
- * op -> == | != | > | < | >= | <=
- *
- * 'symbol' is some other symbol to which the default function (condDefProc)
- * is applied.
- *
- * Tokens are scanned from the 'condExpr' string. The scanner (CondToken)
- * will return And for '&' and '&&', Or for '|' and '||', Not for '!',
- * LParen for '(', RParen for ')' and will evaluate the other terminal
- * symbols, using either the default function or the function given in the
- * terminal, and return the result as either True or False.
- *
- * All Non-Terminal functions (CondE, CondF and CondT) return Err on error.
- */
-typedef enum {
- And,
- Or,
- Not,
- True,
- False,
- LParen,
- RParen,
- EndOfFile,
- None,
- Err
-} Token;
-
-typedef Boolean CondProc(int, char *);
-
-/*-
- * Structures to handle elegantly the different forms of #if's. The
- * last two fields are stored in condInvert and condDefProc, respectively.
- */
-static void CondPushBack(Token);
-static int CondGetArg(char **, char **, const char *, Boolean);
-static CondProc CondDoDefined;
-static CondProc CondDoMake;
-static CondProc CondDoExists;
-static CondProc CondDoTarget;
-static char *CondCvtArg(char *, double *);
-static Token CondToken(Boolean);
-static Token CondT(Boolean);
-static Token CondF(Boolean);
-static Token CondE(Boolean);
-
-static const struct If {
- Boolean doNot; /* TRUE if default function should be negated */
- CondProc *defProc; /* Default function to apply */
- Boolean isElse; /* actually el<XXX> */
-} ifs[] = {
- [COND_IF] = { FALSE, CondDoDefined, FALSE },
- [COND_IFDEF] = { FALSE, CondDoDefined, FALSE },
- [COND_IFNDEF] = { TRUE, CondDoDefined, FALSE },
- [COND_IFMAKE] = { FALSE, CondDoMake, FALSE },
- [COND_IFNMAKE] = { TRUE, CondDoMake, FALSE },
- [COND_ELIF] = { FALSE, CondDoDefined, TRUE },
- [COND_ELIFDEF] = { FALSE, CondDoDefined, TRUE },
- [COND_ELIFNDEF] = { TRUE, CondDoDefined, TRUE },
- [COND_ELIFMAKE] = { FALSE, CondDoMake, TRUE },
- [COND_ELIFNMAKE] = { TRUE, CondDoMake, TRUE },
-};
-
-static Boolean condInvert; /* Invert the default function */
-static CondProc *condDefProc; /* default function to apply */
-static char *condExpr; /* The expression to parse */
-static Token condPushBack = None; /* Single push-back token in parsing */
-
-#define MAXIF 30 /* greatest depth of #if'ing */
-
-static Boolean condStack[MAXIF]; /* Stack of conditionals's values */
-static int condLineno[MAXIF]; /* Line numbers of the opening .if */
-static int condTop = MAXIF; /* Top-most conditional */
-static int skipIfLevel = 0; /* Depth of skipped conditionals */
-static int skipIfLineno[MAXIF]; /* Line numbers of skipped .ifs */
-Boolean skipLine = FALSE; /* Whether the parse module is skipping
- * lines */
-
-/**
- * CondPushBack
- * Push back the most recent token read. We only need one level of
- * this, so the thing is just stored in 'condPushback'.
- *
- * Side Effects:
- * condPushback is overwritten.
- */
-static void
-CondPushBack(Token t)
-{
-
- condPushBack = t;
-}
-
-/**
- * CondGetArg
- * Find the argument of a built-in function. parens is set to TRUE
- * if the arguments are bounded by parens.
- *
- * Results:
- * The length of the argument and the address of the argument.
- *
- * Side Effects:
- * The pointer is set to point to the closing parenthesis of the
- * function call.
- */
-static int
-CondGetArg(char **linePtr, char **argPtr, const char *func, Boolean parens)
-{
- char *cp;
- size_t argLen;
- Buffer *buf;
-
- cp = *linePtr;
- if (parens) {
- while (*cp != '(' && *cp != '\0') {
- cp++;
- }
- if (*cp == '(') {
- cp++;
- }
- }
-
- if (*cp == '\0') {
- /*
- * No arguments whatsoever. Because 'make' and 'defined'
- * aren't really "reserved words", we don't print a message.
- * I think this is better than hitting the user with a warning
- * message every time s/he uses the word 'make' or 'defined'
- * at the beginning of a symbol...
- */
- *argPtr = cp;
- return (0);
- }
-
- while (*cp == ' ' || *cp == '\t') {
- cp++;
- }
-
- /*
- * Create a buffer for the argument and start it out at 16 characters
- * long. Why 16? Why not?
- */
- buf = Buf_Init(16);
-
- while ((strchr(" \t)&|", *cp) == NULL) && (*cp != '\0')) {
- if (*cp == '$') {
- /*
- * Parse the variable spec and install it as part of
- * the argument if it's valid. We tell Var_Parse to
- * complain on an undefined variable, so we don't do
- * it too. Nor do we return an error, though perhaps
- * we should...
- */
- char *cp2;
- size_t len = 0;
- Boolean doFree;
-
- cp2 = Var_Parse(cp, VAR_CMD, TRUE, &len, &doFree);
-
- Buf_Append(buf, cp2);
- if (doFree) {
- free(cp2);
- }
- cp += len;
- } else {
- Buf_AddByte(buf, (Byte)*cp);
- cp++;
- }
- }
-
- Buf_AddByte(buf, (Byte)'\0');
- *argPtr = (char *)Buf_GetAll(buf, &argLen);
- Buf_Destroy(buf, FALSE);
-
- while (*cp == ' ' || *cp == '\t') {
- cp++;
- }
- if (parens && *cp != ')') {
- Parse_Error(PARSE_WARNING,
- "Missing closing parenthesis for %s()", func);
- return (0);
- } else if (parens) {
- /*
- * Advance pointer past close parenthesis.
- */
- cp++;
- }
-
- *linePtr = cp;
- return (argLen);
-}
-
-/**
- * CondDoDefined
- * Handle the 'defined' function for conditionals.
- *
- * Results:
- * TRUE if the given variable is defined.
- */
-static Boolean
-CondDoDefined(int argLen, char *arg)
-{
- char savec = arg[argLen];
- Boolean result;
-
- arg[argLen] = '\0';
- if (Var_Value(arg, VAR_CMD) != NULL) {
- result = TRUE;
- } else {
- result = FALSE;
- }
- arg[argLen] = savec;
- return (result);
-}
-
-/**
- * CondDoMake
- * Handle the 'make' function for conditionals.
- *
- * Results:
- * TRUE if the given target is being made.
- */
-static Boolean
-CondDoMake(int argLen, char *arg)
-{
- char savec = arg[argLen];
- Boolean result;
- const LstNode *ln;
-
- arg[argLen] = '\0';
- result = FALSE;
- LST_FOREACH(ln, &create) {
- if (Str_Match(Lst_Datum(ln), arg)) {
- result = TRUE;
- break;
- }
- }
- arg[argLen] = savec;
- return (result);
-}
-
-/**
- * CondDoExists
- * See if the given file exists.
- *
- * Results:
- * TRUE if the file exists and FALSE if it does not.
- */
-static Boolean
-CondDoExists(int argLen, char *arg)
-{
- char savec = arg[argLen];
- Boolean result;
- char *path;
-
- arg[argLen] = '\0';
- path = Path_FindFile(arg, &dirSearchPath);
- if (path != NULL) {
- result = TRUE;
- free(path);
- } else {
- result = FALSE;
- }
- arg[argLen] = savec;
- return (result);
-}
-
-/**
- * CondDoTarget
- * See if the given node exists and is an actual target.
- *
- * Results:
- * TRUE if the node exists as a target and FALSE if it does not.
- */
-static Boolean
-CondDoTarget(int argLen, char *arg)
-{
- char savec = arg[argLen];
- Boolean result;
- GNode *gn;
-
- arg[argLen] = '\0';
- gn = Targ_FindNode(arg, TARG_NOCREATE);
- if ((gn != NULL) && !OP_NOP(gn->type)) {
- result = TRUE;
- } else {
- result = FALSE;
- }
- arg[argLen] = savec;
- return (result);
-}
-
-/**
- * CondCvtArg
- * Convert the given number into a double. If the number begins
- * with 0x, it is interpreted as a hexadecimal integer
- * and converted to a double from there. All other strings just have
- * strtod called on them.
- *
- * Results:
- * Sets 'value' to double value of string.
- * Returns address of the first character after the last valid
- * character of the converted number.
- *
- * Side Effects:
- * Can change 'value' even if string is not a valid number.
- */
-static char *
-CondCvtArg(char *str, double *value)
-{
-
- if ((*str == '0') && (str[1] == 'x')) {
- long i;
-
- for (str += 2, i = 0; ; str++) {
- int x;
-
- if (isdigit((unsigned char)*str))
- x = *str - '0';
- else if (isxdigit((unsigned char)*str))
- x = 10 + *str -
- isupper((unsigned char)*str) ? 'A' : 'a';
- else {
- *value = (double)i;
- return (str);
- }
- i = (i << 4) + x;
- }
-
- } else {
- char *eptr;
-
- *value = strtod(str, &eptr);
- return (eptr);
- }
-}
-
-/**
- * CondToken
- * Return the next token from the input.
- *
- * Results:
- * A Token for the next lexical token in the stream.
- *
- * Side Effects:
- * condPushback will be set back to None if it is used.
- */
-static Token
-CondToken(Boolean doEval)
-{
- Token t;
-
- if (condPushBack != None) {
- t = condPushBack;
- condPushBack = None;
- return (t);
- }
-
- while (*condExpr == ' ' || *condExpr == '\t') {
- condExpr++;
- }
- switch (*condExpr) {
- case '(':
- t = LParen;
- condExpr++;
- break;
- case ')':
- t = RParen;
- condExpr++;
- break;
- case '|':
- if (condExpr[1] == '|') {
- condExpr++;
- }
- condExpr++;
- t = Or;
- break;
- case '&':
- if (condExpr[1] == '&') {
- condExpr++;
- }
- condExpr++;
- t = And;
- break;
- case '!':
- t = Not;
- condExpr++;
- break;
- case '\n':
- case '\0':
- t = EndOfFile;
- break;
- case '$': {
- char *lhs;
- const char *op;
- char *rhs;
- char zero[] = "0";
- size_t varSpecLen = 0;
- Boolean doFree;
-
- /*
- * Parse the variable spec and skip over it, saving its
- * value in lhs.
- */
- t = Err;
- lhs = Var_Parse(condExpr, VAR_CMD, doEval,
- &varSpecLen, &doFree);
- if (lhs == var_Error) {
- /*
- * Even if !doEval, we still report syntax
- * errors, which is what getting var_Error
- * back with !doEval means.
- */
- return (Err);
- }
- condExpr += varSpecLen;
-
- if (!isspace((unsigned char)*condExpr) &&
- strchr("!=><", *condExpr) == NULL) {
- Buffer *buf;
-
- buf = Buf_Init(0);
-
- Buf_Append(buf, lhs);
-
- if (doFree)
- free(lhs);
-
- for (;*condExpr &&
- !isspace((unsigned char)*condExpr);
- condExpr++)
- Buf_AddByte(buf, (Byte)*condExpr);
-
- Buf_AddByte(buf, (Byte)'\0');
- lhs = (char *)Buf_GetAll(buf, &varSpecLen);
- Buf_Destroy(buf, FALSE);
-
- doFree = TRUE;
- }
-
- /*
- * Skip whitespace to get to the operator
- */
- while (isspace((unsigned char)*condExpr))
- condExpr++;
-
- /*
- * Make sure the operator is a valid one. If it isn't a
- * known relational operator, pretend we got a
- * != 0 comparison.
- */
- op = condExpr;
- switch (*condExpr) {
- case '!':
- case '=':
- case '<':
- case '>':
- if (condExpr[1] == '=') {
- condExpr += 2;
- } else {
- condExpr += 1;
- }
- while (isspace((unsigned char)*condExpr)) {
- condExpr++;
- }
- if (*condExpr == '\0') {
- Parse_Error(PARSE_WARNING,
- "Missing right-hand-side of operator");
- goto error;
- }
- rhs = condExpr;
- break;
-
- default:
- op = "!=";
- rhs = zero;
- break;
- }
- if (*rhs == '"') {
- /*
- * Doing a string comparison. Only allow == and
- * != for * operators.
- */
- char *string;
- char *cp, *cp2;
- int qt;
- Buffer *buf;
-
- do_string_compare:
- if (((*op != '!') && (*op != '=')) ||
- (op[1] != '=')) {
- Parse_Error(PARSE_WARNING,
- "String comparison operator should "
- "be either == or !=");
- goto error;
- }
-
- buf = Buf_Init(0);
- qt = *rhs == '"' ? 1 : 0;
-
- for (cp = &rhs[qt];
- ((qt && (*cp != '"')) ||
- (!qt && strchr(" \t)", *cp) == NULL)) &&
- (*cp != '\0'); cp++) {
- if ((*cp == '\\') && (cp[1] != '\0')) {
- /*
- * Backslash escapes things --
- * skip over next character, * if it exists.
- */
- cp++;
- Buf_AddByte(buf, (Byte)*cp);
-
- } else if (*cp == '$') {
- size_t len = 0;
- Boolean freeIt;
-
- cp2 = Var_Parse(cp, VAR_CMD,
- doEval, &len, &freeIt);
- if (cp2 != var_Error) {
- Buf_Append(buf, cp2);
- if (freeIt) {
- free(cp2);
- }
- cp += len - 1;
- } else {
- Buf_AddByte(buf,
- (Byte)*cp);
- }
- } else {
- Buf_AddByte(buf, (Byte)*cp);
- }
- }
-
- string = Buf_Peel(buf);
-
- DEBUGF(COND, ("lhs = \"%s\", rhs = \"%s\", "
- "op = %.2s\n", lhs, string, op));
- /*
- * Null-terminate rhs and perform the
- * comparison. t is set to the result.
- */
- if (*op == '=') {
- t = strcmp(lhs, string) ? False : True;
- } else {
- t = strcmp(lhs, string) ? True : False;
- }
- free(string);
- if (rhs == condExpr) {
- if (*cp == '\0' || (!qt && *cp == ')'))
- condExpr = cp;
- else
- condExpr = cp + 1;
- }
- } else {
- /*
- * rhs is either a float or an integer.
- * Convert both the lhs and the rhs to a
- * double and compare the two.
- */
- double left, right;
- char *string;
-
- if (*CondCvtArg(lhs, &left) != '\0')
- goto do_string_compare;
- if (*rhs == '$') {
- size_t len = 0;
- Boolean freeIt;
-
- string = Var_Parse(rhs, VAR_CMD, doEval,
- &len, &freeIt);
- if (string == var_Error) {
- right = 0.0;
- } else {
- if (*CondCvtArg(string,
- &right) != '\0') {
- if (freeIt)
- free(string);
- goto do_string_compare;
- }
- if (freeIt)
- free(string);
- if (rhs == condExpr)
- condExpr += len;
- }
- } else {
- char *c = CondCvtArg(rhs, &right);
-
- if (c == rhs)
- goto do_string_compare;
- if (rhs == condExpr) {
- /*
- * Skip over the right-hand side
- */
- condExpr = c;
- }
- }
-
- DEBUGF(COND, ("left = %f, right = %f, "
- "op = %.2s\n", left, right, op));
- switch (op[0]) {
- case '!':
- if (op[1] != '=') {
- Parse_Error(PARSE_WARNING,
- "Unknown operator");
- goto error;
- }
- t = (left != right ? True : False);
- break;
- case '=':
- if (op[1] != '=') {
- Parse_Error(PARSE_WARNING,
- "Unknown operator");
- goto error;
- }
- t = (left == right ? True : False);
- break;
- case '<':
- if (op[1] == '=') {
- t = (left <= right?True:False);
- } else {
- t = (left < right?True:False);
- }
- break;
- case '>':
- if (op[1] == '=') {
- t = (left >= right?True:False);
- } else {
- t = (left > right?True:False);
- }
- break;
- default:
- break;
- }
- }
- error:
- if (doFree)
- free(lhs);
- break;
- }
-
- default: {
- CondProc *evalProc;
- Boolean invert = FALSE;
- char *arg;
- int arglen;
-
- if (strncmp(condExpr, "defined", 7) == 0) {
- /*
- * Use CondDoDefined to evaluate the argument
- * and CondGetArg to extract the argument from
- * the 'function call'.
- */
- evalProc = CondDoDefined;
- condExpr += 7;
- arglen = CondGetArg(&condExpr, &arg,
- "defined", TRUE);
- if (arglen == 0) {
- condExpr -= 7;
- goto use_default;
- }
-
- } else if (strncmp(condExpr, "make", 4) == 0) {
- /*
- * Use CondDoMake to evaluate the argument and
- * CondGetArg to extract the argument from the
- * 'function call'.
- */
- evalProc = CondDoMake;
- condExpr += 4;
- arglen = CondGetArg(&condExpr, &arg,
- "make", TRUE);
- if (arglen == 0) {
- condExpr -= 4;
- goto use_default;
- }
-
- } else if (strncmp(condExpr, "exists", 6) == 0) {
- /*
- * Use CondDoExists to evaluate the argument and
- * CondGetArg to extract the argument from the
- * 'function call'.
- */
- evalProc = CondDoExists;
- condExpr += 6;
- arglen = CondGetArg(&condExpr, &arg,
- "exists", TRUE);
- if (arglen == 0) {
- condExpr -= 6;
- goto use_default;
- }
-
- } else if (strncmp(condExpr, "empty", 5) == 0) {
- /*
- * Use Var_Parse to parse the spec in parens and
- * return True if the resulting string is empty.
- */
- size_t length;
- Boolean doFree;
- char *val;
-
- condExpr += 5;
-
- for (arglen = 0;
- condExpr[arglen] != '(' &&
- condExpr[arglen] != '\0'; arglen += 1)
- continue;
-
- if (condExpr[arglen] != '\0') {
- length = 0;
- val = Var_Parse(&condExpr[arglen - 1],
- VAR_CMD, FALSE, &length, &doFree);
- if (val == var_Error) {
- t = Err;
- } else {
- /*
- * A variable is empty when it
- * just contains spaces...
- * 4/15/92, christos
- */
- char *p;
-
- for (p = val;
- *p &&
- isspace((unsigned char)*p);
- p++)
- continue;
- t = (*p == '\0') ? True : False;
- }
- if (doFree) {
- free(val);
- }
- /*
- * Advance condExpr to beyond the
- * closing ). Note that we subtract
- * one from arglen + length b/c length
- * is calculated from
- * condExpr[arglen - 1].
- */
- condExpr += arglen + length - 1;
- } else {
- condExpr -= 5;
- goto use_default;
- }
- break;
-
- } else if (strncmp(condExpr, "target", 6) == 0) {
- /*
- * Use CondDoTarget to evaluate the argument and
- * CondGetArg to extract the argument from the
- * 'function call'.
- */
- evalProc = CondDoTarget;
- condExpr += 6;
- arglen = CondGetArg(&condExpr, &arg,
- "target", TRUE);
- if (arglen == 0) {
- condExpr -= 6;
- goto use_default;
- }
-
- } else {
- /*
- * The symbol is itself the argument to the
- * default function. We advance condExpr to
- * the end of the symbol by hand (the next
- * whitespace, closing paren or binary operator)
- * and set to invert the evaluation
- * function if condInvert is TRUE.
- */
- use_default:
- invert = condInvert;
- evalProc = condDefProc;
- arglen = CondGetArg(&condExpr, &arg, "", FALSE);
- }
-
- /*
- * Evaluate the argument using the set function. If
- * invert is TRUE, we invert the sense of the function.
- */
- t = (!doEval || (* evalProc) (arglen, arg) ?
- (invert ? False : True) :
- (invert ? True : False));
- free(arg);
- break;
- }
- }
- return (t);
-}
-
-/**
- * CondT
- * Parse a single term in the expression. This consists of a terminal
- * symbol or Not and a terminal symbol (not including the binary
- * operators):
- * T -> defined(variable) | make(target) | exists(file) | symbol
- * T -> ! T | ( E )
- *
- * Results:
- * True, False or Err.
- *
- * Side Effects:
- * Tokens are consumed.
- */
-static Token
-CondT(Boolean doEval)
-{
- Token t;
-
- t = CondToken(doEval);
- if (t == EndOfFile) {
- /*
- * If we reached the end of the expression, the expression
- * is malformed...
- */
- t = Err;
- } else if (t == LParen) {
- /*
- * T -> ( E )
- */
- t = CondE(doEval);
- if (t != Err) {
- if (CondToken(doEval) != RParen) {
- t = Err;
- }
- }
- } else if (t == Not) {
- t = CondT(doEval);
- if (t == True) {
- t = False;
- } else if (t == False) {
- t = True;
- }
- }
- return (t);
-}
-
-/**
- * CondF --
- * Parse a conjunctive factor (nice name, wot?)
- * F -> T && F | T
- *
- * Results:
- * True, False or Err
- *
- * Side Effects:
- * Tokens are consumed.
- */
-static Token
-CondF(Boolean doEval)
-{
- Token l, o;
-
- l = CondT(doEval);
- if (l != Err) {
- o = CondToken(doEval);
-
- if (o == And) {
- /*
- * F -> T && F
- *
- * If T is False, the whole thing will be False, but
- * we have to parse the r.h.s. anyway (to throw it
- * away). If T is True, the result is the r.h.s.,
- * be it an Err or no.
- */
- if (l == True) {
- l = CondF(doEval);
- } else {
- CondF(FALSE);
- }
- } else {
- /*
- * F -> T
- */
- CondPushBack(o);
- }
- }
- return (l);
-}
-
-/**
- * CondE --
- * Main expression production.
- * E -> F || E | F
- *
- * Results:
- * True, False or Err.
- *
- * Side Effects:
- * Tokens are, of course, consumed.
- */
-static Token
-CondE(Boolean doEval)
-{
- Token l, o;
-
- l = CondF(doEval);
- if (l != Err) {
- o = CondToken(doEval);
-
- if (o == Or) {
- /*
- * E -> F || E
- *
- * A similar thing occurs for ||, except that here we
- * make sure the l.h.s. is False before we bother to
- * evaluate the r.h.s. Once again, if l is False, the
- * result is the r.h.s. and once again if l is True,
- * we parse the r.h.s. to throw it away.
- */
- if (l == False) {
- l = CondE(doEval);
- } else {
- CondE(FALSE);
- }
- } else {
- /*
- * E -> F
- */
- CondPushBack(o);
- }
- }
- return (l);
-}
-
-/**
- * Cond_If
- * Handle .if<X> and .elif<X> directives.
- * This function is called even when we're skipping.
- */
-void
-Cond_If(char *line, int code, int lineno)
-{
- const struct If *ifp;
- Boolean value;
-
- ifp = &ifs[code];
-
- if (ifp->isElse) {
- if (condTop == MAXIF) {
- Parse_Error(PARSE_FATAL, "if-less elif");
- return;
- }
- if (skipIfLevel != 0) {
- /*
- * If skipping this conditional, just ignore
- * the whole thing. If we don't, the user
- * might be employing a variable that's
- * undefined, for which there's an enclosing
- * ifdef that we're skipping...
- */
- skipIfLineno[skipIfLevel - 1] = lineno;
- return;
- }
-
- } else if (skipLine) {
- /*
- * Don't even try to evaluate a conditional that's
- * not an else if we're skipping things...
- */
- skipIfLineno[skipIfLevel] = lineno;
- skipIfLevel += 1;
- return;
- }
-
- /*
- * Initialize file-global variables for parsing
- */
- condDefProc = ifp->defProc;
- condInvert = ifp->doNot;
-
- while (*line == ' ' || *line == '\t') {
- line++;
- }
-
- condExpr = line;
- condPushBack = None;
-
- switch (CondE(TRUE)) {
- case True:
- if (CondToken(TRUE) != EndOfFile)
- goto err;
- value = TRUE;
- break;
-
- case False:
- if (CondToken(TRUE) != EndOfFile)
- goto err;
- value = FALSE;
- break;
-
- case Err:
- err: Parse_Error(PARSE_FATAL, "Malformed conditional (%s)", line);
- return;
-
- default:
- abort();
- }
-
- if (!ifp->isElse) {
- /* push this value */
- condTop -= 1;
-
- } else if (skipIfLevel != 0 || condStack[condTop]) {
- /*
- * If this is an else-type conditional, it should only take
- * effect if its corresponding if was evaluated and FALSE.
- * If its if was TRUE or skipped, we return COND_SKIP (and
- * start skipping in case we weren't already), leaving the
- * stack unmolested so later elif's don't screw up...
- */
- skipLine = TRUE;
- return;
- }
-
- if (condTop < 0) {
- /*
- * This is the one case where we can definitely proclaim a fatal
- * error. If we don't, we're hosed.
- */
- Parse_Error(PARSE_FATAL, "Too many nested if's. %d max.",MAXIF);
- return;
- }
-
- /* push */
- condStack[condTop] = value;
- condLineno[condTop] = lineno;
- skipLine = !value;
-}
-
-/**
- * Cond_Else
- * Handle .else statement.
- */
-void
-Cond_Else(char *line __unused, int code __unused, int lineno __unused)
-{
-
- while (isspace((u_char)*line))
- line++;
-
- if (*line != '\0' && (warn_flags & WARN_DIRSYNTAX)) {
- Parse_Error(PARSE_WARNING, "junk after .else ignored '%s'",
- line);
- }
-
- if (condTop == MAXIF) {
- Parse_Error(PARSE_FATAL, "if-less else");
- return;
- }
- if (skipIfLevel != 0)
- return;
-
- if (skipIfLevel != 0 || condStack[condTop]) {
- /*
- * An else should only take effect if its corresponding if was
- * evaluated and FALSE.
- * If its if was TRUE or skipped, we return COND_SKIP (and
- * start skipping in case we weren't already), leaving the
- * stack unmolested so later elif's don't screw up...
- * XXX How does this work with two .else's?
- */
- skipLine = TRUE;
- return;
- }
-
- /* inverse value */
- condStack[condTop] = !condStack[condTop];
- skipLine = !condStack[condTop];
-}
-
-/**
- * Cond_Endif
- * Handle .endif statement.
- */
-void
-Cond_Endif(char *line __unused, int code __unused, int lineno __unused)
-{
-
- while (isspace((u_char)*line))
- line++;
-
- if (*line != '\0' && (warn_flags & WARN_DIRSYNTAX)) {
- Parse_Error(PARSE_WARNING, "junk after .endif ignored '%s'",
- line);
- }
-
- /*
- * End of a conditional section. If skipIfLevel is non-zero,
- * that conditional was skipped, so lines following it should
- * also be skipped. Hence, we return COND_SKIP. Otherwise,
- * the conditional was read so succeeding lines should be
- * parsed (think about it...) so we return COND_PARSE, unless
- * this endif isn't paired with a decent if.
- */
- if (skipIfLevel != 0) {
- skipIfLevel -= 1;
- return;
- }
-
- if (condTop == MAXIF) {
- Parse_Error(PARSE_FATAL, "if-less endif");
- return;
- }
-
- /* pop */
- skipLine = FALSE;
- condTop += 1;
-}
-
-/**
- * Cond_End
- * Make sure everything's clean at the end of a makefile.
- *
- * Side Effects:
- * Parse_Error will be called if open conditionals are around.
- */
-void
-Cond_End(void)
-{
- int level;
-
- if (condTop != MAXIF) {
- Parse_Error(PARSE_FATAL, "%d open conditional%s:",
- MAXIF - condTop + skipIfLevel,
- MAXIF - condTop + skipIfLevel== 1 ? "" : "s");
-
- for (level = skipIfLevel; level > 0; level--)
- Parse_Error(PARSE_FATAL, "\t%*sat line %d (skipped)",
- MAXIF - condTop + level + 1, "",
- skipIfLineno[level - 1]);
- for (level = condTop; level < MAXIF; level++)
- Parse_Error(PARSE_FATAL, "\t%*sat line %d "
- "(evaluated to %s)", MAXIF - level + skipIfLevel,
- "", condLineno[level],
- condStack[level] ? "true" : "false");
- }
- condTop = MAXIF;
-}
diff --git a/usr.bin/make/cond.h b/usr.bin/make/cond.h
deleted file mode 100644
index 9a8dbdc..0000000
--- a/usr.bin/make/cond.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef cond_h_6e96ad7c
-#define cond_h_6e96ad7c
-
-/*
- * Values returned by Cond_Eval.
- */
-#define COND_PARSE 0 /* Parse the next lines */
-#define COND_SKIP 1 /* Skip the next lines */
-#define COND_INVALID 2 /* Not a conditional statement */
-
-enum {
- COND_IF,
- COND_IFDEF,
- COND_IFNDEF,
- COND_IFMAKE,
- COND_IFNMAKE,
- COND_ELSE,
- COND_ELIF,
- COND_ELIFDEF,
- COND_ELIFNDEF,
- COND_ELIFMAKE,
- COND_ELIFNMAKE,
- COND_ENDIF,
-};
-
-void Cond_If(char *, int, int);
-void Cond_Else(char *, int, int);
-void Cond_Endif(char *, int, int);
-void Cond_End(void);
-
-extern Boolean skipLine;
-
-#endif /* cond_h_6e96ad7c */
diff --git a/usr.bin/make/config.h b/usr.bin/make/config.h
deleted file mode 100644
index 06b0f8e..0000000
--- a/usr.bin/make/config.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)config.h 8.2 (Berkeley) 4/28/95
- * $FreeBSD$
- */
-
-#ifndef config_h_efe0765e
-#define config_h_efe0765e
-
-/*
- * DEFMAXJOBS
- * This control the default concurrency. On no occasion will more
- * than DEFMAXJOBS targets be created at once.
- */
-#define DEFMAXJOBS 1
-
-/*
- * INCLUDES
- * LIBRARIES
- * These control the handling of the .INCLUDES and .LIBS variables.
- * If INCLUDES is defined, the .INCLUDES variable will be filled
- * from the search paths of those suffixes which are marked by
- * .INCLUDES dependency lines. Similarly for LIBRARIES and .LIBS
- * See suff.c for more details.
- */
-#define INCLUDES
-#define LIBRARIES
-
-/*
- * LIBSUFF
- * Is the suffix used to denote libraries and is used by the Suff module
- * to find the search path on which to seek any -l<xx> targets.
- *
- * RECHECK
- * If defined, Make_Update will check a target for its current
- * modification time after it has been re-made, setting it to the
- * starting time of the make only if the target still doesn't exist.
- * Unfortunately, under NFS the modification time often doesn't
- * get updated in time, so a target will appear to not have been
- * re-made, causing later targets to appear up-to-date. On systems
- * that don't have this problem, you should defined this. Under
- * NFS you probably should not, unless you aren't exporting jobs.
- */
-#define LIBSUFF ".a"
-#define RECHECK
-
-/*
- * SYSVINCLUDE
- * Recognize system V like include directives [include "filename"]
- * SYSVVARSUB
- * Recognize system V like ${VAR:x=y} variable substitutions
- */
-#define SYSVINCLUDE
-#define SYSVVARSUB
-
-/*
- * SUNSHCMD
- * Recognize SunOS and Solaris:
- * VAR :sh= CMD # Assign VAR to the command substitution of CMD
- * ${VAR:sh} # Return the command substitution of the value
- * # of ${VAR}
- */
-#define SUNSHCMD
-
-#if !defined(__svr4__) && !defined(__SVR4) && !defined(__ELF__)
-# ifndef RANLIBMAG
-# define RANLIBMAG "__.SYMDEF"
-# endif
-#else
-# ifndef RANLIBMAG
-# define RANLIBMAG "/"
-# endif
-#endif
-
-#endif /* config_h_efe0765e */
diff --git a/usr.bin/make/dir.c b/usr.bin/make/dir.c
deleted file mode 100644
index 7cee3d4..0000000
--- a/usr.bin/make/dir.c
+++ /dev/null
@@ -1,1217 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)dir.c 8.2 (Berkeley) 1/2/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * dir.c --
- * Directory searching using wildcards and/or normal names...
- * Used both for source wildcarding in the Makefile and for finding
- * implicit sources.
- *
- * The interface for this module is:
- * Dir_Init Initialize the module.
- *
- * Dir_HasWildcards Returns TRUE if the name given it needs to
- * be wildcard-expanded.
- *
- * Path_Expand Given a pattern and a path, return a Lst of names
- * which match the pattern on the search path.
- *
- * Path_FindFile Searches for a file on a given search path.
- * If it exists, the entire path is returned.
- * Otherwise NULL is returned.
- *
- * Dir_FindHereOrAbove Search for a path in the current directory and
- * then all the directories above it in turn until
- * the path is found or we reach the root ("/").
- *
- * Dir_MTime Return the modification time of a node. The file
- * is searched for along the default search path.
- * The path and mtime fields of the node are filled in.
- *
- * Path_AddDir Add a directory to a search path.
- *
- * Dir_MakeFlags Given a search path and a command flag, create
- * a string with each of the directories in the path
- * preceded by the command flag and all of them
- * separated by a space.
- *
- * Dir_Destroy Destroy an element of a search path. Frees up all
- * things that can be freed for the element as long
- * as the element is no longer referenced by any other
- * search path.
- *
- * Dir_ClearPath Resets a search path to the empty list.
- *
- * For debugging:
- * Dir_PrintDirectories Print stats about the directory cache.
- */
-
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "arch.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "hash.h"
-#include "lst.h"
-#include "str.h"
-#include "targ.h"
-#include "util.h"
-
-/*
- * A search path consists of a list of Dir structures. A Dir structure
- * has in it the name of the directory and a hash table of all the files
- * in the directory. This is used to cut down on the number of system
- * calls necessary to find implicit dependents and their like. Since
- * these searches are made before any actions are taken, we need not
- * worry about the directory changing due to creation commands. If this
- * hampers the style of some makefiles, they must be changed.
- *
- * A list of all previously-read directories is kept in the
- * openDirectories list. This list is checked first before a directory
- * is opened.
- *
- * The need for the caching of whole directories is brought about by
- * the multi-level transformation code in suff.c, which tends to search
- * for far more files than regular make does. In the initial
- * implementation, the amount of time spent performing "stat" calls was
- * truly astronomical. The problem with hashing at the start is,
- * of course, that pmake doesn't then detect changes to these directories
- * during the course of the make. Three possibilities suggest themselves:
- *
- * 1) just use stat to test for a file's existence. As mentioned
- * above, this is very inefficient due to the number of checks
- * engendered by the multi-level transformation code.
- * 2) use readdir() and company to search the directories, keeping
- * them open between checks. I have tried this and while it
- * didn't slow down the process too much, it could severely
- * affect the amount of parallelism available as each directory
- * open would take another file descriptor out of play for
- * handling I/O for another job. Given that it is only recently
- * that UNIX OS's have taken to allowing more than 20 or 32
- * file descriptors for a process, this doesn't seem acceptable
- * to me.
- * 3) record the mtime of the directory in the Dir structure and
- * verify the directory hasn't changed since the contents were
- * hashed. This will catch the creation or deletion of files,
- * but not the updating of files. However, since it is the
- * creation and deletion that is the problem, this could be
- * a good thing to do. Unfortunately, if the directory (say ".")
- * were fairly large and changed fairly frequently, the constant
- * rehashing could seriously degrade performance. It might be
- * good in such cases to keep track of the number of rehashes
- * and if the number goes over a (small) limit, resort to using
- * stat in its place.
- *
- * An additional thing to consider is that pmake is used primarily
- * to create C programs and until recently pcc-based compilers refused
- * to allow you to specify where the resulting object file should be
- * placed. This forced all objects to be created in the current
- * directory. This isn't meant as a full excuse, just an explanation of
- * some of the reasons for the caching used here.
- *
- * One more note: the location of a target's file is only performed
- * on the downward traversal of the graph and then only for terminal
- * nodes in the graph. This could be construed as wrong in some cases,
- * but prevents inadvertent modification of files when the "installed"
- * directory for a file is provided in the search path.
- *
- * Another data structure maintained by this module is an mtime
- * cache used when the searching of cached directories fails to find
- * a file. In the past, Path_FindFile would simply perform an access()
- * call in such a case to determine if the file could be found using
- * just the name given. When this hit, however, all that was gained
- * was the knowledge that the file existed. Given that an access() is
- * essentially a stat() without the copyout() call, and that the same
- * filesystem overhead would have to be incurred in Dir_MTime, it made
- * sense to replace the access() with a stat() and record the mtime
- * in a cache for when Dir_MTime was actually called.
- */
-
-typedef struct Dir {
- char *name; /* Name of directory */
- int refCount; /* No. of paths with this directory */
- int hits; /* No. of times a file has been found here */
- Hash_Table files; /* Hash table of files in directory */
- TAILQ_ENTRY(Dir) link; /* allDirs link */
-} Dir;
-
-/*
- * A path is a list of pointers to directories. These directories are
- * reference counted so a directory can be on more than one path.
- */
-struct PathElement {
- struct Dir *dir; /* pointer to the directory */
- TAILQ_ENTRY(PathElement) link; /* path link */
-};
-
-/* main search path */
-struct Path dirSearchPath = TAILQ_HEAD_INITIALIZER(dirSearchPath);
-
-/* the list of all open directories */
-static TAILQ_HEAD(, Dir) openDirectories =
- TAILQ_HEAD_INITIALIZER(openDirectories);
-
-/*
- * Variables for gathering statistics on the efficiency of the hashing
- * mechanism.
- */
-static int hits; /* Found in directory cache */
-static int misses; /* Sad, but not evil misses */
-static int nearmisses; /* Found under search path */
-static int bigmisses; /* Sought by itself */
-
-static Dir *dot; /* contents of current directory */
-
-/* Results of doing a last-resort stat in Path_FindFile --
- * if we have to go to the system to find the file, we might as well
- * have its mtime on record.
- * XXX: If this is done way early, there's a chance other rules will
- * have already updated the file, in which case we'll update it again.
- * Generally, there won't be two rules to update a single file, so this
- * should be ok, but...
- */
-static Hash_Table mtimes;
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_Init --
- * initialize things for this module
- *
- * Results:
- * none
- *
- * Side Effects:
- * none
- *-----------------------------------------------------------------------
- */
-void
-Dir_Init(void)
-{
-
- Hash_InitTable(&mtimes, 0);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_InitDot --
- * initialize the "." directory
- *
- * Results:
- * none
- *
- * Side Effects:
- * some directories may be opened.
- *-----------------------------------------------------------------------
- */
-void
-Dir_InitDot(void)
-{
-
- dot = Path_AddDir(NULL, ".");
- if (dot == NULL)
- err(1, "cannot open current directory");
-
- /*
- * We always need to have dot around, so we increment its
- * reference count to make sure it's not destroyed.
- */
- dot->refCount += 1;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_HasWildcards --
- * See if the given name has any wildcard characters in it.
- *
- * Results:
- * returns TRUE if the word should be expanded, FALSE otherwise
- *
- * Side Effects:
- * none
- *-----------------------------------------------------------------------
- */
-Boolean
-Dir_HasWildcards(const char *name)
-{
- const char *cp;
- int wild = 0, brace = 0, bracket = 0;
-
- for (cp = name; *cp; cp++) {
- switch (*cp) {
- case '{':
- brace++;
- wild = 1;
- break;
- case '}':
- brace--;
- break;
- case '[':
- bracket++;
- wild = 1;
- break;
- case ']':
- bracket--;
- break;
- case '?':
- case '*':
- wild = 1;
- break;
- default:
- break;
- }
- }
- return (wild && bracket == 0 && brace == 0);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * DirMatchFiles --
- * Given a pattern and a Dir structure, see if any files
- * match the pattern and add their names to the 'expansions' list if
- * any do. This is incomplete -- it doesn't take care of patterns like
- * src / *src / *.c properly (just *.c on any of the directories), but it
- * will do for now.
- *
- * Results:
- * Always returns 0
- *
- * Side Effects:
- * File names are added to the expansions lst. The directory will be
- * fully hashed when this is done.
- *-----------------------------------------------------------------------
- */
-static int
-DirMatchFiles(const char *pattern, const Dir *p, Lst *expansions)
-{
- Hash_Search search; /* Index into the directory's table */
- Hash_Entry *entry; /* Current entry in the table */
- Boolean isDot; /* TRUE if the directory being searched is . */
-
- isDot = (*p->name == '.' && p->name[1] == '\0');
-
- for (entry = Hash_EnumFirst(&p->files, &search);
- entry != NULL;
- entry = Hash_EnumNext(&search)) {
- /*
- * See if the file matches the given pattern. Note we follow
- * the UNIX convention that dot files will only be found if
- * the pattern begins with a dot (note also that as a side
- * effect of the hashing scheme, .* won't match . or ..
- * since they aren't hashed).
- */
- if (Str_Match(entry->name, pattern) &&
- ((entry->name[0] != '.') ||
- (pattern[0] == '.'))) {
- Lst_AtEnd(expansions, (isDot ? estrdup(entry->name) :
- str_concat(p->name, entry->name, STR_ADDSLASH)));
- }
- }
- return (0);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * DirExpandCurly --
- * Expand curly braces like the C shell. Does this recursively.
- * Note the special case: if after the piece of the curly brace is
- * done there are no wildcard characters in the result, the result is
- * placed on the list WITHOUT CHECKING FOR ITS EXISTENCE. The
- * given arguments are the entire word to expand, the first curly
- * brace in the word, the search path, and the list to store the
- * expansions in.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The given list is filled with the expansions...
- *
- *-----------------------------------------------------------------------
- */
-static void
-DirExpandCurly(const char *word, const char *brace, struct Path *path,
- Lst *expansions)
-{
- const char *end; /* Character after the closing brace */
- const char *cp; /* Current position in brace clause */
- const char *start; /* Start of current piece of brace clause */
- int bracelevel; /* Number of braces we've seen. If we see a right brace
- * when this is 0, we've hit the end of the clause. */
- char *file; /* Current expansion */
- int otherLen; /* The length of the other pieces of the expansion
- * (chars before and after the clause in 'word') */
- char *cp2; /* Pointer for checking for wildcards in
- * expansion before calling Dir_Expand */
-
- start = brace + 1;
-
- /*
- * Find the end of the brace clause first, being wary of nested brace
- * clauses.
- */
- for (end = start, bracelevel = 0; *end != '\0'; end++) {
- if (*end == '{')
- bracelevel++;
- else if ((*end == '}') && (bracelevel-- == 0))
- break;
- }
- if (*end == '\0') {
- Error("Unterminated {} clause \"%s\"", start);
- return;
- } else
- end++;
-
- otherLen = brace - word + strlen(end);
-
- for (cp = start; cp < end; cp++) {
- /*
- * Find the end of this piece of the clause.
- */
- bracelevel = 0;
- while (*cp != ',') {
- if (*cp == '{')
- bracelevel++;
- else if ((*cp == '}') && (bracelevel-- <= 0))
- break;
- cp++;
- }
- /*
- * Allocate room for the combination and install the
- * three pieces.
- */
- file = emalloc(otherLen + cp - start + 1);
- if (brace != word)
- strncpy(file, word, brace - word);
- if (cp != start)
- strncpy(&file[brace - word], start, cp - start);
- strcpy(&file[(brace - word) + (cp - start)], end);
-
- /*
- * See if the result has any wildcards in it. If we find one,
- * call Dir_Expand right away, telling it to place the result
- * on our list of expansions.
- */
- for (cp2 = file; *cp2 != '\0'; cp2++) {
- switch (*cp2) {
- case '*':
- case '?':
- case '{':
- case '[':
- Path_Expand(file, path, expansions);
- goto next;
- default:
- break;
- }
- }
- if (*cp2 == '\0') {
- /*
- * Hit the end w/o finding any wildcards, so stick
- * the expansion on the end of the list.
- */
- Lst_AtEnd(expansions, file);
- } else {
- next:
- free(file);
- }
- start = cp + 1;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * DirExpandInt --
- * Internal expand routine. Passes through the directories in the
- * path one by one, calling DirMatchFiles for each. NOTE: This still
- * doesn't handle patterns in directories... Works given a word to
- * expand, a path to look in, and a list to store expansions in.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Things are added to the expansions list.
- *
- *-----------------------------------------------------------------------
- */
-static void
-DirExpandInt(const char *word, const struct Path *path, Lst *expansions)
-{
- struct PathElement *pe;
-
- TAILQ_FOREACH(pe, path, link)
- DirMatchFiles(word, pe->dir, expansions);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_Expand --
- * Expand the given word into a list of words by globbing it looking
- * in the directories on the given search path.
- *
- * Results:
- * A list of words consisting of the files which exist along the search
- * path matching the given pattern is placed in expansions.
- *
- * Side Effects:
- * Directories may be opened. Who knows?
- *-----------------------------------------------------------------------
- */
-void
-Path_Expand(char *word, struct Path *path, Lst *expansions)
-{
- LstNode *ln;
- char *cp;
-
- DEBUGF(DIR, ("expanding \"%s\"...", word));
-
- cp = strchr(word, '{');
- if (cp != NULL)
- DirExpandCurly(word, cp, path, expansions);
- else {
- cp = strchr(word, '/');
- if (cp != NULL) {
- /*
- * The thing has a directory component -- find the
- * first wildcard in the string.
- */
- for (cp = word; *cp != '\0'; cp++) {
- if (*cp == '?' || *cp == '[' ||
- *cp == '*' || *cp == '{') {
- break;
- }
- }
- if (*cp == '{') {
- /*
- * This one will be fun.
- */
- DirExpandCurly(word, cp, path, expansions);
- return;
- } else if (*cp != '\0') {
- /*
- * Back up to the start of the component
- */
- char *dirpath;
-
- while (cp > word && *cp != '/')
- cp--;
- if (cp != word) {
- char sc;
-
- /*
- * If the glob isn't in the first
- * component, try and find all the
- * components up to the one with a
- * wildcard.
- */
- sc = cp[1];
- cp[1] = '\0';
- dirpath = Path_FindFile(word, path);
- cp[1] = sc;
- /*
- * dirpath is null if can't find the
- * leading component
- * XXX: Path_FindFile won't find internal
- * components. i.e. if the path contains
- * ../Etc/Object and we're looking for
- * Etc, * it won't be found. Ah well.
- * Probably not important.
- */
- if (dirpath != NULL) {
- char *dp =
- &dirpath[strlen(dirpath)
- - 1];
- struct Path tp =
- TAILQ_HEAD_INITIALIZER(tp);
-
- if (*dp == '/')
- *dp = '\0';
- Path_AddDir(&tp, dirpath);
- DirExpandInt(cp + 1, &tp,
- expansions);
- Path_Clear(&tp);
- }
- } else {
- /*
- * Start the search from the local
- * directory
- */
- DirExpandInt(word, path, expansions);
- }
- } else {
- /*
- * Return the file -- this should never happen.
- */
- DirExpandInt(word, path, expansions);
- }
- } else {
- /*
- * First the files in dot
- */
- DirMatchFiles(word, dot, expansions);
-
- /*
- * Then the files in every other directory on the path.
- */
- DirExpandInt(word, path, expansions);
- }
- }
- if (DEBUG(DIR)) {
- LST_FOREACH(ln, expansions)
- DEBUGF(DIR, ("%s ", (const char *)Lst_Datum(ln)));
- DEBUGF(DIR, ("\n"));
- }
-}
-
-/**
- * Path_FindFile
- * Find the file with the given name along the given search path.
- *
- * Results:
- * The path to the file or NULL. This path is guaranteed to be in a
- * different part of memory than name and so may be safely free'd.
- *
- * Side Effects:
- * If the file is found in a directory which is not on the path
- * already (either 'name' is absolute or it is a relative path
- * [ dir1/.../dirn/file ] which exists below one of the directories
- * already on the search path), its directory is added to the end
- * of the path on the assumption that there will be more files in
- * that directory later on. Sometimes this is true. Sometimes not.
- */
-char *
-Path_FindFile(char *name, struct Path *path)
-{
- char *p1; /* pointer into p->name */
- char *p2; /* pointer into name */
- char *file; /* the current filename to check */
- const struct PathElement *pe; /* current path member */
- char *cp; /* final component of the name */
- Boolean hasSlash; /* true if 'name' contains a / */
- struct stat stb; /* Buffer for stat, if necessary */
- Hash_Entry *entry; /* Entry for mtimes table */
-
- /*
- * Find the final component of the name and note whether it has a
- * slash in it (the name, I mean)
- */
- cp = strrchr(name, '/');
- if (cp != NULL) {
- hasSlash = TRUE;
- cp += 1;
- } else {
- hasSlash = FALSE;
- cp = name;
- }
-
- DEBUGF(DIR, ("Searching for %s...", name));
- /*
- * No matter what, we always look for the file in the current directory
- * before anywhere else and we *do not* add the ./ to it if it exists.
- * This is so there are no conflicts between what the user specifies
- * (fish.c) and what pmake finds (./fish.c).
- */
- if ((!hasSlash || (cp - name == 2 && *name == '.')) &&
- (Hash_FindEntry(&dot->files, cp) != NULL)) {
- DEBUGF(DIR, ("in '.'\n"));
- hits += 1;
- dot->hits += 1;
- return (estrdup(name));
- }
-
- /*
- * We look through all the directories on the path seeking one which
- * contains the final component of the given name and whose final
- * component(s) match the name's initial component(s). If such a beast
- * is found, we concatenate the directory name and the final component
- * and return the resulting string. If we don't find any such thing,
- * we go on to phase two...
- */
- TAILQ_FOREACH(pe, path, link) {
- DEBUGF(DIR, ("%s...", pe->dir->name));
- if (Hash_FindEntry(&pe->dir->files, cp) != NULL) {
- DEBUGF(DIR, ("here..."));
- if (hasSlash) {
- /*
- * If the name had a slash, its initial
- * components and p's final components must
- * match. This is false if a mismatch is
- * encountered before all of the initial
- * components have been checked (p2 > name at
- * the end of the loop), or we matched only
- * part of one of the components of p
- * along with all the rest of them (*p1 != '/').
- */
- p1 = pe->dir->name + strlen(pe->dir->name) - 1;
- p2 = cp - 2;
- while (p2 >= name && p1 >= pe->dir->name &&
- *p1 == *p2) {
- p1 -= 1; p2 -= 1;
- }
- if (p2 >= name || (p1 >= pe->dir->name &&
- *p1 != '/')) {
- DEBUGF(DIR, ("component mismatch -- "
- "continuing..."));
- continue;
- }
- }
- file = str_concat(pe->dir->name, cp, STR_ADDSLASH);
- DEBUGF(DIR, ("returning %s\n", file));
- pe->dir->hits += 1;
- hits += 1;
- return (file);
- } else if (hasSlash) {
- /*
- * If the file has a leading path component and that
- * component exactly matches the entire name of the
- * current search directory, we assume the file
- * doesn't exist and return NULL.
- */
- for (p1 = pe->dir->name, p2 = name; *p1 && *p1 == *p2;
- p1++, p2++)
- continue;
- if (*p1 == '\0' && p2 == cp - 1) {
- if (*cp == '\0' || ISDOT(cp) || ISDOTDOT(cp)) {
- DEBUGF(DIR, ("returning %s\n", name));
- return (estrdup(name));
- } else {
- DEBUGF(DIR, ("must be here but isn't --"
- " returning NULL\n"));
- return (NULL);
- }
- }
- }
- }
-
- /*
- * We didn't find the file on any existing members of the directory.
- * If the name doesn't contain a slash, that means it doesn't exist.
- * If it *does* contain a slash, however, there is still hope: it
- * could be in a subdirectory of one of the members of the search
- * path. (eg. /usr/include and sys/types.h. The above search would
- * fail to turn up types.h in /usr/include, but it *is* in
- * /usr/include/sys/types.h) If we find such a beast, we assume there
- * will be more (what else can we assume?) and add all but the last
- * component of the resulting name onto the search path (at the
- * end). This phase is only performed if the file is *not* absolute.
- */
- if (!hasSlash) {
- DEBUGF(DIR, ("failed.\n"));
- misses += 1;
- return (NULL);
- }
-
- if (*name != '/') {
- Boolean checkedDot = FALSE;
-
- DEBUGF(DIR, ("failed. Trying subdirectories..."));
- TAILQ_FOREACH(pe, path, link) {
- if (pe->dir != dot) {
- file = str_concat(pe->dir->name,
- name, STR_ADDSLASH);
- } else {
- /*
- * Checking in dot -- DON'T put a leading ./
- * on the thing.
- */
- file = estrdup(name);
- checkedDot = TRUE;
- }
- DEBUGF(DIR, ("checking %s...", file));
-
- if (stat(file, &stb) == 0) {
- DEBUGF(DIR, ("got it.\n"));
-
- /*
- * We've found another directory to search. We
- * know there's a slash in 'file' because we put
- * one there. We nuke it after finding it and
- * call Path_AddDir to add this new directory
- * onto the existing search path. Once that's
- * done, we restore the slash and triumphantly
- * return the file name, knowing that should a
- * file in this directory every be referenced
- * again in such a manner, we will find it
- * without having to do numerous numbers of
- * access calls. Hurrah!
- */
- cp = strrchr(file, '/');
- *cp = '\0';
- Path_AddDir(path, file);
- *cp = '/';
-
- /*
- * Save the modification time so if
- * it's needed, we don't have to fetch it again.
- */
- DEBUGF(DIR, ("Caching %s for %s\n",
- Targ_FmtTime(stb.st_mtime), file));
- entry = Hash_CreateEntry(&mtimes, file,
- (Boolean *)NULL);
- Hash_SetValue(entry,
- (void *)(long)stb.st_mtime);
- nearmisses += 1;
- return (file);
- } else {
- free(file);
- }
- }
-
- DEBUGF(DIR, ("failed. "));
-
- if (checkedDot) {
- /*
- * Already checked by the given name, since . was in
- * the path, so no point in proceeding...
- */
- DEBUGF(DIR, ("Checked . already, returning NULL\n"));
- return (NULL);
- }
- }
-
- /*
- * Didn't find it that way, either. Sigh. Phase 3. Add its directory
- * onto the search path in any case, just in case, then look for the
- * thing in the hash table. If we find it, grand. We return a new
- * copy of the name. Otherwise we sadly return a NULL pointer. Sigh.
- * Note that if the directory holding the file doesn't exist, this will
- * do an extra search of the final directory on the path. Unless
- * something weird happens, this search won't succeed and life will
- * be groovy.
- *
- * Sigh. We cannot add the directory onto the search path because
- * of this amusing case:
- * $(INSTALLDIR)/$(FILE): $(FILE)
- *
- * $(FILE) exists in $(INSTALLDIR) but not in the current one.
- * When searching for $(FILE), we will find it in $(INSTALLDIR)
- * b/c we added it here. This is not good...
- */
- DEBUGF(DIR, ("Looking for \"%s\"...", name));
-
- bigmisses += 1;
- entry = Hash_FindEntry(&mtimes, name);
- if (entry != NULL) {
- DEBUGF(DIR, ("got it (in mtime cache)\n"));
- return (estrdup(name));
- } else if (stat (name, &stb) == 0) {
- entry = Hash_CreateEntry(&mtimes, name, (Boolean *)NULL);
- DEBUGF(DIR, ("Caching %s for %s\n",
- Targ_FmtTime(stb.st_mtime), name));
- Hash_SetValue(entry, (void *)(long)stb.st_mtime);
- return (estrdup(name));
- } else {
- DEBUGF(DIR, ("failed. Returning NULL\n"));
- return (NULL);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_FindHereOrAbove --
- * search for a path starting at a given directory and then working
- * our way up towards the root.
- *
- * Input:
- * here starting directory
- * search_path the path we are looking for
- * result the result of a successful search is placed here
- * rlen the length of the result buffer
- * (typically MAXPATHLEN + 1)
- *
- * Results:
- * 0 on failure, 1 on success [in which case the found path is put
- * in the result buffer].
- *
- * Side Effects:
- *-----------------------------------------------------------------------
- */
-int
-Dir_FindHereOrAbove(char *here, char *search_path, char *result, int rlen)
-{
- struct stat st;
- char dirbase[MAXPATHLEN + 1], *db_end;
- char try[MAXPATHLEN + 1], *try_end;
-
- /* copy out our starting point */
- snprintf(dirbase, sizeof(dirbase), "%s", here);
- db_end = dirbase + strlen(dirbase);
-
- /* loop until we determine a result */
- while (1) {
- /* try and stat(2) it ... */
- snprintf(try, sizeof(try), "%s/%s", dirbase, search_path);
- if (stat(try, &st) != -1) {
- /*
- * Success! If we found a file, chop off
- * the filename so we return a directory.
- */
- if ((st.st_mode & S_IFMT) != S_IFDIR) {
- try_end = try + strlen(try);
- while (try_end > try && *try_end != '/')
- try_end--;
- if (try_end > try)
- *try_end = 0; /* chop! */
- }
-
- /*
- * Done!
- */
- snprintf(result, rlen, "%s", try);
- return(1);
- }
-
- /*
- * Nope, we didn't find it. If we used up dirbase we've
- * reached the root and failed.
- */
- if (db_end == dirbase)
- break; /* Failed! */
-
- /*
- * truncate dirbase from the end to move up a dir
- */
- while (db_end > dirbase && *db_end != '/')
- db_end--;
- *db_end = 0; /* chop! */
-
- } /* while (1) */
-
- /*
- * We failed...
- */
- return(0);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Dir_MTime --
- * Find the modification time of the file described by gn along the
- * search path dirSearchPath.
- *
- * Results:
- * The modification time or 0 if it doesn't exist
- *
- * Side Effects:
- * The modification time is placed in the node's mtime slot.
- * If the node didn't have a path entry before, and Path_FindFile
- * found one for it, the full name is placed in the path slot.
- *-----------------------------------------------------------------------
- */
-int
-Dir_MTime(GNode *gn)
-{
- char *fullName; /* the full pathname of name */
- struct stat stb; /* buffer for finding the mod time */
- Hash_Entry *entry;
-
- if (gn->type & OP_ARCHV)
- return (Arch_MTime(gn));
-
- else if (gn->path == NULL)
- fullName = Path_FindFile(gn->name, &dirSearchPath);
- else
- fullName = gn->path;
-
- if (fullName == NULL)
- fullName = estrdup(gn->name);
-
- entry = Hash_FindEntry(&mtimes, fullName);
- if (entry != NULL) {
- /*
- * Only do this once -- the second time folks are checking to
- * see if the file was actually updated, so we need to
- * actually go to the filesystem.
- */
- DEBUGF(DIR, ("Using cached time %s for %s\n",
- Targ_FmtTime((time_t)(long)Hash_GetValue(entry)),
- fullName));
- stb.st_mtime = (time_t)(long)Hash_GetValue(entry);
- Hash_DeleteEntry(&mtimes, entry);
- } else if (stat(fullName, &stb) < 0) {
- if (gn->type & OP_MEMBER) {
- if (fullName != gn->path)
- free(fullName);
- return (Arch_MemMTime(gn));
- } else {
- stb.st_mtime = 0;
- }
- }
- if (fullName && gn->path == (char *)NULL)
- gn->path = fullName;
-
- gn->mtime = stb.st_mtime;
- return (gn->mtime);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Path_AddDir --
- * Add the given name to the end of the given path.
- *
- * Results:
- * none
- *
- * Side Effects:
- * A structure is added to the list and the directory is
- * read and hashed.
- *-----------------------------------------------------------------------
- */
-struct Dir *
-Path_AddDir(struct Path *path, const char *name)
-{
- Dir *d; /* pointer to new Path structure */
- DIR *dir; /* for reading directory */
- struct PathElement *pe;
- struct dirent *dp; /* entry in directory */
-
- /* check whether we know this directory */
- TAILQ_FOREACH(d, &openDirectories, link) {
- if (strcmp(d->name, name) == 0) {
- /* Found it. */
- if (path == NULL)
- return (d);
-
- /* Check whether its already on the path. */
- TAILQ_FOREACH(pe, path, link) {
- if (pe->dir == d)
- return (d);
- }
- /* Add it to the path */
- d->refCount += 1;
- pe = emalloc(sizeof(*pe));
- pe->dir = d;
- TAILQ_INSERT_TAIL(path, pe, link);
- return (d);
- }
- }
-
- DEBUGF(DIR, ("Caching %s...", name));
-
- if ((dir = opendir(name)) == NULL) {
- DEBUGF(DIR, (" cannot open\n"));
- return (NULL);
- }
-
- d = emalloc(sizeof(*d));
- d->name = estrdup(name);
- d->hits = 0;
- d->refCount = 1;
- Hash_InitTable(&d->files, -1);
-
- while ((dp = readdir(dir)) != NULL) {
-#if defined(sun) && defined(d_ino) /* d_ino is a sunos4 #define for d_fileno */
- /*
- * The sun directory library doesn't check for
- * a 0 inode (0-inode slots just take up space),
- * so we have to do it ourselves.
- */
- if (dp->d_fileno == 0)
- continue;
-#endif /* sun && d_ino */
-
- /* Skip the '.' and '..' entries by checking
- * for them specifically instead of assuming
- * readdir() reuturns them in that order when
- * first going through a directory. This is
- * needed for XFS over NFS filesystems since
- * SGI does not guarantee that these are the
- * first two entries returned from readdir().
- */
- if (ISDOT(dp->d_name) || ISDOTDOT(dp->d_name))
- continue;
-
- Hash_CreateEntry(&d->files, dp->d_name, (Boolean *)NULL);
- }
- closedir(dir);
-
- if (path != NULL) {
- /* Add it to the path */
- d->refCount += 1;
- pe = emalloc(sizeof(*pe));
- pe->dir = d;
- TAILQ_INSERT_TAIL(path, pe, link);
- }
-
- /* Add to list of all directories */
- TAILQ_INSERT_TAIL(&openDirectories, d, link);
-
- DEBUGF(DIR, ("done\n"));
-
- return (d);
-}
-
-/**
- * Path_Duplicate
- * Duplicate a path. Ups the reference count for the directories.
- */
-void
-Path_Duplicate(struct Path *dst, const struct Path *src)
-{
- struct PathElement *ped, *pes;
-
- TAILQ_FOREACH(pes, src, link) {
- ped = emalloc(sizeof(*ped));
- ped->dir = pes->dir;
- ped->dir->refCount++;
- TAILQ_INSERT_TAIL(dst, ped, link);
- }
-}
-
-/**
- * Path_MakeFlags
- * Make a string by taking all the directories in the given search
- * path and preceding them by the given flag. Used by the suffix
- * module to create variables for compilers based on suffix search
- * paths.
- *
- * Results:
- * The string mentioned above. Note that there is no space between
- * the given flag and each directory. The empty string is returned if
- * Things don't go well.
- */
-char *
-Path_MakeFlags(const char *flag, const struct Path *path)
-{
- char *str; /* the string which will be returned */
- char *tstr; /* the current directory preceded by 'flag' */
- char *nstr;
- const struct PathElement *pe;
-
- str = estrdup("");
-
- TAILQ_FOREACH(pe, path, link) {
- tstr = str_concat(flag, pe->dir->name, 0);
- nstr = str_concat(str, tstr, STR_ADDSPACE);
- free(str);
- free(tstr);
- str = nstr;
- }
-
- return (str);
-}
-
-/**
- * Path_Clear
- *
- * Destroy a path. This decrements the reference counts of all
- * directories of this path and, if a reference count goes 0,
- * destroys the directory object.
- */
-void
-Path_Clear(struct Path *path)
-{
- struct PathElement *pe;
-
- while ((pe = TAILQ_FIRST(path)) != NULL) {
- pe->dir->refCount--;
- TAILQ_REMOVE(path, pe, link);
- if (pe->dir->refCount == 0) {
- TAILQ_REMOVE(&openDirectories, pe->dir, link);
- Hash_DeleteTable(&pe->dir->files);
- free(pe->dir->name);
- free(pe->dir);
- }
- free(pe);
- }
-}
-
-/**
- * Path_Concat
- *
- * Concatenate two paths, adding the second to the end of the first.
- * Make sure to avoid duplicates.
- *
- * Side Effects:
- * Reference counts for added dirs are upped.
- */
-void
-Path_Concat(struct Path *path1, const struct Path *path2)
-{
- struct PathElement *p1, *p2;
-
- TAILQ_FOREACH(p2, path2, link) {
- TAILQ_FOREACH(p1, path1, link) {
- if (p1->dir == p2->dir)
- break;
- }
- if (p1 == NULL) {
- p1 = emalloc(sizeof(*p1));
- p1->dir = p2->dir;
- p1->dir->refCount++;
- TAILQ_INSERT_TAIL(path1, p1, link);
- }
- }
-}
-
-/********** DEBUG INFO **********/
-void
-Dir_PrintDirectories(void)
-{
- const Dir *d;
-
- printf("#*** Directory Cache:\n");
- printf("# Stats: %d hits %d misses %d near misses %d losers (%d%%)\n",
- hits, misses, nearmisses, bigmisses,
- (hits + bigmisses + nearmisses ?
- hits * 100 / (hits + bigmisses + nearmisses) : 0));
- printf("# %-20s referenced\thits\n", "directory");
- TAILQ_FOREACH(d, &openDirectories, link)
- printf("# %-20s %10d\t%4d\n", d->name, d->refCount, d->hits);
-}
-
-void
-Path_Print(const struct Path *path)
-{
- const struct PathElement *p;
-
- TAILQ_FOREACH(p, path, link)
- printf("%s ", p->dir->name);
-}
diff --git a/usr.bin/make/dir.h b/usr.bin/make/dir.h
deleted file mode 100644
index 1ae89ae..0000000
--- a/usr.bin/make/dir.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)dir.h 8.2 (Berkeley) 4/28/95
- * $FreeBSD$
- */
-
-#ifndef dir_h_6002e3b8
-#define dir_h_6002e3b8
-
-#include <sys/queue.h>
-#include "hash.h"
-
-struct GNode;
-struct Lst;
-struct Dir;
-
-struct PathElement;
-TAILQ_HEAD(Path, PathElement);
-
-void Dir_Init(void);
-void Dir_InitDot(void);
-Boolean Dir_HasWildcards(const char *);
-int Dir_FindHereOrAbove(char *, char *, char *, int);
-int Dir_MTime(struct GNode *);
-void Dir_PrintDirectories(void);
-
-struct Dir *Path_AddDir(struct Path *, const char *);
-void Path_Clear(struct Path *);
-void Path_Concat(struct Path *, const struct Path *);
-void Path_Duplicate(struct Path *, const struct Path *);
-void Path_Expand(char *, struct Path *, struct Lst *);
-char *Path_FindFile(char *, struct Path *);
-char *Path_MakeFlags(const char *, const struct Path *);
-void Path_Print(const struct Path *);
-
-#endif /* dir_h_6002e3b8 */
diff --git a/usr.bin/make/for.c b/usr.bin/make/for.c
deleted file mode 100644
index 1b2e578..0000000
--- a/usr.bin/make/for.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*-
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Christos Zoulas.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)for.c 8.1 (Berkeley) 6/6/93
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * for.c --
- * Functions to handle loops in a makefile.
- *
- * Interface:
- * For_Eval Evaluate the loop in the passed line.
- * For_Run Run accumulated loop
- *
- */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "buf.h"
-#include "for.h"
-#include "globals.h"
-#include "lst.h"
-#include "parse.h"
-#include "str.h"
-#include "util.h"
-#include "var.h"
-
-/*
- * For statements are of the form:
- *
- * .for <variable> in <varlist>
- * ...
- * .endfor
- *
- * The trick is to look for the matching end inside for for loop
- * To do that, we count the current nesting level of the for loops.
- * and the .endfor statements, accumulating all the statements between
- * the initial .for loop and the matching .endfor;
- * then we evaluate the for loop for each variable in the varlist.
- */
-
-static int forLevel = 0; /* Nesting level */
-static char *forVar; /* Iteration variable */
-static Buffer *forBuf; /* Commands in loop */
-static Lst forLst; /* List of items */
-
-/**
- * For_For
- * Evaluate the for loop in the passed line. The line
- * looks like this:
- * .for <variable> in <varlist>
- * The line pointer points just behind the for.
- *
- * Results:
- * TRUE: Syntax ok.
- * FALSE: Syntax error.
- */
-Boolean
-For_For(char *line)
-{
- char *ptr;
- char *wrd;
- char *sub;
- Buffer *buf;
- size_t varlen;
- int i;
- ArgArray words;
-
- ptr = line;
-
- /*
- * Skip space between for and the variable.
- */
- for (ptr++; *ptr && isspace((u_char)*ptr); ptr++)
- ;
-
- /*
- * Grab the variable
- */
- for (wrd = ptr; *ptr && !isspace((u_char)*ptr); ptr++)
- ;
-
- buf = Buf_Init(0);
- Buf_AppendRange(buf, wrd, ptr);
- forVar = Buf_GetAll(buf, &varlen);
-
- if (varlen == 0) {
- Buf_Destroy(buf, TRUE);
- Parse_Error(PARSE_FATAL, "missing variable in for");
- return (FALSE);
- }
- Buf_Destroy(buf, FALSE);
-
- /*
- * Skip to 'in'.
- */
- while (*ptr && isspace((u_char)*ptr))
- ptr++;
-
- /*
- * Grab the `in'
- */
- if (ptr[0] != 'i' || ptr[1] != 'n' || !isspace((u_char)ptr[2])) {
- free(forVar);
- Parse_Error(PARSE_FATAL, "missing `in' in for");
- fprintf(stderr, "%s\n", ptr);
- return (FALSE);
- }
- ptr += 3;
-
- /*
- * Skip to values
- */
- while (*ptr && isspace((u_char)*ptr))
- ptr++;
-
- /*
- * Make a list with the remaining words
- */
- sub = Buf_Peel(Var_Subst(ptr, VAR_CMD, FALSE));
- brk_string(&words, sub, FALSE);
- Lst_Init(&forLst);
- for (i = 1; i < words.argc; i++) {
- if (words.argv[i][0] != '\0')
- Lst_AtFront(&forLst, estrdup(words.argv[i]));
- }
- ArgArray_Done(&words);
- DEBUGF(FOR, ("For: Iterator %s List %s\n", forVar, sub));
- free(sub);
-
- forBuf = Buf_Init(0);
- forLevel++;
- return (TRUE);
-}
-
-/**
- * For_Eval
- * Eat a line of the .for body looking for embedded .for loops
- * and the .endfor
- */
-Boolean
-For_Eval(char *line)
-{
- char *ptr;
-
- ptr = line;
-
- if (*ptr == '.') {
- /*
- * Need to check for 'endfor' and 'for' to find the end
- * of our loop or to find embedded for loops.
- */
- for (ptr++; *ptr != '\0' && isspace((u_char)*ptr); ptr++)
- ;
-
- /* XXX the isspace is wrong */
- if (strncmp(ptr, "endfor", 6) == 0 &&
- (isspace((u_char)ptr[6]) || ptr[6] == '\0')) {
- DEBUGF(FOR, ("For: end for %d\n", forLevel));
- if (forLevel == 0) {
- /* should not be here */
- abort();
- }
- forLevel--;
-
- } else if (strncmp(ptr, "for", 3) == 0 &&
- isspace((u_char)ptr[3])) {
- forLevel++;
- DEBUGF(FOR, ("For: new loop %d\n", forLevel));
- }
- }
-
- if (forLevel != 0) {
- /*
- * Still in loop - append the line
- */
- Buf_Append(forBuf, line);
- Buf_AddByte(forBuf, (Byte)'\n');
- return (TRUE);
- }
-
- return (FALSE);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * For_Run --
- * Run the for loop, imitating the actions of an include file
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The values of the variables forLst, forVar and forBuf are freed.
- *
- *-----------------------------------------------------------------------
- */
-void
-For_Run(int lineno)
-{
- Lst values; /* list of values for the variable */
- char *var; /* the variable's name */
- Buffer *buf; /* the contents of the for loop */
- const char *val; /* current value of loop variable */
- LstNode *ln;
- char *str;
-
- if (forVar == NULL || forBuf == NULL)
- return;
-
- /* copy the global variables to have them free for embedded fors */
- var = forVar;
- buf = forBuf;
- Lst_Init(&values);
- Lst_Concat(&values, &forLst, LST_CONCLINK);
-
- forVar = NULL;
- forBuf = NULL;
-
- LST_FOREACH(ln, &values) {
- val = Lst_Datum(ln);
- Var_SetGlobal(var, val);
-
- DEBUGF(FOR, ("--- %s = %s\n", var, val));
- str = Buf_Peel(Var_SubstOnly(var, Buf_Data(buf), FALSE));
-
- Parse_FromString(str, lineno);
- Var_Delete(var, VAR_GLOBAL);
- }
-
- free(var);
- Lst_Destroy(&values, free);
- Buf_Destroy(buf, TRUE);
-}
diff --git a/usr.bin/make/globals.h b/usr.bin/make/globals.h
deleted file mode 100644
index e3ce51b..0000000
--- a/usr.bin/make/globals.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef globals_h_1c1edb96
-#define globals_h_1c1edb96
-
-/*
- * Global Variables
- */
-
-#include "lst.h"
-#include "util.h"
-
-struct GNode;
-struct Path;
-
-/*
- * The list of target names specified on the command line.
- * Used to resolve #if make(...) statements
- */
-extern Lst create;
-
-/* The list of directories to search when looking for targets */
-extern struct Path dirSearchPath;
-
-/* The list of directories to search when looking for includes */
-extern struct Path parseIncPath;
-
-/* The system include path. */
-extern struct Path sysIncPath;
-
-extern int jobLimit; /* -j argument: maximum number of jobs */
-extern int makeErrors; /* Number of targets not remade due to errors */
-extern Boolean jobsRunning; /* True if jobs are running */
-extern Boolean compatMake; /* True if we are make compatible */
-extern Boolean ignoreErrors; /* True if should ignore all errors */
-extern Boolean beSilent; /* True if should print no commands */
-extern Boolean beVerbose; /* True if should print extra cruft */
-extern Boolean beQuiet; /* True if want quiet headers with -j */
-extern Boolean noExecute; /* True if should execute nothing */
-extern Boolean printGraphOnly; /* -p flag */
-extern Boolean allPrecious; /* True if every target is precious */
-extern Boolean is_posix; /* .POSIX target seen */
-extern Boolean mfAutoDeps; /* .MAKEFILEDEPS target seen */
-extern Boolean remakingMakefiles; /* True if remaking makefiles is in progress */
-
-/* True if should continue on unaffected portions of the graph
- * when have an error in one portion */
-extern Boolean keepgoing;
-
-/* TRUE if targets should just be 'touched'if out of date. Set by the -t flag */
-extern Boolean touchFlag;
-
-/* TRUE if should capture the output of subshells by means of pipes.
- * Otherwise it is routed to temporary files from which it is retrieved
- * when the shell exits */
-extern Boolean usePipes;
-
-/* TRUE if we aren't supposed to really make anything, just see if the
- * targets are out-of-date */
-extern Boolean queryFlag;
-
-/* List of specific variables for which the environment should be
- * searched before the global context */
-extern Lst envFirstVars;
-
-extern struct GNode *DEFAULT; /* .DEFAULT rule */
-
-/* The time at the start of this whole process */
-extern time_t now;
-
-extern int debug;
-
-/* warning flags */
-extern uint32_t warn_cmd; /* positive warning flags on command line */
-extern uint32_t warn_nocmd; /* negative warning flags on command line */
-extern uint32_t warn_flags; /* current warning flags */
-
-#endif /* globals_h_1c1edb96 */
diff --git a/usr.bin/make/hash.c b/usr.bin/make/hash.c
deleted file mode 100644
index b5ea6bc..0000000
--- a/usr.bin/make/hash.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)hash.c 8.1 (Berkeley) 6/6/93
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/* hash.c --
- *
- * This module contains routines to manipulate a hash table.
- * See hash.h for a definition of the structure of the hash
- * table. Hash tables grow automatically as the amount of
- * information increases.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "hash.h"
-#include "util.h"
-
-/*
- * Forward references to local procedures that are used before they're
- * defined:
- */
-static void RebuildTable(Hash_Table *);
-
-/*
- * The following defines the ratio of # entries to # buckets
- * at which we rebuild the table to make it larger.
- */
-
-#define rebuildLimit 8
-
-/*
- *---------------------------------------------------------
- *
- * Hash_InitTable --
- *
- * Set up the hash table t with a given number of buckets, or a
- * reasonable default if the number requested is less than or
- * equal to zero. Hash tables will grow in size as needed.
- *
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Memory is allocated for the initial bucket area.
- *
- *---------------------------------------------------------
- */
-void
-Hash_InitTable(Hash_Table *t, int numBuckets)
-{
- int i;
- struct Hash_Entry **hp;
-
- /*
- * Round up the size to a power of two.
- */
- if (numBuckets <= 0)
- i = 16;
- else {
- for (i = 2; i < numBuckets; i <<= 1)
- continue;
- }
- t->numEntries = 0;
- t->size = i;
- t->mask = i - 1;
- t->bucketPtr = hp = emalloc(sizeof(*hp) * i);
- while (--i >= 0)
- *hp++ = NULL;
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_DeleteTable --
- *
- * This routine removes everything from a hash table
- * and frees up the memory space it occupied (except for
- * the space in the Hash_Table structure).
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Lots of memory is freed up.
- *
- *---------------------------------------------------------
- */
-void
-Hash_DeleteTable(Hash_Table *t)
-{
- struct Hash_Entry **hp, *h, *nexth = NULL;
- int i;
-
- for (hp = t->bucketPtr, i = t->size; --i >= 0;) {
- for (h = *hp++; h != NULL; h = nexth) {
- nexth = h->next;
- free(h);
- }
- }
- free(t->bucketPtr);
-
- /*
- * Set up the hash table to cause memory faults on any future access
- * attempts until re-initialization.
- */
- t->bucketPtr = NULL;
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_FindEntry --
- *
- * Searches a hash table for an entry corresponding to key.
- *
- * Results:
- * The return value is a pointer to the entry for key,
- * if key was present in the table. If key was not
- * present, NULL is returned.
- *
- * Side Effects:
- * None.
- *
- *---------------------------------------------------------
- */
-Hash_Entry *
-Hash_FindEntry(const Hash_Table *t, const char *key)
-{
- Hash_Entry *e;
- unsigned h;
- const char *p;
-
- for (h = 0, p = key; *p;)
- h = (h << 5) - h + *p++;
- p = key;
- for (e = t->bucketPtr[h & t->mask]; e != NULL; e = e->next)
- if (e->namehash == h && strcmp(e->name, p) == 0)
- return (e);
- return (NULL);
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_CreateEntry --
- *
- * Searches a hash table for an entry corresponding to
- * key. If no entry is found, then one is created.
- *
- * Results:
- * The return value is a pointer to the entry. If *newPtr
- * isn't NULL, then *newPtr is filled in with TRUE if a
- * new entry was created, and FALSE if an entry already existed
- * with the given key.
- *
- * Side Effects:
- * Memory may be allocated, and the hash buckets may be modified.
- *---------------------------------------------------------
- */
-Hash_Entry *
-Hash_CreateEntry(Hash_Table *t, const char *key, Boolean *newPtr)
-{
- Hash_Entry *e;
- unsigned int h;
- const char *p;
- int keylen;
- struct Hash_Entry **hp;
-
- /*
- * Hash the key. As a side effect, save the length (strlen) of the
- * key in case we need to create the entry.
- */
- for (h = 0, p = key; *p;)
- h = (h << 5) - h + *p++;
- keylen = p - key;
- p = key;
- for (e = t->bucketPtr[h & t->mask]; e != NULL; e = e->next) {
- if (e->namehash == h && strcmp(e->name, p) == 0) {
- if (newPtr != NULL)
- *newPtr = FALSE;
- return (e);
- }
- }
-
- /*
- * The desired entry isn't there. Before allocating a new entry,
- * expand the table if necessary (and this changes the resulting
- * bucket chain).
- */
- if (t->numEntries >= rebuildLimit * t->size)
- RebuildTable(t);
- e = emalloc(sizeof(*e) + keylen);
- hp = &t->bucketPtr[h & t->mask];
- e->next = *hp;
- *hp = e;
- e->clientData = NULL;
- e->namehash = h;
- strcpy(e->name, p);
- t->numEntries++;
-
- if (newPtr != NULL)
- *newPtr = TRUE;
- return (e);
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_DeleteEntry --
- *
- * Delete the given hash table entry and free memory associated with
- * it.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Hash chain that entry lives in is modified and memory is freed.
- *
- *---------------------------------------------------------
- */
-void
-Hash_DeleteEntry(Hash_Table *t, Hash_Entry *e)
-{
- Hash_Entry **hp, *p;
-
- if (e == NULL)
- return;
- for (hp = &t->bucketPtr[e->namehash & t->mask];
- (p = *hp) != NULL; hp = &p->next) {
- if (p == e) {
- *hp = p->next;
- free(p);
- t->numEntries--;
- return;
- }
- }
- write(STDERR_FILENO, "bad call to Hash_DeleteEntry\n", 29);
- abort();
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_EnumFirst --
- * This procedure sets things up for a complete search
- * of all entries recorded in the hash table.
- *
- * Results:
- * The return value is the address of the first entry in
- * the hash table, or NULL if the table is empty.
- *
- * Side Effects:
- * The information in searchPtr is initialized so that successive
- * calls to Hash_Next will return successive HashEntry's
- * from the table.
- *
- *---------------------------------------------------------
- */
-Hash_Entry *
-Hash_EnumFirst(const Hash_Table *t, Hash_Search *searchPtr)
-{
-
- searchPtr->tablePtr = t;
- searchPtr->nextIndex = 0;
- searchPtr->hashEntryPtr = NULL;
- return (Hash_EnumNext(searchPtr));
-}
-
-/*
- *---------------------------------------------------------
- *
- * Hash_EnumNext --
- * This procedure returns successive entries in the hash table.
- *
- * Results:
- * The return value is a pointer to the next HashEntry
- * in the table, or NULL when the end of the table is
- * reached.
- *
- * Side Effects:
- * The information in searchPtr is modified to advance to the
- * next entry.
- *
- *---------------------------------------------------------
- */
-Hash_Entry *
-Hash_EnumNext(Hash_Search *searchPtr)
-{
- Hash_Entry *e;
- const Hash_Table *t = searchPtr->tablePtr;
-
- /*
- * The hashEntryPtr field points to the most recently returned
- * entry, or is NULL if we are starting up. If not NULL, we have
- * to start at the next one in the chain.
- */
- e = searchPtr->hashEntryPtr;
- if (e != NULL)
- e = e->next;
- /*
- * If the chain ran out, or if we are starting up, we need to
- * find the next nonempty chain.
- */
- while (e == NULL) {
- if (searchPtr->nextIndex >= t->size)
- return (NULL);
- e = t->bucketPtr[searchPtr->nextIndex++];
- }
- searchPtr->hashEntryPtr = e;
- return (e);
-}
-
-/*
- *---------------------------------------------------------
- *
- * RebuildTable --
- * This local routine makes a new hash table that
- * is larger than the old one.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The entire hash table is moved, so any bucket numbers
- * from the old table are invalid.
- *
- *---------------------------------------------------------
- */
-static void
-RebuildTable(Hash_Table *t)
-{
- Hash_Entry *e, *next = NULL, **hp, **xp;
- int i, mask;
- Hash_Entry **oldhp;
- int oldsize;
-
- oldhp = t->bucketPtr;
- oldsize = i = t->size;
- i <<= 1;
- t->size = i;
- t->mask = mask = i - 1;
- t->bucketPtr = hp = emalloc(sizeof(*hp) * i);
- while (--i >= 0)
- *hp++ = NULL;
- for (hp = oldhp, i = oldsize; --i >= 0;) {
- for (e = *hp++; e != NULL; e = next) {
- next = e->next;
- xp = &t->bucketPtr[e->namehash & mask];
- e->next = *xp;
- *xp = e;
- }
- }
- free(oldhp);
-}
diff --git a/usr.bin/make/hash.h b/usr.bin/make/hash.h
deleted file mode 100644
index 80dd74d..0000000
--- a/usr.bin/make/hash.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)hash.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#ifndef hash_h_f6312f46
-#define hash_h_f6312f46
-
-/* hash.h --
- *
- * This file contains definitions used by the hash module,
- * which maintains hash tables.
- */
-
-#include "util.h"
-
-/*
- * The following defines one entry in the hash table.
- */
-typedef struct Hash_Entry {
- struct Hash_Entry *next; /* Link entries within same bucket. */
- void *clientData; /* Data associated with key. */
- unsigned namehash; /* hash value of key */
- char name[1]; /* key string */
-} Hash_Entry;
-
-typedef struct Hash_Table {
- struct Hash_Entry **bucketPtr; /* Buckets in the table */
- int size; /* Actual size of array. */
- int numEntries; /* Number of entries in the table. */
- int mask; /* Used to select bits for hashing. */
-} Hash_Table;
-
-/*
- * The following structure is used by the searching routines
- * to record where we are in the search.
- */
-typedef struct Hash_Search {
- const Hash_Table *tablePtr; /* Table being searched. */
- int nextIndex; /* Next bucket to check */
- Hash_Entry *hashEntryPtr; /* Next entry in current bucket */
-} Hash_Search;
-
-/*
- * Macros.
- */
-
-/*
- * void *Hash_GetValue(const Hash_Entry *h)
- */
-#define Hash_GetValue(h) ((h)->clientData)
-
-/*
- * Hash_SetValue(Hash_Entry *h, void *val);
- */
-#define Hash_SetValue(h, val) ((h)->clientData = (val))
-
-void Hash_InitTable(Hash_Table *, int);
-void Hash_DeleteTable(Hash_Table *);
-Hash_Entry *Hash_FindEntry(const Hash_Table *, const char *);
-Hash_Entry *Hash_CreateEntry(Hash_Table *, const char *, Boolean *);
-void Hash_DeleteEntry(Hash_Table *, Hash_Entry *);
-Hash_Entry *Hash_EnumFirst(const Hash_Table *, Hash_Search *);
-Hash_Entry *Hash_EnumNext(Hash_Search *);
-
-#endif /* hash_h_f6312f46 */
diff --git a/usr.bin/make/hash_tables.c b/usr.bin/make/hash_tables.c
deleted file mode 100644
index 27909d0..0000000
--- a/usr.bin/make/hash_tables.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * DO NOT EDIT
- * $FreeBSD$
- * auto-generated from FreeBSD: src/usr.bin/make/parse.c,v 1.114 2008/03/12 14:50:58 obrien Exp
- * DO NOT EDIT
- */
-#include <sys/types.h>
-
-#include "hash_tables.h"
-
-/*
- * d=2
- * n=40
- * m=19
- * c=2.09
- * maxlen=1
- * minklen=2
- * maxklen=9
- * minchar=97
- * maxchar=119
- * loop=0
- * numiter=1
- * seed=
- */
-
-static const signed char directive_g[] = {
- 8, 0, 0, 5, 6, -1, 17, 15, 10, 6,
- -1, -1, 10, 0, 0, -1, 18, 2, 3, 0,
- 7, -1, -1, -1, 0, 14, -1, -1, 11, 16,
- -1, -1, 0, -1, 0, 0, 17, 0, -1, 1,
-};
-
-static const u_char directive_T0[] = {
- 26, 14, 19, 35, 10, 34, 18, 27, 1, 17,
- 22, 37, 12, 12, 36, 21, 0, 6, 1, 25,
- 9, 4, 19,
-};
-
-static const u_char directive_T1[] = {
- 25, 22, 19, 0, 2, 18, 33, 18, 30, 4,
- 30, 9, 21, 19, 16, 12, 35, 34, 4, 19,
- 9, 33, 16,
-};
-
-
-int
-directive_hash(const u_char *key, size_t len)
-{
- unsigned f0, f1;
- const u_char *kp = key;
-
- if (len < 2 || len > 9)
- return -1;
-
- for (f0=f1=0; kp < key + len; ++kp) {
- if (*kp < 97 || *kp > 119)
- return -1;
- f0 += directive_T0[-97 + *kp];
- f1 += directive_T1[-97 + *kp];
- }
-
- f0 %= 40;
- f1 %= 40;
-
- return (directive_g[f0] + directive_g[f1]) % 19;
-}
-/*
- * d=2
- * n=74
- * m=35
- * c=2.09
- * maxlen=1
- * minklen=4
- * maxklen=13
- * minchar=46
- * maxchar=95
- * loop=0
- * numiter=4
- * seed=
- */
-
-static const signed char keyword_g[] = {
- 12, 18, 7, 25, 30, 5, -1, -1, -1, 7,
- -1, 0, 33, 0, 4, -1, -1, 13, 29, 0,
- -1, 28, -1, 28, -1, 0, -1, 27, 4, 34,
- -1, -1, -1, 30, 13, 10, -1, -1, 0, 10,
- 24, -1, -1, -1, 0, 6, 0, 0, -1, 23,
- -1, -1, -1, 0, -1, 23, -1, -1, 19, 4,
- -1, 31, 12, 16, -1, 20, 22, 9, 0, -1,
- -1, 9, 4, 0,
-};
-
-static const u_char keyword_T0[] = {
- 34, 28, 50, 61, 14, 57, 48, 60, 20, 67,
- 60, 63, 0, 24, 28, 2, 49, 64, 18, 23,
- 36, 33, 40, 14, 38, 42, 71, 49, 2, 53,
- 53, 37, 7, 29, 24, 21, 12, 50, 59, 10,
- 43, 23, 0, 44, 47, 6, 46, 22, 48, 64,
-};
-
-static const u_char keyword_T1[] = {
- 18, 67, 39, 60, 7, 70, 2, 26, 31, 18,
- 73, 47, 61, 17, 38, 50, 22, 52, 13, 55,
- 56, 32, 63, 4, 64, 55, 49, 21, 47, 67,
- 33, 66, 60, 73, 30, 68, 69, 32, 72, 4,
- 28, 49, 51, 15, 66, 68, 43, 67, 46, 56,
-};
-
-
-int
-keyword_hash(const u_char *key, size_t len)
-{
- unsigned f0, f1;
- const u_char *kp = key;
-
- if (len < 4 || len > 13)
- return -1;
-
- for (f0=f1=0; *kp; ++kp) {
- if (*kp < 46 || *kp > 95)
- return -1;
- f0 += keyword_T0[-46 + *kp];
- f1 += keyword_T1[-46 + *kp];
- }
-
- f0 %= 74;
- f1 %= 74;
-
- return (keyword_g[f0] + keyword_g[f1]) % 35;
-}
diff --git a/usr.bin/make/job.c b/usr.bin/make/job.c
deleted file mode 100644
index 6fee0ec..0000000
--- a/usr.bin/make/job.c
+++ /dev/null
@@ -1,3391 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)job.c 8.2 (Berkeley) 3/19/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * job.c --
- * handle the creation etc. of our child processes.
- *
- * Interface:
- * Job_Make Start the creation of the given target.
- *
- * Job_CatchChildren
- * Check for and handle the termination of any children.
- * This must be called reasonably frequently to keep the
- * whole make going at a decent clip, since job table
- * entries aren't removed until their process is caught
- * this way. Its single argument is TRUE if the function
- * should block waiting for a child to terminate.
- *
- * Job_CatchOutput Print any output our children have produced. Should
- * also be called fairly frequently to keep the user
- * informed of what's going on. If no output is waiting,
- * it will block for a time given by the SEL_* constants,
- * below, or until output is ready.
- *
- * Job_Init Called to intialize this module. in addition, any
- * commands attached to the .BEGIN target are executed
- * before this function returns. Hence, the makefile must
- * have been parsed before this function is called.
- *
- * Job_Full Return TRUE if the job table is filled.
- *
- * Job_Empty Return TRUE if the job table is completely empty.
- *
- * Job_Finish Perform any final processing which needs doing. This
- * includes the execution of any commands which have
- * been/were attached to the .END target. It should only
- * be called when the job table is empty.
- *
- * Job_AbortAll Abort all currently running jobs. It doesn't handle
- * output or do anything for the jobs, just kills them.
- * It should only be called in an emergency, as it were.
- *
- * Job_CheckCommands
- * Verify that the commands for a target are ok. Provide
- * them if necessary and possible.
- *
- * Job_Touch Update a target without really updating it.
- *
- * Job_Wait Wait for all currently-running jobs to finish.
- *
- * compat.c --
- * The routines in this file implement the full-compatibility
- * mode of PMake. Most of the special functionality of PMake
- * is available in this mode. Things not supported:
- * - different shells.
- * - friendly variable substitution.
- *
- * Interface:
- * Compat_Run Initialize things for this module and recreate
- * thems as need creatin'
- */
-
-#include <sys/queue.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/stat.h>
-#ifdef USE_KQUEUE
-#include <sys/event.h>
-#endif
-#include <sys/wait.h>
-#include <ctype.h>
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <paths.h>
-#include <string.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <utime.h>
-
-#include "arch.h"
-#include "buf.h"
-#include "config.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "job.h"
-#include "make.h"
-#include "parse.h"
-#include "proc.h"
-#include "shell.h"
-#include "str.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-#define TMPPAT "makeXXXXXXXXXX"
-
-#ifndef USE_KQUEUE
-/*
- * The SEL_ constants determine the maximum amount of time spent in select
- * before coming out to see if a child has finished. SEL_SEC is the number of
- * seconds and SEL_USEC is the number of micro-seconds
- */
-#define SEL_SEC 2
-#define SEL_USEC 0
-#endif /* !USE_KQUEUE */
-
-/*
- * Job Table definitions.
- *
- * The job "table" is kept as a linked Lst in 'jobs', with the number of
- * active jobs maintained in the 'nJobs' variable. At no time will this
- * exceed the value of 'maxJobs', initialized by the Job_Init function.
- *
- * When a job is finished, the Make_Update function is called on each of the
- * parents of the node which was just remade. This takes care of the upward
- * traversal of the dependency graph.
- */
-#define JOB_BUFSIZE 1024
-typedef struct Job {
- pid_t pid; /* The child's process ID */
-
- struct GNode *node; /* The target the child is making */
-
- /*
- * A LstNode for the first command to be saved after the job completes.
- * This is NULL if there was no "..." in the job's commands.
- */
- LstNode *tailCmds;
-
- /*
- * An FILE* for writing out the commands. This is only
- * used before the job is actually started.
- */
- FILE *cmdFILE;
-
- /*
- * A word of flags which determine how the module handles errors,
- * echoing, etc. for the job
- */
- short flags; /* Flags to control treatment of job */
-#define JOB_IGNERR 0x001 /* Ignore non-zero exits */
-#define JOB_SILENT 0x002 /* no output */
-#define JOB_SPECIAL 0x004 /* Target is a special one. i.e. run it locally
- * if we can't export it and maxLocal is 0 */
-#define JOB_IGNDOTS 0x008 /* Ignore "..." lines when processing
- * commands */
-#define JOB_FIRST 0x020 /* Job is first job for the node */
-#define JOB_RESTART 0x080 /* Job needs to be completely restarted */
-#define JOB_RESUME 0x100 /* Job needs to be resumed b/c it stopped,
- * for some reason */
-#define JOB_CONTINUING 0x200 /* We are in the process of resuming this job.
- * Used to avoid infinite recursion between
- * JobFinish and JobRestart */
-
- /* union for handling shell's output */
- union {
- /*
- * This part is used when usePipes is true.
- * The output is being caught via a pipe and the descriptors
- * of our pipe, an array in which output is line buffered and
- * the current position in that buffer are all maintained for
- * each job.
- */
- struct {
- /*
- * Input side of pipe associated with
- * job's output channel
- */
- int op_inPipe;
-
- /*
- * Output side of pipe associated with job's
- * output channel
- */
- int op_outPipe;
-
- /*
- * Buffer for storing the output of the
- * job, line by line
- */
- char op_outBuf[JOB_BUFSIZE + 1];
-
- /* Current position in op_outBuf */
- int op_curPos;
- } o_pipe;
-
- /*
- * If usePipes is false the output is routed to a temporary
- * file and all that is kept is the name of the file and the
- * descriptor open to the file.
- */
- struct {
- /* Name of file to which shell output was rerouted */
- char of_outFile[PATH_MAX];
-
- /*
- * Stream open to the output file. Used to funnel all
- * from a single job to one file while still allowing
- * multiple shell invocations
- */
- int of_outFd;
- } o_file;
-
- } output; /* Data for tracking a shell's output */
-
- TAILQ_ENTRY(Job) link; /* list link */
-} Job;
-
-#define outPipe output.o_pipe.op_outPipe
-#define inPipe output.o_pipe.op_inPipe
-#define outBuf output.o_pipe.op_outBuf
-#define curPos output.o_pipe.op_curPos
-#define outFile output.o_file.of_outFile
-#define outFd output.o_file.of_outFd
-
-TAILQ_HEAD(JobList, Job);
-
-/*
- * error handling variables
- */
-static int aborting = 0; /* why is the make aborting? */
-#define ABORT_ERROR 1 /* Because of an error */
-#define ABORT_INTERRUPT 2 /* Because it was interrupted */
-#define ABORT_WAIT 3 /* Waiting for jobs to finish */
-
-/*
- * XXX: Avoid SunOS bug... FILENO() is fp->_file, and file
- * is a char! So when we go above 127 we turn negative!
- */
-#define FILENO(a) ((unsigned)fileno(a))
-
-/*
- * post-make command processing. The node postCommands is really just the
- * .END target but we keep it around to avoid having to search for it
- * all the time.
- */
-static GNode *postCommands;
-
-/*
- * The number of commands actually printed for a target. Should this
- * number be 0, no shell will be executed.
- */
-static int numCommands;
-
-/*
- * Return values from JobStart.
- */
-#define JOB_RUNNING 0 /* Job is running */
-#define JOB_ERROR 1 /* Error in starting the job */
-#define JOB_FINISHED 2 /* The job is already finished */
-#define JOB_STOPPED 3 /* The job is stopped */
-
-/*
- * The maximum number of jobs that may run. This is initialize from the
- * -j argument for the leading make and from the FIFO for sub-makes.
- */
-static int maxJobs;
-
-static int nJobs; /* The number of children currently running */
-
-/* The structures that describe them */
-static struct JobList jobs = TAILQ_HEAD_INITIALIZER(jobs);
-
-static Boolean jobFull; /* Flag to tell when the job table is full. It
- * is set TRUE when (1) the total number of
- * running jobs equals the maximum allowed */
-#ifdef USE_KQUEUE
-static int kqfd; /* File descriptor obtained by kqueue() */
-#else
-static fd_set outputs; /* Set of descriptors of pipes connected to
- * the output channels of children */
-#endif
-
-static GNode *lastNode; /* The node for which output was most recently
- * produced. */
-static const char *targFmt; /* Format string to use to head output from a
- * job when it's not the most-recent job heard
- * from */
-static char *targPrefix = NULL; /* What we print at the start of targFmt */
-
-#define TARG_FMT "%s %s ---\n" /* Default format */
-#define MESSAGE(fp, gn) \
- fprintf(fp, targFmt, targPrefix, gn->name);
-
-/*
- * When JobStart attempts to run a job but isn't allowed to
- * or when Job_CatchChildren detects a job that has
- * been stopped somehow, the job is placed on the stoppedJobs queue to be run
- * when the next job finishes.
- *
- * Lst of Job structures describing jobs that were stopped due to
- * concurrency limits or externally
- */
-static struct JobList stoppedJobs = TAILQ_HEAD_INITIALIZER(stoppedJobs);
-
-static int fifoFd; /* Fd of our job fifo */
-static char fifoName[] = "/tmp/make_fifo_XXXXXXXXX";
-static int fifoMaster;
-
-static volatile sig_atomic_t interrupted;
-
-
-#if defined(USE_PGRP) && defined(SYSV)
-# define KILL(pid, sig) killpg(-(pid), (sig))
-#else
-# if defined(USE_PGRP)
-# define KILL(pid, sig) killpg((pid), (sig))
-# else
-# define KILL(pid, sig) kill((pid), (sig))
-# endif
-#endif
-
-/*
- * Grmpf... There is no way to set bits of the wait structure
- * anymore with the stupid W*() macros. I liked the union wait
- * stuff much more. So, we devise our own macros... This is
- * really ugly, use dramamine sparingly. You have been warned.
- */
-#define W_SETMASKED(st, val, fun) \
- { \
- int sh = (int)~0; \
- int mask = fun(sh); \
- \
- for (sh = 0; ((mask >> sh) & 1) == 0; sh++) \
- continue; \
- *(st) = (*(st) & ~mask) | ((val) << sh); \
- }
-
-#define W_SETTERMSIG(st, val) W_SETMASKED(st, val, WTERMSIG)
-#define W_SETEXITSTATUS(st, val) W_SETMASKED(st, val, WEXITSTATUS)
-
-static void JobRestart(Job *);
-static int JobStart(GNode *, int, Job *);
-static void JobDoOutput(Job *, Boolean);
-static void JobInterrupt(int, int);
-static void JobRestartJobs(void);
-static int Compat_RunCommand(LstNode *, struct GNode *);
-
-static GNode *curTarg = NULL;
-static GNode *ENDNode;
-
-/**
- * Create a fifo file with a uniq filename, and returns a file
- * descriptor to that fifo.
- */
-static int
-mkfifotemp(char *template)
-{
- char *start;
- char *pathend;
- char *ptr;
- const unsigned char padchar[] =
- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
- if (template[0] == '\0') {
- errno = EINVAL; /* bad input string */
- return (-1);
- }
-
- /* Find end of template string. */
- pathend = strchr(template, '\0');
- ptr = pathend - 1;
-
- /*
- * Starting from the end of the template replace spaces with 'X' in
- * them with random characters until there are no more 'X'.
- */
- while (ptr >= template && *ptr == 'X') {
- uint32_t rand_num =
-#if __FreeBSD_version < 800041
- arc4random() % (sizeof(padchar) - 1);
-#else
- arc4random_uniform(sizeof(padchar) - 1);
-#endif
- *ptr-- = padchar[rand_num];
- }
- start = ptr + 1;
-
- /* Check the target directory. */
- for (; ptr > template; --ptr) {
- if (*ptr == '/') {
- struct stat sbuf;
-
- *ptr = '\0';
- if (stat(template, &sbuf) != 0)
- return (-1);
-
- if (!S_ISDIR(sbuf.st_mode)) {
- errno = ENOTDIR;
- return (-1);
- }
- *ptr = '/';
- break;
- }
- }
-
- for (;;) {
- if (mkfifo(template, 0600) == 0) {
- int fd;
-
- if ((fd = open(template, O_RDWR, 0600)) < 0) {
- unlink(template);
- return (-1);
- } else {
- return (fd);
- }
- } else {
- if (errno != EEXIST) {
- return (-1);
- }
- }
-
- /*
- * If we have a collision, cycle through the space of
- * filenames.
- */
- for (ptr = start;;) {
- char *pad;
-
- if (*ptr == '\0' || ptr == pathend)
- return (-1);
-
- pad = strchr(padchar, *ptr);
- if (pad == NULL || *++pad == '\0') {
- *ptr++ = padchar[0];
- } else {
- *ptr++ = *pad;
- break;
- }
- }
- }
- /*NOTREACHED*/
-}
-
-static void
-catch_child(int sig __unused)
-{
-}
-
-/**
- */
-void
-Proc_Init(void)
-{
- /*
- * Catch SIGCHLD so that we get kicked out of select() when we
- * need to look at a child. This is only known to matter for the
- * -j case (perhaps without -P).
- *
- * XXX this is intentionally misplaced.
- */
- struct sigaction sa;
-
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = SA_RESTART | SA_NOCLDSTOP;
- sa.sa_handler = catch_child;
- sigaction(SIGCHLD, &sa, NULL);
-}
-
-/**
- * Wait for child process to terminate.
- */
-static int
-ProcWait(ProcStuff *ps)
-{
- pid_t pid;
- int status;
-
- /*
- * Wait for the process to exit.
- */
- for (;;) {
- pid = wait(&status);
- if (pid == -1 && errno != EINTR) {
- Fatal("error in wait: %d", pid);
- /* NOTREACHED */
- }
- if (pid == ps->child_pid) {
- break;
- }
- if (interrupted) {
- break;
- }
- }
-
- return (status);
-}
-
-/**
- * JobCatchSignal
- * Got a signal. Set global variables and hope that someone will
- * handle it.
- */
-static void
-JobCatchSig(int signo)
-{
-
- interrupted = signo;
-}
-
-/**
- * JobPassSig --
- * Pass a signal on to all local jobs if
- * USE_PGRP is defined, then die ourselves.
- *
- * Side Effects:
- * We die by the same signal.
- */
-static void
-JobPassSig(int signo)
-{
- Job *job;
- sigset_t nmask, omask;
- struct sigaction act;
-
- sigemptyset(&nmask);
- sigaddset(&nmask, signo);
- sigprocmask(SIG_SETMASK, &nmask, &omask);
-
- DEBUGF(JOB, ("JobPassSig(%d) called.\n", signo));
- TAILQ_FOREACH(job, &jobs, link) {
- DEBUGF(JOB, ("JobPassSig passing signal %d to child %jd.\n",
- signo, (intmax_t)job->pid));
- KILL(job->pid, signo);
- }
-
- /*
- * Deal with proper cleanup based on the signal received. We only run
- * the .INTERRUPT target if the signal was in fact an interrupt.
- * The other three termination signals are more of a "get out *now*"
- * command.
- */
- if (signo == SIGINT) {
- JobInterrupt(TRUE, signo);
- } else if (signo == SIGHUP || signo == SIGTERM || signo == SIGQUIT) {
- JobInterrupt(FALSE, signo);
- }
-
- /*
- * Leave gracefully if SIGQUIT, rather than core dumping.
- */
- if (signo == SIGQUIT) {
- signo = SIGINT;
- }
-
- /*
- * Send ourselves the signal now we've given the message to everyone
- * else. Note we block everything else possible while we're getting
- * the signal. This ensures that all our jobs get continued when we
- * wake up before we take any other signal.
- * XXX this comment seems wrong.
- */
- act.sa_handler = SIG_DFL;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
- sigaction(signo, &act, NULL);
-
- DEBUGF(JOB, ("JobPassSig passing signal to self, mask = %x.\n",
- ~0 & ~(1 << (signo - 1))));
- signal(signo, SIG_DFL);
-
- KILL(getpid(), signo);
-
- signo = SIGCONT;
- TAILQ_FOREACH(job, &jobs, link) {
- DEBUGF(JOB, ("JobPassSig passing signal %d to child %jd.\n",
- signo, (intmax_t)job->pid));
- KILL(job->pid, signo);
- }
-
- sigprocmask(SIG_SETMASK, &omask, NULL);
- sigprocmask(SIG_SETMASK, &omask, NULL);
- act.sa_handler = JobPassSig;
- sigaction(signo, &act, NULL);
-}
-
-/**
- * JobPrintCommand --
- * Put out another command for the given job. If the command starts
- * with an @ or a - we process it specially. In the former case,
- * so long as the -s and -n flags weren't given to make, we stick
- * a shell-specific echoOff command in the script. In the latter,
- * we ignore errors for the entire job, unless the shell has error
- * control.
- * If the command is just "..." we take all future commands for this
- * job to be commands to be executed once the entire graph has been
- * made and return non-zero to signal that the end of the commands
- * was reached. These commands are later attached to the postCommands
- * node and executed by Job_Finish when all things are done.
- * This function is called from JobStart via LST_FOREACH.
- *
- * Results:
- * Always 0, unless the command was "..."
- *
- * Side Effects:
- * If the command begins with a '-' and the shell has no error control,
- * the JOB_IGNERR flag is set in the job descriptor.
- * If the command is "..." and we're not ignoring such things,
- * tailCmds is set to the successor node of the cmd.
- * numCommands is incremented if the command is actually printed.
- */
-static int
-JobPrintCommand(LstNode *cmdNode, Job *job)
-{
- Boolean noSpecials; /* true if we shouldn't worry about
- * inserting special commands into
- * the input stream. */
- Boolean shutUp = FALSE; /* true if we put a no echo command
- * into the command file */
- Boolean errOff = FALSE; /* true if we turned error checking
- * off before printing the command
- * and need to turn it back on */
- const char *cmdTemplate;/* Template to use when printing the command */
- char *cmd; /* Expanded command */
-
- noSpecials = (noExecute && !(job->node->type & OP_MAKE));
-
-#define DBPRINTF(fmt, arg) \
- DEBUGF(JOB, (fmt, arg)); \
- fprintf(job->cmdFILE, fmt, arg); \
- fflush(job->cmdFILE);
-
- /*
- * For debugging, we replace each command with the result of expanding
- * the variables in the command.
- */
- cmd = Buf_Peel(Var_Subst(Lst_Datum(cmdNode), job->node, FALSE));
- if (strcmp(cmd, "...") == 0) {
- free(cmd);
- job->node->type |= OP_SAVE_CMDS;
- if ((job->flags & JOB_IGNDOTS) == 0) {
- job->tailCmds = Lst_Succ(cmdNode);
- return (1);
- }
- return (0);
- }
- Lst_Replace(cmdNode, cmd);
-
- /*
- * Check for leading @', -' or +'s to control echoing, error checking,
- * and execution on -n.
- */
- while (*cmd == '@' || *cmd == '-' || *cmd == '+') {
- switch (*cmd) {
-
- case '@':
- shutUp = DEBUG(LOUD) ? FALSE : TRUE;
- break;
-
- case '-':
- errOff = TRUE;
- break;
-
- case '+':
- if (noSpecials) {
- /*
- * We're not actually exececuting anything...
- * but this one needs to be - use compat mode
- * just for it.
- */
- Compat_RunCommand(cmdNode, job->node);
- return (0);
- }
- break;
- }
- cmd++;
- }
-
- while (isspace((unsigned char)*cmd))
- cmd++;
-
- /*
- * Ignore empty commands
- */
- if (*cmd == '\0') {
- return (0);
- }
-
- cmdTemplate = "%s\n";
- numCommands += 1;
-
- if (shutUp) {
- if (!(job->flags & JOB_SILENT) && !noSpecials &&
- commandShell->hasEchoCtl) {
- DBPRINTF("%s\n", commandShell->echoOff);
- } else {
- shutUp = FALSE;
- }
- }
-
- if (errOff) {
- if (!(job->flags & JOB_IGNERR) && !noSpecials) {
- if (commandShell->hasErrCtl) {
- /*
- * We don't want the error-control commands
- * showing up either, so we turn off echoing
- * while executing them. We could put another
- * field in the shell structure to tell
- * JobDoOutput to look for this string too,
- * but why make it any more complex than
- * it already is?
- */
- if (!(job->flags & JOB_SILENT) && !shutUp &&
- commandShell->hasEchoCtl) {
- DBPRINTF("%s\n", commandShell->echoOff);
- DBPRINTF("%s\n", commandShell->ignErr);
- DBPRINTF("%s\n", commandShell->echoOn);
- } else {
- DBPRINTF("%s\n", commandShell->ignErr);
- }
- } else if (commandShell->ignErr &&
- *commandShell->ignErr != '\0') {
- /*
- * The shell has no error control, so we need to
- * be weird to get it to ignore any errors from
- * the command. If echoing is turned on, we turn
- * it off and use the errCheck template to echo
- * the command. Leave echoing off so the user
- * doesn't see the weirdness we go through to
- * ignore errors. Set cmdTemplate to use the
- * weirdness instead of the simple "%s\n"
- * template.
- */
- if (!(job->flags & JOB_SILENT) && !shutUp &&
- commandShell->hasEchoCtl) {
- DBPRINTF("%s\n", commandShell->echoOff);
- DBPRINTF(commandShell->errCheck, cmd);
- shutUp = TRUE;
- }
- cmdTemplate = commandShell->ignErr;
- /*
- * The error ignoration (hee hee) is already
- * taken care of by the ignErr template, so
- * pretend error checking is still on.
- */
- errOff = FALSE;
- } else {
- errOff = FALSE;
- }
- } else {
- errOff = FALSE;
- }
- }
-
- DBPRINTF(cmdTemplate, cmd);
-
- if (errOff) {
- /*
- * If echoing is already off, there's no point in issuing the
- * echoOff command. Otherwise we issue it and pretend it was on
- * for the whole command...
- */
- if (!shutUp && !(job->flags & JOB_SILENT) &&
- commandShell->hasEchoCtl) {
- DBPRINTF("%s\n", commandShell->echoOff);
- shutUp = TRUE;
- }
- DBPRINTF("%s\n", commandShell->errCheck);
- }
- if (shutUp) {
- DBPRINTF("%s\n", commandShell->echoOn);
- }
- return (0);
-}
-
-/**
- * JobClose --
- * Called to close both input and output pipes when a job is finished.
- *
- * Side Effects:
- * The file descriptors associated with the job are closed.
- */
-static void
-JobClose(Job *job)
-{
-
- if (usePipes) {
-#if !defined(USE_KQUEUE)
- FD_CLR(job->inPipe, &outputs);
-#endif
- if (job->outPipe != job->inPipe) {
- close(job->outPipe);
- }
- JobDoOutput(job, TRUE);
- close(job->inPipe);
- } else {
- close(job->outFd);
- JobDoOutput(job, TRUE);
- }
-}
-
-/**
- * JobFinish --
- * Do final processing for the given job including updating
- * parents and starting new jobs as available/necessary. Note
- * that we pay no attention to the JOB_IGNERR flag here.
- * This is because when we're called because of a noexecute flag
- * or something, jstat.w_status is 0 and when called from
- * Job_CatchChildren, the status is zeroed if it s/b ignored.
- *
- * Side Effects:
- * Some nodes may be put on the toBeMade queue.
- * Final commands for the job are placed on postCommands.
- *
- * If we got an error and are aborting (aborting == ABORT_ERROR) and
- * the job list is now empty, we are done for the day.
- * If we recognized an error (makeErrors !=0), we set the aborting flag
- * to ABORT_ERROR so no more jobs will be started.
- */
-static void
-JobFinish(Job *job, int *status)
-{
- Boolean done;
- LstNode *ln;
-
- if (WIFEXITED(*status)) {
- int job_status = WEXITSTATUS(*status);
-
- JobClose(job);
- /*
- * Deal with ignored errors in -B mode. We need to
- * print a message telling of the ignored error as
- * well as setting status.w_status to 0 so the next
- * command gets run. To do this, we set done to be
- * TRUE if in -B mode and the job exited non-zero.
- */
- if (job_status == 0) {
- done = FALSE;
- } else {
- if (job->flags & JOB_IGNERR) {
- done = TRUE;
- } else {
- /*
- * If it exited non-zero and either we're
- * doing things our way or we're not ignoring
- * errors, the job is finished. Similarly, if
- * the shell died because of a signal the job
- * is also finished. In these cases, finish
- * out the job's output before printing the
- * exit status...
- */
- done = TRUE;
- if (job->cmdFILE != NULL &&
- job->cmdFILE != stdout) {
- fclose(job->cmdFILE);
- }
-
- }
- }
- } else if (WIFSIGNALED(*status)) {
- if (WTERMSIG(*status) == SIGCONT) {
- /*
- * No need to close things down or anything.
- */
- done = FALSE;
- } else {
- /*
- * If it exited non-zero and either we're
- * doing things our way or we're not ignoring
- * errors, the job is finished. Similarly, if
- * the shell died because of a signal the job
- * is also finished. In these cases, finish
- * out the job's output before printing the
- * exit status...
- */
- JobClose(job);
- if (job->cmdFILE != NULL &&
- job->cmdFILE != stdout) {
- fclose(job->cmdFILE);
- }
- done = TRUE;
- }
- } else {
- /*
- * No need to close things down or anything.
- */
- done = FALSE;
- }
-
- if (WIFEXITED(*status)) {
- if (done || DEBUG(JOB)) {
- FILE *out;
-
- if (compatMake &&
- !usePipes &&
- (job->flags & JOB_IGNERR)) {
- /*
- * If output is going to a file and this job
- * is ignoring errors, arrange to have the
- * exit status sent to the output file as
- * well.
- */
- out = fdopen(job->outFd, "w");
- if (out == NULL)
- Punt("Cannot fdopen");
- } else {
- out = stdout;
- }
-
- DEBUGF(JOB, ("Process %jd exited.\n",
- (intmax_t)job->pid));
-
- if (WEXITSTATUS(*status) == 0) {
- if (DEBUG(JOB)) {
- if (usePipes && job->node != lastNode) {
- MESSAGE(out, job->node);
- lastNode = job->node;
- }
- fprintf(out,
- "*** [%s] Completed successfully\n",
- job->node->name);
- }
- } else {
- if (usePipes && job->node != lastNode) {
- MESSAGE(out, job->node);
- lastNode = job->node;
- }
- fprintf(out, "*** [%s] Error code %d%s\n",
- job->node->name,
- WEXITSTATUS(*status),
- (job->flags & JOB_IGNERR) ?
- " (ignored)" : "");
-
- if (job->flags & JOB_IGNERR) {
- *status = 0;
- }
- }
-
- fflush(out);
- }
- } else if (WIFSIGNALED(*status)) {
- if (done || DEBUG(JOB) || (WTERMSIG(*status) == SIGCONT)) {
- FILE *out;
-
- if (compatMake &&
- !usePipes &&
- (job->flags & JOB_IGNERR)) {
- /*
- * If output is going to a file and this job
- * is ignoring errors, arrange to have the
- * exit status sent to the output file as
- * well.
- */
- out = fdopen(job->outFd, "w");
- if (out == NULL)
- Punt("Cannot fdopen");
- } else {
- out = stdout;
- }
-
- if (WTERMSIG(*status) == SIGCONT) {
- /*
- * If the beastie has continued, shift the
- * Job from the stopped list to the running
- * one (or re-stop it if concurrency is
- * exceeded) and go and get another child.
- */
- if (job->flags & (JOB_RESUME | JOB_RESTART)) {
- if (usePipes && job->node != lastNode) {
- MESSAGE(out, job->node);
- lastNode = job->node;
- }
- fprintf(out, "*** [%s] Continued\n",
- job->node->name);
- }
- if (!(job->flags & JOB_CONTINUING)) {
- DEBUGF(JOB, ("Warning: process %jd was not "
- "continuing.\n", (intmax_t) job->pid));
- }
- job->flags &= ~JOB_CONTINUING;
- TAILQ_INSERT_TAIL(&jobs, job, link);
- nJobs += 1;
- DEBUGF(JOB, ("Process %jd is continuing locally.\n",
- (intmax_t) job->pid));
- if (nJobs == maxJobs) {
- jobFull = TRUE;
- DEBUGF(JOB, ("Job queue is full.\n"));
- }
- fflush(out);
- return;
-
- } else {
- if (usePipes && job->node != lastNode) {
- MESSAGE(out, job->node);
- lastNode = job->node;
- }
- fprintf(out,
- "*** [%s] Signal %d\n", job->node->name,
- WTERMSIG(*status));
- fflush(out);
- }
- }
- } else {
- /* STOPPED */
- FILE *out;
-
- if (compatMake && !usePipes && (job->flags & JOB_IGNERR)) {
- /*
- * If output is going to a file and this job
- * is ignoring errors, arrange to have the
- * exit status sent to the output file as
- * well.
- */
- out = fdopen(job->outFd, "w");
- if (out == NULL)
- Punt("Cannot fdopen");
- } else {
- out = stdout;
- }
-
- DEBUGF(JOB, ("Process %jd stopped.\n", (intmax_t) job->pid));
- if (usePipes && job->node != lastNode) {
- MESSAGE(out, job->node);
- lastNode = job->node;
- }
- fprintf(out, "*** [%s] Stopped -- signal %d\n",
- job->node->name, WSTOPSIG(*status));
- job->flags |= JOB_RESUME;
- TAILQ_INSERT_TAIL(&stoppedJobs, job, link);
- fflush(out);
- return;
- }
-
- /*
- * Now handle the -B-mode stuff. If the beast still isn't finished,
- * try and restart the job on the next command. If JobStart says it's
- * ok, it's ok. If there's an error, this puppy is done.
- */
- if (compatMake && WIFEXITED(*status) &&
- Lst_Succ(job->node->compat_command) != NULL) {
- switch (JobStart(job->node, job->flags & JOB_IGNDOTS, job)) {
- case JOB_RUNNING:
- done = FALSE;
- break;
- case JOB_ERROR:
- done = TRUE;
- W_SETEXITSTATUS(status, 1);
- break;
- case JOB_FINISHED:
- /*
- * If we got back a JOB_FINISHED code, JobStart has
- * already called Make_Update and freed the job
- * descriptor. We set done to false here to avoid fake
- * cycles and double frees. JobStart needs to do the
- * update so we can proceed up the graph when given
- * the -n flag..
- */
- done = FALSE;
- break;
- default:
- break;
- }
- } else {
- done = TRUE;
- }
-
- if (done && aborting != ABORT_ERROR &&
- aborting != ABORT_INTERRUPT && *status == 0) {
- /*
- * As long as we aren't aborting and the job didn't return a
- * non-zero status that we shouldn't ignore, we call
- * Make_Update to update the parents. In addition, any saved
- * commands for the node are placed on the .END target.
- */
- for (ln = job->tailCmds; ln != NULL; ln = LST_NEXT(ln)) {
- Lst_AtEnd(&postCommands->commands,
- Buf_Peel(
- Var_Subst(Lst_Datum(ln), job->node, FALSE)));
- }
-
- job->node->made = MADE;
- Make_Update(job->node);
- free(job);
-
- } else if (*status != 0) {
- makeErrors++;
- free(job);
- }
-
- JobRestartJobs();
-
- /*
- * Set aborting if any error.
- */
- if (makeErrors && !keepgoing && aborting != ABORT_INTERRUPT) {
- /*
- * If we found any errors in this batch of children and the -k
- * flag wasn't given, we set the aborting flag so no more jobs
- * get started.
- */
- aborting = ABORT_ERROR;
- }
-
- if (aborting == ABORT_ERROR && Job_Empty()) {
- /*
- * If we are aborting and the job table is now empty, we finish.
- */
- Finish(makeErrors);
- }
-}
-
-/**
- * Job_Touch
- * Touch the given target. Called by JobStart when the -t flag was
- * given. Prints messages unless told to be silent.
- *
- * Side Effects:
- * The data modification of the file is changed. In addition, if the
- * file did not exist, it is created.
- */
-void
-Job_Touch(GNode *gn, Boolean silent)
-{
- int streamID; /* ID of stream opened to do the touch */
- struct utimbuf times; /* Times for utime() call */
-
- if (gn->type & (OP_JOIN | OP_USE | OP_EXEC | OP_OPTIONAL)) {
- /*
- * .JOIN, .USE, .ZEROTIME and .OPTIONAL targets are "virtual"
- * targets and, as such, shouldn't really be created.
- */
- return;
- }
-
- if (!silent) {
- fprintf(stdout, "touch %s\n", gn->name);
- fflush(stdout);
- }
-
- if (noExecute) {
- return;
- }
-
- if (gn->type & OP_ARCHV) {
- Arch_Touch(gn);
- } else if (gn->type & OP_LIB) {
- Arch_TouchLib(gn);
- } else {
- char *file = gn->path ? gn->path : gn->name;
-
- times.actime = times.modtime = now;
- if (utime(file, &times) < 0) {
- streamID = open(file, O_RDWR | O_CREAT, 0666);
-
- if (streamID >= 0) {
- char c;
-
- /*
- * Read and write a byte to the file to change
- * the modification time, then close the file.
- */
- if (read(streamID, &c, 1) == 1) {
- lseek(streamID, (off_t)0, SEEK_SET);
- write(streamID, &c, 1);
- }
-
- close(streamID);
- } else {
- fprintf(stdout, "*** couldn't touch %s: %s",
- file, strerror(errno));
- fflush(stdout);
- }
- }
- }
-}
-
-/**
- * Job_CheckCommands
- * Make sure the given node has all the commands it needs.
- *
- * Results:
- * TRUE if the commands list is/was ok.
- *
- * Side Effects:
- * The node will have commands from the .DEFAULT rule added to it
- * if it needs them.
- */
-Boolean
-Job_CheckCommands(GNode *gn, void (*abortProc)(const char *, ...))
-{
-
- if (OP_NOP(gn->type) && Lst_IsEmpty(&gn->commands) &&
- (gn->type & OP_LIB) == 0) {
- /*
- * No commands. Look for .DEFAULT rule from which we might infer
- * commands.
- */
- if (DEFAULT != NULL && !Lst_IsEmpty(&DEFAULT->commands)) {
- /*
- * Make only looks for a .DEFAULT if the node was
- * never the target of an operator, so that's what we
- * do too. If a .DEFAULT was given, we substitute its
- * commands for gn's commands and set the IMPSRC
- * variable to be the target's name The DEFAULT node
- * acts like a transformation rule, in that gn also
- * inherits any attributes or sources attached to
- * .DEFAULT itself.
- */
- Make_HandleUse(DEFAULT, gn);
- Var_Set(IMPSRC, Var_Value(TARGET, gn), gn);
-
- } else if (Dir_MTime(gn) == 0) {
- /*
- * The node wasn't the target of an operator we have
- * no .DEFAULT rule to go on and the target doesn't
- * already exist. There's nothing more we can do for
- * this branch. If the -k flag wasn't given, we stop
- * in our tracks, otherwise we just don't update
- * this node's parents so they never get examined.
- */
- static const char msg[] =
- "make: don't know how to make";
-
- if (gn->type & OP_OPTIONAL) {
- fprintf(stdout, "%s %s(ignored)\n",
- msg, gn->name);
- fflush(stdout);
- } else if (keepgoing) {
- fprintf(stdout, "%s %s(continuing)\n",
- msg, gn->name);
- fflush(stdout);
- return (FALSE);
- } else {
-#ifndef WITHOUT_OLD_JOKE
- if (strcmp(gn->name,"love") == 0)
- (*abortProc)("Not war.");
- else
-#endif
- (*abortProc)("%s %s. Stop",
- msg, gn->name);
- return (FALSE);
- }
- }
- }
- return (TRUE);
-}
-
-/**
- * JobExec
- * Execute the shell for the given job. Called from JobStart and
- * JobRestart.
- *
- * Side Effects:
- * A shell is executed, outputs is altered and the Job structure added
- * to the job table.
- */
-static void
-JobExec(Job *job, char **argv)
-{
- ProcStuff ps;
-
- if (DEBUG(JOB)) {
- int i;
-
- DEBUGF(JOB, ("Running %s\n", job->node->name));
- DEBUGF(JOB, ("\tCommand: "));
- for (i = 0; argv[i] != NULL; i++) {
- DEBUGF(JOB, ("%s ", argv[i]));
- }
- DEBUGF(JOB, ("\n"));
- }
-
- /*
- * Some jobs produce no output and it's disconcerting to have
- * no feedback of their running (since they produce no output, the
- * banner with their name in it never appears). This is an attempt to
- * provide that feedback, even if nothing follows it.
- */
- if (lastNode != job->node && (job->flags & JOB_FIRST) &&
- !(job->flags & JOB_SILENT)) {
- MESSAGE(stdout, job->node);
- lastNode = job->node;
- }
-
- ps.in = FILENO(job->cmdFILE);
- if (usePipes) {
- /*
- * Set up the child's output to be routed through the
- * pipe we've created for it.
- */
- ps.out = job->outPipe;
- } else {
- /*
- * We're capturing output in a file, so we duplicate
- * the descriptor to the temporary file into the
- * standard output.
- */
- ps.out = job->outFd;
- }
- ps.err = STDERR_FILENO;
-
- ps.merge_errors = 1;
- ps.pgroup = 1;
- ps.searchpath = 0;
-
- ps.argv = argv;
- ps.argv_free = 0;
-
- /*
- * Fork. Warning since we are doing vfork() instead of fork(),
- * do not allocate memory in the child process!
- */
- if ((ps.child_pid = vfork()) == -1) {
- Punt("Cannot fork");
-
-
- } else if (ps.child_pid == 0) {
- /*
- * Child
- */
- if (fifoFd >= 0)
- close(fifoFd);
-
- Proc_Exec(&ps);
- /* NOTREACHED */
- }
-
- /*
- * Parent
- */
- job->pid = ps.child_pid;
-
- if (usePipes && (job->flags & JOB_FIRST)) {
- /*
- * The first time a job is run for a node, we set the
- * current position in the buffer to the beginning and
- * mark another stream to watch in the outputs mask.
- */
-#ifdef USE_KQUEUE
- struct kevent kev[2];
-#endif
- job->curPos = 0;
-
-#if defined(USE_KQUEUE)
- EV_SET(&kev[0], job->inPipe, EVFILT_READ, EV_ADD, 0, 0, job);
- EV_SET(&kev[1], job->pid, EVFILT_PROC,
- EV_ADD | EV_ONESHOT, NOTE_EXIT, 0, NULL);
- if (kevent(kqfd, kev, 2, NULL, 0, NULL) != 0) {
- /*
- * kevent() will fail if the job is already
- * finished
- */
- if (errno != EINTR && errno != EBADF && errno != ESRCH)
- Punt("kevent: %s", strerror(errno));
- }
-#else
- FD_SET(job->inPipe, &outputs);
-#endif /* USE_KQUEUE */
- }
-
- if (job->cmdFILE != NULL && job->cmdFILE != stdout) {
- fclose(job->cmdFILE);
- job->cmdFILE = NULL;
- }
-
- /*
- * Now the job is actually running, add it to the table.
- */
- nJobs += 1;
- TAILQ_INSERT_TAIL(&jobs, job, link);
- if (nJobs == maxJobs) {
- jobFull = TRUE;
- }
-}
-
-/**
- * JobMakeArgv
- * Create the argv needed to execute the shell for a given job.
- */
-static void
-JobMakeArgv(Job *job, char **argv)
-{
- int argc;
- static char args[10]; /* For merged arguments */
-
- argv[0] = commandShell->name;
- argc = 1;
-
- if ((commandShell->exit && *commandShell->exit != '-') ||
- (commandShell->echo && *commandShell->echo != '-')) {
- /*
- * At least one of the flags doesn't have a minus before it, so
- * merge them together. Have to do this because the *(&(@*#*&#$#
- * Bourne shell thinks its second argument is a file to source.
- * Grrrr. Note the ten-character limitation on the combined
- * arguments.
- */
- sprintf(args, "-%s%s", (job->flags & JOB_IGNERR) ? "" :
- commandShell->exit ? commandShell->exit : "",
- (job->flags & JOB_SILENT) ? "" :
- commandShell->echo ? commandShell->echo : "");
-
- if (args[1]) {
- argv[argc] = args;
- argc++;
- }
- } else {
- if (!(job->flags & JOB_IGNERR) && commandShell->exit) {
- argv[argc] = commandShell->exit;
- argc++;
- }
- if (!(job->flags & JOB_SILENT) && commandShell->echo) {
- argv[argc] = commandShell->echo;
- argc++;
- }
- }
- argv[argc] = NULL;
-}
-
-/**
- * JobRestart
- * Restart a job that stopped for some reason. The job must be neither
- * on the jobs nor on the stoppedJobs list.
- *
- * Side Effects:
- * jobFull will be set if the job couldn't be run.
- */
-static void
-JobRestart(Job *job)
-{
-
- if (job->flags & JOB_RESTART) {
- /*
- * Set up the control arguments to the shell. This is based on
- * the flags set earlier for this job. If the JOB_IGNERR flag
- * is clear, the 'exit' flag of the commandShell is used to
- * cause it to exit upon receiving an error. If the JOB_SILENT
- * flag is clear, the 'echo' flag of the commandShell is used
- * to get it to start echoing as soon as it starts
- * processing commands.
- */
- char *argv[4];
-
- JobMakeArgv(job, argv);
-
- DEBUGF(JOB, ("Restarting %s...", job->node->name));
- if (nJobs >= maxJobs && !(job->flags & JOB_SPECIAL)) {
- /*
- * Not allowed to run -- put it back on the hold
- * queue and mark the table full
- */
- DEBUGF(JOB, ("holding\n"));
- TAILQ_INSERT_HEAD(&stoppedJobs, job, link);
- jobFull = TRUE;
- DEBUGF(JOB, ("Job queue is full.\n"));
- return;
- } else {
- /*
- * Job may be run locally.
- */
- DEBUGF(JOB, ("running locally\n"));
- }
- JobExec(job, argv);
-
- } else {
- /*
- * The job has stopped and needs to be restarted.
- * Why it stopped, we don't know...
- */
- DEBUGF(JOB, ("Resuming %s...", job->node->name));
- if ((nJobs < maxJobs || ((job->flags & JOB_SPECIAL) &&
- maxJobs == 0)) && nJobs != maxJobs) {
- /*
- * If we haven't reached the concurrency limit already
- * (or the job must be run and maxJobs is 0), it's ok
- * to resume it.
- */
- Boolean error;
- int status;
-
- error = (KILL(job->pid, SIGCONT) != 0);
-
- if (!error) {
- /*
- * Make sure the user knows we've continued
- * the beast and actually put the thing in the
- * job table.
- */
- job->flags |= JOB_CONTINUING;
- status = 0;
- W_SETTERMSIG(&status, SIGCONT);
- JobFinish(job, &status);
-
- job->flags &= ~(JOB_RESUME|JOB_CONTINUING);
- DEBUGF(JOB, ("done\n"));
- } else {
- Error("couldn't resume %s: %s",
- job->node->name, strerror(errno));
- status = 0;
- W_SETEXITSTATUS(&status, 1);
- JobFinish(job, &status);
- }
- } else {
- /*
- * Job cannot be restarted. Mark the table as full and
- * place the job back on the list of stopped jobs.
- */
- DEBUGF(JOB, ("table full\n"));
- TAILQ_INSERT_HEAD(&stoppedJobs, job, link);
- jobFull = TRUE;
- DEBUGF(JOB, ("Job queue is full.\n"));
- }
- }
-}
-
-/**
- * JobStart
- * Start a target-creation process going for the target described
- * by the graph node gn.
- *
- * Results:
- * JOB_ERROR if there was an error in the commands, JOB_FINISHED
- * if there isn't actually anything left to do for the job and
- * JOB_RUNNING if the job has been started.
- *
- * Side Effects:
- * A new Job node is created and added to the list of running
- * jobs. PMake is forked and a child shell created.
- */
-static int
-JobStart(GNode *gn, int flags, Job *previous)
-{
- Job *job; /* new job descriptor */
- char *argv[4]; /* Argument vector to shell */
- Boolean cmdsOK; /* true if the nodes commands were all right */
- Boolean noExec; /* Set true if we decide not to run the job */
- int tfd; /* File descriptor for temp file */
- LstNode *ln;
- char tfile[PATH_MAX];
- const char *tdir;
-
- if (interrupted) {
- JobPassSig(interrupted);
- return (JOB_ERROR);
- }
- if (previous != NULL) {
- previous->flags &= ~(JOB_FIRST | JOB_IGNERR | JOB_SILENT);
- job = previous;
- } else {
- job = emalloc(sizeof(Job));
- flags |= JOB_FIRST;
- }
-
- job->node = gn;
- job->tailCmds = NULL;
-
- /*
- * Set the initial value of the flags for this job based on the global
- * ones and the node's attributes... Any flags supplied by the caller
- * are also added to the field.
- */
- job->flags = 0;
- if (Targ_Ignore(gn)) {
- job->flags |= JOB_IGNERR;
- }
- if (Targ_Silent(gn)) {
- job->flags |= JOB_SILENT;
- }
- job->flags |= flags;
-
- /*
- * Check the commands now so any attributes from .DEFAULT have a chance
- * to migrate to the node.
- */
- if (!compatMake && (job->flags & JOB_FIRST)) {
- cmdsOK = Job_CheckCommands(gn, Error);
- } else {
- cmdsOK = TRUE;
- }
-
- if ((tdir = getenv("TMPDIR")) == NULL)
- tdir = _PATH_TMP;
-
- /*
- * If the -n flag wasn't given, we open up OUR (not the child's)
- * temporary file to stuff commands in it. The thing is rd/wr so we
- * don't need to reopen it to feed it to the shell. If the -n flag
- * *was* given, we just set the file to be stdout. Cute, huh?
- */
- if ((gn->type & OP_MAKE) || (!noExecute && !touchFlag)) {
- /*
- * We're serious here, but if the commands were bogus, we're
- * also dead...
- */
- if (!cmdsOK) {
- DieHorribly();
- }
-
- snprintf(tfile, sizeof(tfile), "%s/%s", tdir, TMPPAT);
- if ((tfd = mkstemp(tfile)) == -1)
- Punt("Cannot create temp file: %s", strerror(errno));
- job->cmdFILE = fdopen(tfd, "w+");
- eunlink(tfile);
- if (job->cmdFILE == NULL) {
- close(tfd);
- Punt("Could not open %s", tfile);
- }
- fcntl(FILENO(job->cmdFILE), F_SETFD, 1);
- /*
- * Send the commands to the command file, flush all its
- * buffers then rewind and remove the thing.
- */
- noExec = FALSE;
-
- /*
- * Used to be backwards; replace when start doing multiple
- * commands per shell.
- */
- if (compatMake) {
- /*
- * Be compatible: If this is the first time for this
- * node, verify its commands are ok and open the
- * commands list for sequential access by later
- * invocations of JobStart. Once that is done, we take
- * the next command off the list and print it to the
- * command file. If the command was an ellipsis, note
- * that there's nothing more to execute.
- */
- if (job->flags & JOB_FIRST)
- gn->compat_command = Lst_First(&gn->commands);
- else
- gn->compat_command =
- Lst_Succ(gn->compat_command);
-
- if (gn->compat_command == NULL ||
- JobPrintCommand(gn->compat_command, job))
- noExec = TRUE;
-
- if (noExec && !(job->flags & JOB_FIRST)) {
- /*
- * If we're not going to execute anything, the
- * job is done and we need to close down the
- * various file descriptors we've opened for
- * output, then call JobDoOutput to catch the
- * final characters or send the file to the
- * screen... Note that the i/o streams are only
- * open if this isn't the first job. Note also
- * that this could not be done in
- * Job_CatchChildren b/c it wasn't clear if
- * there were more commands to execute or not...
- */
- JobClose(job);
- }
- } else {
- /*
- * We can do all the commands at once. hooray for sanity
- */
- numCommands = 0;
- LST_FOREACH(ln, &gn->commands) {
- if (JobPrintCommand(ln, job))
- break;
- }
-
- /*
- * If we didn't print out any commands to the shell
- * script, there's not much point in executing the
- * shell, is there?
- */
- if (numCommands == 0) {
- noExec = TRUE;
- }
- }
-
- } else if (noExecute) {
- /*
- * Not executing anything -- just print all the commands to
- * stdout in one fell swoop. This will still set up
- * job->tailCmds correctly.
- */
- if (lastNode != gn) {
- MESSAGE(stdout, gn);
- lastNode = gn;
- }
- job->cmdFILE = stdout;
-
- /*
- * Only print the commands if they're ok, but don't die if
- * they're not -- just let the user know they're bad and keep
- * going. It doesn't do any harm in this case and may do
- * some good.
- */
- if (cmdsOK) {
- LST_FOREACH(ln, &gn->commands) {
- if (JobPrintCommand(ln, job))
- break;
- }
- }
- /*
- * Don't execute the shell, thank you.
- */
- noExec = TRUE;
-
- } else {
- /*
- * Just touch the target and note that no shell should be
- * executed. Set cmdFILE to stdout to make life easier. Check
- * the commands, too, but don't die if they're no good -- it
- * does no harm to keep working up the graph.
- */
- job->cmdFILE = stdout;
- Job_Touch(gn, job->flags & JOB_SILENT);
- noExec = TRUE;
- }
-
- /*
- * If we're not supposed to execute a shell, don't.
- */
- if (noExec) {
- /*
- * Unlink and close the command file if we opened one
- */
- if (job->cmdFILE != stdout) {
- if (job->cmdFILE != NULL)
- fclose(job->cmdFILE);
- } else {
- fflush(stdout);
- }
-
- /*
- * We only want to work our way up the graph if we aren't here
- * because the commands for the job were no good.
- */
- if (cmdsOK) {
- if (aborting == 0) {
- for (ln = job->tailCmds; ln != NULL;
- ln = LST_NEXT(ln)) {
- Lst_AtEnd(&postCommands->commands,
- Buf_Peel(Var_Subst(Lst_Datum(ln),
- job->node, FALSE)));
- }
- job->node->made = MADE;
- Make_Update(job->node);
- }
- free(job);
- return(JOB_FINISHED);
- } else {
- free(job);
- return(JOB_ERROR);
- }
- } else {
- fflush(job->cmdFILE);
- }
-
- /*
- * Set up the control arguments to the shell. This is based on the flags
- * set earlier for this job.
- */
- JobMakeArgv(job, argv);
-
- /*
- * If we're using pipes to catch output, create the pipe by which we'll
- * get the shell's output. If we're using files, print out that we're
- * starting a job and then set up its temporary-file name.
- */
- if (!compatMake || (job->flags & JOB_FIRST)) {
- if (usePipes) {
- int fd[2];
-
- if (pipe(fd) == -1)
- Punt("Cannot create pipe: %s", strerror(errno));
- job->inPipe = fd[0];
- job->outPipe = fd[1];
- fcntl(job->inPipe, F_SETFD, 1);
- fcntl(job->outPipe, F_SETFD, 1);
- } else {
- fprintf(stdout, "Remaking `%s'\n", gn->name);
- fflush(stdout);
- snprintf(job->outFile, sizeof(job->outFile), "%s/%s",
- tdir, TMPPAT);
- if ((job->outFd = mkstemp(job->outFile)) == -1)
- Punt("cannot create temp file: %s",
- strerror(errno));
- fcntl(job->outFd, F_SETFD, 1);
- }
- }
-
- if (nJobs >= maxJobs && !(job->flags & JOB_SPECIAL) && maxJobs != 0) {
- /*
- * We've hit the limit of concurrency, so put the job on hold
- * until some other job finishes. Note that the special jobs
- * (.BEGIN, .INTERRUPT and .END) may be run even when the
- * limit has been reached (e.g. when maxJobs == 0).
- */
- jobFull = TRUE;
-
- DEBUGF(JOB, ("Can only run job locally.\n"));
- job->flags |= JOB_RESTART;
- TAILQ_INSERT_TAIL(&stoppedJobs, job, link);
- } else {
- if (nJobs >= maxJobs) {
- /*
- * If we're running this job as a special case
- * (see above), at least say the table is full.
- */
- jobFull = TRUE;
- DEBUGF(JOB, ("Local job queue is full.\n"));
- }
- JobExec(job, argv);
- }
- return (JOB_RUNNING);
-}
-
-static char *
-JobOutput(Job *job, char *cp, char *endp, int msg)
-{
- char *ecp;
-
- if (commandShell->noPrint) {
- ecp = strstr(cp, commandShell->noPrint);
- while (ecp != NULL) {
- if (cp != ecp) {
- *ecp = '\0';
- if (msg && job->node != lastNode) {
- MESSAGE(stdout, job->node);
- lastNode = job->node;
- }
- /*
- * The only way there wouldn't be a newline
- * after this line is if it were the last in
- * the buffer. However, since the non-printable
- * comes after it, there must be a newline, so
- * we don't print one.
- */
- fprintf(stdout, "%s", cp);
- fflush(stdout);
- }
- cp = ecp + strlen(commandShell->noPrint);
- if (cp != endp) {
- /*
- * Still more to print, look again after
- * skipping the whitespace following the
- * non-printable command....
- */
- cp++;
- while (*cp == ' ' || *cp == '\t' ||
- *cp == '\n') {
- cp++;
- }
- ecp = strstr(cp, commandShell->noPrint);
- } else {
- return (cp);
- }
- }
- }
- return (cp);
-}
-
-/**
- * JobDoOutput
- * This function is called at different times depending on
- * whether the user has specified that output is to be collected
- * via pipes or temporary files. In the former case, we are called
- * whenever there is something to read on the pipe. We collect more
- * output from the given job and store it in the job's outBuf. If
- * this makes up a line, we print it tagged by the job's identifier,
- * as necessary.
- * If output has been collected in a temporary file, we open the
- * file and read it line by line, transferring it to our own
- * output channel until the file is empty. At which point we
- * remove the temporary file.
- * In both cases, however, we keep our figurative eye out for the
- * 'noPrint' line for the shell from which the output came. If
- * we recognize a line, we don't print it. If the command is not
- * alone on the line (the character after it is not \0 or \n), we
- * do print whatever follows it.
- *
- * Side Effects:
- * curPos may be shifted as may the contents of outBuf.
- */
-static void
-JobDoOutput(Job *job, Boolean finish)
-{
- Boolean gotNL = FALSE; /* true if got a newline */
- Boolean fbuf; /* true if our buffer filled up */
- int nr; /* number of bytes read */
- int i; /* auxiliary index into outBuf */
- int max; /* limit for i (end of current data) */
- int nRead; /* (Temporary) number of bytes read */
- FILE *oFILE; /* Stream pointer to shell's output file */
- char inLine[132];
-
- if (usePipes) {
- /*
- * Read as many bytes as will fit in the buffer.
- */
- end_loop:
- gotNL = FALSE;
- fbuf = FALSE;
-
- nRead = read(job->inPipe, &job->outBuf[job->curPos],
- JOB_BUFSIZE - job->curPos);
- /*
- * Check for interrupt here too, because the above read may
- * block when the child process is stopped. In this case the
- * interrupt will unblock it (we don't use SA_RESTART).
- */
- if (interrupted)
- JobPassSig(interrupted);
-
- if (nRead < 0) {
- DEBUGF(JOB, ("JobDoOutput(piperead)"));
- nr = 0;
- } else {
- nr = nRead;
- }
-
- /*
- * If we hit the end-of-file (the job is dead), we must flush
- * its remaining output, so pretend we read a newline if
- * there's any output remaining in the buffer.
- * Also clear the 'finish' flag so we stop looping.
- */
- if (nr == 0 && job->curPos != 0) {
- job->outBuf[job->curPos] = '\n';
- nr = 1;
- finish = FALSE;
- } else if (nr == 0) {
- finish = FALSE;
- }
-
- /*
- * Look for the last newline in the bytes we just got. If there
- * is one, break out of the loop with 'i' as its index and
- * gotNL set TRUE.
- */
- max = job->curPos + nr;
- for (i = job->curPos + nr - 1; i >= job->curPos; i--) {
- if (job->outBuf[i] == '\n') {
- gotNL = TRUE;
- break;
- } else if (job->outBuf[i] == '\0') {
- /*
- * Why?
- */
- job->outBuf[i] = ' ';
- }
- }
-
- if (!gotNL) {
- job->curPos += nr;
- if (job->curPos == JOB_BUFSIZE) {
- /*
- * If we've run out of buffer space, we have
- * no choice but to print the stuff. sigh.
- */
- fbuf = TRUE;
- i = job->curPos;
- }
- }
- if (gotNL || fbuf) {
- /*
- * Need to send the output to the screen. Null terminate
- * it first, overwriting the newline character if there
- * was one. So long as the line isn't one we should
- * filter (according to the shell description), we print
- * the line, preceded by a target banner if this target
- * isn't the same as the one for which we last printed
- * something. The rest of the data in the buffer are
- * then shifted down to the start of the buffer and
- * curPos is set accordingly.
- */
- job->outBuf[i] = '\0';
- if (i >= job->curPos) {
- char *cp;
-
- cp = JobOutput(job, job->outBuf,
- &job->outBuf[i], FALSE);
-
- /*
- * There's still more in that buffer. This time,
- * though, we know there's no newline at the
- * end, so we add one of our own free will.
- */
- if (*cp != '\0') {
- if (job->node != lastNode) {
- MESSAGE(stdout, job->node);
- lastNode = job->node;
- }
- fprintf(stdout, "%s%s", cp,
- gotNL ? "\n" : "");
- fflush(stdout);
- }
- }
- if (i < max - 1) {
- /* shift the remaining characters down */
- memcpy(job->outBuf, &job->outBuf[i + 1],
- max - (i + 1));
- job->curPos = max - (i + 1);
-
- } else {
- /*
- * We have written everything out, so we just
- * start over from the start of the buffer.
- * No copying. No nothing.
- */
- job->curPos = 0;
- }
- }
- if (finish) {
- /*
- * If the finish flag is true, we must loop until we hit
- * end-of-file on the pipe. This is guaranteed to happen
- * eventually since the other end of the pipe is now
- * closed (we closed it explicitly and the child has
- * exited). When we do get an EOF, finish will be set
- * FALSE and we'll fall through and out.
- */
- goto end_loop;
- }
-
- } else {
- /*
- * We've been called to retrieve the output of the job from the
- * temporary file where it's been squirreled away. This consists
- * of opening the file, reading the output line by line, being
- * sure not to print the noPrint line for the shell we used,
- * then close and remove the temporary file. Very simple.
- *
- * Change to read in blocks and do FindSubString type things
- * as for pipes? That would allow for "@echo -n..."
- */
- oFILE = fopen(job->outFile, "r");
- if (oFILE != NULL) {
- fprintf(stdout, "Results of making %s:\n",
- job->node->name);
- fflush(stdout);
-
- while (fgets(inLine, sizeof(inLine), oFILE) != NULL) {
- char *cp, *endp, *oendp;
-
- cp = inLine;
- oendp = endp = inLine + strlen(inLine);
- if (endp[-1] == '\n') {
- *--endp = '\0';
- }
- cp = JobOutput(job, inLine, endp, FALSE);
-
- /*
- * There's still more in that buffer. This time,
- * though, we know there's no newline at the
- * end, so we add one of our own free will.
- */
- fprintf(stdout, "%s", cp);
- fflush(stdout);
- if (endp != oendp) {
- fprintf(stdout, "\n");
- fflush(stdout);
- }
- }
- fclose(oFILE);
- eunlink(job->outFile);
- }
- }
-}
-
-/**
- * Job_CatchChildren
- * Handle the exit of a child. Called from Make_Make.
- *
- * Side Effects:
- * The job descriptor is removed from the list of children.
- *
- * Notes:
- * We do waits, blocking or not, according to the wisdom of our
- * caller, until there are no more children to report. For each
- * job, call JobFinish to finish things off. This will take care of
- * putting jobs on the stoppedJobs queue.
- */
-void
-Job_CatchChildren(Boolean block)
-{
- pid_t pid; /* pid of dead child */
- Job *job; /* job descriptor for dead child */
- int status; /* Exit/termination status */
-
- /*
- * Don't even bother if we know there's no one around.
- */
- if (nJobs == 0) {
- return;
- }
-
- for (;;) {
- pid = waitpid(-1, &status,
- (block ? 0 : WNOHANG) | WUNTRACED);
- if (pid <= 0)
- break;
-
- DEBUGF(JOB, ("Process %jd exited or stopped.\n",
- (intmax_t)pid));
-
- TAILQ_FOREACH(job, &jobs, link) {
- if (job->pid == pid)
- break;
- }
-
- if (job == NULL) {
- if (WIFSIGNALED(status) &&
- (WTERMSIG(status) == SIGCONT)) {
- TAILQ_FOREACH(job, &jobs, link) {
- if (job->pid == pid)
- break;
- }
- if (job == NULL) {
- Error("Resumed child (%jd) "
- "not in table", (intmax_t)pid);
- continue;
- }
- TAILQ_REMOVE(&stoppedJobs, job, link);
- } else {
- Error("Child (%jd) not in table?",
- (intmax_t)pid);
- continue;
- }
- } else {
- TAILQ_REMOVE(&jobs, job, link);
- nJobs -= 1;
- if (fifoFd >= 0 && maxJobs > 1) {
- write(fifoFd, "+", 1);
- maxJobs--;
- if (nJobs >= maxJobs)
- jobFull = TRUE;
- else
- jobFull = FALSE;
- } else {
- DEBUGF(JOB, ("Job queue is no longer full.\n"));
- jobFull = FALSE;
- }
- }
-
- JobFinish(job, &status);
- }
- if (interrupted)
- JobPassSig(interrupted);
-}
-
-/**
- * Job_CatchOutput
- * Catch the output from our children, if we're using
- * pipes do so. Otherwise just block time until we get a
- * signal(most likely a SIGCHLD) since there's no point in
- * just spinning when there's nothing to do and the reaping
- * of a child can wait for a while.
- *
- * Side Effects:
- * Output is read from pipes if we're piping.
- * -----------------------------------------------------------------------
- */
-void
-#ifdef USE_KQUEUE
-Job_CatchOutput(int flag __unused)
-#else
-Job_CatchOutput(int flag)
-#endif
-{
- int nfds;
-#ifdef USE_KQUEUE
-#define KEV_SIZE 4
- struct kevent kev[KEV_SIZE];
- int i;
-#else
- struct timeval timeout;
- fd_set readfds;
- Job *job;
-#endif
-
- fflush(stdout);
-
- if (usePipes) {
-#ifdef USE_KQUEUE
- if ((nfds = kevent(kqfd, NULL, 0, kev, KEV_SIZE, NULL)) == -1) {
- if (errno != EINTR)
- Punt("kevent: %s", strerror(errno));
- if (interrupted)
- JobPassSig(interrupted);
- } else {
- for (i = 0; i < nfds; i++) {
- if (kev[i].flags & EV_ERROR) {
- warnc(kev[i].data, "kevent");
- continue;
- }
- switch (kev[i].filter) {
- case EVFILT_READ:
- JobDoOutput(kev[i].udata, FALSE);
- break;
- case EVFILT_PROC:
- /*
- * Just wake up and let
- * Job_CatchChildren() collect the
- * terminated job.
- */
- break;
- }
- }
- }
-#else
- readfds = outputs;
- timeout.tv_sec = SEL_SEC;
- timeout.tv_usec = SEL_USEC;
- if (flag && jobFull && fifoFd >= 0)
- FD_SET(fifoFd, &readfds);
-
- nfds = select(FD_SETSIZE, &readfds, (fd_set *)NULL,
- (fd_set *)NULL, &timeout);
- if (nfds <= 0) {
- if (interrupted)
- JobPassSig(interrupted);
- return;
- }
- if (fifoFd >= 0 && FD_ISSET(fifoFd, &readfds)) {
- if (--nfds <= 0)
- return;
- }
- job = TAILQ_FIRST(&jobs);
- while (nfds != 0 && job != NULL) {
- if (FD_ISSET(job->inPipe, &readfds)) {
- JobDoOutput(job, FALSE);
- nfds--;
- }
- job = TAILQ_NEXT(job, link);
- }
-#endif /* !USE_KQUEUE */
- }
-}
-
-/**
- * Job_Make
- * Start the creation of a target. Basically a front-end for
- * JobStart used by the Make module.
- *
- * Side Effects:
- * Another job is started.
- */
-void
-Job_Make(GNode *gn)
-{
-
- JobStart(gn, 0, NULL);
-}
-
-void
-Job_SetPrefix(void)
-{
-
- if (targPrefix) {
- free(targPrefix);
- } else if (!Var_Exists(MAKE_JOB_PREFIX, VAR_GLOBAL)) {
- Var_SetGlobal(MAKE_JOB_PREFIX, "---");
- }
- targPrefix = Var_Subst("${" MAKE_JOB_PREFIX "}", VAR_GLOBAL, 0)->buf;
-}
-
-/**
- * Job_Init
- * Initialize the process module, given a maximum number of jobs.
- *
- * Side Effects:
- * lists and counters are initialized
- */
-void
-Job_Init(int maxproc)
-{
- GNode *begin; /* node for commands to do at the very start */
- const char *env;
- struct sigaction sa;
-
- fifoFd = -1;
- env = getenv("MAKE_JOBS_FIFO");
-
- if (env == NULL && maxproc > 1) {
- /*
- * We did not find the environment variable so we are the
- * leader. Create the fifo, open it, write one char per
- * allowed job into the pipe.
- */
- fifoFd = mkfifotemp(fifoName);
- if (fifoFd < 0) {
- env = NULL;
- } else {
- fifoMaster = 1;
- fcntl(fifoFd, F_SETFL, O_NONBLOCK);
- env = fifoName;
- setenv("MAKE_JOBS_FIFO", env, 1);
- while (maxproc-- > 0) {
- write(fifoFd, "+", 1);
- }
- /* The master make does not get a magic token */
- jobFull = TRUE;
- maxJobs = 0;
- }
-
- } else if (env != NULL) {
- /*
- * We had the environment variable so we are a slave.
- * Open fifo and give ourselves a magic token which represents
- * the token our parent make has grabbed to start his make
- * process. Otherwise the sub-makes would gobble up tokens and
- * the proper number of tokens to specify to -j would depend
- * on the depth of the tree and the order of execution.
- */
- fifoFd = open(env, O_RDWR, 0);
- if (fifoFd >= 0) {
- fcntl(fifoFd, F_SETFL, O_NONBLOCK);
- maxJobs = 1;
- jobFull = FALSE;
- }
- }
- if (fifoFd < 0) {
- maxJobs = maxproc;
- jobFull = FALSE;
- } else {
- }
- nJobs = 0;
-
- aborting = 0;
- makeErrors = 0;
-
- lastNode = NULL;
- if ((maxJobs == 1 && fifoFd < 0) || !beVerbose || is_posix || beQuiet) {
- /*
- * If only one job can run at a time, there's no need for a
- * banner, no is there?
- */
- targFmt = "";
- } else {
- targFmt = TARG_FMT;
- }
-
- /*
- * Catch the four signals that POSIX specifies if they aren't ignored.
- * JobCatchSignal will just set global variables and hope someone
- * else is going to handle the interrupt.
- */
- sa.sa_handler = JobCatchSig;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
-
- if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
- sigaction(SIGINT, &sa, NULL);
- }
- if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
- sigaction(SIGHUP, &sa, NULL);
- }
- if (signal(SIGQUIT, SIG_IGN) != SIG_IGN) {
- sigaction(SIGQUIT, &sa, NULL);
- }
- if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
- sigaction(SIGTERM, &sa, NULL);
- }
- /*
- * There are additional signals that need to be caught and passed if
- * either the export system wants to be told directly of signals or if
- * we're giving each job its own process group (since then it won't get
- * signals from the terminal driver as we own the terminal)
- */
-#if defined(USE_PGRP)
- if (signal(SIGTSTP, SIG_IGN) != SIG_IGN) {
- sigaction(SIGTSTP, &sa, NULL);
- }
- if (signal(SIGTTOU, SIG_IGN) != SIG_IGN) {
- sigaction(SIGTTOU, &sa, NULL);
- }
- if (signal(SIGTTIN, SIG_IGN) != SIG_IGN) {
- sigaction(SIGTTIN, &sa, NULL);
- }
- if (signal(SIGWINCH, SIG_IGN) != SIG_IGN) {
- sigaction(SIGWINCH, &sa, NULL);
- }
-#endif
-
-#ifdef USE_KQUEUE
- if ((kqfd = kqueue()) == -1) {
- Punt("kqueue: %s", strerror(errno));
- }
-#endif
-
- begin = Targ_FindNode(".BEGIN", TARG_NOCREATE);
-
- if (begin != NULL) {
- JobStart(begin, JOB_SPECIAL, (Job *)NULL);
- while (nJobs) {
- Job_CatchOutput(0);
- Job_CatchChildren(!usePipes);
- }
- }
- postCommands = Targ_FindNode(".END", TARG_CREATE);
-}
-
-/**
- * Job_Full
- * See if the job table is full. It is considered full if it is OR
- * if we are in the process of aborting OR if we have
- * reached/exceeded our local quota. This prevents any more jobs
- * from starting up.
- *
- * Results:
- * TRUE if the job table is full, FALSE otherwise
- */
-Boolean
-Job_Full(void)
-{
- char c;
- int i;
-
- if (aborting)
- return (aborting);
- if (fifoFd >= 0 && jobFull) {
- i = read(fifoFd, &c, 1);
- if (i > 0) {
- maxJobs++;
- jobFull = FALSE;
- }
- }
- return (jobFull);
-}
-
-/**
- * Job_Empty
- * See if the job table is empty. Because the local concurrency may
- * be set to 0, it is possible for the job table to become empty,
- * while the list of stoppedJobs remains non-empty. In such a case,
- * we want to restart as many jobs as we can.
- *
- * Results:
- * TRUE if it is. FALSE if it ain't.
- */
-Boolean
-Job_Empty(void)
-{
- if (nJobs == 0) {
- if (!TAILQ_EMPTY(&stoppedJobs) && !aborting) {
- /*
- * The job table is obviously not full if it has no
- * jobs in it...Try and restart the stopped jobs.
- */
- jobFull = FALSE;
- JobRestartJobs();
- return (FALSE);
- } else {
- return (TRUE);
- }
- } else {
- return (FALSE);
- }
-}
-
-/**
- * JobInterrupt
- * Handle the receipt of an interrupt.
- *
- * Side Effects:
- * All children are killed. Another job will be started if the
- * .INTERRUPT target was given.
- */
-static void
-JobInterrupt(int runINTERRUPT, int signo)
-{
- Job *job; /* job descriptor in that element */
- GNode *interrupt; /* the node describing the .INTERRUPT target */
-
- aborting = ABORT_INTERRUPT;
-
- TAILQ_FOREACH(job, &jobs, link) {
- if (!Targ_Precious(job->node)) {
- char *file = (job->node->path == NULL ?
- job->node->name : job->node->path);
-
- if (!noExecute && eunlink(file) != -1) {
- Error("*** %s removed", file);
- }
- }
- if (job->pid) {
- DEBUGF(JOB, ("JobInterrupt passing signal to child "
- "%jd.\n", (intmax_t)job->pid));
- KILL(job->pid, signo);
- }
- }
-
- if (runINTERRUPT && !touchFlag) {
- /*
- * clear the interrupted flag because we would get an
- * infinite loop otherwise.
- */
- interrupted = 0;
-
- interrupt = Targ_FindNode(".INTERRUPT", TARG_NOCREATE);
- if (interrupt != NULL) {
- ignoreErrors = FALSE;
-
- JobStart(interrupt, JOB_IGNDOTS, (Job *)NULL);
- while (nJobs) {
- Job_CatchOutput(0);
- Job_CatchChildren(!usePipes);
- }
- }
- }
- if (fifoMaster)
- unlink(fifoName);
-}
-
-/**
- * Job_Finish
- * Do final processing such as the running of the commands
- * attached to the .END target.
- *
- * Results:
- * None.
- */
-void
-Job_Finish(void)
-{
-
- if (postCommands != NULL && !Lst_IsEmpty(&postCommands->commands)) {
- if (makeErrors) {
- Error("Errors reported so .END ignored");
- } else {
- JobStart(postCommands, JOB_SPECIAL | JOB_IGNDOTS, NULL);
-
- while (nJobs) {
- Job_CatchOutput(0);
- Job_CatchChildren(!usePipes);
- }
- }
- }
- if (fifoFd >= 0) {
- close(fifoFd);
- fifoFd = -1;
- if (fifoMaster)
- unlink(fifoName);
- }
-}
-
-/**
- * Job_Wait
- * Waits for all running jobs to finish and returns. Sets 'aborting'
- * to ABORT_WAIT to prevent other jobs from starting.
- *
- * Side Effects:
- * Currently running jobs finish.
- */
-void
-Job_Wait(void)
-{
-
- aborting = ABORT_WAIT;
- while (nJobs != 0) {
- Job_CatchOutput(0);
- Job_CatchChildren(!usePipes);
- }
- aborting = 0;
-}
-
-/**
- * Job_AbortAll
- * Abort all currently running jobs without handling output or anything.
- * This function is to be called only in the event of a major
- * error. Most definitely NOT to be called from JobInterrupt.
- *
- * Side Effects:
- * All children are killed, not just the firstborn
- */
-void
-Job_AbortAll(void)
-{
- Job *job; /* the job descriptor in that element */
- int foo;
-
- aborting = ABORT_ERROR;
-
- if (nJobs) {
- TAILQ_FOREACH(job, &jobs, link) {
- /*
- * kill the child process with increasingly drastic
- * signals to make darn sure it's dead.
- */
- KILL(job->pid, SIGINT);
- KILL(job->pid, SIGKILL);
- }
- }
-
- /*
- * Catch as many children as want to report in at first, then give up
- */
- while (waitpid(-1, &foo, WNOHANG) > 0)
- ;
-}
-
-/**
- * JobRestartJobs
- * Tries to restart stopped jobs if there are slots available.
- * Note that this tries to restart them regardless of pending errors.
- * It's not good to leave stopped jobs lying around!
- *
- * Side Effects:
- * Resumes(and possibly migrates) jobs.
- */
-static void
-JobRestartJobs(void)
-{
- Job *job;
-
- while (!jobFull && (job = TAILQ_FIRST(&stoppedJobs)) != NULL) {
- DEBUGF(JOB, ("Job queue is not full. "
- "Restarting a stopped job.\n"));
- TAILQ_REMOVE(&stoppedJobs, job, link);
- JobRestart(job);
- }
-}
-
-/**
- * Cmd_Exec
- * Execute the command in cmd, and return the output of that command
- * in a string.
- *
- * Results:
- * A string containing the output of the command, or the empty string
- * If error is not NULL, it contains the reason for the command failure
- * Any output sent to stderr in the child process is passed to stderr,
- * and not captured in the string.
- *
- * Side Effects:
- * The string must be freed by the caller.
- */
-Buffer *
-Cmd_Exec(const char *cmd, const char **error)
-{
- int fds[2]; /* Pipe streams */
- int status; /* command exit status */
- Buffer *buf; /* buffer to store the result */
- ssize_t rcnt;
- ProcStuff ps;
-
- *error = NULL;
- buf = Buf_Init(0);
-
- /*
- * Open a pipe for fetching its output
- */
- if (pipe(fds) == -1) {
- *error = "Couldn't create pipe for \"%s\"";
- return (buf);
- }
-
- /* Set close-on-exec on read side of pipe. */
- fcntl(fds[0], F_SETFD, fcntl(fds[0], F_GETFD) | FD_CLOEXEC);
-
- ps.in = STDIN_FILENO;
- ps.out = fds[1];
- ps.err = STDERR_FILENO;
-
- ps.merge_errors = 0;
- ps.pgroup = 0;
- ps.searchpath = 0;
-
- /* Set up arguments for shell */
- ps.argv = emalloc(4 * sizeof(char *));
- ps.argv[0] = strdup(commandShell->name);
- ps.argv[1] = strdup("-c");
- ps.argv[2] = strdup(cmd);
- ps.argv[3] = NULL;
- ps.argv_free = 1;
-
- /*
- * Fork. Warning since we are doing vfork() instead of fork(),
- * do not allocate memory in the child process!
- */
- if ((ps.child_pid = vfork()) == -1) {
- *error = "Couldn't exec \"%s\"";
- return (buf);
-
- } else if (ps.child_pid == 0) {
- /*
- * Child
- */
- Proc_Exec(&ps);
- /* NOTREACHED */
- }
-
- free(ps.argv[2]);
- free(ps.argv[1]);
- free(ps.argv[0]);
- free(ps.argv);
-
- close(fds[1]); /* No need for the writing half of the pipe. */
-
- do {
- char result[BUFSIZ];
-
- rcnt = read(fds[0], result, sizeof(result));
- if (rcnt != -1)
- Buf_AddBytes(buf, (size_t)rcnt, (Byte *)result);
- } while (rcnt > 0 || (rcnt == -1 && errno == EINTR));
-
- if (rcnt == -1)
- *error = "Error reading shell's output for \"%s\"";
-
- /*
- * Close the input side of the pipe.
- */
- close(fds[0]);
-
- status = ProcWait(&ps);
-
- if (status)
- *error = "\"%s\" returned non-zero status";
-
- Buf_StripNewlines(buf);
-
- return (buf);
-}
-
-
-/*
- * Interrupt handler - set flag and defer handling to the main code
- */
-static void
-CompatCatchSig(int signo)
-{
-
- interrupted = signo;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * CompatInterrupt --
- * Interrupt the creation of the current target and remove it if
- * it ain't precious.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The target is removed and the process exits. If .INTERRUPT exists,
- * its commands are run first WITH INTERRUPTS IGNORED..
- *
- *-----------------------------------------------------------------------
- */
-static void
-CompatInterrupt(int signo)
-{
- GNode *gn;
- sigset_t nmask, omask;
- LstNode *ln;
-
- sigemptyset(&nmask);
- sigaddset(&nmask, SIGINT);
- sigaddset(&nmask, SIGTERM);
- sigaddset(&nmask, SIGHUP);
- sigaddset(&nmask, SIGQUIT);
- sigprocmask(SIG_SETMASK, &nmask, &omask);
-
- /* prevent recursion in evaluation of .INTERRUPT */
- interrupted = 0;
-
- if (curTarg != NULL && !Targ_Precious(curTarg)) {
- const char *file = Var_Value(TARGET, curTarg);
-
- if (!noExecute && eunlink(file) != -1) {
- printf("*** %s removed\n", file);
- }
- }
-
- /*
- * Run .INTERRUPT only if hit with interrupt signal
- */
- if (signo == SIGINT) {
- gn = Targ_FindNode(".INTERRUPT", TARG_NOCREATE);
- if (gn != NULL) {
- LST_FOREACH(ln, &gn->commands) {
- if (Compat_RunCommand(ln, gn))
- break;
- }
- }
- }
-
- sigprocmask(SIG_SETMASK, &omask, NULL);
-
- if (signo == SIGQUIT)
- exit(signo);
- signal(signo, SIG_DFL);
- kill(getpid(), signo);
-}
-
-/**
- * shellneed
- *
- * Results:
- * Returns NULL if a specified line must be executed by the shell,
- * and an argument vector if it can be run via execvp().
- *
- * Side Effects:
- * Uses brk_string so destroys the contents of argv.
- */
-static char **
-shellneed(ArgArray *aa, char *cmd)
-{
- char **p;
- int ret;
-
- if (commandShell->meta == NULL || commandShell->builtins.argc <= 1)
- /* use shell */
- return (NULL);
-
- if (strpbrk(cmd, commandShell->meta) != NULL)
- return (NULL);
-
- /*
- * Break the command into words to form an argument
- * vector we can execute.
- */
- brk_string(aa, cmd, TRUE);
- for (p = commandShell->builtins.argv + 1; *p != 0; p++) {
- if ((ret = strcmp(aa->argv[1], *p)) == 0) {
- /* found - use shell */
- ArgArray_Done(aa);
- return (NULL);
- }
- if (ret < 0) {
- /* not found */
- break;
- }
- }
- return (aa->argv + 1);
-}
-
-/**
- * Execute the next command for a target. If the command returns an
- * error, the node's made field is set to ERROR and creation stops.
- * The node from which the command came is also given. This is used
- * to execute the commands in compat mode and when executing commands
- * with the '+' flag in non-compat mode. In these modes each command
- * line should be executed by its own shell. We do some optimisation here:
- * if the shell description defines both a string of meta characters and
- * a list of builtins and the command line neither contains a meta character
- * nor starts with one of the builtins then we execute the command directly
- * without invoking a shell.
- *
- * Results:
- * 0 if the command succeeded, 1 if an error occurred.
- *
- * Side Effects:
- * The node's 'made' field may be set to ERROR.
- */
-static int
-Compat_RunCommand(LstNode *cmdNode, GNode *gn)
-{
- ArgArray aa;
- char *cmd; /* Expanded command */
- Boolean silent; /* Don't print command */
- Boolean doit; /* Execute even in -n */
- Boolean errCheck; /* Check errors */
- int reason; /* Reason for child's death */
- int status; /* Description of child's death */
- char **av; /* Argument vector for thing to exec */
- ProcStuff ps;
-
- silent = gn->type & OP_SILENT;
- errCheck = !(gn->type & OP_IGNORE);
- doit = FALSE;
-
- cmd = Buf_Peel(Var_Subst(Lst_Datum(cmdNode), gn, FALSE));
- if ((gn->type & OP_SAVE_CMDS) && (gn != ENDNode)) {
- Lst_AtEnd(&ENDNode->commands, cmd);
- return (0);
- } else if (strcmp(cmd, "...") == 0) {
- free(cmd);
- gn->type |= OP_SAVE_CMDS;
- return (0);
- }
- Lst_Replace(cmdNode, cmd);
-
- while (*cmd == '@' || *cmd == '-' || *cmd == '+') {
- switch (*cmd) {
-
- case '@':
- silent = DEBUG(LOUD) ? FALSE : TRUE;
- break;
-
- case '-':
- errCheck = FALSE;
- break;
-
- case '+':
- doit = TRUE;
- break;
- }
- cmd++;
- }
-
- while (isspace((unsigned char)*cmd))
- cmd++;
-
- /*
- * Ignore empty commands
- */
- if (*cmd == '\0') {
- return (0);
- }
-
- /*
- * Print the command before echoing if we're not supposed to be quiet
- * for this one. We also print the command if -n given, but not if '+'.
- */
- if (!silent || (noExecute && !doit)) {
- printf("%s\n", cmd);
- fflush(stdout);
- }
-
- /*
- * If we're not supposed to execute any commands, this is as far as
- * we go...
- */
- if (!doit && noExecute) {
- return (0);
- }
-
- ps.in = STDIN_FILENO;
- ps.out = STDOUT_FILENO;
- ps.err = STDERR_FILENO;
-
- ps.merge_errors = 0;
- ps.pgroup = 0;
- ps.searchpath = 1;
-
- if ((av = shellneed(&aa, cmd)) == NULL) {
- /*
- * Shell meta character or shell builtin found - pass
- * command to shell. We give the shell the -e flag as
- * well as -c if it is supposed to exit when it hits an error.
- */
- ps.argv = emalloc(4 * sizeof(char *));
- ps.argv[0] = strdup(commandShell->path);
- ps.argv[1] = strdup(errCheck ? "-ec" : "-c");
- ps.argv[2] = strdup(cmd);
- ps.argv[3] = NULL;
- ps.argv_free = 1;
- } else {
- ps.argv = av;
- ps.argv_free = 0;
- }
- ps.errCheck = errCheck;
-
- /*
- * Warning since we are doing vfork() instead of fork(),
- * do not allocate memory in the child process!
- */
- if ((ps.child_pid = vfork()) == -1) {
- Fatal("Could not fork");
-
- } else if (ps.child_pid == 0) {
- /*
- * Child
- */
- Proc_Exec(&ps);
- /* NOTREACHED */
-
- } else {
- if (ps.argv_free) {
- free(ps.argv[2]);
- free(ps.argv[1]);
- free(ps.argv[0]);
- free(ps.argv);
- } else {
- ArgArray_Done(&aa);
- }
-
- /*
- * we need to print out the command associated with this
- * Gnode in Targ_PrintCmd from Targ_PrintGraph when debugging
- * at level g2, in main(), Fatal() and DieHorribly(),
- * therefore do not free it when debugging.
- */
- if (!DEBUG(GRAPH2)) {
- free(Lst_Datum(cmdNode));
- Lst_Replace(cmdNode, NULL);
- }
-
- /*
- * The child is off and running. Now all we can do is wait...
- */
- reason = ProcWait(&ps);
-
- if (interrupted)
- CompatInterrupt(interrupted);
-
- /*
- * Decode and report the reason child exited, then
- * indicate how we handled it.
- */
- if (WIFEXITED(reason)) {
- status = WEXITSTATUS(reason);
- if (status == 0) {
- return (0);
- } else {
- printf("*** [%s] Error code %d",
- gn->name, status);
- }
- } else if (WIFSTOPPED(reason)) {
- status = WSTOPSIG(reason);
- } else {
- status = WTERMSIG(reason);
- printf("*** [%s] Signal %d",
- gn->name, status);
- }
-
- if (ps.errCheck) {
- gn->made = ERROR;
- if (keepgoing) {
- /*
- * Abort the current
- * target, but let
- * others continue.
- */
- printf(" (continuing)\n");
- }
- return (status);
- } else {
- /*
- * Continue executing
- * commands for this target.
- * If we return 0, this will
- * happen...
- */
- printf(" (ignored)\n");
- return (0);
- }
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Compat_Make --
- * Make a target, given the parent, to abort if necessary.
- *
- * Side Effects:
- * If an error is detected and not being ignored, the process exits.
- *
- *-----------------------------------------------------------------------
- */
-int
-Compat_Make(GNode *gn, GNode *pgn)
-{
- LstNode *ln;
-
- if (gn->type & OP_USE) {
- Make_HandleUse(gn, pgn);
-
- } else if (gn->made == UNMADE) {
- /*
- * First mark ourselves to be made, then apply whatever
- * transformations the suffix module thinks are necessary.
- * Once that's done, we can descend and make all our children.
- * If any of them has an error but the -k flag was given, our
- * 'make' field will be set FALSE again. This is our signal to
- * not attempt to do anything but abort our parent as well.
- */
- gn->make = TRUE;
- gn->made = BEINGMADE;
- Suff_FindDeps(gn);
- LST_FOREACH(ln, &gn->children)
- Compat_Make(Lst_Datum(ln), gn);
- if (!gn->make) {
- gn->made = ABORTED;
- pgn->make = FALSE;
- return (0);
- }
-
- if (Lst_Member(&gn->iParents, pgn) != NULL) {
- Var_Set(IMPSRC, Var_Value(TARGET, gn), pgn);
- }
-
- /*
- * All the children were made ok. Now cmtime contains the
- * modification time of the newest child, we need to find out
- * if we exist and when we were modified last. The criteria for
- * datedness are defined by the Make_OODate function.
- */
- DEBUGF(MAKE, ("Examining %s...", gn->name));
- if (!Make_OODate(gn)) {
- gn->made = UPTODATE;
- DEBUGF(MAKE, ("up-to-date.\n"));
- return (0);
- } else {
- DEBUGF(MAKE, ("out-of-date.\n"));
- }
-
- /*
- * If the user is just seeing if something is out-of-date,
- * exit now to tell him/her "yes".
- */
- if (queryFlag) {
- exit(1);
- }
-
- /*
- * We need to be re-made. We also have to make sure we've got
- * a $? variable. To be nice, we also define the $> variable
- * using Make_DoAllVar().
- */
- Make_DoAllVar(gn);
-
- /*
- * Alter our type to tell if errors should be ignored or things
- * should not be printed so Compat_RunCommand knows what to do.
- */
- if (Targ_Ignore(gn)) {
- gn->type |= OP_IGNORE;
- }
- if (Targ_Silent(gn)) {
- gn->type |= OP_SILENT;
- }
-
- if (Job_CheckCommands(gn, Fatal)) {
- /*
- * Our commands are ok, but we still have to worry
- * about the -t flag...
- */
- if (!touchFlag) {
- curTarg = gn;
- LST_FOREACH(ln, &gn->commands) {
- if (Compat_RunCommand(ln, gn))
- break;
- }
- curTarg = NULL;
- } else {
- Job_Touch(gn, gn->type & OP_SILENT);
- }
- } else {
- gn->made = ERROR;
- }
-
- if (gn->made != ERROR) {
- /*
- * If the node was made successfully, mark it so, update
- * its modification time and timestamp all its parents.
- * Note that for .ZEROTIME targets, the timestamping
- * isn't done. This is to keep its state from affecting
- * that of its parent.
- */
- gn->made = MADE;
-#ifndef RECHECK
- /*
- * We can't re-stat the thing, but we can at least take
- * care of rules where a target depends on a source that
- * actually creates the target, but only if it has
- * changed, e.g.
- *
- * parse.h : parse.o
- *
- * parse.o : parse.y
- * yacc -d parse.y
- * cc -c y.tab.c
- * mv y.tab.o parse.o
- * cmp -s y.tab.h parse.h || mv y.tab.h parse.h
- *
- * In this case, if the definitions produced by yacc
- * haven't changed from before, parse.h won't have been
- * updated and gn->mtime will reflect the current
- * modification time for parse.h. This is something of a
- * kludge, I admit, but it's a useful one..
- *
- * XXX: People like to use a rule like
- *
- * FRC:
- *
- * To force things that depend on FRC to be made, so we
- * have to check for gn->children being empty as well...
- */
- if (!Lst_IsEmpty(&gn->commands) ||
- Lst_IsEmpty(&gn->children)) {
- gn->mtime = now;
- }
-#else
- /*
- * This is what Make does and it's actually a good
- * thing, as it allows rules like
- *
- * cmp -s y.tab.h parse.h || cp y.tab.h parse.h
- *
- * to function as intended. Unfortunately, thanks to
- * the stateless nature of NFS (and the speed of this
- * program), there are times when the modification time
- * of a file created on a remote machine will not be
- * modified before the stat() implied by the Dir_MTime
- * occurs, thus leading us to believe that the file
- * is unchanged, wreaking havoc with files that depend
- * on this one.
- *
- * I have decided it is better to make too much than to
- * make too little, so this stuff is commented out
- * unless you're sure it's ok.
- * -- ardeb 1/12/88
- */
- if (noExecute || Dir_MTime(gn) == 0) {
- gn->mtime = now;
- }
- if (gn->cmtime > gn->mtime)
- gn->mtime = gn->cmtime;
- DEBUGF(MAKE, ("update time: %s\n",
- Targ_FmtTime(gn->mtime)));
-#endif
- if (!(gn->type & OP_EXEC)) {
- pgn->childMade = TRUE;
- Make_TimeStamp(pgn, gn);
- }
-
- } else if (keepgoing) {
- pgn->make = FALSE;
-
- } else {
- printf("\n\nStop in %s.\n", Var_Value(".CURDIR", gn));
- exit(1);
- }
- } else if (gn->made == ERROR) {
- /*
- * Already had an error when making this beastie. Tell the
- * parent to abort.
- */
- pgn->make = FALSE;
- } else {
- if (Lst_Member(&gn->iParents, pgn) != NULL) {
- Var_Set(IMPSRC, Var_Value(TARGET, gn), pgn);
- }
- switch(gn->made) {
- case BEINGMADE:
- Error("Graph cycles through %s\n", gn->name);
- gn->made = ERROR;
- pgn->make = FALSE;
- break;
- case MADE:
- if ((gn->type & OP_EXEC) == 0) {
- pgn->childMade = TRUE;
- Make_TimeStamp(pgn, gn);
- }
- break;
- case UPTODATE:
- if ((gn->type & OP_EXEC) == 0) {
- Make_TimeStamp(pgn, gn);
- }
- break;
- default:
- break;
- }
- }
-
- return (0);
-}
-
-/*-
- * Install signal handlers for Compat_Run
- */
-void
-Compat_InstallSignalHandlers(void)
-{
-
- if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
- signal(SIGINT, CompatCatchSig);
- }
- if (signal(SIGTERM, SIG_IGN) != SIG_IGN) {
- signal(SIGTERM, CompatCatchSig);
- }
- if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
- signal(SIGHUP, CompatCatchSig);
- }
- if (signal(SIGQUIT, SIG_IGN) != SIG_IGN) {
- signal(SIGQUIT, CompatCatchSig);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Compat_Run --
- * Start making again, given a list of target nodes.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Guess what?
- *
- *-----------------------------------------------------------------------
- */
-void
-Compat_Run(Lst *targs)
-{
- GNode *gn = NULL; /* Current root target */
- LstNode *ln;
-
- Compat_InstallSignalHandlers();
- ENDNode = Targ_FindNode(".END", TARG_CREATE);
- /*
- * If the user has defined a .BEGIN target, execute the commands
- * attached to it.
- */
- if (!queryFlag) {
- gn = Targ_FindNode(".BEGIN", TARG_NOCREATE);
- if (gn != NULL) {
- LST_FOREACH(ln, &gn->commands) {
- if (Compat_RunCommand(ln, gn))
- break;
- }
- if (gn->made == ERROR) {
- printf("\n\nStop.\n");
- exit(1);
- }
- }
- }
-
- /*
- * For each entry in the list of targets to create, call Compat_Make on
- * it to create the thing. Compat_Make will leave the 'made' field of gn
- * in one of several states:
- * UPTODATE gn was already up-to-date
- * MADE gn was recreated successfully
- * ERROR An error occurred while gn was being created
- * ABORTED gn was not remade because one of its inferiors
- * could not be made due to errors.
- */
- makeErrors = 0;
- while (!Lst_IsEmpty(targs)) {
- gn = Lst_DeQueue(targs);
- Compat_Make(gn, gn);
-
- if (gn->made == UPTODATE) {
- printf("`%s' is up to date.\n", gn->name);
- } else if (gn->made == ABORTED) {
- printf("`%s' not remade because of errors.\n",
- gn->name);
- makeErrors++;
- } else if (gn->made == ERROR) {
- makeErrors++;
- }
- }
-
- /*
- * If the user has defined a .END target, run its commands.
- */
- if (makeErrors == 0) {
- LST_FOREACH(ln, &ENDNode->commands) {
- if (Compat_RunCommand(ln, ENDNode))
- break;
- }
- }
-}
diff --git a/usr.bin/make/job.h b/usr.bin/make/job.h
deleted file mode 100644
index 31e1cb7..0000000
--- a/usr.bin/make/job.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)job.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#ifndef job_h_4678dfd1
-#define job_h_4678dfd1
-
-/*-
- * job.h --
- * Definitions pertaining to the running of jobs in parallel mode.
- */
-
-#include <stdio.h>
-
-#include "util.h"
-
-struct Buffer;
-struct GNode;
-struct Lst;
-
-void Job_Touch(struct GNode *, Boolean);
-Boolean Job_CheckCommands(struct GNode *, void (*abortProc)(const char *, ...));
-void Job_CatchChildren(Boolean);
-void Job_CatchOutput(int flag);
-void Job_Make(struct GNode *);
-void Job_Init(int);
-Boolean Job_Full(void);
-Boolean Job_Empty(void);
-void Job_Finish(void);
-void Job_Wait(void);
-void Job_AbortAll(void);
-void Job_SetPrefix(void);
-
-void Proc_Init(void);
-
-struct Buffer *Cmd_Exec(const char *, const char **);
-
-int Compat_Make(struct GNode *gn, struct GNode *pgn);
-void Compat_InstallSignalHandlers(void);
-void Compat_Run(struct Lst *);
-
-#endif /* job_h_4678dfd1 */
diff --git a/usr.bin/make/lst.c b/usr.bin/make/lst.c
deleted file mode 100644
index d57c34b..0000000
--- a/usr.bin/make/lst.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-/*-
- * lst.c --
- * Routines to maintain a linked list of objects.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "lst.h"
-#include "util.h"
-
-/**
- * Lst_Append
- * Create a new node and add it to the given list after the given node.
- *
- * Arguments:
- * l affected list
- * ln node after which to append the datum
- * d said datum
- *
- * Side Effects:
- * A new LstNode is created and linked in to the List. The lastPtr
- * field of the List will be altered if ln is the last node in the
- * list. lastPtr and firstPtr will alter if the list was empty and
- * ln was NULL.
- */
-void
-Lst_Append(Lst *list, LstNode *ln, void *d)
-{
- LstNode *nLNode;
-
- nLNode = emalloc(sizeof(*nLNode));
- nLNode->datum = d;
-
- if (ln == NULL) {
- nLNode->nextPtr = nLNode->prevPtr = NULL;
- list->firstPtr = list->lastPtr = nLNode;
- } else {
- nLNode->prevPtr = ln;
- nLNode->nextPtr = ln->nextPtr;
-
- ln->nextPtr = nLNode;
- if (nLNode->nextPtr != NULL) {
- nLNode->nextPtr->prevPtr = nLNode;
- }
-
- if (ln == list->lastPtr) {
- list->lastPtr = nLNode;
- }
- }
-}
-
-/**
- * Lst_Concat
- * Concatenate two lists. New elements are created to hold the data
- * elements, if specified, but the elements themselves are not copied.
- * If the elements should be duplicated to avoid confusion with another
- * list, the Lst_Duplicate function should be called first.
- *
- * Arguments:
- * list1 The list to which list2 is to be appended
- * list2 The list to append to list1
- * flags LST_CONCNEW if LstNode's should be duplicated
- * LST_CONCLINK if should just be relinked
- *
- * Side Effects:
- * New elements are created and appended the first list.
- */
-void
-Lst_Concat(Lst *list1, Lst *list2, int flags)
-{
- LstNode *ln; /* original LstNode */
- LstNode *nln; /* new LstNode */
- LstNode *last; /* the last element in the list. Keeps
- * bookkeeping until the end */
-
- if (list2->firstPtr == NULL)
- return;
-
- if (flags == LST_CONCLINK) {
- /*
- * Link the first element of the second list to the last
- * element of the first list. If the first list isn't empty,
- * we then link the last element of the list to the first
- * element of the second list. The last element of the second
- * list, if it exists, then becomes the last element of the
- * first list.
- */
- list2->firstPtr->prevPtr = list1->lastPtr;
- if (list1->lastPtr != NULL)
- list1->lastPtr->nextPtr = list2->firstPtr;
- else
- list1->firstPtr = list2->firstPtr;
- list1->lastPtr = list2->lastPtr;
-
- Lst_Init(list2);
- } else {
- /*
- * The loop simply goes through the entire second list creating
- * new LstNodes and filling in the nextPtr, and prevPtr to fit
- * into list1 and its datum field from the datum field of the
- * corresponding element in list2. The 'last' node follows the
- * last of the new nodes along until the entire list2 has been
- * appended. Only then does the bookkeeping catch up with the
- * changes. During the first iteration of the loop, if 'last'
- * is NULL, the first list must have been empty so the
- * newly-created node is made the first node of the list.
- */
- for (last = list1->lastPtr, ln = list2->firstPtr;
- ln != NULL;
- ln = ln->nextPtr) {
- nln = emalloc(sizeof(*nln));
- nln->datum = ln->datum;
- if (last != NULL) {
- last->nextPtr = nln;
- } else {
- list1->firstPtr = nln;
- }
- nln->prevPtr = last;
- last = nln;
- }
-
- /*
- * Finish bookkeeping. The last new element becomes the last
- * element of list one.
- */
- list1->lastPtr = last;
- last->nextPtr = NULL;
- }
-}
-
-/**
- * Lst_DeQueue
- * Remove and return the datum at the head of the given list.
- *
- * Results:
- * The datum in the node at the head or (ick) NULL if the list
- * is empty.
- *
- * Side Effects:
- * The head node is removed from the list.
- */
-void *
-Lst_DeQueue(Lst *l)
-{
- void *rd;
- LstNode *tln;
-
- tln = Lst_First(l);
- if (tln == NULL) {
- return (NULL);
- }
-
- rd = tln->datum;
- Lst_Remove(l, tln);
- return (rd);
-}
-
-/**
- * Lst_Destroy
- * Destroy a list and free all its resources. If the freeProc is
- * given, it is called with the datum from each node in turn before
- * the node is freed.
- *
- * Side Effects:
- * The given list is freed in its entirety.
- */
-void
-Lst_Destroy(Lst *list, FreeProc *freeProc)
-{
- LstNode *ln;
-
- if (list->firstPtr == NULL)
- return;
-
- if (freeProc != NOFREE) {
- while ((ln = list->firstPtr) != NULL) {
- list->firstPtr = ln->nextPtr;
- (*freeProc)(ln->datum);
- free(ln);
- }
- } else {
- while ((ln = list->firstPtr) != NULL) {
- list->firstPtr = ln->nextPtr;
- free(ln);
- }
- }
- list->lastPtr = NULL;
-}
-
-/**
- * Lst_Duplicate
- * Duplicate an entire list. If a function to copy a void * is
- * given, the individual client elements will be duplicated as well.
- *
- * Arguments:
- * dst the destination list (initialized)
- * src the list to duplicate
- * copyProc A function to duplicate each void
- */
-void
-Lst_Duplicate(Lst *dst, Lst *src, DuplicateProc *copyProc)
-{
- LstNode *ln;
-
- ln = src->firstPtr;
- while (ln != NULL) {
- if (copyProc != NOCOPY)
- Lst_AtEnd(dst, (*copyProc)(ln->datum));
- else
- Lst_AtEnd(dst, ln->datum);
- ln = ln->nextPtr;
- }
-}
-
-/**
- * Lst_Insert
- * Insert a new node with the given piece of data before the given
- * node in the given list.
- *
- * Parameters:
- * l list to manipulate
- * ln node before which to insert d
- * d datum to be inserted
- *
- * Side Effects:
- * the firstPtr field will be changed if ln is the first node in the
- * list.
- */
-void
-Lst_Insert(Lst *list, LstNode *ln, void *d)
-{
- LstNode *nLNode; /* new lnode for d */
-
- nLNode = emalloc(sizeof(*nLNode));
- nLNode->datum = d;
-
- if (ln == NULL) {
- nLNode->prevPtr = nLNode->nextPtr = NULL;
- list->firstPtr = list->lastPtr = nLNode;
- } else {
- nLNode->prevPtr = ln->prevPtr;
- nLNode->nextPtr = ln;
-
- if (nLNode->prevPtr != NULL) {
- nLNode->prevPtr->nextPtr = nLNode;
- }
- ln->prevPtr = nLNode;
-
- if (ln == list->firstPtr) {
- list->firstPtr = nLNode;
- }
- }
-}
-
-LstNode *
-Lst_Member(Lst *list, void *d)
-{
- LstNode *lNode;
-
- lNode = list->firstPtr;
- if (lNode == NULL) {
- return (NULL);
- }
-
- do {
- if (lNode->datum == d) {
- return (lNode);
- }
- lNode = lNode->nextPtr;
- } while (lNode != NULL && lNode != list->firstPtr);
-
- return (NULL);
-}
-
-/**
- * Lst_Remove
- * Remove the given node from the given list.
- *
- * Side Effects:
- * The list's firstPtr will be set to NULL if ln is the last
- * node on the list. firsPtr and lastPtr will be altered if ln is
- * either the first or last node, respectively, on the list.
- */
-void
-Lst_Remove(Lst *list, LstNode *ln)
-{
- /*
- * unlink it from the list
- */
- if (ln->nextPtr != NULL)
- /* unlink from the backward chain */
- ln->nextPtr->prevPtr = ln->prevPtr;
- else
- /* this was the last element */
- list->lastPtr = ln->prevPtr;
-
- if (ln->prevPtr != NULL)
- /* unlink from the forward chain */
- ln->prevPtr->nextPtr = ln->nextPtr;
- else
- /* this was the first element */
- list->firstPtr = ln->nextPtr;
-
- /*
- * note that the datum is unmolested. The caller must free it as
- * necessary and as expected.
- */
- free(ln);
-}
diff --git a/usr.bin/make/lst.h b/usr.bin/make/lst.h
deleted file mode 100644
index 1199e94..0000000
--- a/usr.bin/make/lst.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)lst.h 8.2 (Berkeley) 4/28/95
- * $FreeBSD$
- */
-
-#ifndef lst_h_38f3ead1
-#define lst_h_38f3ead1
-
-/*-
- * lst.h --
- * Header for using the list library
- */
-
-/*
- * Structure of a list node.
- */
-struct LstNode {
- struct LstNode *prevPtr; /* previous element in list */
- struct LstNode *nextPtr; /* next in list */
- void *datum; /* datum associated with this element */
-};
-typedef struct LstNode LstNode;
-
-/*
- * The list itself
- */
-struct Lst {
- LstNode *firstPtr; /* first node in list */
- LstNode *lastPtr; /* last node in list */
-};
-typedef struct Lst Lst;
-
-typedef void *DuplicateProc(void *);
-typedef void FreeProc(void *);
-
-/*
- * NOFREE can be used as the freeProc to Lst_Destroy when the elements are
- * not to be freed.
- * NOCOPY performs similarly when given as the copyProc to Lst_Duplicate.
- */
-#define NOFREE ((FreeProc *)NULL)
-#define NOCOPY ((DuplicateProc *)NULL)
-
-#define LST_CONCNEW 0 /* create new LstNode's when using Lst_Concat */
-#define LST_CONCLINK 1 /* relink LstNode's when using Lst_Concat */
-
-/*
- * Creation/destruction functions
- */
-/* Create a new list */
-#define Lst_Init(LST) do { \
- (LST)->firstPtr = NULL; \
- (LST)->lastPtr = NULL; \
- } while (0)
-#define Lst_Initializer(NAME) { NULL, NULL }
-
-/* Duplicate an existing list */
-void Lst_Duplicate(Lst *, Lst *, DuplicateProc *);
-
-/* Destroy an old one */
-void Lst_Destroy(Lst *, FreeProc *);
-
-/*
- * Functions to modify a list
- */
-/* Insert an element before another */
-void Lst_Insert(Lst *, LstNode *, void *);
-/* Insert an element after another */
-void Lst_Append(Lst *, LstNode *, void *);
-/* Place an element at the front of a lst. */
-#define Lst_AtFront(LST, D) (Lst_Insert((LST), Lst_First(LST), (D)))
-/* Place an element at the end of a lst. */
-#define Lst_AtEnd(LST, D) (Lst_Append((LST), Lst_Last(LST), (D)))
-/* Remove an element */
-void Lst_Remove(Lst *, LstNode *);
-/* Replace a node with a new value */
-#define Lst_Replace(NODE, D) ((void)((NODE)->datum = (D)))
-/* Concatenate two lists */
-void Lst_Concat(Lst *, Lst *, int);
-
-/*
- * Node-specific functions
- */
-/* Return first element in list */
-#define Lst_First(LST) ((Lst_Valid(LST) && !Lst_IsEmpty(LST)) \
- ? (LST)->firstPtr : NULL)
-/* Return last element in list */
-#define Lst_Last(LST) ((Lst_Valid(LST) && !Lst_IsEmpty(LST)) \
- ? (LST)->lastPtr : NULL)
-/* Return successor to given element */
-#define Lst_Succ(NODE) (((NODE) == NULL) ? NULL : (NODE)->nextPtr)
-#define LST_NEXT(NODE) ((NODE)->nextPtr)
-/* Get datum from LstNode */
-#define Lst_Datum(NODE) ((NODE)->datum)
-
-/*
- * Functions for entire lists
- */
-
-/*
- * See if the given datum is on the list. Returns the LstNode containing
- * the datum
- */
-LstNode *Lst_Member(Lst *, void *);
-
-/* Loop through a list. Note, that you may not delete the list element. */
-#define LST_FOREACH(PTR, LST) \
- for ((PTR) = (LST)->firstPtr; (PTR) != NULL; (PTR) = (PTR)->nextPtr)
-
-/*
- * for using the list as a queue
- */
-/* Place an element at tail of queue */
-#define Lst_EnQueue(LST, D) (Lst_Valid(LST) \
- ? Lst_Append((LST), Lst_Last(LST), (D)) \
- : (void)0)
-/* Remove an element from head of queue */
-void *Lst_DeQueue(Lst *);
-
-/*
- * LstValid (L) --
- * Return TRUE if the list L is valid
- */
-#define Lst_Valid(L) (((L) == NULL) ? FALSE : TRUE)
-
-/*
- * LstNodeValid (LN, L) --
- * Return TRUE if the LstNode LN is valid with respect to L
- */
-#define Lst_NodeValid(LN, L) (((LN) == NULL) ? FALSE : TRUE)
-
-/*
- * Lst_IsEmpty(L) --
- * TRUE if the list L is empty.
- */
-#define Lst_IsEmpty(L) (!Lst_Valid(L) || (L)->firstPtr == NULL)
-
-#endif /* lst_h_38f3ead1 */
diff --git a/usr.bin/make/main.c b/usr.bin/make/main.c
deleted file mode 100644
index f019d52..0000000
--- a/usr.bin/make/main.c
+++ /dev/null
@@ -1,1339 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)main.c 8.3 (Berkeley) 3/19/94
- */
-
-#ifndef lint
-#if 0
-static char copyright[] =
-"@(#) Copyright (c) 1988, 1989, 1990, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif
-#endif /* not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * main.c
- * The main file for this entire program. Exit routines etc
- * reside here.
- *
- * Utility functions defined in this file:
- * Main_ParseArgLine
- * Takes a line of arguments, breaks them and
- * treats them as if they were given when first
- * invoked. Used by the parse module to implement
- * the .MFLAGS target.
- */
-
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/queue.h>
-#include <sys/resource.h>
-#include <sys/utsname.h>
-#include <sys/wait.h>
-#include <err.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "arch.h"
-#include "buf.h"
-#include "config.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "job.h"
-#include "make.h"
-#include "parse.h"
-#include "pathnames.h"
-#include "shell.h"
-#include "str.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-extern char **environ; /* XXX what header declares this variable? */
-
-#define WANT_ENV_MKLVL 1
-#define MKLVL_MAXVAL 500
-#define MKLVL_ENVVAR "__MKLVL__"
-
-/* ordered list of makefiles to read */
-static Lst makefiles = Lst_Initializer(makefiles);
-
-/* ordered list of source makefiles */
-static Lst source_makefiles = Lst_Initializer(source_makefiles);
-
-/* list of variables to print */
-static Lst variables = Lst_Initializer(variables);
-
-static Boolean expandVars; /* fully expand printed variables */
-static Boolean noBuiltins; /* -r flag */
-static Boolean forceJobs; /* -j argument given */
-static char *curdir; /* startup directory */
-static char *objdir; /* where we chdir'ed to */
-static char **save_argv; /* saved argv */
-static char *save_makeflags;/* saved MAKEFLAGS */
-
-/* (-E) vars to override from env */
-Lst envFirstVars = Lst_Initializer(envFirstVars);
-
-/* Targets to be made */
-Lst create = Lst_Initializer(create);
-
-Boolean allPrecious; /* .PRECIOUS given on line by itself */
-Boolean is_posix; /* .POSIX target seen */
-Boolean mfAutoDeps; /* .MAKEFILEDEPS target seen */
-Boolean remakingMakefiles; /* True if remaking makefiles is in progress */
-Boolean beSilent; /* -s flag */
-Boolean beVerbose; /* -v flag */
-Boolean beQuiet; /* -Q flag */
-Boolean compatMake; /* -B argument */
-int debug; /* -d flag */
-Boolean ignoreErrors; /* -i flag */
-int jobLimit; /* -j argument */
-int makeErrors; /* Number of targets not remade due to errors */
-Boolean jobsRunning; /* TRUE if the jobs might be running */
-Boolean keepgoing; /* -k flag */
-Boolean noExecute; /* -n flag */
-Boolean printGraphOnly; /* -p flag */
-Boolean queryFlag; /* -q flag */
-Boolean touchFlag; /* -t flag */
-Boolean usePipes; /* !-P flag */
-uint32_t warn_cmd; /* command line warning flags */
-uint32_t warn_flags; /* actual warning flags */
-uint32_t warn_nocmd; /* command line no-warning flags */
-
-time_t now; /* Time at start of make */
-struct GNode *DEFAULT; /* .DEFAULT node */
-
-static struct {
- const char *foreign_name;
- const char *freebsd_name;
-} arch_aliases[] = {
- { "x86_64", "amd64" },
- { "mipsel", "mips" },
-};
-
-/**
- * Exit with usage message.
- */
-static void
-usage(void)
-{
- fprintf(stderr,
- "usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]\n"
- "\t[-d flags] [-E variable] [-f makefile] [-I directory]\n"
- "\t[-j max_jobs] [-m directory] [-V variable]\n"
- "\t[variable=value] [target ...]\n");
- exit(2);
-}
-
-/**
- * MFLAGS_append
- * Append a flag with an optional argument to MAKEFLAGS and MFLAGS
- */
-static void
-MFLAGS_append(const char *flag, char *arg)
-{
- char *str;
-
- Var_Append(".MAKEFLAGS", flag, VAR_GLOBAL);
- if (arg != NULL) {
- str = MAKEFLAGS_quote(arg);
- Var_Append(".MAKEFLAGS", str, VAR_GLOBAL);
- free(str);
- }
-
- Var_Append("MFLAGS", flag, VAR_GLOBAL);
- if (arg != NULL) {
- str = MAKEFLAGS_quote(arg);
- Var_Append("MFLAGS", str, VAR_GLOBAL);
- free(str);
- }
-}
-
-/**
- * Main_ParseWarn
- *
- * Handle argument to warning option.
- */
-int
-Main_ParseWarn(const char *arg, int iscmd)
-{
- int i, neg;
-
- static const struct {
- const char *option;
- uint32_t flag;
- } options[] = {
- { "dirsyntax", WARN_DIRSYNTAX },
- { NULL, 0 }
- };
-
- neg = 0;
- if (arg[0] == 'n' && arg[1] == 'o') {
- neg = 1;
- arg += 2;
- }
-
- for (i = 0; options[i].option != NULL; i++)
- if (strcmp(arg, options[i].option) == 0)
- break;
-
- if (options[i].option == NULL)
- /* unknown option */
- return (-1);
-
- if (iscmd) {
- if (!neg) {
- warn_cmd |= options[i].flag;
- warn_nocmd &= ~options[i].flag;
- warn_flags |= options[i].flag;
- } else {
- warn_nocmd |= options[i].flag;
- warn_cmd &= ~options[i].flag;
- warn_flags &= ~options[i].flag;
- }
- } else {
- if (!neg) {
- warn_flags |= (options[i].flag & ~warn_nocmd);
- } else {
- warn_flags &= ~(options[i].flag | warn_cmd);
- }
- }
- return (0);
-}
-
-/**
- * Open and parse the given makefile.
- *
- * Results:
- * TRUE if ok. FALSE if couldn't open file.
- */
-static Boolean
-ReadMakefile(const char p[])
-{
- char *fname, *fnamesave; /* makefile to read */
- FILE *stream;
- char *name, path[MAXPATHLEN];
- char *MAKEFILE;
- int setMAKEFILE;
-
- /* XXX - remove this once constification is done */
- fnamesave = fname = estrdup(p);
-
- if (!strcmp(fname, "-")) {
- Parse_File("(stdin)", stdin);
- Var_SetGlobal("MAKEFILE", "");
- } else {
- setMAKEFILE = strcmp(fname, ".depend");
-
- /* if we've chdir'd, rebuild the path name */
- if (curdir != objdir && *fname != '/') {
- snprintf(path, MAXPATHLEN, "%s/%s", curdir, fname);
- /*
- * XXX The realpath stuff breaks relative includes
- * XXX in some cases. The problem likely is in
- * XXX parse.c where it does special things in
- * XXX ParseDoInclude if the file is relative
- * XXX or absolute and not a system file. There
- * XXX it assumes that if the current file that's
- * XXX being included is absolute, that any files
- * XXX that it includes shouldn't do the -I path
- * XXX stuff, which is inconsistent with historical
- * XXX behavior. However, I can't penetrate the mists
- * XXX further, so I'm putting this workaround in
- * XXX here until such time as the underlying bug
- * XXX can be fixed.
- */
-#if THIS_BREAKS_THINGS
- if (realpath(path, path) != NULL &&
- (stream = fopen(path, "r")) != NULL) {
- MAKEFILE = fname;
- fname = path;
- goto found;
- }
- } else if (realpath(fname, path) != NULL) {
- MAKEFILE = fname;
- fname = path;
- if ((stream = fopen(fname, "r")) != NULL)
- goto found;
- }
-#else
- if ((stream = fopen(path, "r")) != NULL) {
- MAKEFILE = fname;
- fname = path;
- goto found;
- }
- } else {
- MAKEFILE = fname;
- if ((stream = fopen(fname, "r")) != NULL)
- goto found;
- }
-#endif
- /* look in -I and system include directories. */
- name = Path_FindFile(fname, &parseIncPath);
- if (!name)
- name = Path_FindFile(fname, &sysIncPath);
- if (!name || !(stream = fopen(name, "r"))) {
- free(fnamesave);
- return (FALSE);
- }
- MAKEFILE = fname = name;
- /*
- * set the MAKEFILE variable desired by System V fans -- the
- * placement of the setting here means it gets set to the last
- * makefile specified, as it is set by SysV make.
- */
-found:
- if (setMAKEFILE)
- Var_SetGlobal("MAKEFILE", MAKEFILE);
- Parse_File(fname, stream);
- }
- free(fnamesave);
- return (TRUE);
-}
-
-/**
- * Open and parse the given makefile.
- * If open is successful add it to the list of makefiles.
- *
- * Results:
- * TRUE if ok. FALSE if couldn't open file.
- */
-static Boolean
-TryReadMakefile(const char p[])
-{
- char *data;
- LstNode *last = Lst_Last(&source_makefiles);
-
- if (!ReadMakefile(p))
- return (FALSE);
-
- data = estrdup(p);
- if (last == NULL) {
- LstNode *first = Lst_First(&source_makefiles);
- Lst_Insert(&source_makefiles, first, data);
- } else
- Lst_Append(&source_makefiles, last, estrdup(p));
- return (TRUE);
-}
-
-/**
- * MainParseArgs
- * Parse a given argument vector. Called from main() and from
- * Main_ParseArgLine() when the .MAKEFLAGS target is used.
- *
- * XXX: Deal with command line overriding .MAKEFLAGS in makefile
- *
- * Side Effects:
- * Various global and local flags will be set depending on the flags
- * given
- */
-static void
-MainParseArgs(int argc, char **argv)
-{
- int c;
- Boolean found_dd = FALSE;
- char found_dir[MAXPATHLEN + 1]; /* for searching for sys.mk */
-
-rearg:
- optind = 1; /* since we're called more than once */
- optreset = 1;
-#define OPTFLAGS "ABC:D:d:E:ef:I:ij:km:nPpQqrSstV:vXx:"
- for (;;) {
- if ((optind < argc) && strcmp(argv[optind], "--") == 0) {
- found_dd = TRUE;
- }
- if ((c = getopt(argc, argv, OPTFLAGS)) == -1) {
- break;
- }
- switch(c) {
-
- case 'A':
- arch_fatal = FALSE;
- MFLAGS_append("-A", NULL);
- break;
- case 'B':
- compatMake = TRUE;
- MFLAGS_append("-B", NULL);
- unsetenv("MAKE_JOBS_FIFO");
- break;
- case 'C':
- if (chdir(optarg) == -1)
- err(1, "chdir %s", optarg);
- if (getcwd(curdir, MAXPATHLEN) == NULL)
- err(2, NULL);
- break;
- case 'D':
- Var_SetGlobal(optarg, "1");
- MFLAGS_append("-D", optarg);
- break;
- case 'd': {
- char *modules = optarg;
-
- for (; *modules; ++modules)
- switch (*modules) {
- case 'A':
- debug = ~0;
- break;
- case 'a':
- debug |= DEBUG_ARCH;
- break;
- case 'c':
- debug |= DEBUG_COND;
- break;
- case 'd':
- debug |= DEBUG_DIR;
- break;
- case 'f':
- debug |= DEBUG_FOR;
- break;
- case 'g':
- if (modules[1] == '1') {
- debug |= DEBUG_GRAPH1;
- ++modules;
- }
- else if (modules[1] == '2') {
- debug |= DEBUG_GRAPH2;
- ++modules;
- }
- break;
- case 'j':
- debug |= DEBUG_JOB;
- break;
- case 'l':
- debug |= DEBUG_LOUD;
- break;
- case 'm':
- debug |= DEBUG_MAKE;
- break;
- case 's':
- debug |= DEBUG_SUFF;
- break;
- case 't':
- debug |= DEBUG_TARG;
- break;
- case 'v':
- debug |= DEBUG_VAR;
- break;
- default:
- warnx("illegal argument to d option "
- "-- %c", *modules);
- usage();
- }
- MFLAGS_append("-d", optarg);
- break;
- }
- case 'E':
- Lst_AtEnd(&envFirstVars, estrdup(optarg));
- MFLAGS_append("-E", optarg);
- break;
- case 'e':
- checkEnvFirst = TRUE;
- MFLAGS_append("-e", NULL);
- break;
- case 'f':
- Lst_AtEnd(&makefiles, estrdup(optarg));
- break;
- case 'I':
- Parse_AddIncludeDir(optarg);
- MFLAGS_append("-I", optarg);
- break;
- case 'i':
- ignoreErrors = TRUE;
- MFLAGS_append("-i", NULL);
- break;
- case 'j': {
- char *endptr;
-
- forceJobs = TRUE;
- jobLimit = strtol(optarg, &endptr, 10);
- if (jobLimit <= 0 || *endptr != '\0') {
- warnx("illegal number, -j argument -- %s",
- optarg);
- usage();
- }
- MFLAGS_append("-j", optarg);
- break;
- }
- case 'k':
- keepgoing = TRUE;
- MFLAGS_append("-k", NULL);
- break;
- case 'm':
- /* look for magic parent directory search string */
- if (strncmp(".../", optarg, 4) == 0) {
- if (!Dir_FindHereOrAbove(curdir, optarg + 4,
- found_dir, sizeof(found_dir)))
- break; /* nothing doing */
- Path_AddDir(&sysIncPath, found_dir);
- } else {
- Path_AddDir(&sysIncPath, optarg);
- }
- MFLAGS_append("-m", optarg);
- break;
- case 'n':
- noExecute = TRUE;
- MFLAGS_append("-n", NULL);
- break;
- case 'P':
- usePipes = FALSE;
- MFLAGS_append("-P", NULL);
- break;
- case 'p':
- printGraphOnly = TRUE;
- debug |= DEBUG_GRAPH1;
- break;
- case 'Q':
- beQuiet = TRUE;
- beVerbose = FALSE;
- MFLAGS_append("-Q", NULL);
- break;
- case 'q':
- queryFlag = TRUE;
- /* Kind of nonsensical, wot? */
- MFLAGS_append("-q", NULL);
- break;
- case 'r':
- noBuiltins = TRUE;
- MFLAGS_append("-r", NULL);
- break;
- case 'S':
- keepgoing = FALSE;
- MFLAGS_append("-S", NULL);
- break;
- case 's':
- beSilent = TRUE;
- MFLAGS_append("-s", NULL);
- break;
- case 't':
- touchFlag = TRUE;
- MFLAGS_append("-t", NULL);
- break;
- case 'V':
- Lst_AtEnd(&variables, estrdup(optarg));
- MFLAGS_append("-V", optarg);
- break;
- case 'v':
- beVerbose = TRUE;
- beQuiet = FALSE;
- MFLAGS_append("-v", NULL);
- break;
- case 'X':
- expandVars = FALSE;
- break;
- case 'x':
- if (Main_ParseWarn(optarg, 1) != -1)
- MFLAGS_append("-x", optarg);
- break;
-
- default:
- case '?':
- usage();
- }
- }
- argv += optind;
- argc -= optind;
-
- oldVars = TRUE;
-
- /*
- * Parse the rest of the arguments.
- * o Check for variable assignments and perform them if so.
- * o Check for more flags and restart getopt if so.
- * o Anything else is taken to be a target and added
- * to the end of the "create" list.
- */
- for (; *argv != NULL; ++argv, --argc) {
- if (Parse_IsVar(*argv)) {
- char *ptr = MAKEFLAGS_quote(*argv);
- char *v = estrdup(*argv);
-
- Var_Append(".MAKEFLAGS", ptr, VAR_GLOBAL);
- Parse_DoVar(v, VAR_CMD);
- free(ptr);
- free(v);
-
- } else if ((*argv)[0] == '-') {
- if ((*argv)[1] == '\0') {
- /*
- * (*argv) is a single dash, so we
- * just ignore it.
- */
- } else if (found_dd) {
- /*
- * Double dash has been found, ignore
- * any more options. But what do we do
- * with it? For now treat it like a target.
- */
- Lst_AtEnd(&create, estrdup(*argv));
- } else {
- /*
- * (*argv) is a -flag, so backup argv and
- * argc. getopt() expects options to start
- * in the 2nd position.
- */
- argc++;
- argv--;
- goto rearg;
- }
-
- } else if ((*argv)[0] == '\0') {
- Punt("illegal (null) argument.");
-
- } else {
- Lst_AtEnd(&create, estrdup(*argv));
- }
- }
-}
-
-/**
- * Main_ParseArgLine
- * Used by the parse module when a .MFLAGS or .MAKEFLAGS target
- * is encountered and by main() when reading the .MAKEFLAGS envariable.
- * Takes a line of arguments and breaks it into its
- * component words and passes those words and the number of them to the
- * MainParseArgs function.
- * The line should have all its leading whitespace removed.
- *
- * Side Effects:
- * Only those that come from the various arguments.
- */
-void
-Main_ParseArgLine(char *line, int mflags)
-{
- ArgArray aa;
-
- if (line == NULL)
- return;
- for (; *line == ' '; ++line)
- continue;
- if (!*line)
- return;
-
- if (mflags)
- MAKEFLAGS_break(&aa, line);
- else
- brk_string(&aa, line, TRUE);
-
- MainParseArgs(aa.argc, aa.argv);
- ArgArray_Done(&aa);
-}
-
-static char *
-chdir_verify_path(const char *path, char *obpath)
-{
- struct stat sb;
-
- if (stat(path, &sb) == 0 && S_ISDIR(sb.st_mode)) {
- if (chdir(path) == -1 || getcwd(obpath, MAXPATHLEN) == NULL) {
- warn("warning: %s", path);
- return (NULL);
- }
- return (obpath);
- }
-
- return (NULL);
-}
-
-/**
- * In lieu of a good way to prevent every possible looping in make(1), stop
- * there from being more than MKLVL_MAXVAL processes forked by make(1), to
- * prevent a forkbomb from happening, in a dumb and mechanical way.
- *
- * Side Effects:
- * Creates or modifies environment variable MKLVL_ENVVAR via setenv().
- */
-static void
-check_make_level(void)
-{
-#ifdef WANT_ENV_MKLVL
- char *value = getenv(MKLVL_ENVVAR);
- int level = (value == NULL) ? 0 : atoi(value);
-
- if (level < 0) {
- errx(2, "Invalid value for recursion level (%d).", level);
- } else if (level > MKLVL_MAXVAL) {
- errx(2, "Max recursion level (%d) exceeded.", MKLVL_MAXVAL);
- } else {
- char new_value[32];
- sprintf(new_value, "%d", level + 1);
- setenv(MKLVL_ENVVAR, new_value, 1);
- }
-#endif /* WANT_ENV_MKLVL */
-}
-
-/**
- * Main_AddSourceMakefile
- * Add a file to the list of source makefiles
- */
-void
-Main_AddSourceMakefile(const char *name)
-{
-
- Lst_AtEnd(&source_makefiles, estrdup(name));
-}
-
-/**
- * Remake_Makefiles
- * Remake all the makefiles
- */
-static void
-Remake_Makefiles(void)
-{
- Lst cleanup;
- LstNode *ln;
- int error_cnt = 0;
- int remade_cnt = 0;
-
- Compat_InstallSignalHandlers();
- if (curdir != objdir) {
- if (chdir(curdir) < 0)
- Fatal("Failed to change directory to %s.", curdir);
- }
-
- Lst_Init(&cleanup);
- LST_FOREACH(ln, &source_makefiles) {
- LstNode *ln2;
- struct GNode *gn;
- const char *name = Lst_Datum(ln);
- Boolean saveTouchFlag = touchFlag;
- Boolean saveQueryFlag = queryFlag;
- Boolean saveNoExecute = noExecute;
- int mtime;
-
- /*
- * Create node
- */
- gn = Targ_FindNode(name, TARG_CREATE);
- DEBUGF(MAKE, ("Checking %s...", gn->name));
- Suff_FindDeps(gn);
-
- /*
- * -t, -q and -n has no effect unless the makefile is
- * specified as one of the targets explicitly in the
- * command line
- */
- LST_FOREACH(ln2, &create) {
- if (!strcmp(gn->name, Lst_Datum(ln2))) {
- /* found as a target */
- break;
- }
- }
- if (ln2 == NULL) {
- touchFlag = FALSE;
- queryFlag = FALSE;
- noExecute = FALSE;
- }
-
- /*
- * Check and remake the makefile
- */
- mtime = Dir_MTime(gn);
- remakingMakefiles = TRUE;
- Compat_Make(gn, gn);
- remakingMakefiles = FALSE;
-
- /*
- * Restore -t, -q and -n behaviour
- */
- touchFlag = saveTouchFlag;
- queryFlag = saveQueryFlag;
- noExecute = saveNoExecute;
-
- /*
- * Compat_Make will leave the 'made' field of gn
- * in one of the following states:
- * UPTODATE gn was already up-to-date
- * MADE gn was recreated successfully
- * ERROR An error occurred while gn was being created
- * ABORTED gn was not remade because one of its inferiors
- * could not be made due to errors.
- */
- if (gn->made == MADE) {
- if (mtime != Dir_MTime(gn)) {
- DEBUGF(MAKE,
- ("%s updated (%d -> %d).\n",
- gn->name, mtime, gn->mtime));
- remade_cnt++;
- } else {
- DEBUGF(MAKE,
- ("%s not updated: skipping restart.\n",
- gn->name));
- }
- } else if (gn->made == ERROR)
- error_cnt++;
- else if (gn->made == ABORTED) {
- printf("`%s' not remade because of errors.\n",
- gn->name);
- error_cnt++;
- } else if (gn->made == UPTODATE) {
- Lst_EnQueue(&cleanup, gn);
- }
- }
-
- if (error_cnt > 0)
- Fatal("Failed to remake Makefiles.");
- if (remade_cnt > 0) {
- DEBUGF(MAKE, ("Restarting `%s'.\n", save_argv[0]));
-
- /*
- * Some of makefiles were remade -- restart from clean state
- */
- if (save_makeflags != NULL)
- setenv("MAKEFLAGS", save_makeflags, 1);
- else
- unsetenv("MAKEFLAGS");
- if (execvp(save_argv[0], save_argv) < 0) {
- Fatal("Can't restart `%s': %s.",
- save_argv[0], strerror(errno));
- }
- }
-
- while (!Lst_IsEmpty(&cleanup)) {
- GNode *gn = Lst_DeQueue(&cleanup);
-
- gn->unmade = 0;
- gn->make = FALSE;
- gn->made = UNMADE;
- gn->childMade = FALSE;
- gn->mtime = gn->cmtime = 0;
- gn->cmtime_gn = NULL;
-
- LST_FOREACH(ln, &gn->children) {
- GNode *cgn = Lst_Datum(ln);
-
- gn->unmade++;
- Lst_EnQueue(&cleanup, cgn);
- }
- }
-
- if (curdir != objdir) {
- if (chdir(objdir) < 0)
- Fatal("Failed to change directory to %s.", objdir);
- }
-}
-
-/**
- * main
- * The main function, for obvious reasons. Initializes variables
- * and a few modules, then parses the arguments give it in the
- * environment and on the command line. Reads the system makefile
- * followed by either Makefile, makefile or the file given by the
- * -f argument. Sets the .MAKEFLAGS PMake variable based on all the
- * flags it has received by then uses either the Make or the Compat
- * module to create the initial list of targets.
- *
- * Results:
- * If -q was given, exits -1 if anything was out-of-date. Else it exits
- * 0.
- *
- * Side Effects:
- * The program exits when done. Targets are created. etc. etc. etc.
- */
-int
-main(int argc, char **argv)
-{
- const char *machine;
- const char *machine_arch;
- const char *machine_cpu;
- Boolean outOfDate = TRUE; /* FALSE if all targets up to date */
- const char *p;
- const char *pathp;
- const char *path;
- char mdpath[MAXPATHLEN];
- char obpath[MAXPATHLEN];
- char cdpath[MAXPATHLEN];
- char found_dir[MAXPATHLEN + 1]; /* for searching for sys.mk */
- char *cp = NULL, *start;
-
- save_argv = argv;
- save_makeflags = getenv("MAKEFLAGS");
- if (save_makeflags != NULL)
- save_makeflags = estrdup(save_makeflags);
-
- /*
- * Initialize file global variables.
- */
- expandVars = TRUE;
- noBuiltins = FALSE; /* Read the built-in rules */
- forceJobs = FALSE; /* No -j flag */
- curdir = cdpath;
-
- /*
- * Initialize program global variables.
- */
- beSilent = FALSE; /* Print commands as executed */
- ignoreErrors = FALSE; /* Pay attention to non-zero returns */
- noExecute = FALSE; /* Execute all commands */
- printGraphOnly = FALSE; /* Don't stop after printing graph */
- keepgoing = FALSE; /* Stop on error */
- allPrecious = FALSE; /* Remove targets when interrupted */
- queryFlag = FALSE; /* This is not just a check-run */
- touchFlag = FALSE; /* Actually update targets */
- usePipes = TRUE; /* Catch child output in pipes */
- debug = 0; /* No debug verbosity, please. */
- jobsRunning = FALSE;
-
- jobLimit = DEFMAXJOBS;
- compatMake = FALSE; /* No compat mode */
-
- check_make_level();
-
-#ifdef RLIMIT_NOFILE
- /*
- * get rid of resource limit on file descriptors
- */
- {
- struct rlimit rl;
- if (getrlimit(RLIMIT_NOFILE, &rl) == -1) {
- err(2, "getrlimit");
- }
- rl.rlim_cur = rl.rlim_max;
- if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
- err(2, "setrlimit");
- }
- }
-#endif
-
- /*
- * Get the name of this type of MACHINE from utsname
- * so we can share an executable for similar machines.
- * (i.e. m68k: amiga hp300, mac68k, sun3, ...)
- *
- * Note that both MACHINE and MACHINE_ARCH are decided at
- * run-time.
- */
- if ((machine = getenv("MACHINE")) == NULL) {
- static struct utsname utsname;
- unsigned int i;
-
- if (uname(&utsname) == -1)
- err(2, "uname");
- machine = utsname.machine;
-
- /* Canonicalize non-FreeBSD naming conventions */
- for (i = 0; i < sizeof(arch_aliases)
- / sizeof(arch_aliases[0]); i++)
- if (!strcmp(machine, arch_aliases[i].foreign_name)) {
- machine = arch_aliases[i].freebsd_name;
- break;
- }
- }
-
- if ((machine_arch = getenv("MACHINE_ARCH")) == NULL) {
-#ifdef MACHINE_ARCH
- machine_arch = MACHINE_ARCH;
-#else
- machine_arch = "unknown";
-#endif
- }
-
- /*
- * Set machine_cpu to the minimum supported CPU revision based
- * on the target architecture, if not already set.
- */
- if ((machine_cpu = getenv("MACHINE_CPU")) == NULL) {
- if (!strcmp(machine_arch, "i386"))
- machine_cpu = "i486";
- else
- machine_cpu = "unknown";
- }
-
- /*
- * Initialize the parsing, directory and variable modules to prepare
- * for the reading of inclusion paths and variable settings on the
- * command line
- */
- Proc_Init();
-
- Dir_Init(); /* Initialize directory structures so -I flags
- * can be processed correctly */
- Var_Init(environ); /* As well as the lists of variables for
- * parsing arguments */
-
- /*
- * Initialize the Shell so that we have a shell for != assignments
- * on the command line.
- */
- Shell_Init();
-
- /*
- * Initialize various variables.
- * MAKE also gets this name, for compatibility
- * .MAKEFLAGS gets set to the empty string just in case.
- * MFLAGS also gets initialized empty, for compatibility.
- */
- Var_SetGlobal("MAKE", argv[0]);
- Var_SetGlobal(".MAKEFLAGS", "");
- Var_SetGlobal("MFLAGS", "");
- Var_SetGlobal("MACHINE", machine);
- Var_SetGlobal("MACHINE_ARCH", machine_arch);
- Var_SetGlobal("MACHINE_CPU", machine_cpu);
-#ifdef MAKE_VERSION
- Var_SetGlobal("MAKE_VERSION", MAKE_VERSION);
-#endif
- Var_SetGlobal(".newline", "\n"); /* handy for :@ loops */
- {
- char tmp[64];
-
- snprintf(tmp, sizeof(tmp), "%u", getpid());
- Var_SetGlobal(".MAKE.PID", tmp);
- snprintf(tmp, sizeof(tmp), "%u", getppid());
- Var_SetGlobal(".MAKE.PPID", tmp);
- }
- Job_SetPrefix();
-
- /*
- * Find where we are...
- */
- if (getcwd(curdir, MAXPATHLEN) == NULL)
- err(2, NULL);
-
- /*
- * First snag things out of the MAKEFLAGS environment
- * variable. Then parse the command line arguments.
- */
- Main_ParseArgLine(getenv("MAKEFLAGS"), 1);
-
- MainParseArgs(argc, argv);
-
- /*
- * Verify that cwd is sane (after -C may have changed it).
- */
- {
- struct stat sa;
-
- if (stat(curdir, &sa) == -1)
- err(2, "%s", curdir);
- }
-
- /*
- * The object directory location is determined using the
- * following order of preference:
- *
- * 1. MAKEOBJDIRPREFIX`cwd`
- * 2. MAKEOBJDIR
- * 3. PATH_OBJDIR.${MACHINE}
- * 4. PATH_OBJDIR
- * 5. PATH_OBJDIRPREFIX`cwd`
- *
- * If one of the first two fails, use the current directory.
- * If the remaining three all fail, use the current directory.
- *
- * Once things are initted,
- * have to add the original directory to the search path,
- * and modify the paths for the Makefiles appropriately. The
- * current directory is also placed as a variable for make scripts.
- */
- if (!(pathp = getenv("MAKEOBJDIRPREFIX"))) {
- if (!(path = getenv("MAKEOBJDIR"))) {
- path = PATH_OBJDIR;
- pathp = PATH_OBJDIRPREFIX;
- snprintf(mdpath, MAXPATHLEN, "%s.%s", path, machine);
- if (!(objdir = chdir_verify_path(mdpath, obpath)))
- if (!(objdir=chdir_verify_path(path, obpath))) {
- snprintf(mdpath, MAXPATHLEN,
- "%s%s", pathp, curdir);
- if (!(objdir=chdir_verify_path(mdpath,
- obpath)))
- objdir = curdir;
- }
- }
- else if (!(objdir = chdir_verify_path(path, obpath)))
- objdir = curdir;
- }
- else {
- snprintf(mdpath, MAXPATHLEN, "%s%s", pathp, curdir);
- if (!(objdir = chdir_verify_path(mdpath, obpath)))
- objdir = curdir;
- }
- Dir_InitDot(); /* Initialize the "." directory */
- if (objdir != curdir)
- Path_AddDir(&dirSearchPath, curdir);
- Var_SetGlobal(".ST_EXPORTVAR", "YES");
- Var_SetGlobal(".CURDIR", curdir);
- Var_SetGlobal(".OBJDIR", objdir);
-
- if (getenv("MAKE_JOBS_FIFO") != NULL)
- forceJobs = TRUE;
- /*
- * Be compatible if user did not specify -j and did not explicitly
- * turned compatibility on
- */
- if (!compatMake && !forceJobs)
- compatMake = TRUE;
-
- /*
- * Initialize target and suffix modules in preparation for
- * parsing the makefile(s)
- */
- Targ_Init();
- Suff_Init();
-
- DEFAULT = NULL;
- time(&now);
-
- /*
- * Set up the .TARGETS variable to contain the list of targets to be
- * created. If none specified, make the variable empty -- the parser
- * will fill the thing in with the default or .MAIN target.
- */
- if (Lst_IsEmpty(&create)) {
- Var_SetGlobal(".TARGETS", "");
- } else {
- LstNode *ln;
-
- for (ln = Lst_First(&create); ln != NULL; ln = Lst_Succ(ln)) {
- char *name = Lst_Datum(ln);
-
- Var_Append(".TARGETS", name, VAR_GLOBAL);
- }
- }
-
-
- /*
- * If no user-supplied system path was given (through the -m option)
- * add the directories from the DEFSYSPATH (more than one may be given
- * as dir1:...:dirn) to the system include path.
- */
- if (TAILQ_EMPTY(&sysIncPath)) {
- char defsyspath[] = PATH_DEFSYSPATH;
- char *syspath = getenv("MAKESYSPATH");
-
- /*
- * If no user-supplied system path was given (thru -m option)
- * add the directories from the DEFSYSPATH (more than one may
- * be given as dir1:...:dirn) to the system include path.
- */
- if (syspath == NULL || *syspath == '\0')
- syspath = defsyspath;
- else
- syspath = estrdup(syspath);
-
- for (start = syspath; *start != '\0'; start = cp) {
- for (cp = start; *cp != '\0' && *cp != ':'; cp++)
- continue;
- if (*cp == ':') {
- *cp++ = '\0';
- }
- /* look for magic parent directory search string */
- if (strncmp(".../", start, 4) == 0) {
- if (Dir_FindHereOrAbove(curdir, start + 4,
- found_dir, sizeof(found_dir))) {
- Path_AddDir(&sysIncPath, found_dir);
- }
- } else {
- Path_AddDir(&sysIncPath, start);
- }
- }
- if (syspath != defsyspath)
- free(syspath);
- }
-
- /*
- * Read in the built-in rules first, followed by the specified
- * makefile, if it was (makefile != (char *) NULL), or the default
- * Makefile and makefile, in that order, if it wasn't.
- */
- if (!noBuiltins) {
- /* Path of sys.mk */
- Lst sysMkPath = Lst_Initializer(sysMkPath);
- LstNode *ln;
- char defsysmk[] = PATH_DEFSYSMK;
-
- Path_Expand(defsysmk, &sysIncPath, &sysMkPath);
- if (Lst_IsEmpty(&sysMkPath))
- Fatal("make: no system rules (%s).", PATH_DEFSYSMK);
- LST_FOREACH(ln, &sysMkPath) {
- if (!ReadMakefile(Lst_Datum(ln)))
- break;
- }
- if (ln != NULL)
- Fatal("make: cannot open %s.", (char *)Lst_Datum(ln));
- Lst_Destroy(&sysMkPath, free);
- }
-
- if (!Lst_IsEmpty(&makefiles)) {
- LstNode *ln;
-
- LST_FOREACH(ln, &makefiles) {
- if (!TryReadMakefile(Lst_Datum(ln)))
- break;
- }
- if (ln != NULL)
- Fatal("make: cannot open %s.", (char *)Lst_Datum(ln));
- } else if (!TryReadMakefile("BSDmakefile"))
- if (!TryReadMakefile("makefile"))
- TryReadMakefile("Makefile");
-
- ReadMakefile(".depend");
-
- /* Install all the flags into the MAKEFLAGS envariable. */
- if (((p = Var_Value(".MAKEFLAGS", VAR_GLOBAL)) != NULL) && *p)
- setenv("MAKEFLAGS", p, 1);
- else
- setenv("MAKEFLAGS", "", 1);
-
- /*
- * For compatibility, look at the directories in the VPATH variable
- * and add them to the search path, if the variable is defined. The
- * variable's value is in the same format as the PATH envariable, i.e.
- * <directory>:<directory>:<directory>...
- */
- if (Var_Exists("VPATH", VAR_CMD)) {
- /*
- * GCC stores string constants in read-only memory, but
- * Var_Subst will want to write this thing, so store it
- * in an array
- */
- static char VPATH[] = "${VPATH}";
- Buffer *buf;
- char *vpath;
- char *ptr;
- char savec;
-
- buf = Var_Subst(VPATH, VAR_CMD, FALSE);
-
- vpath = Buf_Data(buf);
- do {
- /* skip to end of directory */
- for (ptr = vpath; *ptr != ':' && *ptr != '\0'; ptr++)
- ;
-
- /* Save terminator character so know when to stop */
- savec = *ptr;
- *ptr = '\0';
-
- /* Add directory to search path */
- Path_AddDir(&dirSearchPath, vpath);
-
- vpath = ptr + 1;
- } while (savec != '\0');
-
- Buf_Destroy(buf, TRUE);
- }
-
- /*
- * Now that all search paths have been read for suffixes et al, it's
- * time to add the default search path to their lists...
- */
- Suff_DoPaths();
-
- /* print the initial graph, if the user requested it */
- if (DEBUG(GRAPH1))
- Targ_PrintGraph(1);
-
- /* print the values of any variables requested by the user */
- if (Lst_IsEmpty(&variables) && !printGraphOnly) {
- /*
- * Since the user has not requested that any variables
- * be printed, we can build targets.
- *
- * Have read the entire graph and need to make a list of targets
- * to create. If none was given on the command line, we consult
- * the parsing module to find the main target(s) to create.
- */
- Lst targs = Lst_Initializer(targs);
-
- if (!is_posix && mfAutoDeps) {
- /*
- * Check if any of the makefiles are out-of-date.
- */
- Remake_Makefiles();
- }
-
- if (Lst_IsEmpty(&create))
- Parse_MainName(&targs);
- else
- Targ_FindList(&targs, &create, TARG_CREATE);
-
- if (compatMake) {
- /*
- * Compat_Init will take care of creating
- * all the targets as well as initializing
- * the module.
- */
- Compat_Run(&targs);
- outOfDate = 0;
- } else {
- /*
- * Initialize job module before traversing
- * the graph, now that any .BEGIN and .END
- * targets have been read. This is done
- * only if the -q flag wasn't given (to
- * prevent the .BEGIN from being executed
- * should it exist).
- */
- if (!queryFlag) {
- Job_Init(jobLimit);
- jobsRunning = TRUE;
- }
-
- /* Traverse the graph, checking on all the targets */
- outOfDate = Make_Run(&targs);
- }
- Lst_Destroy(&targs, NOFREE);
-
- } else {
- Var_Print(&variables, expandVars);
- }
-
- Lst_Destroy(&variables, free);
- Lst_Destroy(&makefiles, free);
- Lst_Destroy(&source_makefiles, free);
- Lst_Destroy(&create, free);
-
- /* print the graph now it's been processed if the user requested it */
- if (DEBUG(GRAPH2))
- Targ_PrintGraph(2);
-
- if (queryFlag)
- return (outOfDate);
-
- if (makeErrors != 0)
- Finish(makeErrors);
-
- return (0);
-}
diff --git a/usr.bin/make/make.1 b/usr.bin/make/make.1
deleted file mode 100644
index 63da1aa..0000000
--- a/usr.bin/make/make.1
+++ /dev/null
@@ -1,1843 +0,0 @@
-.\" Copyright (c) 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)make.1 8.8 (Berkeley) 6/13/95
-.\" $FreeBSD$
-.\"
-.Dd May 30, 2012
-.Dt MAKE 1
-.Os
-.Sh NAME
-.Nm make
-.Nd maintain program dependencies
-.Sh SYNOPSIS
-.Nm
-.Op Fl ABPSXeiknpqrstv
-.Op Fl C Ar directory
-.Op Fl D Ar variable
-.Op Fl d Ar flags
-.Op Fl E Ar variable
-.Op Fl f Ar makefile
-.Op Fl I Ar directory
-.Bk -words
-.Op Fl j Ar max_jobs
-.Op Fl m Ar directory
-.Ek
-.Op Fl V Ar variable
-.Op Fl x Ar warning_options
-.Op Ar variable Ns No = Ns Ar value
-.Op Ar target ...
-.Sh DESCRIPTION
-The
-.Nm
-utility is a program designed to simplify the maintenance of other programs.
-Its input is a list of specifications
-describing dependency relationships between the generation of
-files and programs.
-.Pp
-First of all, the initial list of specifications will be read
-from the system makefile,
-.Pa sys.mk ,
-unless inhibited with the
-.Fl r
-option.
-The standard
-.Pa sys.mk
-as shipped with
-.Fx
-also handles
-.Xr make.conf 5 ,
-the default path to which
-can be altered via the
-.Nm
-variable
-.Va __MAKE_CONF .
-.Pp
-Then the first of
-.Pa BSDmakefile ,
-.Pa makefile ,
-and
-.Pa Makefile
-that can be found in the current directory, object directory (see
-.Va .OBJDIR ) ,
-or search path (see the
-.Fl I
-option)
-will be read for the main list of dependency specifications.
-A different makefile or list of them can be supplied via the
-.Fl f
-option(s).
-Finally, if the file
-.Pa .depend
-can be found in any of the aforesaid locations, it will also be read (see
-.Xr mkdep 1 ) .
-.Pp
-When
-.Nm
-searches for a makefile, its name takes precedence over its location.
-For instance,
-.Pa BSDmakefile
-in the object directory will be favored over
-.Pa Makefile
-in the current directory.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl A
-Make archive errors non-fatal, causing
-.Nm
-to just skip the remainder
-or all of the archive and continue after printing a message.
-.It Fl B
-Try to be backwards compatible by executing a single shell per command and
-by executing the commands to make the sources of a dependency line in sequence.
-This is turned on by default unless
-.Fl j
-is used.
-.It Fl C Ar directory
-Change to
-.Ar directory
-before reading the makefiles or doing anything else.
-If multiple
-.Fl C
-options are specified, each is interpreted relative to the previous one:
-.Fl C Pa / Fl C Pa etc
-is equivalent to
-.Fl C Pa /etc .
-.It Fl D Ar variable
-Define
-.Ar variable
-to be 1, in the global context.
-.It Fl d Ar flags
-Turn on debugging, and specify which portions of
-.Nm
-are to print debugging information.
-Argument
-.Ar flags
-is one or more of the following:
-.Bl -tag -width Ds
-.It Ar A
-Print all possible debugging information;
-equivalent to specifying all of the debugging flags.
-.It Ar a
-Print debugging information about archive searching and caching.
-.It Ar c
-Print debugging information about conditional evaluation.
-.It Ar d
-Print debugging information about directory searching and caching.
-.It Ar f
-Print debugging information about the execution of for loops.
-.It Ar "g1"
-Print the input graph before making anything.
-.It Ar "g2"
-Print the input graph after making everything, or before exiting
-on error.
-.It Ar j
-Print debugging information about running multiple shells.
-.It Ar l
-Print commands in Makefiles regardless of whether or not they are prefixed
-by @ or other "quiet" flags.
-Also known as "loud" behavior.
-.It Ar m
-Print debugging information about making targets, including modification
-dates.
-.It Ar s
-Print debugging information about suffix-transformation rules.
-.It Ar t
-Print debugging information about target list maintenance.
-.It Ar v
-Print debugging information about variable assignment.
-.El
-.It Fl E Ar variable
-Specify a variable whose environment value (if any) will override
-macro assignments within makefiles.
-.It Fl e
-Specify that environment values override macro assignments within
-makefiles for all variables.
-.It Fl f Ar makefile
-Specify a makefile to read instead of the default one.
-If
-.Ar makefile
-is not an absolute pathname,
-.Nm
-will search for it as described above.
-In case
-.Ar makefile
-is
-.Sq Fl ,
-standard input is read.
-Multiple
-.Fl f
-options can be supplied,
-and the makefiles will be read in that order.
-Unlike the other command-line options,
-.Fl f
-is neither stored in
-.Va .MAKEFLAGS
-nor pushed down to sub-makes via
-.Ev MAKEFLAGS .
-See below for more details on these variables.
-.It Fl I Ar directory
-Specify a directory in which to search for makefiles and included makefiles.
-Multiple
-.Fl I
-options can be specified to form a search path.
-The system makefile directory (or directories, see the
-.Fl m
-option) is automatically appended at the tail of this path.
-.It Fl i
-Ignore non-zero exit of shell commands in the makefile.
-Equivalent to specifying
-.Sq Ic \-
-before each command line in the makefile.
-.It Fl j Ar max_jobs
-Specify the maximum number of jobs that
-.Nm
-may have running at any one time.
-Turns compatibility mode off, unless the
-.Fl B
-flag is also specified.
-.It Fl k
-Continue processing after errors are encountered, but only on those targets
-that do not depend on the target whose creation caused the error.
-.It Fl m Ar directory
-Specify a directory in which to search for
-the system makefile and makefiles included via the <...> style.
-Multiple
-.Fl m
-options can be specified to form a search path.
-This path will override the default system include path,
-.Pa /usr/share/mk .
-The system include path will always be appended to the search path used
-for "..."-style inclusions and makefile searches (see the
-.Fl I
-option).
-.Pp
-If a file or directory name in the
-.Fl m
-argument (or the
-.Ev MAKESYSPATH
-environment variable) starts with the string
-.Qq \&.../
-then
-.Nm
-will search for the specified file or directory named in the remaining part
-of the argument string.
-The search starts with the current directory of the Makefile and then works
-upward towards the root of the filesystem.
-If the search is successful,
-then the resulting directory replaces the
-.Qq \&.../
-specification in the
-.Fl m
-argument.
-If used, this feature allows
-.Nm
-to easily search in the current source tree for customized sys.mk files
-(e.g. by using
-.Qq \&.../mk/sys.mk
-as an argument).
-Note that a
-.Fl C
-that are earlier on the command line affect where
-.Fl m Qq \&.../
-searches.
-.It Fl n
-Display the commands that would have been executed, but do not actually
-execute them.
-.It Fl P
-Collate the output of a given job and display it only when the job finishes,
-instead of mixing the output of parallel jobs together.
-This option has no effect unless
-.Fl j
-is used too.
-.It Fl p
-Only print the input graph, not executing any commands.
-The output is the same as
-.Fl d Ar g1 .
-When combined with
-.Fl f Pa /dev/null ,
-only the builtin rules of
-.Nm
-are displayed.
-.It Fl Q
-Be extra quiet.
-For multi-job makes, this will cause file banners not to be generated.
-.It Fl q
-Do not execute any commands, but exit 0 if the specified targets are
-up-to-date and 1, otherwise.
-.It Fl r
-Do not process the system makefile.
-.It Fl S
-Stop processing when an error is encountered.
-Default behaviour.
-This is needed to negate the
-.Fl k
-option during recursive builds.
-.It Fl s
-Do not echo any commands as they are executed.
-Equivalent to specifying
-.Sq Ic @
-before each command line in the makefile.
-.It Fl t
-Rather than re-building a target as specified in the makefile, create it
-or update its modification time to make it appear up-to-date.
-.It Fl V Ar variable
-Print
-.Nm Ns 's
-idea of the value of
-.Ar variable ,
-in the global context.
-Do not build any targets.
-Multiple instances of this option may be specified;
-the variables will be printed one per line,
-with a blank line for each null or undefined variable.
-If
-.Ar variable
-contains a
-.Sq Ic $
-then the value will be expanded before printing.
-.It Fl v
-Be extra verbose.
-Print any extra information.
-.It Fl X
-When using the
-.Fl V
-option to print the values of variables,
-do not recursively expand the values.
-.It Ar variable Ns No = Ns Ar value
-Set the value of the variable
-.Ar variable
-to
-.Ar value .
-.It Fl x Ar warning_options
-Specify extended warning options.
-This option may be specified several times.
-A
-.Ar warning_option
-can be prefixed with
-.Dq Li no
-in which case the warning is switched off.
-The currently available options are:
-.Bl -tag -width indent
-.It Li dirsyntax
-Warn if anything except blanks and comments follows an
-.Ic .endif
-or
-.Ic .else
-directive.
-.El
-.Pp
-See also the
-.Ic .WARN
-special target.
-.El
-.Pp
-There are seven different types of lines in a makefile: file dependency
-specifications, shell commands, variable assignments, include statements,
-conditional directives, for loops, and comments.
-.Pp
-In general, lines may be continued from one line to the next by ending
-them with a backslash
-.Pq Ql \e .
-The trailing newline character and initial whitespace on the following
-line are compressed into a single space.
-.Sh FILE DEPENDENCY SPECIFICATIONS
-Dependency lines consist of one or more targets, an operator, and zero
-or more sources.
-This creates a relationship where the targets
-.Dq depend
-on the sources
-and are usually created from them.
-The exact relationship between the target and the source is determined
-by the operator that separates them.
-The three operators are as follows:
-.Bl -tag -width flag
-.It Ic \&:
-A target is considered out-of-date if its modification time is less than
-those of any of its sources.
-Sources for a target accumulate over dependency lines when this operator
-is used.
-The target is removed if
-.Nm
-is interrupted.
-.It Ic \&!
-Targets are always re-created, but not until all sources have been
-examined and re-created as necessary.
-Sources for a target accumulate over dependency lines when this operator
-is used.
-The target is removed if
-.Nm
-is interrupted.
-.It Ic ::
-If no sources are specified, the target is always re-created.
-Otherwise, a target is considered out-of-date if any of its sources has
-been modified more recently than the target.
-Sources for a target do not accumulate over dependency lines when this
-operator is used.
-The target will not be removed if
-.Nm
-is interrupted.
-.El
-.Pp
-Targets and sources may contain the shell wildcard expressions
-.Ql \&? ,
-.Ql * ,
-.Ql []
-and
-.Ql {} .
-The expressions
-.Ql \&? ,
-.Ql *
-and
-.Ql []
-may only be used as part of the final
-component of the target or source, and must be used to describe existing
-files.
-The expression
-.Ql {}
-need not necessarily be used to describe existing files.
-Expansion is in directory order, not alphabetically as done in the shell.
-.Sh SHELL COMMANDS
-Each target may have associated with it a series of shell commands, normally
-used to create the target.
-Each of the commands in this script
-.Em must
-be preceded by a tab.
-While any target may appear on a dependency line, only one of these
-dependencies may be followed by a creation script, unless the
-.Sq Ic ::
-operator is used.
-.Pp
-If the first characters of the command line are
-.Sq Ic @ ,
-.Sq Ic \- ,
-and/or
-.Sq Ic + ,
-the command is treated specially.
-A
-.Sq Ic @
-causes the command not to be echoed before it is executed.
-A
-.Sq Ic \-
-causes any non-zero exit status of the command line to be ignored.
-A
-.Sq Ic +
-causes the command to be executed even if
-.Fl n
-is specified on the command line.
-.Sh VARIABLE ASSIGNMENTS
-Variables in
-.Nm
-are much like variables in the shell, and, by tradition,
-consist of all upper-case letters.
-The five operators that can be used to assign values to variables are as
-follows:
-.Bl -tag -width Ds
-.It Ic =
-Assign the value to the variable.
-Any previous value is overridden.
-.It Ic +=
-Append the value to the current value of the variable.
-.It Ic ?=
-Assign the value to the variable if it is not already defined.
-.It Ic :=
-Assign with expansion, i.e., expand the value before assigning it
-to the variable.
-Normally, expansion is not done until the variable is referenced.
-.It Ic !=
-Expand the value and pass it to the shell for execution and assign
-the result to the variable.
-Any newlines in the result are replaced with spaces.
-.El
-.Pp
-Any whitespace before the assigned
-.Ar value
-is removed; if the value is being appended, a single space is inserted
-between the previous contents of the variable and the appended value.
-.Pp
-Variables are expanded by surrounding the variable name with either
-curly braces
-.Pq Ql {}
-or parentheses
-.Pq Ql ()
-and preceding it with
-a dollar sign
-.Pq Ql $ .
-If the variable name contains only a single letter, the surrounding
-braces or parentheses are not required.
-This shorter form is not recommended.
-.Pp
-Variable substitution occurs at two distinct times, depending on where
-the variable is being used.
-Variables in dependency lines are expanded as the line is read.
-Variables in shell commands are expanded when the shell command is
-executed.
-.Pp
-The four different classes of variables (in order of increasing precedence)
-are:
-.Bl -tag -width Ds
-.It Environment variables
-Variables defined as part of
-.Nm Ns 's
-environment.
-.It Global variables
-Variables defined in the makefile or in included makefiles.
-.It Command line variables
-Variables defined as part of the command line and variables
-obtained from the
-.Ev MAKEFLAGS
-environment variable or the
-.Ic .MAKEFLAGS
-target.
-.It Local variables
-Variables that are defined specific to a certain target.
-.El
-.Pp
-If the name of an environment variable appears in a makefile
-on the left-hand side of an assignment,
-a global variable with the same name is created, and the latter
-shadows the former as per their relative precedences.
-The environment is not changed in this case, and the change
-is not exported to programs executed by
-.Nm .
-However, a command-line variable actually replaces
-the environment variable of the same name if the latter exists,
-which is visible to child programs.
-.Pp
-There are seven local variables in
-.Nm :
-.Bl -tag -width ".ARCHIVE"
-.It Va .ALLSRC
-The list of all sources for this target; also known as
-.Sq Va > .
-.It Va .ARCHIVE
-The name of the archive file; also known as
-.Sq Va \&! .
-.It Va .IMPSRC
-The name/path of the source from which the target is to be transformed
-(the
-.Dq implied
-source); also known as
-.Sq Va < .
-.It Va .MEMBER
-The name of the archive member; also known as
-.Sq Va % .
-.It Va .OODATE
-The list of sources for this target that were deemed out-of-date; also
-known as
-.Sq Va \&? .
-.It Va .PREFIX
-The file prefix of the file, containing only the file portion, no suffix
-or preceding directory components; also known as
-.Sq Va * .
-.It Va .TARGET
-The name of the target; also known as
-.Sq Va @ .
-.El
-.Pp
-The shorter forms
-.Sq Va @ ,
-.Sq Va \&! ,
-.Sq Va < ,
-.Sq Va % ,
-.Sq Va \&? ,
-.Sq Va > ,
-and
-.Sq Va *
-are permitted for backward
-compatibility and are not recommended.
-The six variables
-.Sq Va @F ,
-.Sq Va @D ,
-.Sq Va <F ,
-.Sq Va <D ,
-.Sq Va *F ,
-and
-.Sq Va *D
-are
-permitted for compatibility with
-.At V
-makefiles and are not recommended.
-.Pp
-Four of the local variables may be used in sources on dependency lines
-because they expand to the proper value for each target on the line.
-These variables are
-.Va .TARGET ,
-.Va .PREFIX ,
-.Va .ARCHIVE ,
-and
-.Va .MEMBER .
-.Pp
-In addition,
-.Nm
-sets or knows about the following internal variables or environment
-variables:
-.Bl -tag -width ".Va .MAKEFILE_LIST"
-.It Va $
-A single dollar sign
-.Ql $ ,
-i.e.\&
-.Ql $$
-expands to a single dollar
-sign.
-.It Va MAKE
-The name that
-.Nm
-was executed with
-.Pq Va argv Ns Op 0 .
-.It Va .CURDIR
-A path to the directory where
-.Nm
-was executed.
-The
-.Nm
-utility sets
-.Va .CURDIR
-to the canonical path given by
-.Xr getcwd 3 .
-.It Va .OBJDIR
-A path to the directory where the targets are built.
-At startup,
-.Nm
-searches for an alternate directory to place target files.
-It will attempt to change into this special directory
-and will search this directory for makefiles
-not found in the current directory.
-The following directories are tried in order:
-.Pp
-.Bl -enum -compact
-.It
-${MAKEOBJDIRPREFIX}/`pwd -P`
-.It
-${MAKEOBJDIR}
-.It
-obj.${MACHINE}
-.It
-obj
-.It
-/usr/obj/`pwd -P`
-.El
-.Pp
-The first directory that
-.Nm
-successfully changes into is used.
-If either
-.Ev MAKEOBJDIRPREFIX
-or
-.Ev MAKEOBJDIR
-is set in the environment but
-.Nm
-is unable to change into the corresponding directory,
-then the current directory is used
-without checking the remainder of the list.
-If they are undefined and
-.Nm
-is unable to change into any of the remaining three directories,
-then the current directory is used.
-Note, that
-.Ev MAKEOBJDIRPREFIX
-and
-.Ev MAKEOBJDIR
-must be environment variables and should not be set on
-.Nm Ns 's
-command line.
-.Pp
-The
-.Nm
-utility sets
-.Va .OBJDIR
-to the canonical path given by
-.Xr getcwd 3 .
-.It Va .MAKEFILE_LIST
-As
-.Nm
-reads various makefiles, including the default files and any
-obtained from the command line and
-.Ic .include
-and
-.Ic .sinclude
-directives, their names will be automatically appended to the
-.Va .MAKEFILE_LIST
-variable.
-They are added right before
-.Nm
-begins to parse them, so that the name of the current makefile is the
-last word in this variable.
-.It Ev MAKEFLAGS
-The environment variable
-.Ev MAKEFLAGS
-may initially contain anything that
-may be specified on
-.Nm Ns 's
-command line,
-including
-.Fl f
-option(s).
-After processing, its contents are stored in the
-.Va .MAKEFLAGS
-global variable, although any
-.Fl f
-options are omitted.
-Then all options and variable assignments specified on
-.Nm Ns 's
-command line, except for
-.Fl f ,
-are appended to the
-.Va .MAKEFLAGS
-variable.
-.Pp
-Whenever
-.Nm
-executes a program, it sets
-.Ev MAKEFLAGS
-in the program's environment to the current value of the
-.Va .MAKEFLAGS
-global variable.
-Thus, if
-.Ev MAKEFLAGS
-in
-.Nm Ns 's
-environment contains any
-.Fl f
-options, they will not be pushed down to child programs automatically.
-The
-.Nm
-utility effectively filters out
-.Fl f
-options from the environment and command line although it
-passes the rest of its options down to sub-makes via
-.Ev MAKEFLAGS
-by default.
-.Pp
-When passing macro definitions and flag arguments in the
-.Ev MAKEFLAGS
-environment variable,
-space and tab characters are quoted by preceding them with a backslash.
-When reading the
-.Ev MAKEFLAGS
-variable from the environment,
-all sequences of a backslash and one of space or tab
-are replaced just with their second character
-without causing a word break.
-Any other occurrences of a backslash are retained.
-Groups of unquoted space, tab and newline characters cause word
-breaking.
-.It Va .MAKEFLAGS
-Initially, this global variable contains
-.Nm Ns 's
-current run-time options from the environment
-and command line as described above, under
-.Ev MAKEFLAGS .
-By modifying the contents of the
-.Va .MAKEFLAGS
-global variable, the makefile can alter the contents of the
-.Ev MAKEFLAGS
-environment variable made available for all programs which
-.Nm
-executes.
-This includes adding
-.Fl f
-option(s).
-The current value of
-.Va .MAKEFLAGS
-is just copied verbatim to
-.Ev MAKEFLAGS
-in the environment of child programs.
-.Pp
-Note that any options entered to
-.Va .MAKEFLAGS
-neither affect the current instance of
-.Nm
-nor show up in its own copy of
-.Ev MAKEFLAGS
-instantly.
-However, they do show up in the
-.Ev MAKEFLAGS
-environment variable of programs executed by
-.Nm .
-On the other hand, a direct assignment to
-.Ev MAKEFLAGS
-neither affects the current instance of
-.Nm
-nor is passed down to
-.Nm Ns 's
-children.
-Compare with the
-.Ic .MAKEFLAGS
-special target below.
-.It Va MFLAGS
-This variable is provided for backward compatibility and
-contains all the options from the
-.Ev MAKEFLAGS
-environment variable plus any options specified on
-.Nm Ns 's
-command line.
-.It Va .MAKE.PID
-The process-id of
-.Nm .
-.It Va .MAKE.PPID
-The parent process-id of
-.Nm .
-.It Va .MAKE.JOB.PREFIX
-If
-.Nm
-is run with
-.Fl j Fl v
-then output for each target is prefixed with a token
-.Ql --- target ---
-the first part of which can be controlled via
-.Va .MAKE.JOB.PREFIX .
-.br
-For example:
-.Li .MAKE.JOB.PREFIX=${.newline}---${MAKE:T}[${.MAKE.PID}]
-would produce tokens like
-.Ql ---make[1234] target ---
-or
-.Li .MAKE.JOB.PREFIX=---pid[${.MAKE.PID}],ppid[${.MAKE.PPID}]
-would produce tokens like
-.Ql ---pid[56789],ppid[1234] target ---
-making it easier to track the degree of parallelism being achieved.
-.It Va .TARGETS
-List of targets
-.Nm
-is currently building.
-.It Va .INCLUDES
-See
-.Ic .INCLUDES
-special target.
-.It Va .LIBS
-See
-.Ic .LIBS
-special target.
-.It Va MACHINE
-Name of the machine architecture
-.Nm
-is running on, obtained from the
-.Ev MACHINE
-environment variable, or through
-.Xr uname 3
-if not defined.
-.It Va MACHINE_ARCH
-Name of the machine architecture
-.Nm
-was compiled for, defined at compilation time.
-.It Va VPATH
-Makefiles may assign a colon-delimited list of directories to
-.Va VPATH .
-These directories will be searched for source files by
-.Nm
-after it has finished parsing all input makefiles.
-.El
-.Ss Variable Modifiers
-Variable expansion may be modified to select or modify each word of the
-variable (where a
-.Dq word
-is whitespace-delimited sequence of characters).
-The general format of a variable expansion is as follows:
-.Pp
-.Dl {variable[:modifier[:...]]}
-.Pp
-Each modifier begins with a colon and one of the following
-special characters.
-The colon may be escaped with a backslash
-.Pq Ql \e .
-.Bl -tag -width Cm
-.Sm off
-.It Cm :C No / Ar pattern Xo
-.No / Ar replacement
-.No / Op Cm 1g
-.Xc
-.Sm on
-Modify each word of the value,
-substituting every match of the extended regular expression
-.Ar pattern
-(see
-.Xr re_format 7 )
-with the
-.Xr ed 1 Ns \-style
-.Ar replacement
-string.
-Normally, the first occurrence of the pattern in
-each word of the value is changed.
-The
-.Ql 1
-modifier causes the substitution to apply to at most one word; the
-.Ql g
-modifier causes the substitution to apply to as many instances of the
-search pattern as occur in the word or words it is found in.
-Note that
-.Ql 1
-and
-.Ql g
-are orthogonal; the former specifies whether multiple words are
-potentially affected, the latter whether multiple substitutions can
-potentially occur within each affected word.
-.It Cm :E
-Replaces each word in the variable with its suffix.
-.It Cm :H
-Replaces each word in the variable with everything but the last component.
-.It Cm :L
-Converts variable to lower-case letters.
-(deprecated)
-.It Cm :M Ns Ar pattern
-Select only those words that match the rest of the modifier.
-The standard shell wildcard characters
-.Pf ( Ql * ,
-.Ql \&? ,
-and
-.Ql [] )
-may
-be used.
-The wildcard characters may be escaped with a backslash
-.Pq Ql \e .
-.It Cm :N Ns Ar pattern
-This is identical to
-.Cm :M ,
-but selects all words which do not match
-the rest of the modifier.
-.It Cm :O
-Order every word in the variable alphabetically.
-.It Cm :Q
-Quotes every shell meta-character in the variable, so that it can be passed
-safely through recursive invocations of
-.Nm .
-.It Cm :R
-Replaces each word in the variable with everything but its suffix.
-.Sm off
-.It Cm :S No / Ar old_string Xo
-.No / Ar new_string
-.No / Op Cm g
-.Xc
-.Sm on
-Modify the first occurrence of
-.Ar old_string
-in each word of the variable's value, replacing it with
-.Ar new_string .
-If a
-.Ql g
-is appended to the last slash of the pattern, all occurrences
-in each word are replaced.
-If
-.Ar old_string
-begins with a caret
-.Pq Ql ^ ,
-.Ar old_string
-is anchored at the beginning of each word.
-If
-.Ar old_string
-ends with a dollar sign
-.Pq Ql $ ,
-it is anchored at the end of each word.
-Inside
-.Ar new_string ,
-an ampersand
-.Pq Ql &
-is replaced by
-.Ar old_string .
-Any character may be used as a delimiter for the parts of the modifier
-string.
-The anchoring, ampersand, and delimiter characters may be escaped with a
-backslash
-.Pq Ql \e .
-.Pp
-Variable expansion occurs in the normal fashion inside both
-.Ar old_string
-and
-.Ar new_string
-with the single exception that a backslash is used to prevent the expansion
-of a dollar sign
-.Pq Ql $ ,
-not a preceding dollar sign as is usual.
-.It Ar :old_string=new_string
-This is the
-.At V
-style variable substitution.
-It must be the last modifier specified.
-If
-.Ar old_string
-or
-.Ar new_string
-do not contain the pattern matching character
-.Ar %
-then it is assumed that they are
-anchored at the end of each word, so only suffixes or entire
-words may be replaced.
-Otherwise
-.Ar %
-is the substring of
-.Ar old_string
-to be replaced in
-.Ar new_string .
-.It Cm :T
-Replaces each word in the variable with its last component.
-.It Cm :tl
-Converts variable to lower-case letters.
-.It Cm :tu
-Converts variable to upper-case letters.
-.It Cm :U
-Converts variable to upper-case letters.
-(deprecated)
-.It Cm :u
-Remove adjacent duplicate words (like
-.Xr uniq 1 ) .
-.El
-.Sh DIRECTIVES, CONDITIONALS, AND FOR LOOPS
-Directives, conditionals, and for loops reminiscent
-of the C programming language are provided in
-.Nm .
-All such structures are identified by a line beginning with a single
-dot
-.Pq Ql \&.
-character.
-The following directives are supported:
-.Bl -tag -width Ds
-.It Ic .include Ar <file>
-.It Ic .include Ar \*qfile\*q
-Include the specified makefile.
-Variables between the angle brackets
-or double quotes are expanded to form the file name.
-If angle brackets
-are used, the included makefile is expected to be in the system
-makefile directory.
-If double quotes are used, the including
-makefile's directory and any directories specified using the
-.Fl I
-option are searched before the system
-makefile directory.
-.It Ic .sinclude Ar <file>
-.It Ic .sinclude Ar \*qfile\*q
-Like
-.Ic .include ,
-but silently ignored if the file cannot be found and opened.
-.It Ic .undef Ar variable
-Un-define the specified global variable.
-Only global variables may be un-defined.
-.It Ic .error Ar message
-Terminate processing of the makefile immediately.
-The filename of the
-makefile, the line on which the error was encountered and the specified
-message are printed to the standard error output and
-.Nm
-terminates with exit code 1.
-Variables in the message are expanded.
-.It Ic .warning Ar message
-Emit a warning message.
-The filename of the makefile,
-the line on which the warning was encountered,
-and the specified message are printed to the standard error output.
-Variables in the message are expanded.
-.El
-.Pp
-Conditionals are used to determine which parts of the Makefile
-to process.
-They are used similarly to the conditionals supported
-by the C pre-processor.
-The following conditionals are supported:
-.Bl -tag -width Ds
-.It Xo
-.Ic .if
-.Oo \&! Oc Ns Ar expression
-.Op Ar operator expression ...
-.Xc
-Test the value of an expression.
-.It Xo
-.Ic .ifdef
-.Oo \&! Oc Ns Ar variable
-.Op Ar operator variable ...
-.Xc
-Test the value of a variable.
-.It Xo
-.Ic .ifndef
-.Oo \&! Oc Ns Ar variable
-.Op Ar operator variable ...
-.Xc
-Test the value of a variable.
-.It Xo
-.Ic .ifmake
-.Oo \&! Oc Ns Ar target
-.Op Ar operator target ...
-.Xc
-Test the target being built.
-.It Xo
-.Ic .ifnmake
-.Oo \&! Oc Ns Ar target
-.Op Ar operator target ...
-.Xc
-Test the target being built.
-.It Ic .else
-Reverse the sense of the last conditional.
-.It Xo
-.Ic .elif
-.Oo \&! Oc Ns Ar expression
-.Op Ar operator expression ...
-.Xc
-A combination of
-.Ic .else
-followed by
-.Ic .if .
-.It Xo
-.Ic .elifdef
-.Oo \&! Oc Ns Ar variable
-.Op Ar operator variable ...
-.Xc
-A combination of
-.Ic .else
-followed by
-.Ic .ifdef .
-.It Xo
-.Ic .elifndef
-.Oo \&! Oc Ns Ar variable
-.Op Ar operator variable ...
-.Xc
-A combination of
-.Ic .else
-followed by
-.Ic .ifndef .
-.It Xo
-.Ic .elifmake
-.Oo \&! Oc Ns Ar target
-.Op Ar operator target ...
-.Xc
-A combination of
-.Ic .else
-followed by
-.Ic .ifmake .
-.It Xo
-.Ic .elifnmake
-.Oo \&! Oc Ns Ar target
-.Op Ar operator target ...
-.Xc
-A combination of
-.Ic .else
-followed by
-.Ic .ifnmake .
-.It Ic .endif
-End the body of the conditional.
-.El
-.Pp
-The
-.Ar operator
-may be any one of the following:
-.Bl -tag -width "Cm XX"
-.It Cm ||
-Logical
-.Tn OR
-.It Cm &&
-Logical
-.Tn AND ;
-of higher precedence than
-.Sq Ic || .
-.El
-.Pp
-As in C,
-.Nm
-will only evaluate a conditional as far as is necessary to determine
-its value.
-Parentheses may be used to change the order of evaluation.
-The boolean operator
-.Sq Ic !\&
-may be used to logically negate an entire
-conditional.
-It is of higher precedence than
-.Sq Ic && .
-.Pp
-The value of
-.Ar expression
-may be any of the following:
-.Bl -tag -width Ic
-.It Ic defined
-Takes a variable name as an argument and evaluates to true if the variable
-has been defined.
-.It Ic make
-Takes a target name as an argument and evaluates to true if the target
-was specified as part of
-.Nm Ns 's
-command line or was declared the default target (either implicitly or
-explicitly, see
-.Va .MAIN )
-before the line containing the conditional.
-.It Ic empty
-Takes a variable, with possible modifiers, and evaluates to true if
-the expansion of the variable would result in an empty string.
-.It Ic exists
-Takes a file name as an argument and evaluates to true if the file exists.
-The file is searched for on the system search path (see
-.Va .PATH ) .
-.It Ic target
-Takes a target name as an argument and evaluates to true if the target
-has been defined.
-.El
-.Pp
-An
-.Ar expression
-may also be a numeric or string comparison:
-in this case, the left-hand side
-.Ar must be
-a variable expansion, whereas the right-hand side can be a
-constant or a variable expansion.
-Variable expansion is performed on both sides, after which the resulting
-values are compared.
-A value is interpreted as hexadecimal if it is
-preceded by 0x, otherwise it is decimal; octal numbers are not supported.
-.Pp
-String comparison can only use the
-.Sq Ic ==
-or
-.Sq Ic !=
-operators, whereas numeric values (both integer and floating point)
-can also be compared using the
-.Sq Ic > ,
-.Sq Ic >= ,
-.Sq Ic <
-and
-.Sq Ic <=
-operators.
-.Pp
-If no relational operator (and right-hand value) are given, an implicit
-.Sq Ic != 0
-is used.
-However be very careful in using this feature especially
-when the left-hand side variable expansion returns a string.
-.Pp
-When
-.Nm
-is evaluating one of these conditional expressions, and it encounters
-a word it does not recognize, either the
-.Dq make
-or
-.Dq defined
-expression is applied to it, depending on the form of the conditional.
-If the form is
-.Ic .if ,
-.Ic .ifdef
-or
-.Ic .ifndef ,
-the
-.Dq defined
-expression is applied.
-Similarly, if the form is
-.Ic .ifmake
-or
-.Ic .ifnmake ,
-the
-.Dq make
-expression is applied.
-.Pp
-If the conditional evaluates to true the parsing of the makefile continues
-as before.
-If it evaluates to false, the following lines are skipped.
-In both cases this continues until a
-.Ic .else
-or
-.Ic .endif
-is found.
-.Pp
-For loops are typically used to apply a set of rules to a list of files.
-The syntax of a for loop is:
-.Pp
-.Bl -tag -width indent -compact
-.It Ic .for Ar variable Ic in Ar expression
-.It <make-rules>
-.It Ic .endfor
-.El
-.Pp
-After the for
-.Ar expression
-is evaluated, it is split into words.
-The
-iteration
-.Ar variable
-is successively set to each word, and substituted in the
-.Ic make-rules
-inside the body of the for loop.
-.Sh COMMENTS
-Comments begin with a hash
-.Pq Ql #
-character, anywhere but in a shell
-command line, and continue to the end of the line.
-.Sh SPECIAL SOURCES
-.Bl -tag -width Ic
-.It Ic .IGNORE
-Ignore any errors from the commands associated with this target, exactly
-as if they all were preceded by a dash
-.Pq Ql \- .
-.It Ic .MAKE
-Execute the commands associated with this target even if the
-.Fl n
-or
-.Fl t
-options were specified.
-Normally used to mark recursive
-.Nm Ns 's .
-.It Ic .NOTMAIN
-Normally
-.Nm
-selects the first target it encounters as the default target to be built
-if no target was specified.
-This source prevents this target from being selected.
-.It Ic .OPTIONAL
-If a target is marked with this attribute and
-.Nm
-cannot figure out how to create it, it will ignore this fact and assume
-the file is not needed or already exists.
-.It Ic .PRECIOUS
-When
-.Nm
-is interrupted, it removes any partially made targets.
-This source prevents the target from being removed.
-.It Ic .SILENT
-Do not echo any of the commands associated with this target, exactly
-as if they all were preceded by an at sign
-.Pq Ql @ .
-.It Ic .USE
-Turn the target into
-.Nm Ns 's
-version of a macro.
-When the target is used as a source for another target, the other target
-acquires the commands, sources, and attributes (except for
-.Ic .USE )
-of the
-source.
-If the target already has commands, the
-.Ic .USE
-target's commands are appended
-to them.
-.It Ic .WAIT
-If special
-.Ic .WAIT
-source appears in a dependency line, the sources that precede it are
-made before the sources that succeed it in the line.
-Loops are not being
-detected and targets that form loops will be silently ignored.
-.El
-.Sh SPECIAL TARGETS
-Special targets may not be included with other targets, i.e., they must be
-the only target specified.
-.Bl -tag -width Ic
-.It Ic .BEGIN
-Any command lines attached to this target are executed before anything
-else is done.
-.It Ic .DEFAULT
-This is sort of a
-.Ic .USE
-rule for any target (that was used only as a
-source) that
-.Nm
-cannot figure out any other way to create.
-Only the shell script is used.
-The
-.Ic .IMPSRC
-variable of a target that inherits
-.Ic .DEFAULT Ns 's
-commands is set
-to the target's own name.
-.It Ic .END
-Any command lines attached to this target are executed after everything
-else is done.
-.It Ic .IGNORE
-Mark each of the sources with the
-.Ic .IGNORE
-attribute.
-If no sources are specified, this is the equivalent of specifying the
-.Fl i
-option.
-.It Ic .INCLUDES
-A list of suffixes that indicate files that can be included in a source
-file.
-The suffix must have already been declared with
-.Ic .SUFFIXES ;
-any suffix so declared will have the directories on its search path (see
-.Ic .PATH )
-placed in the
-.Va .INCLUDES
-special variable, each preceded by a
-.Fl I
-flag.
-.It Ic .INTERRUPT
-If
-.Nm
-is interrupted, the commands for this target will be executed.
-.It Ic .LIBS
-This does for libraries what
-.Ic .INCLUDES
-does for include files, except that the flag used is
-.Fl L .
-.It Ic .MAIN
-If no target is specified when
-.Nm
-is invoked, this target will be built.
-This is always set, either
-explicitly, or implicitly when
-.Nm
-selects the default target, to give the user a way to refer to the default
-target on the command line.
-.It Ic .MAKEFILEDEPS
-Enable the
-.Dq Remaking Makefiles
-functionality, as explained in the
-.Sx REMAKING MAKEFILES
-section below.
-.It Ic .MAKEFLAGS
-This target provides a way to specify flags for
-.Nm
-when the makefile is used.
-The flags are as if typed to the shell, though the
-.Fl f
-option will have
-no effect.
-Flags (except for
-.Fl f )
-and variable assignments specified as the source
-for this target are also appended to the
-.Va .MAKEFLAGS
-internal variable.
-Please note the difference between this target and the
-.Va .MAKEFLAGS
-internal variable: specifying an option or variable
-assignment as the source for this target will affect
-.Em both
-the current makefile and all processes that
-.Nm
-executes.
-.It Ic .MFLAGS
-Same as above, for backward compatibility.
-.\" XXX: NOT YET!!!!
-.\" .It Ic .NOTPARALLEL
-.\" The named targets are executed in non parallel mode. If no targets are
-.\" specified, then all targets are executed in non parallel mode.
-.It Ic .NOTPARALLEL
-Disable parallel mode.
-.It Ic .NO_PARALLEL
-Same as above, for compatibility with other
-.Nm pmake
-variants.
-.It Ic .ORDER
-The named targets are made in sequence.
-.\" XXX: NOT YET!!!!
-.\" .It Ic .PARALLEL
-.\" The named targets are executed in parallel mode. If no targets are
-.\" specified, then all targets are executed in parallel mode.
-.It Ic .PATH
-The sources are directories which are to be searched for files not
-found in the current directory.
-If no sources are specified, any previously specified directories are
-deleted.
-Where possible, use of
-.Ic .PATH
-is preferred over use of the
-.Va VPATH
-variable.
-.It Ic .PATH\fIsuffix\fR
-The sources are directories which are to be searched for suffixed files
-not found in the current directory.
-The
-.Nm
-utility
-first searches the suffixed search path, before reverting to the default
-path if the file is not found there.
-This form is required for
-.Ic .LIBS
-and
-.Ic .INCLUDES
-to work.
-.It Ic .PHONY
-Apply the
-.Ic .PHONY
-attribute to any specified sources.
-Targets with this attribute are always
-considered to be out of date.
-.It Ic .POSIX
-Adjust
-.Nm Ap s
-behavior to match the applicable
-.Tn POSIX
-specifications.
-(Note this disables the
-.Dq Remaking Makefiles
-feature.)
-.It Ic .PRECIOUS
-Apply the
-.Ic .PRECIOUS
-attribute to any specified sources.
-If no sources are specified, the
-.Ic .PRECIOUS
-attribute is applied to every
-target in the file.
-.It Ic .SHELL
-Select another shell.
-The sources of this target have the format
-.Ar key Ns = Ns Ar value .
-The
-.Ar key
-is one of:
-.Bl -tag -width ".Va hasErrCtl"
-.It Va path
-Specify the path to the new shell.
-.It Va name
-Specify the name of the new shell.
-This may be either one of the three builtin shells (see below) or any
-other name.
-.It Va quiet
-Specify the shell command to turn echoing off.
-.It Va echo
-Specify the shell command to turn echoing on.
-.It Va filter
-Usually shells print the echo off command before turning echoing off.
-This is the exact string that will be printed by the shell and is used
-to filter the shell output to remove the echo off command.
-.It Va echoFlag
-The shell option that turns echoing on.
-.It Va errFlag
-The shell option to turn on error checking.
-If error checking is on, the shell should exit if a command returns
-a non-zero status.
-.It Va hasErrCtl
-True if the shell has error control.
-.It Va check
-If
-.Va hasErrCtl
-is true then this is the shell command to turn error checking on.
-If
-.Va hasErrCtl
-is false then this is a command template to echo commands for which error
-checking is disabled.
-The template must contain a
-.Ql %s .
-.It Va ignore
-If
-.Va hasErrCtl
-is true, this is the shell command to turn error checking off.
-If
-.Va hasErrCtl
-is false, this is a command template to execute a command so that errors
-are ignored.
-The template must contain a
-.Ql %s .
-.It Va meta
-This is a string of meta characters of the shell.
-.It Va builtins
-This is a string holding all the shell's builtin commands separated by blanks.
-The
-.Va meta
-and
-.Va builtins
-strings are used in compat mode.
-When a command line contains neither a meta
-character nor starts with a shell builtin, it is executed directly without
-invoking a shell.
-When one of these strings (or both) is empty all commands are executed
-through a shell.
-.It Va unsetenv
-If true, remove the
-.Ev ENV
-environment variable before executing any command.
-This is useful for the Korn-shell
-.Pq Nm ksh .
-.El
-.Pp
-Values that are strings must be surrounded by double quotes.
-Boolean values are specified as
-.Ql T
-or
-.Ql Y
-(in either case) to mean true.
-Any other value is taken to mean false.
-.Pp
-There are several uses of the
-.Ic .SHELL
-target:
-.Bl -bullet
-.It
-Selecting one of the builtin shells.
-This is done by just specifying the name of the shell with the
-.Va name
-keyword.
-It is also possible to modify the parameters of the builtin shell by just
-specifying other keywords (except for
-.Va path ) .
-.It
-Using another executable for one of the builtin shells.
-This is done by specifying the path to the executable with the
-.Va path
-keyword.
-If the last component is the same as the name of the builtin shell, no
-name needs to be specified; if it is different, the name must be given:
-.Bd -literal -offset indent
-\&.SHELL: path="/usr/local/bin/sh"
-.Ed
-.Pp
-selects the builtin shell
-.Dq Li sh
-but will execute it from
-.Pa /usr/local/bin/sh .
-Like in the previous case, it is possible to modify parameters of the builtin
-shell by just specifying them.
-.It
-Using an entirely different shell.
-This is done by specifying all keywords.
-.El
-.Pp
-The builtin shells are
-.Dq Li sh ,
-.Dq Li csh
-and
-.Dq Li ksh .
-Because
-.Fx
-has no
-.Nm ksh
-in
-.Pa /bin ,
-it is unwise to specify
-.Va name Ns = Ns Qq Li ksh
-without also specifying a path.
-.It Ic .SILENT
-Apply the
-.Ic .SILENT
-attribute to any specified sources.
-If no sources are specified, the
-.Ic .SILENT
-attribute is applied to every
-command in the file.
-.It Ic .SUFFIXES
-Each source specifies a suffix to
-.Nm .
-If no sources are specified, any previous specified suffixes are deleted.
-.It Ic .WARN
-Each source specifies a warning flag as previously described for the
-.Fl x
-command line option.
-Warning flags specified on the command line take precedence over flags
-specified in the makefile.
-Also, command line warning flags are pushed to sub-makes through the
-.Ev MAKEFLAGS
-environment variables so that a warning flag specified on the command
-line will influence all sub-makes.
-Several flags can be specified on a single
-.Ic .WARN
-target by separating them with blanks.
-.El
-.Sh REMAKING MAKEFILES
-If the special target
-.Ic .MAKEFILEDEPS
-exists in the Makefile,
-.Nm
-enables the
-.Dq Remaking Makefiles
-feature.
-After reading Makefile and all the files that are included using
-.Ic .include
-or
-.Ic .sinclude
-directives (source Makefiles)
-.Nm
-considers each source Makefile as a target and tries to rebuild it.
-Both explicit and implicit rules are checked and all source Makefiles
-are updated if necessary. If any of the source Makefiles were rebuilt,
-.Nm
-restarts from clean state.
-.Pp
-To prevent infinite loops the following source Makefile targets are ignored:
-.Bl -bullet
-.It
-.Ic ::
-targets that have no prerequisites
-.It
-.Ic \&!
-targets
-.It
-targets that have
-.Ic .PHONY
-or
-.Ic .EXEC
-attributes
-.It
-targets without prerequisites and without commands
-.El
-.Pp
-When remaking a source Makefile options
-.Ic -t
-(touch target),
-.Ic -q
-(query mode), and
-.Ic -n
-(no exec) do not take effect, unless source Makefile is specified
-explicitly as a target in
-.Nm
-command line.
-.Pp
-Additionally, system makefiles and
-.Ic .depend
-are not considered as Makefiles that can be rebuilt.
-.Sh ENVIRONMENT
-The
-.Nm
-utility uses the following environment variables, if they exist:
-.Ev MACHINE ,
-.Ev MAKE ,
-.Ev MAKEFLAGS ,
-.Ev MAKEOBJDIR ,
-.Ev MAKEOBJDIRPREFIX ,
-and
-.Ev MAKESYSPATH .
-.Sh FILES
-.Bl -tag -width /usr/share/doc/psd/12.make -compact
-.It Pa .depend
-list of dependencies
-.It Pa Makefile
-list of dependencies
-.It Pa makefile
-list of dependencies
-.It Pa obj
-object directory
-.It Pa sys.mk
-system makefile
-.It Pa /usr/share/mk
-default system makefile directory
-.It Pa /usr/share/doc/psd/12.make
-PMake tutorial
-.It Pa /usr/obj
-default
-.Ev MAKEOBJDIRPREFIX
-directory.
-.It Pa /etc/make.conf
-default path to
-.Xr make.conf 5
-.El
-.Sh EXAMPLES
-List all included makefiles in order visited:
-.Pp
-.Dl "make -V .MAKEFILE_LIST | tr \e\ \e\en"
-.Sh COMPATIBILITY
-Older versions of
-.Nm
-used
-.Ev MAKE
-instead of
-.Ev MAKEFLAGS .
-This was removed for
-.Tn POSIX
-compatibility.
-The internal variable
-.Va MAKE
-is set to the same value as
-.Va .MAKE ;
-support for this may be removed in the future.
-.Pp
-The use of the
-.Cm :L
-and
-.Cm :U
-modifiers are deprecated
-in
-.Fx 10.0
-and the more portable (among Pmake decedents)
-.Cm :tl
-and
-.Cm :tu
-should be used instead.
-.Pp
-Most of the more esoteric features of
-.Nm
-should probably be avoided for greater compatibility.
-.Sh SEE ALSO
-.Xr mkdep 1 ,
-.Xr make.conf 5
-.Rs
-.%T "PMake - A Tutorial"
-.Re
-in
-.Pa /usr/share/doc/psd/12.make
-.Sh HISTORY
-A
-.Nm
-command appeared in PWB UNIX.
-.Sh BUGS
-The determination of
-.Va .OBJDIR
-is contorted to the point of absurdity.
-.Pp
-In the presence of several
-.Ic .MAIN
-special targets,
-.Nm
-silently ignores all but the first.
-.Pp
-.Va .TARGETS
-is not set to the default target when
-.Nm
-is invoked without a target name and no
-.Ic .MAIN
-special target exists.
-.Pp
-The evaluation of
-.Ar expression
-in a test is very simple-minded.
-Currently, the only form that works is
-.Ql .if ${VAR} op something .
-For instance, you should write tests as
-.Ql .if ${VAR} == "string"
-not the other way around, which would give you an error.
-.Pp
-For loops are expanded before tests, so a fragment such as:
-.Bd -literal -offset indent
-\&.for ARCH in ${SHARED_ARCHS}
-\&.if ${ARCH} == ${MACHINE}
- ...
-\&.endif
-\&.endfor
-.Ed
-.Pp
-will not work, and should be rewritten as:
-.Bd -literal -offset indent
-\&.for ARCH in ${SHARED_ARCHS}
-\&.if ${MACHINE} == ${ARCH}
- ...
-\&.endif
-\&.endfor
-.Ed
-.Pp
-The parsing code is broken with respect to handling a semicolon
-after a colon, so a fragment like this will fail:
-.Bd -literal -offset indent
-HDRS= foo.h bar.h
-
-all:
-\&.for h in ${HDRS:S;^;${.CURDIR}/;}
- ...
-\&.endfor
-.Ed
-.Pp
-A trailing backslash in a variable value defined on the command line causes
-the delimiting space in the
-.Ev MAKEFLAGS
-environment variable to be preceded by that backslash.
-That causes a submake to not treat that space as a word delimiter.
-Fixing this requires a larger rewrite of the code handling command line
-macros and assignments to
-.Va .MAKEFLAGS .
diff --git a/usr.bin/make/make.c b/usr.bin/make/make.c
deleted file mode 100644
index 3e6cb42..0000000
--- a/usr.bin/make/make.c
+++ /dev/null
@@ -1,819 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)make.c 8.1 (Berkeley) 6/6/93
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * make.c
- * The functions which perform the examination of targets and
- * their suitability for creation
- *
- * Interface:
- * Make_Run Initialize things for the module and recreate
- * whatever needs recreating. Returns TRUE if
- * work was (or would have been) done and FALSE
- * otherwise.
- *
- * Make_Update Update all parents of a given child. Performs
- * various bookkeeping chores like the updating
- * of the cmtime field of the parent, filling
- * of the IMPSRC context variable, etc. It will
- * place the parent on the toBeMade queue if it should be.
- *
- * Make_TimeStamp Function to set the parent's cmtime field
- * based on a child's modification time.
- *
- * Make_DoAllVar Set up the various local variables for a
- * target, including the .ALLSRC variable, making
- * sure that any variable that needs to exist
- * at the very least has the empty value.
- *
- * Make_OODate Determine if a target is out-of-date.
- *
- * Make_HandleUse See if a child is a .USE node for a parent
- * and perform the .USE actions if so.
- */
-
-#include "arch.h"
-#include "config.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "job.h"
-#include "make.h"
-#include "parse.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/* The current fringe of the graph. These are nodes which await examination
- * by MakeOODate. It is added to by Make_Update and subtracted from by
- * MakeStartJobs */
-static Lst toBeMade = Lst_Initializer(toBeMade);
-
-/*
- * Number of nodes to be processed. If this is non-zero when Job_Empty()
- * returns TRUE, there's a cycle in the graph.
- */
-static int numNodes;
-
-static Boolean MakeStartJobs(void);
-
-/**
- * Make_TimeStamp
- * Set the cmtime field of a parent node based on the mtime stamp in its
- * child. Called from MakeOODate via LST_FOREACH.
- *
- * Results:
- * Always returns 0.
- *
- * Side Effects:
- * The cmtime of the parent node will be changed if the mtime
- * field of the child is greater than it.
- */
-int
-Make_TimeStamp(GNode *pgn, GNode *cgn)
-{
-
- if (cgn->mtime > pgn->cmtime) {
- pgn->cmtime = cgn->mtime;
- pgn->cmtime_gn = cgn;
- }
- return (0);
-}
-
-/**
- * Make_OODate
- * See if a given node is out of date with respect to its sources.
- * Used by Make_Run when deciding which nodes to place on the
- * toBeMade queue initially and by Make_Update to screen out USE and
- * EXEC nodes. In the latter case, however, any other sort of node
- * must be considered out-of-date since at least one of its children
- * will have been recreated.
- *
- * Results:
- * TRUE if the node is out of date. FALSE otherwise.
- *
- * Side Effects:
- * The mtime field of the node and the cmtime field of its parents
- * will/may be changed.
- */
-Boolean
-Make_OODate(GNode *gn)
-{
- Boolean oodate;
- LstNode *ln;
-
- /*
- * Certain types of targets needn't even be sought as their datedness
- * doesn't depend on their modification time...
- */
- if ((gn->type & (OP_JOIN | OP_USE | OP_EXEC)) == 0) {
- Dir_MTime(gn);
- if (gn->mtime != 0) {
- DEBUGF(MAKE, ("modified %s...",
- Targ_FmtTime(gn->mtime)));
- } else {
- DEBUGF(MAKE, ("non-existent..."));
- }
- }
-
- /*
- * A target is remade in one of the following circumstances:
- * its modification time is smaller than that of its youngest child
- * and it would actually be run (has commands or type OP_NOP)
- * it's the object of a force operator
- * it has no children, was on the lhs of an operator and doesn't
- * exist already.
- *
- * Libraries are only considered out-of-date if the archive module says
- * they are.
- *
- * These weird rules are brought to you by Backward-Compatibility and
- * the strange people who wrote 'Make'.
- */
- if (gn->type & OP_USE) {
- /*
- * If the node is a USE node it is *never* out of date
- * no matter *what*.
- */
- DEBUGF(MAKE, (".USE node..."));
- oodate = FALSE;
-
- } else if (gn->type & OP_LIB) {
- DEBUGF(MAKE, ("library..."));
-
- /*
- * always out of date if no children and :: target
- */
- oodate = Arch_LibOODate(gn) ||
- ((gn->cmtime == 0) && (gn->type & OP_DOUBLEDEP));
-
- } else if (gn->type & OP_JOIN) {
- /*
- * A target with the .JOIN attribute is only considered
- * out-of-date if any of its children was out-of-date.
- */
- DEBUGF(MAKE, (".JOIN node..."));
- oodate = gn->childMade;
-
- } else if (gn->type & (OP_FORCE|OP_EXEC|OP_PHONY)) {
- /*
- * A node which is the object of the force (!) operator or
- * which has the .EXEC attribute is always considered
- * out-of-date.
- */
- if (gn->type & OP_FORCE) {
- DEBUGF(MAKE, ("! operator..."));
- } else if (gn->type & OP_PHONY) {
- DEBUGF(MAKE, (".PHONY node..."));
- } else {
- DEBUGF(MAKE, (".EXEC node..."));
- }
-
- if (remakingMakefiles) {
- DEBUGF(MAKE, ("skipping (remaking makefiles)..."));
- oodate = FALSE;
- } else {
- oodate = TRUE;
- }
- } else if (gn->mtime < gn->cmtime ||
- (gn->cmtime == 0 && (gn->mtime == 0 || (gn->type & OP_DOUBLEDEP)))) {
- /*
- * A node whose modification time is less than that of its
- * youngest child or that has no children (cmtime == 0) and
- * either doesn't exist (mtime == 0) or was the object of a
- * :: operator is out-of-date. Why? Because that's the way
- * Make does it.
- */
- if (gn->mtime < gn->cmtime) {
- DEBUGF(MAKE, ("modified before source (%s)...",
- gn->cmtime_gn ? gn->cmtime_gn->path : "???"));
- oodate = TRUE;
- } else if (gn->mtime == 0) {
- DEBUGF(MAKE, ("non-existent and no sources..."));
- if (remakingMakefiles && Lst_IsEmpty(&gn->commands)) {
- DEBUGF(MAKE, ("skipping (no commands and remaking makefiles)..."));
- oodate = FALSE;
- } else {
- oodate = TRUE;
- }
- } else {
- DEBUGF(MAKE, (":: operator and no sources..."));
- if (remakingMakefiles) {
- DEBUGF(MAKE, ("skipping (remaking makefiles)..."));
- oodate = FALSE;
- } else {
- oodate = TRUE;
- }
- }
- } else
- oodate = FALSE;
-
- /*
- * If the target isn't out-of-date, the parents need to know its
- * modification time. Note that targets that appear to be out-of-date
- * but aren't, because they have no commands and aren't of type OP_NOP,
- * have their mtime stay below their children's mtime to keep parents
- * from thinking they're out-of-date.
- */
- if (!oodate) {
- LST_FOREACH(ln, &gn->parents)
- if (Make_TimeStamp(Lst_Datum(ln), gn))
- break;
- }
-
- return (oodate);
-}
-
-/**
- * Make_HandleUse
- * Function called by Make_Run and SuffApplyTransform on the downward
- * pass to handle .USE and transformation nodes. A callback function
- * for LST_FOREACH, it implements the .USE and transformation
- * functionality by copying the node's commands, type flags
- * and children to the parent node. Should be called before the
- * children are enqueued to be looked at.
- *
- * A .USE node is much like an explicit transformation rule, except
- * its commands are always added to the target node, even if the
- * target already has commands.
- *
- * Results:
- * returns 0.
- *
- * Side Effects:
- * Children and commands may be added to the parent and the parent's
- * type may be changed.
- *
- *-----------------------------------------------------------------------
- */
-int
-Make_HandleUse(GNode *cgn, GNode *pgn)
-{
- GNode *gn; /* A child of the .USE node */
- LstNode *ln; /* An element in the children list */
-
- if (cgn->type & (OP_USE | OP_TRANSFORM)) {
- if ((cgn->type & OP_USE) || Lst_IsEmpty(&pgn->commands)) {
- /*
- * .USE or transformation and target has no commands --
- * append the child's commands to the parent.
- */
- Lst_Concat(&pgn->commands, &cgn->commands, LST_CONCNEW);
- }
-
- for (ln = Lst_First(&cgn->children); ln != NULL;
- ln = Lst_Succ(ln)) {
- gn = Lst_Datum(ln);
-
- if (Lst_Member(&pgn->children, gn) == NULL) {
- Lst_AtEnd(&pgn->children, gn);
- Lst_AtEnd(&gn->parents, pgn);
- pgn->unmade += 1;
- }
- }
-
- pgn->type |= cgn->type & ~(OP_OPMASK | OP_USE | OP_TRANSFORM);
-
- /*
- * This child node is now "made", so we decrement the count of
- * unmade children in the parent... We also remove the child
- * from the parent's list to accurately reflect the number of
- * decent children the parent has. This is used by Make_Run to
- * decide whether to queue the parent or examine its children...
- */
- if (cgn->type & OP_USE) {
- pgn->unmade--;
- }
- }
- return (0);
-}
-
-/**
- * Make_Update
- * Perform update on the parents of a node. Used by JobFinish once
- * a node has been dealt with and by MakeStartJobs if it finds an
- * up-to-date node.
- *
- * Results:
- * Always returns 0
- *
- * Side Effects:
- * The unmade field of pgn is decremented and pgn may be placed on
- * the toBeMade queue if this field becomes 0.
- *
- * If the child was made, the parent's childMade field will be set true
- * and its cmtime set to now.
- *
- * If the child wasn't made, the cmtime field of the parent will be
- * altered if the child's mtime is big enough.
- *
- * Finally, if the child is the implied source for the parent, the
- * parent's IMPSRC variable is set appropriately.
- */
-void
-Make_Update(GNode *cgn)
-{
- GNode *pgn; /* the parent node */
- const char *cname; /* the child's name */
- LstNode *ln; /* Element in parents and iParents lists */
- const char *cpref;
-
- cname = Var_Value(TARGET, cgn);
-
- /*
- * If the child was actually made, see what its modification time is
- * now -- some rules won't actually update the file. If the file still
- * doesn't exist, make its mtime now.
- */
- if (cgn->made != UPTODATE) {
-#ifndef RECHECK
- /*
- * We can't re-stat the thing, but we can at least take care
- * of rules where a target depends on a source that actually
- * creates the target, but only if it has changed, e.g.
- *
- * parse.h : parse.o
- *
- * parse.o : parse.y
- * yacc -d parse.y
- * cc -c y.tab.c
- * mv y.tab.o parse.o
- * cmp -s y.tab.h parse.h || mv y.tab.h parse.h
- *
- * In this case, if the definitions produced by yacc haven't
- * changed from before, parse.h won't have been updated and
- * cgn->mtime will reflect the current modification time for
- * parse.h. This is something of a kludge, I admit, but it's a
- * useful one..
- * XXX: People like to use a rule like
- *
- * FRC:
- *
- * To force things that depend on FRC to be made, so we have to
- * check for gn->children being empty as well...
- */
- if (!Lst_IsEmpty(&cgn->commands) ||
- Lst_IsEmpty(&cgn->children)) {
- cgn->mtime = now;
- }
- #else
- /*
- * This is what Make does and it's actually a good thing, as it
- * allows rules like
- *
- * cmp -s y.tab.h parse.h || cp y.tab.h parse.h
- *
- * to function as intended. Unfortunately, thanks to the
- * stateless nature of NFS (by which I mean the loose coupling
- * of two clients using the same file from a common server),
- * there are times when the modification time of a file created
- * on a remote machine will not be modified before the local
- * stat() implied by the Dir_MTime occurs, thus leading us to
- * believe that the file is unchanged, wreaking havoc with
- * files that depend on this one.
- *
- * I have decided it is better to make too much than to make too
- * little, so this stuff is commented out unless you're sure
- * it's ok.
- * -- ardeb 1/12/88
- */
- /*
- * Christos, 4/9/92: If we are saving commands pretend that
- * the target is made now. Otherwise archives with ... rules
- * don't work!
- */
- if (noExecute || (cgn->type & OP_SAVE_CMDS) ||
- Dir_MTime(cgn) == 0) {
- cgn->mtime = now;
- }
- DEBUGF(MAKE, ("update time: %s\n", Targ_FmtTime(cgn->mtime)));
-#endif
- }
-
- for (ln = Lst_First(&cgn->parents); ln != NULL; ln = Lst_Succ(ln)) {
- pgn = Lst_Datum(ln);
- if (pgn->make) {
- pgn->unmade -= 1;
-
- if (!(cgn->type & (OP_EXEC | OP_USE))) {
- if (cgn->made == MADE)
- pgn->childMade = TRUE;
- Make_TimeStamp(pgn, cgn);
- }
- if (pgn->unmade == 0) {
- /*
- * Queue the node up -- any unmade predecessors
- * will be dealt with in MakeStartJobs.
- */
- Lst_EnQueue(&toBeMade, pgn);
- } else if (pgn->unmade < 0) {
- Error("Graph cycles through %s", pgn->name);
- }
- }
- }
-
- /*
- * Deal with successor nodes. If any is marked for making and has an
- * unmade count of 0, has not been made and isn't in the examination
- * queue, it means we need to place it in the queue as it restrained
- * itself before.
- */
- for (ln = Lst_First(&cgn->successors); ln != NULL; ln = Lst_Succ(ln)) {
- GNode *succ = Lst_Datum(ln);
-
- if (succ->make && succ->unmade == 0 && succ->made == UNMADE &&
- Lst_Member(&toBeMade, succ) == NULL) {
- Lst_EnQueue(&toBeMade, succ);
- }
- }
-
- /*
- * Set the .PREFIX and .IMPSRC variables for all the implied parents
- * of this node.
- */
- cpref = Var_Value(PREFIX, cgn);
- for (ln = Lst_First(&cgn->iParents); ln != NULL; ln = Lst_Succ(ln)) {
- pgn = Lst_Datum(ln);
- if (pgn->make) {
- Var_Set(IMPSRC, cname, pgn);
- Var_Set(PREFIX, cpref, pgn);
- }
- }
-}
-
-/**
- * Make_DoAllVar
- * Set up the ALLSRC and OODATE variables. Sad to say, it must be
- * done separately, rather than while traversing the graph. This is
- * because Make defined OODATE to contain all sources whose modification
- * times were later than that of the target, *not* those sources that
- * were out-of-date. Since in both compatibility and native modes,
- * the modification time of the parent isn't found until the child
- * has been dealt with, we have to wait until now to fill in the
- * variable. As for ALLSRC, the ordering is important and not
- * guaranteed when in native mode, so it must be set here, too.
- *
- * Side Effects:
- * The ALLSRC and OODATE variables of the given node is filled in.
- * If the node is a .JOIN node, its TARGET variable will be set to
- * match its ALLSRC variable.
- */
-void
-Make_DoAllVar(GNode *gn)
-{
- LstNode *ln;
- GNode *cgn;
- const char *child;
-
- LST_FOREACH(ln, &gn->children) {
- /*
- * Add the child's name to the ALLSRC and OODATE variables of
- * the given node. The child is added only if it has not been
- * given the .EXEC, .USE or .INVISIBLE attributes. .EXEC and
- * .USE children are very rarely going to be files, so...
- *
- * A child is added to the OODATE variable if its modification
- * time is later than that of its parent, as defined by Make,
- * except if the parent is a .JOIN node. In that case, it is
- * only added to the OODATE variable if it was actually made
- * (since .JOIN nodes don't have modification times, the
- * comparison is rather unfair...).
- */
- cgn = Lst_Datum(ln);
-
- if ((cgn->type & (OP_EXEC | OP_USE | OP_INVISIBLE)) == 0) {
- if (OP_NOP(cgn->type)) {
- /*
- * this node is only source; use the specific
- * pathname for it
- */
- child = cgn->path ? cgn->path : cgn->name;
- } else
- child = Var_Value(TARGET, cgn);
- Var_Append(ALLSRC, child, gn);
- if (gn->type & OP_JOIN) {
- if (cgn->made == MADE) {
- Var_Append(OODATE, child, gn);
- }
- } else if (gn->mtime < cgn->mtime ||
- (cgn->mtime >= now && cgn->made == MADE)) {
- /*
- * It goes in the OODATE variable if the parent
- * is younger than the child or if the child has
- * been modified more recently than the start of
- * the make. This is to keep pmake from getting
- * confused if something else updates the parent
- * after the make starts (shouldn't happen, I
- * know, but sometimes it does). In such a case,
- * if we've updated the kid, the parent is
- * likely to have a modification time later than
- * that of the kid and anything that relies on
- * the OODATE variable will be hosed.
- *
- * XXX: This will cause all made children to
- * go in the OODATE variable, even if they're
- * not touched, if RECHECK isn't defined, since
- * cgn->mtime is set to now in Make_Update.
- * According to some people, this is good...
- */
- Var_Append(OODATE, child, gn);
- }
- }
- }
-
- if (!Var_Exists (OODATE, gn)) {
- Var_Set(OODATE, "", gn);
- }
- if (!Var_Exists (ALLSRC, gn)) {
- Var_Set(ALLSRC, "", gn);
- }
-
- if (gn->type & OP_JOIN) {
- Var_Set(TARGET, Var_Value(ALLSRC, gn), gn);
- }
-}
-
-/**
- * MakeStartJobs
- * Start as many jobs as possible.
- *
- * Results:
- * If the query flag was given to pmake, no job will be started,
- * but as soon as an out-of-date target is found, this function
- * returns TRUE. At all other times, this function returns FALSE.
- *
- * Side Effects:
- * Nodes are removed from the toBeMade queue and job table slots
- * are filled.
- */
-static Boolean
-MakeStartJobs(void)
-{
- GNode *gn;
-
- while (!Lst_IsEmpty(&toBeMade) && !Job_Full()) {
- gn = Lst_DeQueue(&toBeMade);
- DEBUGF(MAKE, ("Examining %s...", gn->name));
-
- /*
- * Make sure any and all predecessors that are going to be made,
- * have been.
- */
- if (!Lst_IsEmpty(&gn->preds)) {
- LstNode *ln;
-
- for (ln = Lst_First(&gn->preds); ln != NULL;
- ln = Lst_Succ(ln)){
- GNode *pgn = Lst_Datum(ln);
-
- if (pgn->make && pgn->made == UNMADE) {
- DEBUGF(MAKE, ("predecessor %s not made "
- "yet.\n", pgn->name));
- break;
- }
- }
- /*
- * If ln isn't NULL, there's a predecessor as yet
- * unmade, so we just drop this node on the floor.
- * When the node in question has been made, it will
- * notice this node as being ready to make but as yet
- * unmade and will place the node on the queue.
- */
- if (ln != NULL) {
- continue;
- }
- }
-
- numNodes--;
- if (Make_OODate(gn)) {
- DEBUGF(MAKE, ("out-of-date\n"));
- if (queryFlag) {
- return (TRUE);
- }
- Make_DoAllVar(gn);
- Job_Make(gn);
- } else {
- DEBUGF(MAKE, ("up-to-date\n"));
- gn->made = UPTODATE;
- if (gn->type & OP_JOIN) {
- /*
- * Even for an up-to-date .JOIN node, we need
- * it to have its context variables so
- * references to it get the correct value for
- * .TARGET when building up the context
- * variables of its parent(s)...
- */
- Make_DoAllVar(gn);
- }
-
- Make_Update(gn);
- }
- }
- return (FALSE);
-}
-
-/**
- * MakePrintStatus
- * Print the status of a top-level node, viz. it being up-to-date
- * already or not created due to an error in a lower level.
- * Callback function for Make_Run via LST_FOREACH. If gn->unmade is
- * nonzero and that is meant to imply a cycle in the graph, then
- * cycle is TRUE.
- *
- * Side Effects:
- * A message may be printed.
- */
-static void
-MakePrintStatus(GNode *gn, Boolean cycle)
-{
- LstNode *ln;
-
- if (gn->made == UPTODATE) {
- printf("`%s' is up to date.\n", gn->name);
-
- } else if (gn->unmade != 0) {
- if (cycle) {
- /*
- * If printing cycles and came to one that has unmade
- * children, print out the cycle by recursing on its
- * children. Note a cycle like:
- * a : b
- * b : c
- * c : b
- * will cause this to erroneously complain about a
- * being in the cycle, but this is a good approximation.
- */
- if (gn->made == CYCLE) {
- Error("Graph cycles through `%s'", gn->name);
- gn->made = ENDCYCLE;
- LST_FOREACH(ln, &gn->children)
- MakePrintStatus(Lst_Datum(ln), TRUE);
- gn->made = UNMADE;
- } else if (gn->made != ENDCYCLE) {
- gn->made = CYCLE;
- LST_FOREACH(ln, &gn->children)
- MakePrintStatus(Lst_Datum(ln), TRUE);
- }
- } else {
- printf("`%s' not remade because of errors.\n",
- gn->name);
- }
- }
-}
-
-/**
- * Make_Run
- * Initialize the nodes to remake and the list of nodes which are
- * ready to be made by doing a breadth-first traversal of the graph
- * starting from the nodes in the given list. Once this traversal
- * is finished, all the 'leaves' of the graph are in the toBeMade
- * queue.
- * Using this queue and the Job module, work back up the graph,
- * calling on MakeStartJobs to keep the job table as full as
- * possible.
- *
- * Results:
- * TRUE if work was done. FALSE otherwise.
- *
- * Side Effects:
- * The make field of all nodes involved in the creation of the given
- * targets is set to 1. The toBeMade list is set to contain all the
- * 'leaves' of these subgraphs.
- */
-Boolean
-Make_Run(Lst *targs)
-{
- GNode *gn; /* a temporary pointer */
- GNode *cgn;
- Lst examine; /* List of targets to examine */
- LstNode *ln;
-
- Lst_Init(&examine);
- Lst_Duplicate(&examine, targs, NOCOPY);
- numNodes = 0;
-
- /*
- * Make an initial downward pass over the graph, marking nodes to be
- * made as we go down. We call Suff_FindDeps to find where a node is and
- * to get some children for it if it has none and also has no commands.
- * If the node is a leaf, we stick it on the toBeMade queue to
- * be looked at in a minute, otherwise we add its children to our queue
- * and go on about our business.
- */
- while (!Lst_IsEmpty(&examine)) {
- gn = Lst_DeQueue(&examine);
-
- if (!gn->make) {
- gn->make = TRUE;
- numNodes++;
-
- /*
- * Apply any .USE rules before looking for implicit
- * dependencies to make sure everything has commands
- * that should...
- */
- LST_FOREACH(ln, &gn->children)
- if (Make_HandleUse(Lst_Datum(ln), gn))
- break;
-
- Suff_FindDeps(gn);
-
- if (gn->unmade != 0) {
- LST_FOREACH(ln, &gn->children) {
- cgn = Lst_Datum(ln);
- if (!cgn->make && !(cgn->type & OP_USE))
- Lst_EnQueue(&examine, cgn);
- }
- } else {
- Lst_EnQueue(&toBeMade, gn);
- }
- }
- }
-
- if (queryFlag) {
- /*
- * We wouldn't do any work unless we could start some jobs in
- * the next loop... (we won't actually start any, of course,
- * this is just to see if any of the targets was out of date)
- */
- return (MakeStartJobs());
-
- } else {
- /*
- * Initialization. At the moment, no jobs are running and
- * until some get started, nothing will happen since the
- * remaining upward traversal of the graph is performed by the
- * routines in job.c upon the finishing of a job. So we fill
- * the Job table as much as we can before going into our loop.
- */
- MakeStartJobs();
- }
-
- /*
- * Main Loop: The idea here is that the ending of jobs will take
- * care of the maintenance of data structures and the waiting for output
- * will cause us to be idle most of the time while our children run as
- * much as possible. Because the job table is kept as full as possible,
- * the only time when it will be empty is when all the jobs which need
- * running have been run, so that is the end condition of this loop.
- * Note that the Job module will exit if there were any errors unless
- * the keepgoing flag was given.
- */
- while (!Job_Empty()) {
- Job_CatchOutput(!Lst_IsEmpty(&toBeMade));
- Job_CatchChildren(!usePipes);
- MakeStartJobs();
- }
-
- Job_Finish();
-
- /*
- * Print the final status of each target. E.g. if it wasn't made
- * because some inferior reported an error.
- */
- LST_FOREACH(ln, targs)
- MakePrintStatus(Lst_Datum(ln), (makeErrors == 0) && (numNodes != 0));
-
- return (TRUE);
-}
diff --git a/usr.bin/make/make.h b/usr.bin/make/make.h
deleted file mode 100644
index 6e2813d..0000000
--- a/usr.bin/make/make.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)make.h 8.3 (Berkeley) 6/13/95
- * $FreeBSD$
- */
-
-#ifndef make_h_a91074b9
-#define make_h_a91074b9
-
-/**
- * make.h
- * The global definitions for make
- */
-
-#include "util.h"
-
-#define MAKE_JOB_PREFIX ".MAKE.JOB.PREFIX"
-
-struct GNode;
-struct Lst;
-struct Buffer;
-
-/*
- * Warning flags
- */
-enum {
- WARN_DIRSYNTAX = 0x0001, /* syntax errors in directives */
-};
-
-int Make_TimeStamp(struct GNode *, struct GNode *);
-Boolean Make_OODate(struct GNode *);
-int Make_HandleUse(struct GNode *, struct GNode *);
-void Make_Update(struct GNode *);
-void Make_DoAllVar(struct GNode *);
-Boolean Make_Run(struct Lst *);
-void Main_ParseArgLine(char *, int);
-int Main_ParseWarn(const char *, int);
-void Main_AddSourceMakefile(const char *);
-
-#endif /* make_h_a91074b9 */
diff --git a/usr.bin/make/parse.c b/usr.bin/make/parse.c
deleted file mode 100644
index 134d905..0000000
--- a/usr.bin/make/parse.c
+++ /dev/null
@@ -1,2545 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)parse.c 8.3 (Berkeley) 3/19/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * parse.c --
- * Functions to parse a makefile.
- *
- * Most important structures are kept in Lsts. Directories for
- * the #include "..." function are kept in the 'parseIncPath' Lst, while
- * those for the #include <...> are kept in the 'sysIncPath' Lst. The
- * targets currently being defined are kept in the 'targets' Lst.
- *
- * Interface:
- *
- * Parse_File Function used to parse a makefile. It must
- * be given the name of the file, which should
- * already have been opened, and a function
- * to call to read a character from the file.
- *
- * Parse_IsVar Returns TRUE if the given line is a
- * variable assignment. Used by MainParseArgs
- * to determine if an argument is a target
- * or a variable assignment. Used internally
- * for pretty much the same thing...
- *
- * Parse_Error Function called when an error occurs in
- * parsing. Used by the variable and
- * conditional modules.
- *
- * Parse_MainName Returns a Lst of the main target to create.
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include <err.h>
-
-#include "arch.h"
-#include "buf.h"
-#include "cond.h"
-#include "config.h"
-#include "dir.h"
-#include "for.h"
-#include "globals.h"
-#include "GNode.h"
-#include "hash_tables.h"
-#include "job.h"
-#include "make.h"
-#include "parse.h"
-#include "pathnames.h"
-#include "shell.h"
-#include "str.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/*
- * These values are returned by ParsePopInput to tell Parse_File whether to
- * CONTINUE parsing, i.e. it had only reached the end of an include file,
- * or if it's DONE.
- */
-#define CONTINUE 1
-#define DONE 0
-
-/* targets we're working on */
-static Lst targets = Lst_Initializer(targets);
-
-/* true if currently in a dependency line or its commands */
-static Boolean inLine;
-
-static int fatals = 0;
-
-/*
- * The main target to create. This is the first target on the
- * first dependency line in the first makefile.
- */
-static GNode *mainNode;
-
-/*
- * Definitions for handling #include specifications
- */
-struct IFile {
- char *fname; /* name of previous file */
- int lineno; /* saved line number */
- FILE *F; /* the open stream */
- char *str; /* the string when parsing a string */
- char *ptr; /* the current pointer when parsing a string */
- TAILQ_ENTRY(IFile) link;/* stack the files */
-};
-
-/* stack of IFiles generated by * #includes */
-static TAILQ_HEAD(, IFile) includes = TAILQ_HEAD_INITIALIZER(includes);
-
-/* access current file */
-#define CURFILE (TAILQ_FIRST(&includes))
-
-/* list of directories for "..." includes */
-struct Path parseIncPath = TAILQ_HEAD_INITIALIZER(parseIncPath);
-
-/* list of directories for <...> includes */
-struct Path sysIncPath = TAILQ_HEAD_INITIALIZER(sysIncPath);
-
-/*
- * specType contains the SPECial TYPE of the current target. It is
- * Not if the target is unspecial. If it *is* special, however, the children
- * are linked as children of the parent but not vice versa. This variable is
- * set in ParseDoDependency
- */
-typedef enum {
- Begin, /* .BEGIN */
- Default, /* .DEFAULT */
- End, /* .END */
- ExportVar, /* .EXPORTVAR */
- Ignore, /* .IGNORE */
- Includes, /* .INCLUDES */
- Interrupt, /* .INTERRUPT */
- Libs, /* .LIBS */
- MFlags, /* .MFLAGS or .MAKEFLAGS */
- Main, /* .MAIN and we don't have anyth. user-spec. to make */
- Not, /* Not special */
- NotParallel, /* .NOTPARALELL */
- Null, /* .NULL */
- Order, /* .ORDER */
- Parallel, /* .PARALLEL */
- ExPath, /* .PATH */
- Phony, /* .PHONY */
- Posix, /* .POSIX */
- MakefileDeps, /* .MAKEFILEDEPS */
- Precious, /* .PRECIOUS */
- ExShell, /* .SHELL */
- Silent, /* .SILENT */
- SingleShell, /* .SINGLESHELL */
- Suffixes, /* .SUFFIXES */
- Wait, /* .WAIT */
- Warn, /* .WARN */
- Attribute /* Generic attribute */
-} ParseSpecial;
-
-static ParseSpecial specType;
-static int waiting;
-
-/*
- * Predecessor node for handling .ORDER. Initialized to NULL when .ORDER
- * seen, then set to each successive source on the line.
- */
-static GNode *predecessor;
-
-/*
- * The parseKeywords table is searched using binary search when deciding
- * if a target or source is special. The 'spec' field is the ParseSpecial
- * type of the keyword ("Not" if the keyword isn't special as a target) while
- * the 'op' field is the operator to apply to the list of targets if the
- * keyword is used as a source ("0" if the keyword isn't special as a source)
- */
-static const struct keyword {
- const char *name; /* Name of keyword */
- ParseSpecial spec; /* Type when used as a target */
- int op; /* Operator when used as a source */
-} parseKeywords[] = {
- /* KEYWORD-START-TAG */
- { ".BEGIN", Begin, 0 },
- { ".DEFAULT", Default, 0 },
- { ".END", End, 0 },
- { ".EXEC", Attribute, OP_EXEC },
- { ".EXPORTVAR", ExportVar, 0 },
- { ".IGNORE", Ignore, OP_IGNORE },
- { ".INCLUDES", Includes, 0 },
- { ".INTERRUPT", Interrupt, 0 },
- { ".INVISIBLE", Attribute, OP_INVISIBLE },
- { ".JOIN", Attribute, OP_JOIN },
- { ".LIBS", Libs, 0 },
- { ".MAIN", Main, 0 },
- { ".MAKE", Attribute, OP_MAKE },
- { ".MAKEFILEDEPS", MakefileDeps, 0 },
- { ".MAKEFLAGS", MFlags, 0 },
- { ".MFLAGS", MFlags, 0 },
- { ".NOTMAIN", Attribute, OP_NOTMAIN },
- { ".NOTPARALLEL", NotParallel, 0 },
- { ".NO_PARALLEL", NotParallel, 0 },
- { ".NULL", Null, 0 },
- { ".OPTIONAL", Attribute, OP_OPTIONAL },
- { ".ORDER", Order, 0 },
- { ".PARALLEL", Parallel, 0 },
- { ".PATH", ExPath, 0 },
- { ".PHONY", Phony, OP_PHONY },
- { ".POSIX", Posix, 0 },
- { ".PRECIOUS", Precious, OP_PRECIOUS },
- { ".RECURSIVE", Attribute, OP_MAKE },
- { ".SHELL", ExShell, 0 },
- { ".SILENT", Silent, OP_SILENT },
- { ".SINGLESHELL", SingleShell, 0 },
- { ".SUFFIXES", Suffixes, 0 },
- { ".USE", Attribute, OP_USE },
- { ".WAIT", Wait, 0 },
- { ".WARN", Warn, 0 },
- /* KEYWORD-END-TAG */
-};
-#define NKEYWORDS (sizeof(parseKeywords) / sizeof(parseKeywords[0]))
-
-static void parse_include(char *, int, int);
-static void parse_sinclude(char *, int, int);
-static void parse_message(char *, int, int);
-static void parse_undef(char *, int, int);
-static void parse_for(char *, int, int);
-static void parse_endfor(char *, int, int);
-
-static const struct directive {
- const char *name;
- int code;
- Boolean skip_flag; /* execute even when skipped */
- void (*func)(char *, int, int);
-} directives[] = {
- /* DIRECTIVES-START-TAG */
- { "elif", COND_ELIF, TRUE, Cond_If },
- { "elifdef", COND_ELIFDEF, TRUE, Cond_If },
- { "elifmake", COND_ELIFMAKE, TRUE, Cond_If },
- { "elifndef", COND_ELIFNDEF, TRUE, Cond_If },
- { "elifnmake", COND_ELIFNMAKE, TRUE, Cond_If },
- { "else", COND_ELSE, TRUE, Cond_Else },
- { "endfor", 0, FALSE, parse_endfor },
- { "endif", COND_ENDIF, TRUE, Cond_Endif },
- { "error", 1, FALSE, parse_message },
- { "for", 0, FALSE, parse_for },
- { "if", COND_IF, TRUE, Cond_If },
- { "ifdef", COND_IFDEF, TRUE, Cond_If },
- { "ifmake", COND_IFMAKE, TRUE, Cond_If },
- { "ifndef", COND_IFNDEF, TRUE, Cond_If },
- { "ifnmake", COND_IFNMAKE, TRUE, Cond_If },
- { "include", 0, FALSE, parse_include },
- { "sinclude", 0, FALSE, parse_sinclude },
- { "undef", 0, FALSE, parse_undef },
- { "warning", 0, FALSE, parse_message },
- /* DIRECTIVES-END-TAG */
-};
-#define NDIRECTS (sizeof(directives) / sizeof(directives[0]))
-
-/*-
- * ParseFindKeyword
- * Look in the table of keywords for one matching the given string.
- *
- * Results:
- * The pointer to keyword table entry or NULL.
- */
-static const struct keyword *
-ParseFindKeyword(const char *str)
-{
- int kw;
-
- kw = keyword_hash(str, strlen(str));
- if (kw < 0 || kw >= (int)NKEYWORDS ||
- strcmp(str, parseKeywords[kw].name) != 0)
- return (NULL);
- return (&parseKeywords[kw]);
-}
-
-/*-
- * Parse_Error --
- * Error message abort function for parsing. Prints out the context
- * of the error (line number and file) as well as the message with
- * two optional arguments.
- *
- * Results:
- * None
- *
- * Side Effects:
- * "fatals" is incremented if the level is PARSE_FATAL.
- */
-/* VARARGS */
-void
-Parse_Error(int type, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- if (CURFILE != NULL)
- fprintf(stderr, "\"%s\", line %d: ",
- CURFILE->fname, CURFILE->lineno);
- if (type == PARSE_WARNING)
- fprintf(stderr, "warning: ");
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fprintf(stderr, "\n");
- fflush(stderr);
- if (type == PARSE_FATAL)
- fatals += 1;
-}
-
-/**
- * ParsePushInput
- *
- * Push a new input source onto the input stack. If ptr is NULL
- * the fullname is used to fopen the file. If it is not NULL,
- * ptr is assumed to point to the string to be parsed. If opening the
- * file fails, the fullname is freed.
- */
-static void
-ParsePushInput(char *fullname, FILE *fp, char *ptr, int lineno)
-{
- struct IFile *nf;
-
- nf = emalloc(sizeof(*nf));
- nf->fname = fullname;
- nf->lineno = lineno;
-
- if (ptr == NULL) {
- /* the input source is a file */
- if ((nf->F = fp) == NULL) {
- nf->F = fopen(fullname, "r");
- if (nf->F == NULL) {
- Parse_Error(PARSE_FATAL, "Cannot open %s",
- fullname);
- free(fullname);
- free(nf);
- return;
- }
- }
- nf->str = nf->ptr = NULL;
- Var_Append(".MAKEFILE_LIST", fullname, VAR_GLOBAL);
- } else {
- nf->str = nf->ptr = ptr;
- nf->F = NULL;
- }
- TAILQ_INSERT_HEAD(&includes, nf, link);
-}
-
-/**
- * ParsePopInput
- * Called when EOF is reached in the current file. If we were reading
- * an include file, the includes stack is popped and things set up
- * to go back to reading the previous file at the previous location.
- *
- * Results:
- * CONTINUE if there's more to do. DONE if not.
- *
- * Side Effects:
- * The old curFile.F is closed. The includes list is shortened.
- * curFile.lineno, curFile.F, and curFile.fname are changed if
- * CONTINUE is returned.
- */
-static int
-ParsePopInput(void)
-{
- struct IFile *ifile; /* the state on the top of the includes stack */
-
- assert(!TAILQ_EMPTY(&includes));
-
- ifile = TAILQ_FIRST(&includes);
- TAILQ_REMOVE(&includes, ifile, link);
-
- free(ifile->fname);
- if (ifile->F != NULL) {
- fclose(ifile->F);
- Var_Append(".MAKEFILE_LIST", "..", VAR_GLOBAL);
- }
- if (ifile->str != NULL) {
- free(ifile->str);
- }
- free(ifile);
-
- return (TAILQ_EMPTY(&includes) ? DONE : CONTINUE);
-}
-
-/**
- * parse_warn
- * Parse the .WARN pseudo-target.
- */
-static void
-parse_warn(char *line)
-{
- ArgArray aa;
- int i;
-
- brk_string(&aa, line, TRUE);
-
- for (i = 1; i < aa.argc; i++)
- Main_ParseWarn(aa.argv[i], 0);
-}
-
-/*-
- *---------------------------------------------------------------------
- * ParseLinkSrc --
- * Link the parent nodes to their new child. Used by
- * ParseDoDependency. If the specType isn't 'Not', the parent
- * isn't linked as a parent of the child.
- *
- * Side Effects:
- * New elements are added to the parents lists of cgn and the
- * children list of cgn. the unmade field of pgn is updated
- * to reflect the additional child.
- *---------------------------------------------------------------------
- */
-static void
-ParseLinkSrc(Lst *parents, GNode *cgn)
-{
- LstNode *ln;
- GNode *pgn;
-
- LST_FOREACH(ln, parents) {
- pgn = Lst_Datum(ln);
- if (Lst_Member(&pgn->children, cgn) == NULL) {
- Lst_AtEnd(&pgn->children, cgn);
- if (specType == Not) {
- Lst_AtEnd(&cgn->parents, pgn);
- }
- pgn->unmade += 1;
- }
- }
-}
-
-/*-
- *---------------------------------------------------------------------
- * ParseDoOp --
- * Apply the parsed operator to all target nodes. Used in
- * ParseDoDependency once all targets have been found and their
- * operator parsed. If the previous and new operators are incompatible,
- * a major error is taken.
- *
- * Side Effects:
- * The type field of the node is altered to reflect any new bits in
- * the op.
- *---------------------------------------------------------------------
- */
-static void
-ParseDoOp(int op)
-{
- GNode *cohort;
- LstNode *ln;
- GNode *gn;
-
- LST_FOREACH(ln, &targets) {
- gn = Lst_Datum(ln);
-
- /*
- * If the dependency mask of the operator and the node don't
- * match and the node has actually had an operator applied to
- * it before, and the operator actually has some dependency
- * information in it, complain.
- */
- if ((op & OP_OPMASK) != (gn->type & OP_OPMASK) &&
- !OP_NOP(gn->type) && !OP_NOP(op)) {
- Parse_Error(PARSE_FATAL, "Inconsistent operator for %s",
- gn->name);
- return;
- }
-
- if (op == OP_DOUBLEDEP &&
- (gn->type & OP_OPMASK) == OP_DOUBLEDEP) {
- /*
- * If the node was the object of a :: operator, we need
- * to create a new instance of it for the children and
- * commands on this dependency line. The new instance
- * is placed on the 'cohorts' list of the initial one
- * (note the initial one is not on its own cohorts list)
- * and the new instance is linked to all parents of the
- * initial instance.
- */
- cohort = Targ_NewGN(gn->name);
-
- /*
- * Duplicate links to parents so graph traversal is
- * simple. Perhaps some type bits should be duplicated?
- *
- * Make the cohort invisible as well to avoid
- * duplicating it into other variables. True, parents
- * of this target won't tend to do anything with their
- * local variables, but better safe than sorry.
- */
- ParseLinkSrc(&gn->parents, cohort);
- cohort->type = OP_DOUBLEDEP|OP_INVISIBLE;
- Lst_AtEnd(&gn->cohorts, cohort);
-
- /*
- * Replace the node in the targets list with the
- * new copy
- */
- Lst_Replace(ln, cohort);
- gn = cohort;
- }
- /*
- * We don't want to nuke any previous flags (whatever they were)
- * so we just OR the new operator into the old
- */
- gn->type |= op;
- }
-}
-
-/*-
- *---------------------------------------------------------------------
- * ParseDoSrc --
- * Given the name of a source, figure out if it is an attribute
- * and apply it to the targets if it is. Else decide if there is
- * some attribute which should be applied *to* the source because
- * of some special target and apply it if so. Otherwise, make the
- * source be a child of the targets in the list 'targets'
- *
- * Results:
- * None
- *
- * Side Effects:
- * Operator bits may be added to the list of targets or to the source.
- * The targets may have a new source added to their lists of children.
- *---------------------------------------------------------------------
- */
-static void
-ParseDoSrc(int tOp, char *src, Lst *allsrc)
-{
- GNode *gn = NULL;
- const struct keyword *kw;
-
- if (src[0] == '.' && isupper ((unsigned char)src[1])) {
- if ((kw = ParseFindKeyword(src)) != NULL) {
- if (kw->op != 0) {
- ParseDoOp(kw->op);
- return;
- }
- if (kw->spec == Wait) {
- waiting++;
- return;
- }
- }
- }
-
- switch (specType) {
- case Main:
- /*
- * If we have noted the existence of a .MAIN, it means we need
- * to add the sources of said target to the list of things
- * to create. The string 'src' is likely to be free, so we
- * must make a new copy of it. Note that this will only be
- * invoked if the user didn't specify a target on the command
- * line. This is to allow #ifmake's to succeed, or something...
- */
- Lst_AtEnd(&create, estrdup(src));
- /*
- * Add the name to the .TARGETS variable as well, so the user
- * can employ that, if desired.
- */
- Var_Append(".TARGETS", src, VAR_GLOBAL);
- return;
-
- case Order:
- /*
- * Create proper predecessor/successor links between the
- * previous source and the current one.
- */
- gn = Targ_FindNode(src, TARG_CREATE);
- if (predecessor != NULL) {
- Lst_AtEnd(&predecessor->successors, gn);
- Lst_AtEnd(&gn->preds, predecessor);
- }
- /*
- * The current source now becomes the predecessor for the next
- * one.
- */
- predecessor = gn;
- break;
-
- default:
- /*
- * If the source is not an attribute, we need to find/create
- * a node for it. After that we can apply any operator to it
- * from a special target or link it to its parents, as
- * appropriate.
- *
- * In the case of a source that was the object of a :: operator,
- * the attribute is applied to all of its instances (as kept in
- * the 'cohorts' list of the node) or all the cohorts are linked
- * to all the targets.
- */
- gn = Targ_FindNode(src, TARG_CREATE);
- if (tOp) {
- gn->type |= tOp;
- } else {
- ParseLinkSrc(&targets, gn);
- }
- if ((gn->type & OP_OPMASK) == OP_DOUBLEDEP) {
- GNode *cohort;
- LstNode *ln;
-
- for (ln = Lst_First(&gn->cohorts); ln != NULL;
- ln = Lst_Succ(ln)) {
- cohort = Lst_Datum(ln);
- if (tOp) {
- cohort->type |= tOp;
- } else {
- ParseLinkSrc(&targets, cohort);
- }
- }
- }
- break;
- }
-
- gn->order = waiting;
- Lst_AtEnd(allsrc, gn);
- if (waiting) {
- LstNode *ln;
- GNode *p;
-
- /*
- * Check if GNodes needs to be synchronized.
- * This has to be when two nodes are on different sides of a
- * .WAIT directive.
- */
- LST_FOREACH(ln, allsrc) {
- p = Lst_Datum(ln);
-
- if (p->order >= gn->order)
- break;
- /*
- * XXX: This can cause loops, and loops can cause
- * unmade targets, but checking is tedious, and the
- * debugging output can show the problem
- */
- Lst_AtEnd(&p->successors, gn);
- Lst_AtEnd(&gn->preds, p);
- }
- }
-}
-
-
-/*-
- *---------------------------------------------------------------------
- * ParseDoDependency --
- * Parse the dependency line in line.
- *
- * Results:
- * None
- *
- * Side Effects:
- * The nodes of the sources are linked as children to the nodes of the
- * targets. Some nodes may be created.
- *
- * We parse a dependency line by first extracting words from the line and
- * finding nodes in the list of all targets with that name. This is done
- * until a character is encountered which is an operator character. Currently
- * these are only ! and :. At this point the operator is parsed and the
- * pointer into the line advanced until the first source is encountered.
- * The parsed operator is applied to each node in the 'targets' list,
- * which is where the nodes found for the targets are kept, by means of
- * the ParseDoOp function.
- * The sources are read in much the same way as the targets were except
- * that now they are expanded using the wildcarding scheme of the C-Shell
- * and all instances of the resulting words in the list of all targets
- * are found. Each of the resulting nodes is then linked to each of the
- * targets as one of its children.
- * Certain targets are handled specially. These are the ones detailed
- * by the specType variable.
- * The storing of transformation rules is also taken care of here.
- * A target is recognized as a transformation rule by calling
- * Suff_IsTransform. If it is a transformation rule, its node is gotten
- * from the suffix module via Suff_AddTransform rather than the standard
- * Targ_FindNode in the target module.
- *---------------------------------------------------------------------
- */
-static void
-ParseDoDependency(char *line)
-{
- char *cp; /* our current position */
- char *lstart = line; /* original input line */
- GNode *gn; /* a general purpose temporary node */
- int op; /* the operator on the line */
- char savec; /* a place to save a character */
- Lst paths; /* Search paths to alter when parsing .PATH targets */
- int tOp; /* operator from special target */
- LstNode *ln;
- const struct keyword *kw;
-
- tOp = 0;
-
- specType = Not;
- waiting = 0;
- Lst_Init(&paths);
-
- do {
- for (cp = line;
- *cp && !isspace((unsigned char)*cp) && *cp != '(';
- cp++) {
- if (*cp == '$') {
- /*
- * Must be a dynamic source (would have been
- * expanded otherwise), so call the Var module
- * to parse the puppy so we can safely advance
- * beyond it...There should be no errors in this
- * as they would have been discovered in the
- * initial Var_Subst and we wouldn't be here.
- */
- size_t length = 0;
- Boolean freeIt;
- char *result;
-
- result = Var_Parse(cp, VAR_CMD, TRUE,
- &length, &freeIt);
-
- if (freeIt) {
- free(result);
- }
- cp += length - 1;
-
- } else if (*cp == '!' || *cp == ':') {
- /*
- * We don't want to end a word on ':' or '!' if
- * there is a better match later on in the
- * string (greedy matching).
- * This allows the user to have targets like:
- * fie::fi:fo: fum
- * foo::bar:
- * where "fie::fi:fo" and "foo::bar" are the
- * targets. In real life this is used for perl5
- * library man pages where "::" separates an
- * object from its class. Ie:
- * "File::Spec::Unix". This behaviour is also
- * consistent with other versions of make.
- */
- char *p = cp + 1;
-
- if (*cp == ':' && *p == ':')
- p++;
-
- /* Found the best match already. */
- if (*p == '\0' || isspace(*p))
- break;
-
- p += strcspn(p, "!:");
-
- /* No better match later on... */
- if (*p == '\0')
- break;
- }
- continue;
- }
- if (*cp == '(') {
- /*
- * Archives must be handled specially to make sure the
- * OP_ARCHV flag is set in their 'type' field, for one
- * thing, and because things like "archive(file1.o
- * file2.o file3.o)" are permissible. Arch_ParseArchive
- * will set 'line' to be the first non-blank after the
- * archive-spec. It creates/finds nodes for the members
- * and places them on the given list, returning TRUE
- * if all went well and FALSE if there was an error in
- * the specification. On error, line should remain
- * untouched.
- */
- if (!Arch_ParseArchive(&line, &targets, VAR_CMD)) {
- Parse_Error(PARSE_FATAL,
- "Error in archive specification: \"%s\"",
- line);
- return;
- } else {
- cp = line;
- continue;
- }
- }
- savec = *cp;
-
- if (!*cp) {
- /*
- * Ending a dependency line without an operator is a * Bozo no-no. As a heuristic, this is also often
- * triggered by undetected conflicts from cvs/rcs
- * merges.
- */
- if (strncmp(line, "<<<<<<", 6) == 0 ||
- strncmp(line, "||||||", 6) == 0 ||
- strncmp(line, "======", 6) == 0 ||
- strncmp(line, ">>>>>>", 6) == 0) {
- Parse_Error(PARSE_FATAL, "Makefile appears to "
- "contain unresolved cvs/rcs/??? merge "
- "conflicts");
- } else
- Parse_Error(PARSE_FATAL, lstart[0] == '.' ?
- "Unknown directive" : "Need an operator");
- return;
- }
- *cp = '\0';
- /*
- * Have a word in line. See if it's a special target and set
- * specType to match it.
- */
- if (*line == '.' && isupper((unsigned char)line[1])) {
- /*
- * See if the target is a special target that must have
- * it or its sources handled specially.
- */
- if ((kw = ParseFindKeyword(line)) != NULL) {
- if (specType == ExPath && kw->spec != ExPath) {
- Parse_Error(PARSE_FATAL,
- "Mismatched special targets");
- return;
- }
-
- specType = kw->spec;
- tOp = kw->op;
-
- /*
- * Certain special targets have special
- * semantics:
- * .PATH Have to set the dirSearchPath
- * variable too
- * .MAIN Its sources are only used if
- * nothing has been specified to
- * create.
- * .DEFAULT Need to create a node to hang
- * commands on, but we don't want
- * it in the graph, nor do we want
- * it to be the Main Target, so we
- * create it, set OP_NOTMAIN and
- * add it to the list, setting
- * DEFAULT to the new node for
- * later use. We claim the node is
- * A transformation rule to make
- * life easier later, when we'll
- * use Make_HandleUse to actually
- * apply the .DEFAULT commands.
- * .PHONY The list of targets
- * .BEGIN
- * .END
- * .INTERRUPT Are not to be considered the
- * main target.
- * .NOTPARALLEL Make only one target at a time.
- * .SINGLESHELL Create a shell for each
- * command.
- * .ORDER Must set initial predecessor
- * to NULL
- */
- switch (specType) {
- case ExPath:
- Lst_AtEnd(&paths, &dirSearchPath);
- break;
- case Main:
- if (!Lst_IsEmpty(&create)) {
- specType = Not;
- }
- break;
- case Begin:
- case End:
- case Interrupt:
- gn = Targ_FindNode(line, TARG_CREATE);
- gn->type |= OP_NOTMAIN;
- Lst_AtEnd(&targets, gn);
- break;
- case Default:
- gn = Targ_NewGN(".DEFAULT");
- gn->type |= (OP_NOTMAIN|OP_TRANSFORM);
- Lst_AtEnd(&targets, gn);
- DEFAULT = gn;
- break;
- case NotParallel:
- jobLimit = 1;
- break;
- case SingleShell:
- compatMake = 1;
- break;
- case Order:
- predecessor = NULL;
- break;
- default:
- break;
- }
-
- } else if (strncmp(line, ".PATH", 5) == 0) {
- /*
- * .PATH<suffix> has to be handled specially.
- * Call on the suffix module to give us a path
- * to modify.
- */
- struct Path *path;
-
- specType = ExPath;
- path = Suff_GetPath(&line[5]);
- if (path == NULL) {
- Parse_Error(PARSE_FATAL, "Suffix '%s' "
- "not defined (yet)", &line[5]);
- return;
- } else
- Lst_AtEnd(&paths, path);
- }
- }
-
- /*
- * Have word in line. Get or create its node and stick it at
- * the end of the targets list
- */
- if (specType == Not && *line != '\0') {
-
- /* target names to be found and added to targets list */
- Lst curTargs = Lst_Initializer(curTargs);
-
- if (Dir_HasWildcards(line)) {
- /*
- * Targets are to be sought only in the current
- * directory, so create an empty path for the
- * thing. Note we need to use Path_Clear in the
- * destruction of the path as the Dir module
- * could have added a directory to the path...
- */
- struct Path emptyPath =
- TAILQ_HEAD_INITIALIZER(emptyPath);
-
- Path_Expand(line, &emptyPath, &curTargs);
- Path_Clear(&emptyPath);
-
- } else {
- /*
- * No wildcards, but we want to avoid code
- * duplication, so create a list with the word
- * on it.
- */
- Lst_AtEnd(&curTargs, line);
- }
-
- while (!Lst_IsEmpty(&curTargs)) {
- char *targName = Lst_DeQueue(&curTargs);
-
- if (!Suff_IsTransform (targName)) {
- gn = Targ_FindNode(targName,
- TARG_CREATE);
- } else {
- gn = Suff_AddTransform(targName);
- }
-
- Lst_AtEnd(&targets, gn);
- }
- } else if (specType == ExPath && *line != '.' && *line != '\0'){
- Parse_Error(PARSE_WARNING, "Extra target (%s) ignored",
- line);
- }
-
- *cp = savec;
- /*
- * If it is a special type and not .PATH, it's the only
- * target we allow on this line...
- */
- if (specType != Not && specType != ExPath) {
- Boolean warnFlag = FALSE;
-
- while (*cp != '!' && *cp != ':' && *cp) {
- if (*cp != ' ' && *cp != '\t') {
- warnFlag = TRUE;
- }
- cp++;
- }
- if (warnFlag) {
- Parse_Error(PARSE_WARNING,
- "Extra target ignored");
- }
- } else {
- while (*cp && isspace((unsigned char)*cp)) {
- cp++;
- }
- }
- line = cp;
- } while (*line != '!' && *line != ':' && *line);
-
- if (!Lst_IsEmpty(&targets)) {
- switch (specType) {
- default:
- Parse_Error(PARSE_WARNING, "Special and mundane "
- "targets don't mix. Mundane ones ignored");
- break;
- case Default:
- case Begin:
- case End:
- case Interrupt:
- /*
- * These four create nodes on which to hang commands, so
- * targets shouldn't be empty...
- */
- case Not:
- /*
- * Nothing special here -- targets can be empty if it
- * wants.
- */
- break;
- }
- }
-
- /*
- * Have now parsed all the target names. Must parse the operator next.
- * The result is left in op.
- */
- if (*cp == '!') {
- op = OP_FORCE;
- } else if (*cp == ':') {
- if (cp[1] == ':') {
- op = OP_DOUBLEDEP;
- cp++;
- } else {
- op = OP_DEPENDS;
- }
- } else {
- Parse_Error(PARSE_FATAL, lstart[0] == '.' ?
- "Unknown directive" : "Missing dependency operator");
- return;
- }
-
- cp++; /* Advance beyond operator */
-
- ParseDoOp(op);
-
- /*
- * Get to the first source
- */
- while (*cp && isspace((unsigned char)*cp)) {
- cp++;
- }
- line = cp;
-
- /*
- * Several special targets take different actions if present with no
- * sources:
- * a .SUFFIXES line with no sources clears out all old suffixes
- * a .PRECIOUS line makes all targets precious
- * a .IGNORE line ignores errors for all targets
- * a .SILENT line creates silence when making all targets
- * a .PATH removes all directories from the search path(s).
- */
- if (!*line) {
- switch (specType) {
- case Suffixes:
- Suff_ClearSuffixes();
- break;
- case Precious:
- allPrecious = TRUE;
- break;
- case Ignore:
- ignoreErrors = TRUE;
- break;
- case Silent:
- beSilent = TRUE;
- break;
- case ExPath:
- LST_FOREACH(ln, &paths)
- Path_Clear(Lst_Datum(ln));
- break;
- case MakefileDeps:
- mfAutoDeps = TRUE;
- break;
- case Posix:
- is_posix = TRUE;
- Var_SetGlobal("%POSIX", "1003.2");
- break;
- default:
- break;
- }
-
- } else if (specType == MFlags) {
- /*
- * Call on functions in main.c to deal with these arguments and
- * set the initial character to a null-character so the loop to
- * get sources won't get anything
- */
- Main_ParseArgLine(line, 0);
- *line = '\0';
-
- } else if (specType == Warn) {
- parse_warn(line);
- *line = '\0';
-
- } else if (specType == ExShell) {
- if (!Shell_Parse(line)) {
- Parse_Error(PARSE_FATAL,
- "improper shell specification");
- return;
- }
- *line = '\0';
-
- } else if (specType == NotParallel || specType == SingleShell) {
- *line = '\0';
- }
-
- /*
- * NOW GO FOR THE SOURCES
- */
- if (specType == Suffixes || specType == ExPath ||
- specType == Includes || specType == Libs ||
- specType == Null) {
- while (*line) {
- /*
- * If the target was one that doesn't take files as its
- * sources but takes something like suffixes, we take
- * each space-separated word on the line as a something
- * and deal with it accordingly.
- *
- * If the target was .SUFFIXES, we take each source as
- * a suffix and add it to the list of suffixes
- * maintained by the Suff module.
- *
- * If the target was a .PATH, we add the source as a
- * directory to search on the search path.
- *
- * If it was .INCLUDES, the source is taken to be the
- * suffix of files which will be #included and whose
- * search path should be present in the .INCLUDES
- * variable.
- *
- * If it was .LIBS, the source is taken to be the
- * suffix of files which are considered libraries and
- * whose search path should be present in the .LIBS
- * variable.
- *
- * If it was .NULL, the source is the suffix to use
- * when a file has no valid suffix.
- */
- char savech;
- while (*cp && !isspace((unsigned char)*cp)) {
- cp++;
- }
- savech = *cp;
- *cp = '\0';
- switch (specType) {
- case Suffixes:
- Suff_AddSuffix(line);
- break;
- case ExPath:
- LST_FOREACH(ln, &paths)
- Path_AddDir(Lst_Datum(ln), line);
- break;
- case Includes:
- Suff_AddInclude(line);
- break;
- case Libs:
- Suff_AddLib(line);
- break;
- case Null:
- Suff_SetNull(line);
- break;
- default:
- break;
- }
- *cp = savech;
- if (savech != '\0') {
- cp++;
- }
- while (*cp && isspace((unsigned char)*cp)) {
- cp++;
- }
- line = cp;
- }
- Lst_Destroy(&paths, NOFREE);
-
- } else if (specType == ExportVar) {
- Var_SetEnv(line, VAR_GLOBAL);
-
- } else {
- /* list of sources in order */
- Lst curSrcs = Lst_Initializer(curSrc);
-
- while (*line) {
- /*
- * The targets take real sources, so we must beware of
- * archive specifications (i.e. things with left
- * parentheses in them) and handle them accordingly.
- */
- while (*cp && !isspace((unsigned char)*cp)) {
- if (*cp == '(' && cp > line && cp[-1] != '$') {
- /*
- * Only stop for a left parenthesis if
- * it isn't at the start of a word
- * (that'll be for variable changes
- * later) and isn't preceded by a dollar
- * sign (a dynamic source).
- */
- break;
- } else {
- cp++;
- }
- }
-
- if (*cp == '(') {
- GNode *gnp;
-
- /* list of archive source names after exp. */
- Lst sources = Lst_Initializer(sources);
-
- if (!Arch_ParseArchive(&line, &sources,
- VAR_CMD)) {
- Parse_Error(PARSE_FATAL, "Error in "
- "source archive spec \"%s\"", line);
- return;
- }
-
- while (!Lst_IsEmpty(&sources)) {
- gnp = Lst_DeQueue(&sources);
- ParseDoSrc(tOp, gnp->name, &curSrcs);
- }
- cp = line;
- } else {
- if (*cp) {
- *cp = '\0';
- cp += 1;
- }
-
- ParseDoSrc(tOp, line, &curSrcs);
- }
- while (*cp && isspace((unsigned char)*cp)) {
- cp++;
- }
- line = cp;
- }
- Lst_Destroy(&curSrcs, NOFREE);
- }
-
- if (mainNode == NULL) {
- /*
- * If we have yet to decide on a main target to make, in the
- * absence of any user input, we want the first target on
- * the first dependency line that is actually a real target
- * (i.e. isn't a .USE or .EXEC rule) to be made.
- */
- LST_FOREACH(ln, &targets) {
- gn = Lst_Datum(ln);
- if ((gn->type & (OP_NOTMAIN | OP_USE |
- OP_EXEC | OP_TRANSFORM)) == 0) {
- mainNode = gn;
- Targ_SetMain(gn);
- break;
- }
- }
- }
-}
-
-/*-
- *---------------------------------------------------------------------
- * Parse_IsVar --
- * Return TRUE if the passed line is a variable assignment. A variable
- * assignment consists of a single word followed by optional whitespace
- * followed by either a += or an = operator.
- * This function is used both by the Parse_File function and main when
- * parsing the command-line arguments.
- *
- * Results:
- * TRUE if it is. FALSE if it ain't
- *
- * Side Effects:
- * none
- *---------------------------------------------------------------------
- */
-Boolean
-Parse_IsVar(char *line)
-{
- Boolean wasSpace = FALSE; /* set TRUE if found a space */
- Boolean haveName = FALSE; /* Set TRUE if have a variable name */
-
- int level = 0;
-#define ISEQOPERATOR(c) \
- ((c) == '+' || (c) == ':' || (c) == '?' || (c) == '!')
-
- /*
- * Skip to variable name
- */
- for (; *line == ' ' || *line == '\t'; line++)
- continue;
-
- for (; *line != '=' || level != 0; line++) {
- switch (*line) {
- case '\0':
- /*
- * end-of-line -- can't be a variable assignment.
- */
- return (FALSE);
-
- case ' ':
- case '\t':
- /*
- * there can be as much white space as desired so long
- * as there is only one word before the operator
- */
- wasSpace = TRUE;
- break;
-
- case '(':
- case '{':
- level++;
- break;
-
- case '}':
- case ')':
- level--;
- break;
-
- default:
- if (wasSpace && haveName) {
- if (ISEQOPERATOR(*line)) {
- /*
- * We must have a finished word
- */
- if (level != 0)
- return (FALSE);
-
- /*
- * When an = operator [+?!:] is found,
- * the next character must be an = or
- * it ain't a valid assignment.
- */
- if (line[1] == '=')
- return (haveName);
-#ifdef SUNSHCMD
- /*
- * This is a shell command
- */
- if (strncmp(line, ":sh", 3) == 0)
- return (haveName);
-#endif
- }
- /*
- * This is the start of another word, so not
- * assignment.
- */
- return (FALSE);
-
- } else {
- haveName = TRUE;
- wasSpace = FALSE;
- }
- break;
- }
- }
-
- return (haveName);
-}
-
-/*-
- *---------------------------------------------------------------------
- * Parse_DoVar --
- * Take the variable assignment in the passed line and do it in the
- * global context.
- *
- * Note: There is a lexical ambiguity with assignment modifier characters
- * in variable names. This routine interprets the character before the =
- * as a modifier. Therefore, an assignment like
- * C++=/usr/bin/CC
- * is interpreted as "C+ +=" instead of "C++ =".
- *
- * Results:
- * none
- *
- * Side Effects:
- * the variable structure of the given variable name is altered in the
- * global context.
- *---------------------------------------------------------------------
- */
-void
-Parse_DoVar(char *line, GNode *ctxt)
-{
- char *cp; /* pointer into line */
- enum {
- VAR_SUBST,
- VAR_APPEND,
- VAR_SHELL,
- VAR_NORMAL
- } type; /* Type of assignment */
- char *opc; /* ptr to operator character to
- * null-terminate the variable name */
-
- /*
- * Skip to variable name
- */
- while (*line == ' ' || *line == '\t') {
- line++;
- }
-
- /*
- * Skip to operator character, nulling out whitespace as we go
- */
- for (cp = line + 1; *cp != '='; cp++) {
- if (isspace((unsigned char)*cp)) {
- *cp = '\0';
- }
- }
- opc = cp - 1; /* operator is the previous character */
- *cp++ = '\0'; /* nuke the = */
-
- /*
- * Check operator type
- */
- switch (*opc) {
- case '+':
- type = VAR_APPEND;
- *opc = '\0';
- break;
-
- case '?':
- /*
- * If the variable already has a value, we don't do anything.
- */
- *opc = '\0';
- if (Var_Exists(line, ctxt)) {
- return;
- } else {
- type = VAR_NORMAL;
- }
- break;
-
- case ':':
- type = VAR_SUBST;
- *opc = '\0';
- break;
-
- case '!':
- type = VAR_SHELL;
- *opc = '\0';
- break;
-
- default:
-#ifdef SUNSHCMD
- while (*opc != ':') {
- if (opc == line)
- break;
- else
- --opc;
- }
-
- if (strncmp(opc, ":sh", 3) == 0) {
- type = VAR_SHELL;
- *opc = '\0';
- break;
- }
-#endif
- type = VAR_NORMAL;
- break;
- }
-
- while (isspace((unsigned char)*cp)) {
- cp++;
- }
-
- if (type == VAR_APPEND) {
- Var_Append(line, cp, ctxt);
-
- } else if (type == VAR_SUBST) {
- /*
- * Allow variables in the old value to be undefined, but leave
- * their invocation alone -- this is done by forcing oldVars
- * to be false.
- * XXX: This can cause recursive variables, but that's not
- * hard to do, and this allows someone to do something like
- *
- * CFLAGS = $(.INCLUDES)
- * CFLAGS := -I.. $(CFLAGS)
- *
- * And not get an error.
- */
- Boolean oldOldVars = oldVars;
-
- oldVars = FALSE;
-
- /*
- * make sure that we set the variable the first time to nothing
- * so that it gets substituted!
- */
- if (!Var_Exists(line, ctxt))
- Var_Set(line, "", ctxt);
-
- cp = Buf_Peel(Var_Subst(cp, ctxt, FALSE));
-
- oldVars = oldOldVars;
-
- Var_Set(line, cp, ctxt);
- free(cp);
-
- } else if (type == VAR_SHELL) {
- /*
- * TRUE if the command needs to be freed, i.e.
- * if any variable expansion was performed
- */
- Boolean freeCmd = FALSE;
- Buffer *buf;
- const char *error;
-
- if (strchr(cp, '$') != NULL) {
- /*
- * There's a dollar sign in the command, so perform
- * variable expansion on the whole thing. The
- * resulting string will need freeing when we're done,
- * so set freeCmd to TRUE.
- */
- cp = Buf_Peel(Var_Subst(cp, VAR_CMD, TRUE));
- freeCmd = TRUE;
- }
-
- buf = Cmd_Exec(cp, &error);
- Var_Set(line, Buf_Data(buf), ctxt);
- Buf_Destroy(buf, TRUE);
-
- if (error)
- Parse_Error(PARSE_WARNING, error, cp);
-
- if (freeCmd)
- free(cp);
-
- } else {
- /*
- * Normal assignment -- just do it.
- */
- Var_Set(line, cp, ctxt);
- }
- if (strcmp(line, MAKE_JOB_PREFIX) == 0)
- Job_SetPrefix();
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ParseHasCommands --
- * Callback procedure for Parse_File when destroying the list of
- * targets on the last dependency line. Marks a target as already
- * having commands if it does, to keep from having shell commands
- * on multiple dependency lines.
- *
- * Results:
- * None
- *
- * Side Effects:
- * OP_HAS_COMMANDS may be set for the target.
- *
- *-----------------------------------------------------------------------
- */
-static void
-ParseHasCommands(void *gnp)
-{
- GNode *gn = gnp;
-
- if (!Lst_IsEmpty(&gn->commands)) {
- gn->type |= OP_HAS_COMMANDS;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Parse_AddIncludeDir --
- * Add a directory to the path searched for included makefiles
- * bracketed by double-quotes. Used by functions in main.c
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The directory is appended to the list.
- *
- *-----------------------------------------------------------------------
- */
-void
-Parse_AddIncludeDir(char *dir)
-{
-
- Path_AddDir(&parseIncPath, dir);
-}
-
-/*-
- *---------------------------------------------------------------------
- * Parse_FromString --
- * Start Parsing from the given string
- *
- * Results:
- * None
- *
- * Side Effects:
- * A structure is added to the includes Lst and readProc, curFile.lineno,
- * curFile.fname and curFile.F are altered for the new file
- *---------------------------------------------------------------------
- */
-void
-Parse_FromString(char *str, int lineno)
-{
-
- DEBUGF(FOR, ("%s\n---- at line %d\n", str, lineno));
-
- ParsePushInput(estrdup(CURFILE->fname), NULL, str, lineno);
-}
-
-#ifdef SYSVINCLUDE
-/*-
- *---------------------------------------------------------------------
- * ParseTraditionalInclude --
- * Push to another file.
- *
- * The input is the line minus the "include". The file name is
- * the string following the "include".
- *
- * Results:
- * None
- *
- * Side Effects:
- * A structure is added to the includes Lst and readProc, curFile.lineno,
- * curFile.fname and curFile.F are altered for the new file
- *---------------------------------------------------------------------
- */
-static void
-ParseTraditionalInclude(char *file)
-{
- char *fullname; /* full pathname of file */
- char *cp; /* current position in file spec */
-
- /*
- * Skip over whitespace
- */
- while (*file == ' ' || *file == '\t') {
- file++;
- }
-
- if (*file == '\0') {
- Parse_Error(PARSE_FATAL, "Filename missing from \"include\"");
- return;
- }
-
- /*
- * Skip to end of line or next whitespace
- */
- for (cp = file; *cp && *cp != '\n' && *cp != '\t' && *cp != ' '; cp++) {
- continue;
- }
-
- *cp = '\0';
-
- /*
- * Substitute for any variables in the file name before trying to
- * find the thing.
- */
- file = Buf_Peel(Var_Subst(file, VAR_CMD, FALSE));
-
- /*
- * Now we know the file's name, we attempt to find the durn thing.
- * Search for it first on the -I search path, then on the .PATH
- * search path, if not found in a -I directory.
- */
- fullname = Path_FindFile(file, &parseIncPath);
- if (fullname == NULL) {
- fullname = Path_FindFile(file, &dirSearchPath);
- }
-
- if (fullname == NULL) {
- /*
- * Still haven't found the makefile. Look for it on the system
- * path as a last resort.
- */
- fullname = Path_FindFile(file, &sysIncPath);
- }
-
- if (fullname == NULL) {
- Parse_Error(PARSE_FATAL, "Could not find %s", file);
- /* XXXHB free(file) */
- return;
- }
-
- /* XXXHB free(file) */
-
- /*
- * We set up the name of the file to be the absolute
- * name of the include file so error messages refer to the right
- * place.
- */
- ParsePushInput(fullname, NULL, NULL, 0);
-}
-#endif
-
-/*-
- *---------------------------------------------------------------------
- * ParseReadc --
- * Read a character from the current file
- *
- * Results:
- * The character that was read
- *
- * Side Effects:
- *---------------------------------------------------------------------
- */
-static int
-ParseReadc(void)
-{
-
- if (CURFILE->F != NULL)
- return (fgetc(CURFILE->F));
-
- if (CURFILE->str != NULL && *CURFILE->ptr != '\0')
- return (*CURFILE->ptr++);
-
- return (EOF);
-}
-
-
-/*-
- *---------------------------------------------------------------------
- * ParseUnreadc --
- * Put back a character to the current file
- *
- * Results:
- * None.
- *
- * Side Effects:
- *---------------------------------------------------------------------
- */
-static void
-ParseUnreadc(int c)
-{
-
- if (CURFILE->F != NULL) {
- ungetc(c, CURFILE->F);
- return;
- }
- if (CURFILE->str != NULL) {
- *--(CURFILE->ptr) = c;
- return;
- }
-}
-
-/* ParseSkipLine():
- * Grab the next line unless it begins with a dot (`.') and we're told to
- * ignore such lines.
- */
-static char *
-ParseSkipLine(int skip, int keep_newline)
-{
- char *line;
- int c, lastc;
- Buffer *buf;
-
- buf = Buf_Init(MAKE_BSIZE);
-
- do {
- Buf_Clear(buf);
- lastc = '\0';
-
- while (((c = ParseReadc()) != '\n' || lastc == '\\')
- && c != EOF) {
- if (skip && c == '#' && lastc != '\\') {
- /*
- * let a comment be terminated even by an
- * escaped \n. This is consistent to comment
- * handling in ParseReadLine
- */
- while ((c = ParseReadc()) != '\n' && c != EOF)
- ;
- break;
- }
- if (c == '\n') {
- if (keep_newline)
- Buf_AddByte(buf, (Byte)c);
- else
- Buf_ReplaceLastByte(buf, (Byte)' ');
- CURFILE->lineno++;
-
- while ((c = ParseReadc()) == ' ' || c == '\t')
- continue;
-
- if (c == EOF)
- break;
- }
-
- Buf_AddByte(buf, (Byte)c);
- lastc = c;
- }
-
- if (c == EOF) {
- Parse_Error(PARSE_FATAL,
- "Unclosed conditional/for loop");
- Buf_Destroy(buf, TRUE);
- return (NULL);
- }
-
- CURFILE->lineno++;
- Buf_AddByte(buf, (Byte)'\0');
- line = Buf_Data(buf);
- } while (skip == 1 && line[0] != '.');
-
- Buf_Destroy(buf, FALSE);
- return (line);
-}
-
-/*-
- *---------------------------------------------------------------------
- * ParseReadLine --
- * Read an entire line from the input file. Called only by Parse_File.
- * To facilitate escaped newlines and what have you, a character is
- * buffered in 'lastc', which is '\0' when no characters have been
- * read. When we break out of the loop, c holds the terminating
- * character and lastc holds a character that should be added to
- * the line (unless we don't read anything but a terminator).
- *
- * Results:
- * A line w/o its newline
- *
- * Side Effects:
- * Only those associated with reading a character
- *---------------------------------------------------------------------
- */
-static char *
-ParseReadLine(void)
-{
- Buffer *buf; /* Buffer for current line */
- int c; /* the current character */
- int lastc; /* The most-recent character */
- Boolean semiNL; /* treat semi-colons as newlines */
- Boolean ignDepOp; /* TRUE if should ignore dependency operators
- * for the purposes of setting semiNL */
- Boolean ignComment; /* TRUE if should ignore comments (in a
- * shell command */
- char *line; /* Result */
- char *ep; /* to strip trailing blanks */
-
- again:
- semiNL = FALSE;
- ignDepOp = FALSE;
- ignComment = FALSE;
-
- lastc = '\0';
-
- /*
- * Handle tab at the beginning of the line. A leading tab (shell
- * command) forces us to ignore comments and dependency operators and
- * treat semi-colons as semi-colons (by leaving semiNL FALSE).
- * This also discards completely blank lines.
- */
- for (;;) {
- c = ParseReadc();
- if (c == EOF) {
- if (ParsePopInput() == DONE) {
- /* End of all inputs - return NULL */
- return (NULL);
- }
- continue;
- }
-
- if (c == '\t') {
- ignComment = ignDepOp = TRUE;
- lastc = c;
- break;
- }
- if (c != '\n') {
- ParseUnreadc(c);
- break;
- }
- CURFILE->lineno++;
- }
-
- buf = Buf_Init(MAKE_BSIZE);
-
- while (((c = ParseReadc()) != '\n' || lastc == '\\') && c != EOF) {
- test_char:
- switch (c) {
- case '\n':
- /*
- * Escaped newline: read characters until a
- * non-space or an unescaped newline and
- * replace them all by a single space. This is
- * done by storing the space over the backslash
- * and dropping through with the next nonspace.
- * If it is a semi-colon and semiNL is TRUE,
- * it will be recognized as a newline in the
- * code below this...
- */
- CURFILE->lineno++;
- lastc = ' ';
- while ((c = ParseReadc()) == ' ' || c == '\t') {
- continue;
- }
- if (c == EOF || c == '\n') {
- goto line_read;
- } else {
- /*
- * Check for comments, semiNL's, etc. --
- * easier than ParseUnreadc(c);
- * continue;
- */
- goto test_char;
- }
- /*NOTREACHED*/
- break;
-
- case ';':
- /*
- * Semi-colon: Need to see if it should be
- * interpreted as a newline
- */
- if (semiNL) {
- /*
- * To make sure the command that may
- * be following this semi-colon begins
- * with a tab, we push one back into the
- * input stream. This will overwrite the
- * semi-colon in the buffer. If there is
- * no command following, this does no
- * harm, since the newline remains in
- * the buffer and the
- * whole line is ignored.
- */
- ParseUnreadc('\t');
- goto line_read;
- }
- break;
- case '=':
- if (!semiNL) {
- /*
- * Haven't seen a dependency operator
- * before this, so this must be a
- * variable assignment -- don't pay
- * attention to dependency operators
- * after this.
- */
- ignDepOp = TRUE;
- } else if (lastc == ':' || lastc == '!') {
- /*
- * Well, we've seen a dependency
- * operator already, but it was the
- * previous character, so this is really
- * just an expanded variable assignment.
- * Revert semi-colons to being just
- * semi-colons again and ignore any more
- * dependency operators.
- *
- * XXX: Note that a line like
- * "foo : a:=b" will blow up, but who'd
- * write a line like that anyway?
- */
- ignDepOp = TRUE;
- semiNL = FALSE;
- }
- break;
- case '#':
- if (!ignComment) {
- if (lastc != '\\') {
- /*
- * If the character is a hash
- * mark and it isn't escaped
- * (or we're being compatible),
- * the thing is a comment.
- * Skip to the end of the line.
- */
- do {
- c = ParseReadc();
- } while (c != '\n' && c != EOF);
- goto line_read;
- } else {
- /*
- * Don't add the backslash.
- * Just let the # get copied
- * over.
- */
- lastc = c;
- continue;
- }
- }
- break;
-
- case ':':
- case '!':
- if (!ignDepOp) {
- /*
- * A semi-colon is recognized as a
- * newline only on dependency lines.
- * Dependency lines are lines with a
- * colon or an exclamation point.
- * Ergo...
- */
- semiNL = TRUE;
- }
- break;
-
- default:
- break;
- }
- /*
- * Copy in the previous character (there may be none if this
- * was the first character) and save this one in
- * lastc.
- */
- if (lastc != '\0')
- Buf_AddByte(buf, (Byte)lastc);
- lastc = c;
- }
- line_read:
- CURFILE->lineno++;
-
- if (lastc != '\0') {
- Buf_AddByte(buf, (Byte)lastc);
- }
- Buf_AddByte(buf, (Byte)'\0');
- line = Buf_Peel(buf);
-
- /*
- * Strip trailing blanks and tabs from the line.
- * Do not strip a blank or tab that is preceded by
- * a '\'
- */
- ep = line;
- while (*ep)
- ++ep;
- while (ep > line + 1 && (ep[-1] == ' ' || ep[-1] == '\t')) {
- if (ep > line + 1 && ep[-2] == '\\')
- break;
- --ep;
- }
- *ep = 0;
-
- if (line[0] == '\0') {
- /* empty line - just ignore */
- free(line);
- goto again;
- }
-
- return (line);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ParseFinishLine --
- * Handle the end of a dependency group.
- *
- * Results:
- * Nothing.
- *
- * Side Effects:
- * inLine set FALSE. 'targets' list destroyed.
- *
- *-----------------------------------------------------------------------
- */
-static void
-ParseFinishLine(void)
-{
- const LstNode *ln;
-
- if (inLine) {
- LST_FOREACH(ln, &targets) {
- if (((const GNode *)Lst_Datum(ln))->type & OP_TRANSFORM)
- Suff_EndTransform(Lst_Datum(ln));
- }
- Lst_Destroy(&targets, ParseHasCommands);
- inLine = FALSE;
- }
-}
-
-/**
- * xparse_include
- * Parse an .include directive and push the file onto the input stack.
- * The input is the line minus the .include. A file spec is a string
- * enclosed in <> or "". The former is looked for only in sysIncPath.
- * The latter in . and the directories specified by -I command line
- * options
- */
-static void
-xparse_include(char *file, int sinclude)
-{
- char *fullname; /* full pathname of file */
- char endc; /* the character which ends the file spec */
- char *cp; /* current position in file spec */
- Boolean isSystem; /* TRUE if makefile is a system makefile */
- char *prefEnd, *Fname;
- char *newName;
-
- /*
- * Skip to delimiter character so we know where to look
- */
- while (*file == ' ' || *file == '\t') {
- file++;
- }
-
- if (*file != '"' && *file != '<') {
- Parse_Error(PARSE_FATAL,
- ".include filename must be delimited by '\"' or '<'");
- return;
- }
-
- /*
- * Set the search path on which to find the include file based on the
- * characters which bracket its name. Angle-brackets imply it's
- * a system Makefile while double-quotes imply it's a user makefile
- */
- if (*file == '<') {
- isSystem = TRUE;
- endc = '>';
- } else {
- isSystem = FALSE;
- endc = '"';
- }
-
- /*
- * Skip to matching delimiter
- */
- for (cp = ++file; *cp != endc; cp++) {
- if (*cp == '\0') {
- Parse_Error(PARSE_FATAL,
- "Unclosed .include filename. '%c' expected", endc);
- return;
- }
- }
- *cp = '\0';
-
- /*
- * Substitute for any variables in the file name before trying to
- * find the thing.
- */
- file = Buf_Peel(Var_Subst(file, VAR_CMD, FALSE));
-
- /*
- * Now we know the file's name and its search path, we attempt to
- * find the durn thing. A return of NULL indicates the file don't
- * exist.
- */
- if (!isSystem) {
- /*
- * Include files contained in double-quotes are first searched
- * for relative to the including file's location. We don't want
- * to cd there, of course, so we just tack on the old file's
- * leading path components and call Path_FindFile to see if
- * we can locate the beast.
- */
-
- /* Make a temporary copy of this, to be safe. */
- Fname = estrdup(CURFILE->fname);
-
- prefEnd = strrchr(Fname, '/');
- if (prefEnd != NULL) {
- *prefEnd = '\0';
- if (file[0] == '/')
- newName = estrdup(file);
- else
- newName = str_concat(Fname, file, STR_ADDSLASH);
- fullname = Path_FindFile(newName, &parseIncPath);
- if (fullname == NULL) {
- fullname = Path_FindFile(newName,
- &dirSearchPath);
- }
- free(newName);
- *prefEnd = '/';
- } else {
- fullname = NULL;
- }
- free(Fname);
- if (fullname == NULL) {
- /*
- * Makefile wasn't found in same directory as included
- * makefile. Search for it first on the -I search path,
- * then on the .PATH search path, if not found in a -I
- * directory.
- * XXX: Suffix specific?
- */
- fullname = Path_FindFile(file, &parseIncPath);
- if (fullname == NULL) {
- fullname = Path_FindFile(file, &dirSearchPath);
- }
- }
- } else {
- fullname = NULL;
- }
-
- if (fullname == NULL) {
- /*
- * System makefile or still haven't found the makefile.
- * Look for it on the system path.
- */
- fullname = Path_FindFile(file, &sysIncPath);
- }
-
- if (fullname == NULL) {
- *cp = endc;
- if (!sinclude)
- Parse_Error(PARSE_FATAL, "Could not find %s", file);
- else
- Main_AddSourceMakefile(file);
- free(file);
- return;
- }
- Main_AddSourceMakefile(fullname);
- free(file);
-
- /*
- * We set up the name of the file to be the absolute
- * name of the include file so error messages refer to the right
- * place.
- */
- ParsePushInput(fullname, NULL, NULL, 0);
- DEBUGF(DIR, (".include %s\n", fullname));
-}
-
-static void
-parse_include(char *file, int code __unused, int lineno __unused)
-{
- xparse_include(file, 0);
-}
-
-static void
-parse_sinclude(char *file, int code __unused, int lineno __unused)
-{
- xparse_include(file, 1);
-}
-
-/**
- * parse_message
- * Parse a .warning or .error directive
- *
- * The input is the line minus the ".error"/".warning". We substitute
- * variables, print the message and exit(1) (for .error) or just print
- * a warning if the directive is malformed.
- */
-static void
-parse_message(char *line, int iserror, int lineno __unused)
-{
-
- if (!isspace((u_char)*line)) {
- Parse_Error(PARSE_WARNING, "invalid syntax: .%s%s",
- iserror ? "error" : "warning", line);
- return;
- }
-
- while (isspace((u_char)*line))
- line++;
-
- line = Buf_Peel(Var_Subst(line, VAR_CMD, FALSE));
- Parse_Error(iserror ? PARSE_FATAL : PARSE_WARNING, "%s", line);
- free(line);
-
- if (iserror) {
- /* Terminate immediately. */
- exit(1);
- }
-}
-
-/**
- * parse_undef
- * Parse an .undef directive.
- */
-static void
-parse_undef(char *line, int code __unused, int lineno __unused)
-{
- char *cp;
-
- while (isspace((u_char)*line))
- line++;
-
- for (cp = line; !isspace((u_char)*cp) && *cp != '\0'; cp++) {
- ;
- }
- *cp = '\0';
-
- cp = Buf_Peel(Var_Subst(line, VAR_CMD, FALSE));
- Var_Delete(cp, VAR_GLOBAL);
- free(cp);
-}
-
-/**
- * parse_for
- * Parse a .for directive.
- */
-static void
-parse_for(char *line, int code __unused, int lineno)
-{
-
- if (!For_For(line)) {
- /* syntax error */
- return;
- }
- line = NULL;
-
- /*
- * Skip after the matching endfor.
- */
- do {
- free(line);
- line = ParseSkipLine(0, 1);
- if (line == NULL) {
- Parse_Error(PARSE_FATAL,
- "Unexpected end of file in for loop.\n");
- return;
- }
- } while (For_Eval(line));
- free(line);
-
- /* execute */
- For_Run(lineno);
-}
-
-/**
- * parse_endfor
- * Parse endfor. This may only happen if there was no matching .for.
- */
-static void
-parse_endfor(char *line __unused, int code __unused, int lineno __unused)
-{
-
- Parse_Error(PARSE_FATAL, "for-less endfor");
-}
-
-/**
- * parse_directive
- * Got a line starting with a '.'. Check if this is a directive
- * and parse it.
- *
- * return:
- * TRUE if line was a directive, FALSE otherwise.
- */
-static Boolean
-parse_directive(char *line)
-{
- char *start;
- char *cp;
- int dir;
-
- /*
- * Get the keyword:
- * .[[:space:]]*\([[:alpha:]][[:alnum:]_]*\).*
- * \1 is the keyword.
- */
- for (start = line; isspace((u_char)*start); start++) {
- ;
- }
-
- if (!isalpha((u_char)*start)) {
- return (FALSE);
- }
-
- cp = start + 1;
- while (isalnum((u_char)*cp) || *cp == '_') {
- cp++;
- }
-
- dir = directive_hash(start, cp - start);
- if (dir < 0 || dir >= (int)NDIRECTS ||
- (size_t)(cp - start) != strlen(directives[dir].name) ||
- strncmp(start, directives[dir].name, cp - start) != 0) {
- /* not actually matched */
- return (FALSE);
- }
-
- if (!skipLine || directives[dir].skip_flag)
- (*directives[dir].func)(cp, directives[dir].code,
- CURFILE->lineno);
- return (TRUE);
-}
-
-/*-
- *---------------------------------------------------------------------
- * Parse_File --
- * Parse a file into its component parts, incorporating it into the
- * current dependency graph. This is the main function and controls
- * almost every other function in this module
- *
- * Results:
- * None
- *
- * Side Effects:
- * Loads. Nodes are added to the list of all targets, nodes and links
- * are added to the dependency graph. etc. etc. etc.
- *---------------------------------------------------------------------
- */
-void
-Parse_File(const char *name, FILE *stream)
-{
- char *cp; /* pointer into the line */
- char *line; /* the line we're working on */
-
- inLine = FALSE;
- fatals = 0;
-
- ParsePushInput(estrdup(name), stream, NULL, 0);
-
- while ((line = ParseReadLine()) != NULL) {
- if (*line == '.' && parse_directive(line + 1)) {
- /* directive consumed */
- goto nextLine;
- }
- if (skipLine || *line == '#') {
- /* Skipping .if block or comment. */
- goto nextLine;
- }
-
- if (*line == '\t') {
- /*
- * If a line starts with a tab, it can only
- * hope to be a creation command.
- */
- for (cp = line + 1; isspace((unsigned char)*cp); cp++) {
- continue;
- }
- if (*cp) {
- if (inLine) {
- LstNode *ln;
- GNode *gn;
-
- /*
- * So long as it's not a blank
- * line and we're actually in a
- * dependency spec, add the
- * command to the list of
- * commands of all targets in
- * the dependency spec.
- */
- LST_FOREACH(ln, &targets) {
- gn = Lst_Datum(ln);
-
- /*
- * if target already
- * supplied, ignore
- * commands
- */
- if (!(gn->type & OP_HAS_COMMANDS))
- Lst_AtEnd(&gn->commands, cp);
- else
- Parse_Error(PARSE_WARNING, "duplicate script "
- "for target \"%s\" ignored", gn->name);
- }
- continue;
- } else {
- Parse_Error(PARSE_FATAL,
- "Unassociated shell command \"%s\"",
- cp);
- }
- }
-#ifdef SYSVINCLUDE
- } else if (strncmp(line, "include", 7) == 0 &&
- isspace((unsigned char)line[7]) &&
- strchr(line, ':') == NULL) {
- /*
- * It's an S3/S5-style "include".
- */
- ParseTraditionalInclude(line + 7);
- goto nextLine;
-#endif
- } else if (Parse_IsVar(line)) {
- ParseFinishLine();
- Parse_DoVar(line, VAR_GLOBAL);
-
- } else {
- /*
- * We now know it's a dependency line so it
- * needs to have all variables expanded before
- * being parsed. Tell the variable module to
- * complain if some variable is undefined...
- * To make life easier on novices, if the line
- * is indented we first make sure the line has
- * a dependency operator in it. If it doesn't
- * have an operator and we're in a dependency
- * line's script, we assume it's actually a
- * shell command and add it to the current
- * list of targets. XXX this comment seems wrong.
- */
- cp = line;
- if (isspace((unsigned char)line[0])) {
- while (*cp != '\0' &&
- isspace((unsigned char)*cp)) {
- cp++;
- }
- if (*cp == '\0') {
- goto nextLine;
- }
- }
-
- ParseFinishLine();
-
- cp = Buf_Peel(Var_Subst(line, VAR_CMD, TRUE));
-
- free(line);
- line = cp;
-
- /*
- * Need a non-circular list for the target nodes
- */
- Lst_Destroy(&targets, NOFREE);
- inLine = TRUE;
-
- ParseDoDependency(line);
- }
-
- nextLine:
- free(line);
- }
-
- ParseFinishLine();
-
- /*
- * Make sure conditionals are clean
- */
- Cond_End();
-
- if (fatals)
- errx(1, "fatal errors encountered -- cannot continue");
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Parse_MainName --
- * Return a Lst of the main target to create for main()'s sake. If
- * no such target exists, we Punt with an obnoxious error message.
- *
- * Results:
- * A Lst of the single node to create.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void
-Parse_MainName(Lst *listmain)
-{
-
- if (mainNode == NULL) {
- Punt("no target to make.");
- /*NOTREACHED*/
- } else if (mainNode->type & OP_DOUBLEDEP) {
- Lst_AtEnd(listmain, mainNode);
- Lst_Concat(listmain, &mainNode->cohorts, LST_CONCNEW);
- } else
- Lst_AtEnd(listmain, mainNode);
-}
diff --git a/usr.bin/make/parse.h b/usr.bin/make/parse.h
deleted file mode 100644
index 6ee15f9..0000000
--- a/usr.bin/make/parse.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef parse_h_470eeb9a
-#define parse_h_470eeb9a
-
-#include <stdio.h>
-
-#include "util.h"
-
-struct GNode;
-struct Lst;
-
-/*
- * Error levels for parsing. PARSE_FATAL means the process cannot continue
- * once the makefile has been parsed. PARSE_WARNING means it can. Passed
- * as the first argument to Parse_Error.
- */
-#define PARSE_WARNING 2
-#define PARSE_FATAL 1
-
-/*
- * Definitions for the "local" variables. Used only for clarity.
- */
-#define TARGET "@" /* Target of dependency */
-#define OODATE "?" /* All out-of-date sources */
-#define ALLSRC ">" /* All sources */
-#define IMPSRC "<" /* Source implied by transformation */
-#define PREFIX "*" /* Common prefix */
-#define ARCHIVE "!" /* Archive in "archive(member)" syntax */
-#define MEMBER "%" /* Member in "archive(member)" syntax */
-
-#define FTARGET "@F" /* file part of TARGET */
-#define DTARGET "@D" /* directory part of TARGET */
-#define FIMPSRC "<F" /* file part of IMPSRC */
-#define DIMPSRC "<D" /* directory part of IMPSRC */
-#define FPREFIX "*F" /* file part of PREFIX */
-#define DPREFIX "*D" /* directory part of PREFIX */
-
-void Parse_Error(int, const char *, ...);
-Boolean Parse_AnyExport(void);
-Boolean Parse_IsVar(char *);
-void Parse_DoVar(char *, struct GNode *);
-void Parse_AddIncludeDir(char *);
-void Parse_File(const char *, FILE *);
-void Parse_FromString(char *, int);
-void Parse_MainName(struct Lst *);
-
-#endif /* parse_h_470eeb9a */
diff --git a/usr.bin/make/proc.c b/usr.bin/make/proc.c
deleted file mode 100644
index 3a7e4f6..0000000
--- a/usr.bin/make/proc.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*-
- * Copyright (C) 2005 Max Okumoto.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <unistd.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "proc.h"
-#include "shell.h"
-#include "util.h"
-
-/**
- * Replace the current process.
- */
-void
-Proc_Exec(const ProcStuff *ps)
-{
-
- if (ps->in != STDIN_FILENO) {
- /*
- * Redirect the child's stdin to the input fd
- * and reset it to the beginning (again).
- */
- if (dup2(ps->in, STDIN_FILENO) == -1)
- Punt("Cannot dup2: %s", strerror(errno));
- lseek(STDIN_FILENO, (off_t)0, SEEK_SET);
- }
-
- if (ps->out != STDOUT_FILENO) {
- /*
- * Redirect the child's stdout to the output fd.
- */
- if (dup2(ps->out, STDOUT_FILENO) == -1)
- Punt("Cannot dup2: %s", strerror(errno));
- close(ps->out);
- }
-
- if (ps->err != STDERR_FILENO) {
- /*
- * Redirect the child's stderr to the err fd.
- */
- if (dup2(ps->err, STDERR_FILENO) == -1)
- Punt("Cannot dup2: %s", strerror(errno));
- close(ps->err);
- }
-
- if (ps->merge_errors) {
- /*
- * Send stderr to parent process too.
- */
- if (dup2(STDOUT_FILENO, STDERR_FILENO) == -1)
- Punt("Cannot dup2: %s", strerror(errno));
- }
-
- if (commandShell->unsetenv) {
- /* for the benfit of ksh */
- unsetenv("ENV");
- }
-
- /*
- * The file descriptors for stdin, stdout, or stderr might
- * have been marked close-on-exec. Clear the flag on all
- * of them.
- */
- fcntl(STDIN_FILENO, F_SETFD,
- fcntl(STDIN_FILENO, F_GETFD) & (~FD_CLOEXEC));
- fcntl(STDOUT_FILENO, F_SETFD,
- fcntl(STDOUT_FILENO, F_GETFD) & (~FD_CLOEXEC));
- fcntl(STDERR_FILENO, F_SETFD,
- fcntl(STDERR_FILENO, F_GETFD) & (~FD_CLOEXEC));
-
- if (ps->pgroup) {
-#ifdef USE_PGRP
- /*
- * Become a process group leader, so we can kill it and all
- * its descendants in one fell swoop, by killing its process
- * family, but not commit suicide.
- */
-#if defined(SYSV)
- setsid();
-#else
- setpgid(0, getpid());
-#endif
-#endif /* USE_PGRP */
- }
-
- if (ps->searchpath) {
- execvp(ps->argv[0], ps->argv);
-
- write(STDERR_FILENO, ps->argv[0], strlen(ps->argv[0]));
- write(STDERR_FILENO, ": ", 2);
- write(STDERR_FILENO, strerror(errno), strlen(strerror(errno)));
- write(STDERR_FILENO, "\n", 1);
- } else {
- execv(commandShell->path, ps->argv);
-
- write(STDERR_FILENO,
- "Could not execute shell\n",
- sizeof("Could not execute shell"));
- }
-
- /*
- * Since we are the child process, exit without flushing buffers.
- */
- _exit(1);
-}
diff --git a/usr.bin/make/shell.c b/usr.bin/make/shell.c
deleted file mode 100644
index c1f82d1..0000000
--- a/usr.bin/make/shell.c
+++ /dev/null
@@ -1,472 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/queue.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "parse.h"
-#include "pathnames.h"
-#include "shell.h"
-#include "util.h"
-
-/*
- * Descriptions for various shells. What the list of builtins should contain
- * is debatable: either all builtins or only those which may specified on
- * a single line without use of meta-characters. For correct makefiles that
- * contain only correct command lines there is no difference. But if a command
- * line, for example, is: 'if -foo bar' and there is an executable named 'if'
- * in the path, the first possibility would execute that 'if' while in the
- * second case the shell would give an error. Histerically only a small
- * subset of the builtins and no reserved words where given in the list which
- * corresponds roughly to the first variant. So go with this but add missing
- * words.
- */
-#define CSH_BUILTINS \
- "alias cd eval exec exit read set ulimit unalias " \
- "umask unset wait"
-
-#define SH_BUILTINS \
- "alias cd eval exec exit read set ulimit unalias " \
- "umask unset wait"
-
-#define CSH_META "#=|^(){};&<>*?[]:$`\\@\n"
-#define SH_META "#=|^(){};&<>*?[]:$`\\\n"
-
-static const char *const shells_init[] = {
- /*
- * CSH description. The csh can do echo control by playing
- * with the setting of the 'echo' shell variable. Sadly,
- * however, it is unable to do error control nicely.
- */
- "name=csh path='" PATH_DEFSHELLDIR "/csh' "
- "quiet='unset verbose' echo='set verbose' filter='unset verbose' "
- "hasErrCtl=N check='echo \"%s\"\n' ignore='csh -c \"%s || exit 0\"' "
- "echoFlag=v errFlag=e "
- "meta='" CSH_META "' builtins='" CSH_BUILTINS "'",
-
- /*
- * SH description. Echo control is also possible and, under
- * sun UNIX anyway, one can even control error checking.
- */
- "name=sh path='" PATH_DEFSHELLDIR "/sh' "
- "quiet='set -' echo='set -v' filter='set -' "
- "hasErrCtl=Y check='set -e' ignore='set +e' "
- "echoFlag=v errFlag=e "
- "meta='" SH_META "' builtins='" SH_BUILTINS "'",
-
- /*
- * KSH description. The Korn shell has a superset of
- * the Bourne shell's functionality. There are probably builtins
- * missing here.
- */
- "name=ksh path='" PATH_DEFSHELLDIR "/ksh' "
- "quiet='set -' echo='set -v' filter='set -' "
- "hasErrCtl=Y check='set -e' ignore='set +e' "
- "echoFlag=v errFlag=e "
- "meta='" SH_META "' builtins='" SH_BUILTINS "' unsetenv=T",
-
- NULL
-};
-
-/*
- * This is the shell to which we pass all commands in the Makefile.
- * It is set by the Job_ParseShell function.
- */
-struct Shell *commandShell;
-
-/*
- * This is the list of all known shells.
- */
-static struct Shells shells = TAILQ_HEAD_INITIALIZER(shells);
-
-void ShellDump(const struct Shell *) __unused;
-
-/**
- * Helper function for sorting the builtin list alphabetically.
- */
-static int
-sort_builtins(const void *p1, const void *p2)
-{
-
- return (strcmp(*(const char* const*)p1, *(const char* const*)p2));
-}
-
-/**
- * Free a shell structure and all associated strings.
- */
-static void
-ShellFree(struct Shell *sh)
-{
-
- if (sh != NULL) {
- free(sh->name);
- free(sh->path);
- free(sh->echoOff);
- free(sh->echoOn);
- free(sh->noPrint);
- free(sh->errCheck);
- free(sh->ignErr);
- free(sh->echo);
- free(sh->exit);
- ArgArray_Done(&sh->builtins);
- free(sh->meta);
- free(sh);
- }
-}
-
-/**
- * Dump a shell specification to stderr.
- */
-void
-ShellDump(const struct Shell *sh)
-{
- int i;
-
- fprintf(stderr, "Shell %p:\n", sh);
- fprintf(stderr, " name='%s' path='%s'\n", sh->name, sh->path);
- fprintf(stderr, " hasEchoCtl=%d echoOff='%s' echoOn='%s'\n",
- sh->hasEchoCtl, sh->echoOff, sh->echoOn);
- fprintf(stderr, " noPrint='%s'\n", sh->noPrint);
- fprintf(stderr, " hasErrCtl=%d errCheck='%s' ignErr='%s'\n",
- sh->hasErrCtl, sh->errCheck, sh->ignErr);
- fprintf(stderr, " echo='%s' exit='%s'\n", sh->echo, sh->exit);
- fprintf(stderr, " builtins=%d\n", sh->builtins.argc - 1);
- for (i = 1; i < sh->builtins.argc; i++)
- fprintf(stderr, " '%s'", sh->builtins.argv[i]);
- fprintf(stderr, "\n meta='%s'\n", sh->meta);
- fprintf(stderr, " unsetenv=%d\n", sh->unsetenv);
-}
-
-/**
- * Parse a shell specification line and return the new Shell structure.
- * In case of an error a message is printed and NULL is returned.
- */
-static struct Shell *
-ShellParseSpec(const char *spec, Boolean *fullSpec)
-{
- ArgArray aa;
- struct Shell *sh;
- char *eq;
- char *keyw;
- int arg;
-
- *fullSpec = FALSE;
-
- sh = emalloc(sizeof(*sh));
- memset(sh, 0, sizeof(*sh));
- ArgArray_Init(&sh->builtins);
-
- /*
- * Parse the specification by keyword but skip the first word
- */
- brk_string(&aa, spec, TRUE);
-
- for (arg = 1; arg < aa.argc; arg++) {
- /*
- * Split keyword and value
- */
- keyw = aa.argv[arg];
- if ((eq = strchr(keyw, '=')) == NULL) {
- Parse_Error(PARSE_FATAL, "missing '=' in shell "
- "specification keyword '%s'", keyw);
- ArgArray_Done(&aa);
- ShellFree(sh);
- return (NULL);
- }
- *eq++ = '\0';
-
- if (strcmp(keyw, "path") == 0) {
- free(sh->path);
- sh->path = estrdup(eq);
- } else if (strcmp(keyw, "name") == 0) {
- free(sh->name);
- sh->name = estrdup(eq);
- } else if (strcmp(keyw, "quiet") == 0) {
- free(sh->echoOff);
- sh->echoOff = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "echo") == 0) {
- free(sh->echoOn);
- sh->echoOn = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "filter") == 0) {
- free(sh->noPrint);
- sh->noPrint = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "echoFlag") == 0) {
- free(sh->echo);
- sh->echo = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "errFlag") == 0) {
- free(sh->exit);
- sh->exit = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "hasErrCtl") == 0) {
- sh->hasErrCtl = (*eq == 'Y' || *eq == 'y' ||
- *eq == 'T' || *eq == 't');
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "check") == 0) {
- free(sh->errCheck);
- sh->errCheck = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "ignore") == 0) {
- free(sh->ignErr);
- sh->ignErr = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "builtins") == 0) {
- ArgArray_Done(&sh->builtins);
- brk_string(&sh->builtins, eq, TRUE);
- qsort(sh->builtins.argv + 1, sh->builtins.argc - 1,
- sizeof(char *), sort_builtins);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "meta") == 0) {
- free(sh->meta);
- sh->meta = estrdup(eq);
- *fullSpec = TRUE;
- } else if (strcmp(keyw, "unsetenv") == 0) {
- sh->unsetenv = (*eq == 'Y' || *eq == 'y' ||
- *eq == 'T' || *eq == 't');
- *fullSpec = TRUE;
- } else {
- Parse_Error(PARSE_FATAL, "unknown keyword in shell "
- "specification '%s'", keyw);
- ArgArray_Done(&aa);
- ShellFree(sh);
- return (NULL);
- }
- }
- ArgArray_Done(&aa);
-
- /*
- * Some checks (could be more)
- */
- if (*fullSpec) {
- if ((sh->echoOn != NULL) ^ (sh->echoOff != NULL)) {
- Parse_Error(PARSE_FATAL, "Shell must have either both "
- "echoOff and echoOn or none of them");
- ShellFree(sh);
- return (NULL);
- }
-
- if (sh->echoOn != NULL && sh->echoOff != NULL)
- sh->hasEchoCtl = TRUE;
- }
-
- return (sh);
-}
-
-/**
- * Parse the builtin shell specifications and put them into the shell
- * list. Then select the default shell to be the current shell. This
- * is called from main() before any parsing (including MAKEFLAGS and
- * command line) is done.
- */
-void
-Shell_Init(void)
-{
- int i;
- struct Shell *sh;
- Boolean fullSpec;
-
- for (i = 0; shells_init[i] != NULL; i++) {
- sh = ShellParseSpec(shells_init[i], &fullSpec);
- TAILQ_INSERT_TAIL(&shells, sh, link);
- if (strcmp(sh->name, DEFSHELLNAME) == 0)
- commandShell = sh;
- }
-}
-
-/**
- * Find a matching shell in 'shells' given its final component.
- *
- * Results:
- * A pointer to a freshly allocated Shell structure with the contents
- * from static description or NULL if no shell with the given name
- * is found.
- */
-static struct Shell *
-ShellMatch(const char *name)
-{
- struct Shell *sh;
-
- TAILQ_FOREACH(sh, &shells, link)
- if (strcmp(sh->name, name) == 0)
- return (sh);
-
- return (NULL);
-}
-
-/**
- * Parse a shell specification and set up commandShell appropriately.
- *
- * Results:
- * TRUE if the specification was correct. FALSE otherwise.
- *
- * Side Effects:
- * commandShell points to a Shell structure.
- * created from the shell spec).
- *
- * Notes:
- * A shell specification consists of a .SHELL target, with dependency
- * operator, followed by a series of blank-separated words. Double
- * quotes can be used to use blanks in words. A backslash escapes
- * anything (most notably a double-quote and a space) and
- * provides the functionality it does in C. Each word consists of
- * keyword and value separated by an equal sign. There should be no
- * unnecessary spaces in the word. The keywords are as follows:
- * name Name of shell.
- * path Location of shell. Overrides "name" if given
- * quiet Command to turn off echoing.
- * echo Command to turn echoing on
- * filter Result of turning off echoing that shouldn't be
- * printed.
- * echoFlag Flag to turn echoing on at the start
- * errFlag Flag to turn error checking on at the start
- * hasErrCtl True if shell has error checking control
- * check Command to turn on error checking if hasErrCtl
- * is TRUE or template of command to echo a command
- * for which error checking is off if hasErrCtl is
- * FALSE.
- * ignore Command to turn off error checking if hasErrCtl
- * is TRUE or template of command to execute a
- * command so as to ignore any errors it returns if
- * hasErrCtl is FALSE.
- * builtins A space separated list of builtins. If one
- * of these builtins is detected when make wants
- * to execute a command line, the command line is
- * handed to the shell. Otherwise make may try to
- * execute the command directly. If this list is empty
- * it is assumed, that the command must always be
- * handed over to the shell.
- * meta The shell meta characters. If this is not specified
- * or empty, commands are alway passed to the shell.
- * Otherwise they are not passed when they contain
- * neither a meta character nor a builtin command.
- * unsetenv Unsetenv("ENV") before executing anything.
- */
-Boolean
-Shell_Parse(const char line[])
-{
- Boolean fullSpec;
- struct Shell *sh;
- struct Shell *match;
-
- /* parse the specification */
- if ((sh = ShellParseSpec(line, &fullSpec)) == NULL)
- return (FALSE);
-
- if (sh->path == NULL) {
- /*
- * If no path was given, the user wants one of the pre-defined
- * shells, yes? So we find the one s/he wants with the help of
- * JobMatchShell and set things up the right way.
- */
- if (sh->name == NULL) {
- Parse_Error(PARSE_FATAL,
- "Neither path nor name specified");
- ShellFree(sh);
- return (FALSE);
- }
- if (fullSpec) {
- /*
- * XXX May want to merge sh into match. But this
- * require ShellParseSpec to return information
- * which attributes actuall have been specified.
- */
- Parse_Error(PARSE_FATAL, "No path specified");
- ShellFree(sh);
- return (FALSE);
- }
- if ((match = ShellMatch(sh->name)) == NULL) {
- Parse_Error(PARSE_FATAL, "%s: no matching shell",
- sh->name);
- ShellFree(sh);
- return (FALSE);
- }
- ShellFree(sh);
- commandShell = match;
-
- return (TRUE);
- }
-
- /*
- * The user provided a path. If s/he gave nothing else
- * (fullSpec is FALSE), try and find a matching shell in the
- * ones we know of. Else we just take the specification at its
- * word and copy it to a new location. In either case, we need
- * to record the path the user gave for the shell.
- */
- if (sh->name == NULL) {
- /* get the base name as the name */
- if ((sh->name = strrchr(sh->path, '/')) == NULL) {
- sh->name = estrdup(sh->path);
- } else {
- sh->name = estrdup(sh->name + 1);
- }
- }
-
- if (!fullSpec) {
- if ((match = ShellMatch(sh->name)) == NULL) {
- Parse_Error(PARSE_FATAL,
- "%s: no matching shell", sh->name);
- ShellFree(sh);
- return (FALSE);
- }
-
- /* set the patch on the matching shell */
- free(match->path);
- match->path = sh->path;
- sh->path = NULL;
-
- ShellFree(sh);
- commandShell = match;
- return (TRUE);
- }
-
- TAILQ_INSERT_HEAD(&shells, sh, link);
-
- /* set the new shell */
- commandShell = sh;
- return (TRUE);
-}
diff --git a/usr.bin/make/shell.h b/usr.bin/make/shell.h
deleted file mode 100644
index a317058..0000000
--- a/usr.bin/make/shell.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1988, 1989 by Adam de Boor
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef shell_h_6002e3b8
-#define shell_h_6002e3b8
-
-#include <sys/queue.h>
-
-#include "str.h"
-#include "util.h"
-
-/**
- * Shell Specifications:
- *
- * Some special stuff goes on if a shell doesn't have error control. In such
- * a case, errCheck becomes a printf template for echoing the command,
- * should echoing be on and ignErr becomes another printf template for
- * executing the command while ignoring the return status. If either of these
- * strings is empty when hasErrCtl is FALSE, the command will be executed
- * anyway as is and if it causes an error, so be it.
- */
-struct Shell {
- TAILQ_ENTRY(Shell) link; /* link all shell descriptions */
-
- /*
- * the name of the shell. For Bourne and C shells, this is used
- * only to find the shell description when used as the single
- * source of a .SHELL target.
- */
- char *name;
-
- char *path; /* full path to the shell */
-
- /* True if both echoOff and echoOn defined */
- Boolean hasEchoCtl;
-
- char *echoOff; /* command to turn off echo */
- char *echoOn; /* command to turn it back on */
-
- /*
- * What the shell prints, and its length, when given the
- * echo-off command. This line will not be printed when
- * received from the shell. This is usually the command which
- * was executed to turn off echoing
- */
- char *noPrint;
-
- /* set if can control error checking for individual commands */
- Boolean hasErrCtl;
-
- /* string to turn error checking on */
- char *errCheck;
-
- /* string to turn off error checking */
- char *ignErr;
-
- char *echo; /* command line flag: echo commands */
- char *exit; /* command line flag: exit on error */
-
- ArgArray builtins; /* ordered list of shell builtins */
- char *meta; /* shell meta characters */
-
- Boolean unsetenv; /* unsetenv("ENV") before exec */
-};
-TAILQ_HEAD(Shells, Shell);
-
-extern struct Shell *commandShell;
-
-void Shell_Init(void);
-Boolean Shell_Parse(const char []);
-
-#endif /* shell_h_6002e3b8 */
diff --git a/usr.bin/make/str.c b/usr.bin/make/str.c
deleted file mode 100644
index ce4ac05..0000000
--- a/usr.bin/make/str.c
+++ /dev/null
@@ -1,559 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)str.c 5.8 (Berkeley) 6/1/90
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "buf.h"
-#include "str.h"
-#include "util.h"
-
-/**
- * Initialize the argument array object. The array is initially
- * eight positions, and will be expanded as necessary. The first
- * position is set to NULL since everything ignores it. We allocate
- * (size + 1) since we need space for the terminating NULL. The
- * buffer is set to NULL, since no common buffer is allocated yet.
- */
-void
-ArgArray_Init(ArgArray *aa)
-{
-
- aa->size = 8;
- aa->argv = emalloc((aa->size + 1) * sizeof(char *));
- aa->argc = 0;
- aa->argv[aa->argc++] = NULL;
- aa->len = 0;
- aa->buffer = NULL;
-}
-
-/**
- * Cleanup the memory allocated for in the argument array object.
- */
-void
-ArgArray_Done(ArgArray *aa)
-{
-
- if (aa->buffer == NULL) {
- int i;
- /* args are individually allocated */
- for (i = 0; i < aa->argc; ++i) {
- if (aa->argv[i]) {
- free(aa->argv[i]);
- aa->argv[i] = NULL;
- }
- }
- } else {
- /* args are part of a single allocation */
- free(aa->buffer);
- aa->buffer = NULL;
- }
- free(aa->argv);
- aa->argv = NULL;
- aa->argc = 0;
- aa->size = 0;
-}
-
-/*-
- * str_concat --
- * concatenate the two strings, inserting a space or slash between them.
- *
- * returns --
- * the resulting string in allocated space.
- */
-char *
-str_concat(const char *s1, const char *s2, int flags)
-{
- int len1, len2;
- char *result;
-
- /* get the length of both strings */
- len1 = strlen(s1);
- len2 = strlen(s2);
-
- /* allocate length plus separator plus EOS */
- result = emalloc(len1 + len2 + 2);
-
- /* copy first string into place */
- memcpy(result, s1, len1);
-
- /* add separator character */
- if (flags & STR_ADDSPACE) {
- result[len1] = ' ';
- ++len1;
- } else if (flags & STR_ADDSLASH) {
- result[len1] = '/';
- ++len1;
- }
-
- /* copy second string plus EOS into place */
- memcpy(result + len1, s2, len2 + 1);
-
- return (result);
-}
-
-/**
- * Fracture a string into an array of words (as delineated by tabs or
- * spaces) taking quotation marks into account. Leading tabs/spaces
- * are ignored.
- */
-void
-brk_string(ArgArray *aa, const char str[], Boolean expand)
-{
- char inquote;
- char *start;
- char *arg;
-
- /* skip leading space chars. */
- for (; *str == ' ' || *str == '\t'; ++str)
- continue;
-
- ArgArray_Init(aa);
-
- aa->buffer = estrdup(str);
-
- arg = aa->buffer;
- start = arg;
- inquote = '\0';
-
- /*
- * copy the string; at the same time, parse backslashes,
- * quotes and build the argument list.
- */
- for (;;) {
- switch (str[0]) {
- case '"':
- case '\'':
- if (inquote == '\0') {
- inquote = str[0];
- if (expand)
- break;
- if (start == NULL)
- start = arg;
- } else if (inquote == str[0]) {
- inquote = '\0';
- /* Don't miss "" or '' */
- if (start == NULL)
- start = arg;
- if (expand)
- break;
- } else {
- /* other type of quote found */
- if (start == NULL)
- start = arg;
- }
- *arg++ = str[0];
- break;
- case ' ':
- case '\t':
- case '\n':
- if (inquote) {
- if (start == NULL)
- start = arg;
- *arg++ = str[0];
- break;
- }
- if (start == NULL)
- break;
- /* FALLTHROUGH */
- case '\0':
- /*
- * end of a token -- make sure there's enough argv
- * space and save off a pointer.
- */
- if (aa->argc == aa->size) {
- aa->size *= 2; /* ramp up fast */
- aa->argv = erealloc(aa->argv,
- (aa->size + 1) * sizeof(char *));
- }
-
- *arg++ = '\0';
- if (start == NULL) {
- aa->argv[aa->argc] = start;
- return;
- }
- if (str[0] == '\n' || str[0] == '\0') {
- aa->argv[aa->argc++] = start;
- aa->argv[aa->argc] = NULL;
- return;
- } else {
- aa->argv[aa->argc++] = start;
- start = NULL;
- break;
- }
- case '\\':
- if (start == NULL)
- start = arg;
- if (expand) {
- switch (str[1]) {
- case '\0':
- case '\n':
- /* hmmm; fix it up as best we can */
- *arg++ = '\\';
- break;
- case 'b':
- *arg++ = '\b';
- ++str;
- break;
- case 'f':
- *arg++ = '\f';
- ++str;
- break;
- case 'n':
- *arg++ = '\n';
- ++str;
- break;
- case 'r':
- *arg++ = '\r';
- ++str;
- break;
- case 't':
- *arg++ = '\t';
- ++str;
- break;
- default:
- *arg++ = str[1];
- ++str;
- break;
- }
- } else {
- *arg++ = str[0];
- if (str[1] != '\0') {
- ++str;
- *arg++ = str[0];
- }
- }
- break;
- default:
- if (start == NULL)
- start = arg;
- *arg++ = str[0];
- break;
- }
- ++str;
- }
-}
-
-/*
- * Quote a string for appending it to MAKEFLAGS. According to Posix the
- * kind of quoting here is implementation-defined. This quoting must ensure
- * that the parsing of MAKEFLAGS's contents in a sub-shell yields the same
- * options, option arguments and macro definitions as in the calling make.
- * We simply quote all blanks, which according to Posix are space and tab
- * in the POSIX locale. Don't use isblank because in that case makes with
- * different locale settings could not communicate. We must also quote
- * backslashes obviously.
- */
-char *
-MAKEFLAGS_quote(const char *str)
-{
- char *ret, *q;
- const char *p;
-
- /* assume worst case - everything has to be quoted */
- ret = emalloc(strlen(str) * 2 + 1);
-
- p = str;
- q = ret;
- while (*p != '\0') {
- switch (*p) {
-
- case ' ':
- case '\t':
- *q++ = '\\';
- break;
-
- default:
- break;
- }
- *q++ = *p++;
- }
- *q++ = '\0';
- return (ret);
-}
-
-void
-MAKEFLAGS_break(ArgArray *aa, const char str[])
-{
- char *arg;
- char *start;
-
- ArgArray_Init(aa);
-
- aa->buffer = strdup(str);
-
- arg = aa->buffer;
- start = NULL;
-
- for (;;) {
- switch (str[0]) {
- case ' ':
- case '\t':
- /* word separator */
- if (start == NULL) {
- /* not in a word */
- str++;
- continue;
- }
- /* FALLTHRU */
- case '\0':
- if (aa->argc == aa->size) {
- aa->size *= 2;
- aa->argv = erealloc(aa->argv,
- (aa->size + 1) * sizeof(char *));
- }
-
- *arg++ = '\0';
- if (start == NULL) {
- aa->argv[aa->argc] = start;
- return;
- }
- if (str[0] == '\0') {
- aa->argv[aa->argc++] = start;
- aa->argv[aa->argc] = NULL;
- return;
- } else {
- aa->argv[aa->argc++] = start;
- start = NULL;
- str++;
- continue;
- }
-
- case '\\':
- if (str[1] == ' ' || str[1] == '\t')
- str++;
- break;
-
- default:
- break;
- }
- if (start == NULL)
- start = arg;
- *arg++ = *str++;
- }
-}
-
-/*
- * Str_Match --
- *
- * See if a particular string matches a particular pattern.
- *
- * Results: Non-zero is returned if string matches pattern, 0 otherwise. The
- * matching operation permits the following special characters in the
- * pattern: *?\[] (see the man page for details on what these mean).
- *
- * Side effects: None.
- */
-int
-Str_Match(const char *string, const char *pattern)
-{
- char c2;
-
- for (;;) {
- /*
- * See if we're at the end of both the pattern and the
- * string. If, we succeeded. If we're at the end of the
- * pattern but not at the end of the string, we failed.
- */
- if (*pattern == 0)
- return (!*string);
- if (*string == 0 && *pattern != '*')
- return (0);
- /*
- * Check for a "*" as the next pattern character. It matches
- * any substring. We handle this by calling ourselves
- * recursively for each postfix of string, until either we
- * match or we reach the end of the string.
- */
- if (*pattern == '*') {
- pattern += 1;
- if (*pattern == 0)
- return (1);
- while (*string != 0) {
- if (Str_Match(string, pattern))
- return (1);
- ++string;
- }
- return (0);
- }
- /*
- * Check for a "?" as the next pattern character. It matches
- * any single character.
- */
- if (*pattern == '?')
- goto thisCharOK;
- /*
- * Check for a "[" as the next pattern character. It is
- * followed by a list of characters that are acceptable, or
- * by a range (two characters separated by "-").
- */
- if (*pattern == '[') {
- ++pattern;
- for (;;) {
- if ((*pattern == ']') || (*pattern == 0))
- return (0);
- if (*pattern == *string)
- break;
- if (pattern[1] == '-') {
- c2 = pattern[2];
- if (c2 == 0)
- return (0);
- if ((*pattern <= *string) &&
- (c2 >= *string))
- break;
- if ((*pattern >= *string) &&
- (c2 <= *string))
- break;
- pattern += 2;
- }
- ++pattern;
- }
- while ((*pattern != ']') && (*pattern != 0))
- ++pattern;
- goto thisCharOK;
- }
- /*
- * If the next pattern character is '/', just strip off the
- * '/' so we do exact matching on the character that follows.
- */
- if (*pattern == '\\') {
- ++pattern;
- if (*pattern == 0)
- return (0);
- }
- /*
- * There's no special character. Just make sure that the
- * next characters of each string match.
- */
- if (*pattern != *string)
- return (0);
-thisCharOK: ++pattern;
- ++string;
- }
-}
-
-
-/**
- * Str_SYSVMatch
- * Check word against pattern for a match (% is wild),
- *
- * Results:
- * Returns the beginning position of a match or null. The number
- * of characters matched is returned in len.
- */
-const char *
-Str_SYSVMatch(const char *word, const char *pattern, int *len)
-{
- const char *m, *p, *w;
-
- p = pattern;
- w = word;
-
- if (*w == '\0') {
- /* Zero-length word cannot be matched against */
- *len = 0;
- return (NULL);
- }
-
- if (*p == '\0') {
- /* Null pattern is the whole string */
- *len = strlen(w);
- return (w);
- }
-
- if ((m = strchr(p, '%')) != NULL) {
- /* check that the prefix matches */
- for (; p != m && *w && *w == *p; w++, p++)
- continue;
-
- if (p != m)
- return (NULL); /* No match */
-
- if (*++p == '\0') {
- /* No more pattern, return the rest of the string */
- *len = strlen(w);
- return (w);
- }
- }
-
- m = w;
-
- /* Find a matching tail */
- do
- if (strcmp(p, w) == 0) {
- *len = w - m;
- return (m);
- }
- while (*w++ != '\0');
-
- return (NULL);
-}
-
-
-/**
- * Str_SYSVSubst
- * Substitute '%' on the pattern with len characters from src.
- * If the pattern does not contain a '%' prepend len characters
- * from src.
- *
- * Side Effects:
- * Places result on buf
- */
-void
-Str_SYSVSubst(Buffer *buf, const char *pat, const char *src, int len)
-{
- const char *m;
-
- if ((m = strchr(pat, '%')) != NULL) {
- /* Copy the prefix */
- Buf_AppendRange(buf, pat, m);
- /* skip the % */
- pat = m + 1;
- }
-
- /* Copy the pattern */
- Buf_AddBytes(buf, len, (const Byte *)src);
-
- /* append the rest */
- Buf_Append(buf, pat);
-}
diff --git a/usr.bin/make/str.h b/usr.bin/make/str.h
deleted file mode 100644
index e8cf10c..0000000
--- a/usr.bin/make/str.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef str_h_44db59e6
-#define str_h_44db59e6
-
-#include "util.h"
-
-struct Buffer;
-
-/**
- * An array of c-strings. The pointers stored in argv, point to
- * strings stored in buffer.
- */
-typedef struct ArgArray {
- int size; /* size of argv array */
- int argc; /* strings referenced in argv */
- char **argv; /* array of string pointers */
- size_t len; /* size of buffer */
- char *buffer; /* data buffer */
-} ArgArray;
-
-/*
- * These constants are all used by the Str_Concat function to decide how the
- * final string should look. If STR_ADDSPACE is given, a space will be
- * placed between the two strings. If STR_ADDSLASH is given, a '/' will
- * be used instead of a space. If neither is given, no intervening characters
- * will be placed between the two strings in the final output.
- */
-#define STR_ADDSPACE 0x01 /* add a space when Str_Concat'ing */
-#define STR_ADDSLASH 0x04 /* add a slash when Str_Concat'ing */
-
-void ArgArray_Init(ArgArray *);
-void ArgArray_Done(ArgArray *);
-
-char *str_concat(const char *, const char *, int);
-void brk_string(ArgArray *, const char [], Boolean);
-char *MAKEFLAGS_quote(const char *);
-void MAKEFLAGS_break(ArgArray *, const char []);
-int Str_Match(const char *, const char *);
-const char *Str_SYSVMatch(const char *, const char *, int *);
-void Str_SYSVSubst(struct Buffer *, const char *, const char *, int);
-
-#endif /* str_h_44db59e6 */
diff --git a/usr.bin/make/suff.c b/usr.bin/make/suff.c
deleted file mode 100644
index bed6c7a..0000000
--- a/usr.bin/make/suff.c
+++ /dev/null
@@ -1,2205 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)suff.c 8.4 (Berkeley) 3/21/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * suff.c --
- * Functions to maintain suffix lists and find implicit dependents
- * using suffix transformation rules
- *
- * Interface:
- * Suff_Init Initialize all things to do with suffixes.
- *
- * Suff_DoPaths This function is used to make life easier
- * when searching for a file according to its
- * suffix. It takes the global search path,
- * as defined using the .PATH: target, and appends
- * its directories to the path of each of the
- * defined suffixes, as specified using
- * .PATH<suffix>: targets. In addition, all
- * directories given for suffixes labeled as
- * include files or libraries, using the .INCLUDES
- * or .LIBS targets, are played with using
- * Dir_MakeFlags to create the .INCLUDES and
- * .LIBS global variables.
- *
- * Suff_ClearSuffixes Clear out all the suffixes and defined
- * transformations.
- *
- * Suff_IsTransform Return TRUE if the passed string is the lhs
- * of a transformation rule.
- *
- * Suff_AddSuffix Add the passed string as another known suffix.
- *
- * Suff_GetPath Return the search path for the given suffix.
- *
- * Suff_AddInclude Mark the given suffix as denoting an include
- * file.
- *
- * Suff_AddLib Mark the given suffix as denoting a library.
- *
- * Suff_AddTransform Add another transformation to the suffix
- * graph. Returns GNode suitable for framing, I
- * mean, tacking commands, attributes, etc. on.
- *
- * Suff_SetNull Define the suffix to consider the suffix of
- * any file that doesn't have a known one.
- *
- * Suff_FindDeps Find implicit sources for and the location of
- * a target based on its suffix. Returns the
- * bottom-most node added to the graph or NULL
- * if the target had no implicit sources.
- */
-
-#include <sys/queue.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "arch.h"
-#include "buf.h"
-#include "config.h"
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "lst.h"
-#include "make.h"
-#include "parse.h"
-#include "str.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/* Lst of suffixes */
-static Lst sufflist = Lst_Initializer(sufflist);
-
-/* Lst of suffixes to be cleaned */
-static Lst suffClean = Lst_Initializer(suffClean);
-
-/* Lst of sources */
-static Lst srclist = Lst_Initializer(srclist);
-
-/* Lst of transformation rules */
-static Lst transforms = Lst_Initializer(transforms);
-
-/* Counter for assigning suffix numbers */
-static int sNum = 0;
-
-/*
- * Structure describing an individual suffix.
- */
-typedef struct Suff {
- char *name; /* The suffix itself */
- int nameLen; /* Length of the suffix */
- short flags; /* Type of suffix */
-#define SUFF_INCLUDE 0x01 /* One which is #include'd */
-#define SUFF_LIBRARY 0x02 /* One which contains a library */
-#define SUFF_NULL 0x04 /* The empty suffix */
- struct Path searchPath; /* Path for files with this suffix */
- int sNum; /* The suffix number */
- int refCount; /* Reference count of list membership */
- Lst parents; /* Suffixes we have a transformation to */
- Lst children; /* Suffixes we have a transformation from */
- Lst ref; /* List of lists this suffix is referenced */
-} Suff;
-
-/*
- * Structure used in the search for implied sources.
- */
-typedef struct Src {
- char *file; /* The file to look for */
- char *pref; /* Prefix from which file was formed */
- Suff *suff; /* The suffix on the file */
- struct Src *parent; /* The Src for which this is a source */
- GNode *node; /* The node describing the file */
- int children; /* Count of existing children (so we don't free
- * this thing too early or never nuke it) */
-#ifdef DEBUG_SRC
- Lst cp; /* Debug; children list */
-#endif
-} Src;
-
-/* The NULL suffix for this run */
-static Suff *suffNull;
-
-/* The empty suffix required for POSIX single-suffix transformation rules */
-static Suff *emptySuff;
-
-static void SuffFindDeps(GNode *, Lst *);
-
-
-/*-
- *-----------------------------------------------------------------------
- * SuffSuffIsSuffix --
- * See if suff is a suffix of str.
- *
- * Results:
- * NULL if it ain't, pointer to character in str before suffix if
- * it is.
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-static char *
-SuffSuffIsSuffix(const Suff *s, char *str)
-{
- const char *p1; /* Pointer into suffix name */
- char *p2; /* Pointer into string being examined */
- size_t len;
-
- len = strlen(str);
- p1 = s->name + s->nameLen;
- p2 = str + len;
-
- while (p1 >= s->name && len > 0 && *p1 == *p2) {
- p1--;
- p2--;
- len--;
- }
-
- return (p1 == s->name - 1 ? p2 : NULL);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffSuffFind --
- * Find a suffix given its name.
- *
- * Results:
- * The suffix or NULL.
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-static Suff *
-SuffSuffFind(const char *s)
-{
- LstNode *ln;
-
- LST_FOREACH(ln, &sufflist) {
- if (strcmp(s, ((const Suff *)Lst_Datum(ln))->name) == 0)
- return (Lst_Datum(ln));
- }
- return (NULL);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffTransFind
- * Find a transform.
- *
- * Results:
- * transform or NULL.
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-static GNode *
-SuffTransFind(const char *name)
-{
- LstNode *ln;
-
- LST_FOREACH(ln, &transforms) {
- if (strcmp(name, ((const GNode *)Lst_Datum(ln))->name) == 0)
- return (Lst_Datum(ln));
- }
- return (NULL);
-}
-
- /*********** Maintenance Functions ************/
-
-#if 0
-/*
- * Keep this function for now until it is clear why a .SUFFIXES: doesn't
- * actually delete the suffixes but just puts them on the suffClean list.
- */
-/*-
- *-----------------------------------------------------------------------
- * SuffFree --
- * Free up all memory associated with the given suffix structure.
- *
- * Results:
- * none
- *
- * Side Effects:
- * the suffix entry is detroyed
- *-----------------------------------------------------------------------
- */
-static void
-SuffFree(void *sp)
-{
- Suff *s = sp;
-
- if (s == suffNull)
- suffNull = NULL;
-
- if (s == emptySuff)
- emptySuff = NULL;
-
- Lst_Destroy(&s->ref, NOFREE);
- Lst_Destroy(&s->children, NOFREE);
- Lst_Destroy(&s->parents, NOFREE);
- Lst_Destroy(&s->searchPath, Dir_Destroy);
-
- free(s->name);
- free(s);
-}
-#endif
-
-/*-
- *-----------------------------------------------------------------------
- * SuffRemove --
- * Remove the suffix into the list
- *
- * Results:
- * None
- *
- * Side Effects:
- * The reference count for the suffix is decremented
- *-----------------------------------------------------------------------
- */
-static void
-SuffRemove(Lst *l, Suff *s)
-{
- LstNode *ln = Lst_Member(l, s);
-
- if (ln != NULL) {
- Lst_Remove(l, ln);
- s->refCount--;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffInsert --
- * Insert the suffix into the list keeping the list ordered by suffix
- * numbers.
- *
- * Results:
- * None
- *
- * Side Effects:
- * The reference count of the suffix is incremented
- *-----------------------------------------------------------------------
- */
-static void
-SuffInsert(Lst *l, Suff *s)
-{
- LstNode *ln; /* current element in l we're examining */
- Suff *s2; /* the suffix descriptor in this element */
-
- s2 = NULL;
- for (ln = Lst_First(l); ln != NULL; ln = Lst_Succ(ln)) {
- s2 = Lst_Datum(ln);
- if (s2->sNum >= s->sNum)
- break;
- }
- if (s2 == NULL) {
- DEBUGF(SUFF, ("inserting an empty list?..."));
- }
-
- DEBUGF(SUFF, ("inserting %s(%d)...", s->name, s->sNum));
- if (ln == NULL) {
- DEBUGF(SUFF, ("at end of list\n"));
- Lst_AtEnd(l, s);
- s->refCount++;
- Lst_AtEnd(&s->ref, l);
- } else if (s2->sNum != s->sNum) {
- DEBUGF(SUFF, ("before %s(%d)\n", s2->name, s2->sNum));
- Lst_Insert(l, ln, s);
- s->refCount++;
- Lst_AtEnd(&s->ref, l);
- } else {
- DEBUGF(SUFF, ("already there\n"));
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_ClearSuffixes --
- * This is gross. Nuke the list of suffixes but keep all transformation
- * rules around. The transformation graph is destroyed in this process,
- * but we leave the list of rules so when a new graph is formed the rules
- * will remain.
- * This function is called from the parse module when a
- * .SUFFIXES:\n line is encountered.
- *
- * Results:
- * none
- *
- * Side Effects:
- * the sufflist and its graph nodes are destroyed
- *-----------------------------------------------------------------------
- */
-void
-Suff_ClearSuffixes(void)
-{
-
- Lst_Concat(&suffClean, &sufflist, LST_CONCLINK);
-
- sNum = 1;
- suffNull = emptySuff;
- /*
- * Clear suffNull's children list (the other suffixes are built new, but
- * suffNull is used as is).
- * NOFREE is used because all suffixes are are on the suffClean list.
- * suffNull should not have parents.
- */
- Lst_Destroy(&suffNull->children, NOFREE);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffParseTransform --
- * Parse a transformation string to find its two component suffixes.
- *
- * Results:
- * TRUE if the string is a valid transformation and FALSE otherwise.
- *
- * Side Effects:
- * The passed pointers are overwritten.
- *
- *-----------------------------------------------------------------------
- */
-static Boolean
-SuffParseTransform(char *str, Suff **srcPtr, Suff **targPtr)
-{
- LstNode *srcLn; /* element in suffix list of trans source*/
- Suff *src; /* Source of transformation */
- char *str2; /* Extra pointer (maybe target suffix) */
- LstNode *singleLn; /* element in suffix list of any suffix
- * that exactly matches str */
- Suff *single = NULL; /* Source of possible transformation to
- * null suffix */
-
- singleLn = NULL;
-
- /*
- * Loop looking first for a suffix that matches the start of the
- * string and then for one that exactly matches the rest of it. If
- * we can find two that meet these criteria, we've successfully
- * parsed the string.
- */
- srcLn = Lst_First(&sufflist);
- for (;;) {
- /* advance to next possible suffix */
- while (srcLn != NULL) {
- src = Lst_Datum(srcLn);
- if (strncmp(str, src->name, strlen(src->name)) == 0)
- break;
- srcLn = LST_NEXT(srcLn);
- }
-
- if (srcLn == NULL) {
- /*
- * Ran out of source suffixes -- no such rule
- */
- if (singleLn != NULL) {
- /*
- * Not so fast Mr. Smith! There was a suffix
- * that encompassed the entire string, so we
- * assume it was a transformation to the null
- * suffix (thank you POSIX). We still prefer to
- * find a double rule over a singleton, hence we
- * leave this check until the end.
- *
- * XXX: Use emptySuff over suffNull?
- */
- *srcPtr = single;
- *targPtr = suffNull;
- return (TRUE);
- }
- return (FALSE);
- }
- str2 = str + src->nameLen;
- if (*str2 == '\0') {
- single = src;
- singleLn = srcLn;
- } else {
-
- *targPtr = SuffSuffFind(str2);
- if (*targPtr != NULL) {
- *srcPtr = src;
- return (TRUE);
- }
- }
- /* next one */
- srcLn = LST_NEXT(srcLn);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_IsTransform --
- * Return TRUE if the given string is a transformation rule
- *
- *
- * Results:
- * TRUE if the string is a concatenation of two known suffixes.
- * FALSE otherwise
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-Boolean
-Suff_IsTransform(char *str)
-{
- Suff *src, *targ;
-
- return (SuffParseTransform(str, &src, &targ));
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_AddTransform --
- * Add the transformation rule described by the line to the
- * list of rules and place the transformation itself in the graph
- *
- * Results:
- * The node created for the transformation in the transforms list
- *
- * Side Effects:
- * The node is placed on the end of the transforms Lst and links are
- * made between the two suffixes mentioned in the target name
- *-----------------------------------------------------------------------
- */
-GNode *
-Suff_AddTransform(char *line)
-{
- GNode *gn; /* GNode of transformation rule */
- Suff *s; /* source suffix */
- Suff *t; /* target suffix */
-
- s = t = NULL; /* silence gcc */
- gn = SuffTransFind(line);
- if (gn == NULL) {
- /*
- * Make a new graph node for the transformation.
- * It will be filled in by the Parse module.
- */
- gn = Targ_NewGN(line);
- Lst_AtEnd(&transforms, gn);
- } else {
- /*
- * New specification for transformation rule. Just nuke the
- * old list of commands so they can be filled in again...
- * We don't actually free the commands themselves, because a
- * given command can be attached to several different
- * transformations.
- */
- Lst_Destroy(&gn->commands, NOFREE);
- Lst_Destroy(&gn->children, NOFREE);
- }
-
- gn->type = OP_TRANSFORM;
-
- SuffParseTransform(line, &s, &t);
-
- /*
- * link the two together in the proper relationship and order
- */
- DEBUGF(SUFF, ("defining transformation from `%s' to `%s'\n",
- s->name, t->name));
- SuffInsert(&t->children, s);
- SuffInsert(&s->parents, t);
-
- return (gn);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_EndTransform --
- * Handle the finish of a transformation definition, removing the
- * transformation from the graph if it has neither commands nor
- * sources. This is called from the Parse module at the end of
- * a dependency block.
- *
- * Side Effects:
- * If the node has no commands or children, the children and parents
- * lists of the affected suffices are altered.
- *
- *-----------------------------------------------------------------------
- */
-void
-Suff_EndTransform(const GNode *gn)
-{
- Suff *s, *t;
-
- if (!Lst_IsEmpty(&gn->commands) || !Lst_IsEmpty(&gn->children)) {
- DEBUGF(SUFF, ("transformation %s complete\n", gn->name));
- return;
- }
-
- /*
- * SuffParseTransform() may fail for special rules which are not
- * actual transformation rules (e.g., .DEFAULT).
- */
- if (!SuffParseTransform(gn->name, &s, &t))
- return;
-
- DEBUGF(SUFF, ("deleting transformation from `%s' to `%s'\n",
- s->name, t->name));
-
- /*
- * Remove the source from the target's children list. We check
- * for a NULL return to handle a beanhead saying something like
- * .c.o .c.o:
- *
- * We'll be called twice when the next target is seen, but .c
- * and .o are only linked once...
- */
- SuffRemove(&t->children, s);
-
- /*
- * Remove the target from the source's parents list
- */
- SuffRemove(&s->parents, t);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffRebuildGraph --
- * Called from Suff_AddSuffix via LST_FOREACH to search through the
- * list of existing transformation rules and rebuild the transformation
- * graph when it has been destroyed by Suff_ClearSuffixes. If the
- * given rule is a transformation involving this suffix and another,
- * existing suffix, the proper relationship is established between
- * the two.
- *
- * Side Effects:
- * The appropriate links will be made between this suffix and
- * others if transformation rules exist for it.
- *
- *-----------------------------------------------------------------------
- */
-static void
-SuffRebuildGraph(const GNode *transform, Suff *s)
-{
- char *cp;
- Suff *s2 = NULL;
-
- /*
- * First see if it is a transformation from this suffix.
- */
- if (strncmp(transform->name, s->name, strlen(s->name)) == 0) {
- cp = transform->name + strlen(s->name);
-
- if (cp[0] == '\0') /* null rule */
- s2 = suffNull;
- else
- s2 = SuffSuffFind(cp);
- if (s2 != NULL) {
- /*
- * Found target. Link in and return, since it can't be
- * anything else.
- */
- SuffInsert(&s2->children, s);
- SuffInsert(&s->parents, s2);
- return;
- }
- }
-
- /*
- * Not from, maybe to?
- */
- cp = SuffSuffIsSuffix(s, transform->name);
- if (cp != NULL) {
- /*
- * Null-terminate the source suffix in order to find it.
- */
- cp[1] = '\0';
- s2 = SuffSuffFind(transform->name);
-
- /*
- * Replace the start of the target suffix
- */
- cp[1] = s->name[0];
- if (s2 != NULL) {
- /*
- * Found it -- establish the proper relationship
- */
- SuffInsert(&s->children, s2);
- SuffInsert(&s2->parents, s);
- }
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_AddSuffix --
- * Add the suffix in string to the end of the list of known suffixes.
- * Should we restructure the suffix graph? Make doesn't...
- *
- * Results:
- * None
- *
- * Side Effects:
- * A GNode is created for the suffix and a Suff structure is created and
- * added to the suffixes list unless the suffix was already known.
- *-----------------------------------------------------------------------
- */
-void
-Suff_AddSuffix(char *str)
-{
- Suff *s; /* new suffix descriptor */
- LstNode *ln;
-
- if (SuffSuffFind(str) != NULL)
- /*
- * Already known
- */
- return;
-
- s = emalloc(sizeof(Suff));
-
- s->name = estrdup(str);
- s->nameLen = strlen(s->name);
- TAILQ_INIT(&s->searchPath);
- Lst_Init(&s->children);
- Lst_Init(&s->parents);
- Lst_Init(&s->ref);
- s->sNum = sNum++;
- s->flags = 0;
- s->refCount = 0;
-
- Lst_AtEnd(&sufflist, s);
-
- /*
- * Look for any existing transformations from or to this suffix.
- * XXX: Only do this after a Suff_ClearSuffixes?
- */
- LST_FOREACH(ln, &transforms)
- SuffRebuildGraph(Lst_Datum(ln), s);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_GetPath --
- * Return the search path for the given suffix, if it's defined.
- *
- * Results:
- * The searchPath for the desired suffix or NULL if the suffix isn't
- * defined.
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-struct Path *
-Suff_GetPath(char *sname)
-{
- Suff *s;
-
- s = SuffSuffFind(sname);
- if (s == NULL)
- return (NULL);
- return (&s->searchPath);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_DoPaths --
- * Extend the search paths for all suffixes to include the default
- * search path.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The searchPath field of all the suffixes is extended by the
- * directories in dirSearchPath. If paths were specified for the
- * ".h" suffix, the directories are stuffed into a global variable
- * called ".INCLUDES" with each directory preceded by a -I. The same
- * is done for the ".a" suffix, except the variable is called
- * ".LIBS" and the flag is -L.
- *-----------------------------------------------------------------------
- */
-void
-Suff_DoPaths(void)
-{
- Suff *s;
- LstNode *ln;
- char *ptr;
- struct Path inIncludes; /* Cumulative .INCLUDES path */
- struct Path inLibs; /* Cumulative .LIBS path */
-
- TAILQ_INIT(&inIncludes);
- TAILQ_INIT(&inLibs);
-
- for (ln = Lst_First(&sufflist); ln != NULL; ln = Lst_Succ(ln)) {
- s = Lst_Datum(ln);
-#ifdef INCLUDES
- if (s->flags & SUFF_INCLUDE) {
- Path_Concat(&inIncludes, &s->searchPath);
- }
-#endif /* INCLUDES */
-#ifdef LIBRARIES
- if (s->flags & SUFF_LIBRARY) {
- Path_Concat(&inLibs, &s->searchPath);
- }
-#endif /* LIBRARIES */
- Path_Concat(&s->searchPath, &dirSearchPath);
- }
-
- ptr = Path_MakeFlags("-I", &inIncludes);
- Var_SetGlobal(".INCLUDES", ptr);
- free(ptr);
-
- ptr = Path_MakeFlags("-L", &inLibs);
- Var_SetGlobal(".LIBS", ptr);
- free(ptr);
-
- Path_Clear(&inIncludes);
- Path_Clear(&inLibs);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_AddInclude --
- * Add the given suffix as a type of file which gets included.
- * Called from the parse module when a .INCLUDES line is parsed.
- * The suffix must have already been defined.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The SUFF_INCLUDE bit is set in the suffix's flags field
- *
- *-----------------------------------------------------------------------
- */
-void
-Suff_AddInclude(char *sname)
-{
- Suff *s;
-
- if ((s = SuffSuffFind(sname)) != NULL)
- s->flags |= SUFF_INCLUDE;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_AddLib --
- * Add the given suffix as a type of file which is a library.
- * Called from the parse module when parsing a .LIBS line. The
- * suffix must have been defined via .SUFFIXES before this is
- * called.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The SUFF_LIBRARY bit is set in the suffix's flags field
- *
- *-----------------------------------------------------------------------
- */
-void
-Suff_AddLib(char *sname)
-{
- Suff *s;
-
- if ((s = SuffSuffFind(sname)) != NULL)
- s->flags |= SUFF_LIBRARY;
-}
-
-/*
- * Create a new Src structure
- */
-static Src *
-SuffSrcCreate(char *file, char *prefix, Suff *suff, Src *parent, GNode *node)
-{
- Src *s;
-
- s = emalloc(sizeof(*s));
- s->file = file;
- s->pref = prefix;
- s->suff = suff;
- s->parent = parent;
- s->node = node;
- s->children = 0;
-
-#ifdef DEBUG_SRC
- Lst_Init(&s->cp);
-#endif
-
- return (s);
-}
-
- /********** Implicit Source Search Functions *********/
-
-/*-
- *-----------------------------------------------------------------------
- * SuffAddLevel --
- * Add all the children of targ as Src structures to the given list:
- * Add a suffix as a Src structure to the given list with its parent
- * being the given Src structure. If the suffix is the null suffix,
- * the prefix is used unaltered as the file name in the Src structure.
- *
- * Results:
- * None
- *
- * Side Effects:
- * Lots of structures are created and added to the list
- *-----------------------------------------------------------------------
- */
-static void
-SuffAddLevel(Lst *l, Src *targ)
-{
- LstNode *ln;
- Suff *suff;
- Src *s2;
-#ifdef DEBUG_SRC
- const LstNode *ln1;
-#endif
-
- LST_FOREACH(ln, &targ->suff->children) {
- suff = Lst_Datum(ln);
-
- if ((suff->flags & SUFF_NULL) && *suff->name != '\0') {
- /*
- * If the suffix has been marked as the NULL suffix,
- * also create a Src structure for a file with no suffix
- * attached. Two birds, and all that...
- */
- s2 = SuffSrcCreate(estrdup(targ->pref), targ->pref,
- suff, targ, NULL);
- suff->refCount++;
- targ->children += 1;
- Lst_AtEnd(l, s2);
-#ifdef DEBUG_SRC
- Lst_AtEnd(&targ->cp, s2);
- printf("1 add %p %p to %p:", targ, s2, l);
- LST_FOREACH(ln1, l)
- printf("%p ", (const void *)Lst_Datum(ln1));
- printf("\n");
-#endif
- }
- s2 = SuffSrcCreate(str_concat(targ->pref, suff->name, 0),
- targ->pref, suff, targ, NULL);
- suff->refCount++;
- targ->children += 1;
- Lst_AtEnd(l, s2);
-#ifdef DEBUG_SRC
- Lst_AtEnd(&targ->cp, s2);
- printf("2 add %p %p to %p:", targ, s2, l);
- LST_FOREACH(ln1, l)
- printf("%p ", (const void *)Lst_Datum(ln1));
- printf("\n");
-#endif
- }
-}
-
-/*-
- *----------------------------------------------------------------------
- * SuffRemoveSrc --
- * Free all src structures in list that don't have a reference count
- * XXX this actually frees only the first of these.
- *
- * Results:
- * True if a src was removed
- *
- * Side Effects:
- * The memory is free'd.
- *----------------------------------------------------------------------
- */
-static int
-SuffRemoveSrc(Lst *l)
-{
- LstNode *ln, *ln1;
- Src *s;
- int t = 0;
-
-#ifdef DEBUG_SRC
- printf("cleaning %lx: ", (unsigned long) l);
- LST_FOREACH(ln, l)
- printf("%p ", (const void *)Lst_Datum(ln));
- printf("\n");
-#endif
-
- for (ln = Lst_First(l); ln != NULL; ln = ln1) {
- ln1 = Lst_Succ(ln);
-
- s = (Src *)Lst_Datum(ln);
- if (s->children == 0) {
- free(s->file);
- if (!s->parent)
- free(s->pref);
- else {
-#ifdef DEBUG_SRC
- LstNode *ln = Lst_Member(&s->parent->cp, s);
- if (ln != NULL)
- Lst_Remove(&s->parent->cp, ln);
-#endif
- --s->parent->children;
- }
-#ifdef DEBUG_SRC
- printf("free: [l=%p] p=%p %d\n", l, s, s->children);
- Lst_Destroy(&s->cp, NOFREE);
-#endif
- Lst_Remove(l, ln);
- free(s);
- t |= 1;
- return (TRUE);
- }
-#ifdef DEBUG_SRC
- else {
- const LstNode *tln;
-
- printf("keep: [l=%p] p=%p %d: ", l, s, s->children);
- LST_FOREACH(tln, &s->cp)
- printf("%p ", (const void *)Lst_Datum(tln));
- printf("\n");
- }
-#endif
- }
-
- return (t);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffFindThem --
- * Find the first existing file/target in the list srcs
- *
- * Results:
- * The lowest structure in the chain of transformations
- *
- * Side Effects:
- * None
- *-----------------------------------------------------------------------
- */
-static Src *
-SuffFindThem(Lst *srcs, Lst *slst)
-{
- Src *s; /* current Src */
- Src *rs; /* returned Src */
- char *ptr;
-
- rs = NULL;
-
- while (!Lst_IsEmpty (srcs)) {
- s = Lst_DeQueue(srcs);
-
- DEBUGF(SUFF, ("\ttrying %s...", s->file));
-
- /*
- * A file is considered to exist if either a node exists in the
- * graph for it or the file actually exists.
- */
- if (Targ_FindNode(s->file, TARG_NOCREATE) != NULL) {
-#ifdef DEBUG_SRC
- printf("remove %p from %p\n", s, srcs);
-#endif
- rs = s;
- break;
- }
-
- if ((ptr = Path_FindFile(s->file,
- &s->suff->searchPath)) != NULL) {
- rs = s;
-#ifdef DEBUG_SRC
- printf("remove %p from %p\n", s, srcs);
-#endif
- free(ptr);
- break;
- }
-
- DEBUGF(SUFF, ("not there\n"));
-
- SuffAddLevel(srcs, s);
- Lst_AtEnd(slst, s);
- }
-
- if (rs) {
- DEBUGF(SUFF, ("got it\n"));
- }
- return (rs);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffFindCmds --
- * See if any of the children of the target in the Src structure is
- * one from which the target can be transformed. If there is one,
- * a Src structure is put together for it and returned.
- *
- * Results:
- * The Src structure of the "winning" child, or NULL if no such beast.
- *
- * Side Effects:
- * A Src structure may be allocated.
- *
- *-----------------------------------------------------------------------
- */
-static Src *
-SuffFindCmds(Src *targ, Lst *slst)
-{
- LstNode *ln; /* General-purpose list node */
- GNode *t; /* Target GNode */
- GNode *s; /* Source GNode */
- int prefLen;/* The length of the defined prefix */
- Suff *suff; /* Suffix on matching beastie */
- Src *ret; /* Return value */
- char *cp;
-
- t = targ->node;
- prefLen = strlen(targ->pref);
-
- for (ln = Lst_First(&t->children); ln != NULL; ln = Lst_Succ(ln)) {
- s = Lst_Datum(ln);
-
- cp = strrchr(s->name, '/');
- if (cp == NULL) {
- cp = s->name;
- } else {
- cp++;
- }
- if (strncmp(cp, targ->pref, prefLen) == 0) {
- /*
- * The node matches the prefix ok, see if it has
- * a known suffix.
- */
- suff = SuffSuffFind(&cp[prefLen]);
- if (suff != NULL) {
- /*
- * It even has a known suffix, see if there's
- * a transformation defined between the node's
- * suffix and the target's suffix.
- *
- * XXX: Handle multi-stage transformations
- * here, too.
- */
- if (Lst_Member(&suff->parents,
- targ->suff) != NULL) {
- /*
- * Hot Damn! Create a new Src structure
- * to describe this transformation
- * (making sure to duplicate the
- * source node's name so Suff_FindDeps
- * can free it again (ick)), and return
- * the new structure.
- */
- ret = SuffSrcCreate(estrdup(s->name),
- targ->pref, suff, targ, s);
- suff->refCount++;
- targ->children += 1;
-#ifdef DEBUG_SRC
- printf("3 add %p %p\n", &targ, ret);
- Lst_AtEnd(&targ->cp, ret);
-#endif
- Lst_AtEnd(slst, ret);
- DEBUGF(SUFF, ("\tusing existing source "
- "%s\n", s->name));
- return (ret);
- }
- }
- }
- }
- return (NULL);
-}
-
-/*-
- * The child node contains variable references. Expand them and return
- * a list of expansions.
- */
-static void
-SuffExpandVariables(GNode *parent, GNode *child, Lst *members)
-{
- Buffer *buf;
- char *cp;
- char *start;
-
- Lst_Init(members);
-
- DEBUGF(SUFF, ("Expanding \"%s\"...", child->name));
- buf = Var_Subst(child->name, parent, TRUE);
- cp = Buf_Data(buf);
-
- if (child->type & OP_ARCHV) {
- /*
- * Node was an archive(member) target, so we
- * want to call on the Arch module to find the
- * nodes for us, expanding variables in the
- * parent's context.
- */
- Arch_ParseArchive(&cp, members, parent);
- Buf_Destroy(buf, TRUE);
- return;
- }
- /*
- * Break the result into a vector of strings whose nodes we can find,
- * then add those nodes to the members list. Unfortunately, we can't use
- * brk_string b/c it doesn't understand about variable specifications
- * with spaces in them... XXX
- */
- for (start = cp; *start == ' ' || *start == '\t'; start++)
- ;
-
- for (cp = start; *cp != '\0'; cp++) {
- if (*cp == ' ' || *cp == '\t') {
- /*
- * White-space -- terminate element, find the node,
- * add it, skip any further spaces.
- */
- *cp++ = '\0';
- Lst_AtEnd(members, Targ_FindNode(start, TARG_CREATE));
-
- while (*cp == ' ' || *cp == '\t') {
- cp++;
- }
- /*
- * Adjust cp for increment at
- * start of loop, but set start
- * to first non-space.
- */
- start = cp--;
-
- } else if (*cp == '$') {
- /*
- * Start of a variable spec -- contact variable module
- * to find the end so we can skip over it.
- */
- char *junk;
- size_t len = 0;
- Boolean doFree;
-
- junk = Var_Parse(cp, parent, TRUE, &len, &doFree);
- if (junk != var_Error) {
- cp += len - 1;
- }
- if (doFree) {
- free(junk);
- }
-
- } else if (*cp == '\\' && *cp != '\0') {
- /*
- * Escaped something -- skip over it
- */
- cp++;
- }
- }
-
- if (cp != start) {
- /*
- * Stuff left over -- add it to the
- * list too
- */
- Lst_AtEnd(members, Targ_FindNode(start, TARG_CREATE));
- }
-
- Buf_Destroy(buf, TRUE);
-}
-
-/*-
- * The child node contains wildcards. Expand them and return a list of
- * expansions.
- */
-static void
-SuffExpandWildcards(GNode *child, Lst *members)
-{
- char *cp;
- Lst exp; /* List of expansions */
- LstNode *ln;
- struct Path *path; /* Search path along which to expand */
-
- Lst_Init(members);
-
- /*
- * Find a path along which to expand the word.
- *
- * If the word has a known suffix, use that path.
- * If it has no known suffix and we're allowed to use the null
- * suffix, use its path.
- * Else use the default system search path.
- */
- LST_FOREACH(ln, &sufflist) {
- if (SuffSuffIsSuffix(Lst_Datum(ln), child->name) != NULL)
- break;
- }
-
- DEBUGF(SUFF, ("Wildcard expanding \"%s\"...", child->name));
-
- if (ln != NULL) {
- Suff *s = Lst_Datum(ln);
-
- DEBUGF(SUFF, ("suffix is \"%s\"...", s->name));
- path = &s->searchPath;
- } else {
- /*
- * Use default search path
- */
- path = &dirSearchPath;
- }
-
- /*
- * Expand the word along the chosen path
- */
- Lst_Init(&exp);
- Path_Expand(child->name, path, &exp);
-
- while (!Lst_IsEmpty(&exp)) {
- /*
- * Fetch next expansion off the list and find its GNode
- */
- cp = Lst_DeQueue(&exp);
-
- DEBUGF(SUFF, ("%s...", cp));
- Lst_AtEnd(members, Targ_FindNode(cp, TARG_CREATE));
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffExpandChildren --
- * Expand the names of any children of a given node that contain
- * variable invocations or file wildcards into actual targets.
- *
- * Results:
- * == 0 (continue)
- *
- * Side Effects:
- * The expanded node is removed from the parent's list of children,
- * and the parent's unmade counter is decremented, but other nodes
- * may be added.
- *
- *-----------------------------------------------------------------------
- */
-static void
-SuffExpandChildren(GNode *parent, LstNode *current)
-{
- GNode *cchild; /* current child */
- GNode *gn;
- LstNode *prev; /* node after which to append new source */
- Lst members; /* expanded nodes */
-
- if (current == NULL) {
- /* start from begin of parent's children list */
- current = Lst_First(&parent->children);
- }
-
- while (current != NULL) {
- cchild = Lst_Datum(current);
-
- /*
- * First do variable expansion -- this takes precedence over
- * wildcard expansion. If the result contains wildcards, they'll
- * be gotten to later since the resulting words are tacked
- * instead of the current child onto the children list.
- *
- * XXXHB what if cchild contains lib.a(t1.o t2.o t3.o) but
- * no $?
- */
- if (strchr(cchild->name, '$') != NULL) {
- SuffExpandVariables(parent, cchild, &members);
-
- } else if (Dir_HasWildcards(cchild->name)) {
- SuffExpandWildcards(cchild, &members);
-
- } else {
- /* nothing special just advance to next child */
- current = LST_NEXT(current);
- continue;
- }
-
- /*
- * New nodes effectively take the place of the child,
- * so place them after the child
- */
- prev = current;
-
- /*
- * Add all new elements to the parent node if they aren't
- * already children of it.
- */
- while(!Lst_IsEmpty(&members)) {
- gn = Lst_DeQueue(&members);
-
- DEBUGF(SUFF, ("%s...", gn->name));
- if (Lst_Member(&parent->children, gn) == NULL) {
- Lst_Append(&parent->children, prev, gn);
- prev = Lst_Succ(prev);
- Lst_AtEnd(&gn->parents, parent);
- parent->unmade++;
- }
- }
-
- /*
- * Now the source is expanded, remove it from the list
- * of children to keep it from being processed.
- * Advance to the next child.
- */
- prev = current;
- current = LST_NEXT(current);
-
- parent->unmade--;
- Lst_Remove(&parent->children, prev);
- DEBUGF(SUFF, ("\n"));
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffApplyTransform --
- * Apply a transformation rule, given the source and target nodes
- * and suffixes.
- *
- * Results:
- * TRUE if successful, FALSE if not.
- *
- * Side Effects:
- * The source and target are linked and the commands from the
- * transformation are added to the target node's commands list.
- * All attributes but OP_DEPMASK and OP_TRANSFORM are applied
- * to the target. The target also inherits all the sources for
- * the transformation rule.
- *
- *-----------------------------------------------------------------------
- */
-static Boolean
-SuffApplyTransform(GNode *tGn, GNode *sGn, Suff *t, Suff *s)
-{
- LstNode *ln; /* General node */
- char *tname; /* Name of transformation rule */
- GNode *gn; /* Node for same */
-
- if (Lst_Member(&tGn->children, sGn) == NULL) {
- /*
- * Not already linked, so form the proper links between the
- * target and source.
- */
- Lst_AtEnd(&tGn->children, sGn);
- Lst_AtEnd(&sGn->parents, tGn);
- tGn->unmade += 1;
- }
-
- if ((sGn->type & OP_OPMASK) == OP_DOUBLEDEP) {
- /*
- * When a :: node is used as the implied source of a node,
- * we have to link all its cohorts in as sources as well. Only
- * the initial sGn gets the target in its iParents list, however
- * as that will be sufficient to get the .IMPSRC variable set
- * for tGn
- */
- for (ln = Lst_First(&sGn->cohorts); ln != NULL;
- ln = Lst_Succ(ln)) {
- gn = Lst_Datum(ln);
-
- if (Lst_Member(&tGn->children, gn) == NULL) {
- /*
- * Not already linked, so form the proper
- * links between the target and source.
- */
- Lst_AtEnd(&tGn->children, gn);
- Lst_AtEnd(&gn->parents, tGn);
- tGn->unmade += 1;
- }
- }
- }
- /*
- * Locate the transformation rule itself
- */
- tname = str_concat(s->name, t->name, 0);
- gn = SuffTransFind(tname);
- free(tname);
-
- if (gn == NULL) {
- /*
- * Not really such a transformation rule (can happen when we're
- * called to link an OP_MEMBER and OP_ARCHV node), so return
- * FALSE.
- */
- return (FALSE);
- }
-
- DEBUGF(SUFF, ("\tapplying %s -> %s to \"%s\"\n",
- s->name, t->name, tGn->name));
-
- /*
- * Record last child for expansion purposes
- */
- ln = Lst_Last(&tGn->children);
-
- /*
- * Pass the buck to Make_HandleUse to apply the rule
- */
- Make_HandleUse(gn, tGn);
-
- /*
- * Deal with wildcards and variables in any acquired sources
- */
- ln = Lst_Succ(ln);
- if (ln != NULL) {
- SuffExpandChildren(tGn, ln);
- }
-
- /*
- * Keep track of another parent to which this beast is transformed so
- * the .IMPSRC variable can be set correctly for the parent.
- */
- Lst_AtEnd(&sGn->iParents, tGn);
-
- return (TRUE);
-}
-
-
-/*-
- *-----------------------------------------------------------------------
- * SuffFindArchiveDeps --
- * Locate dependencies for an OP_ARCHV node.
- *
- * Results:
- * None
- *
- * Side Effects:
- * Same as Suff_FindDeps
- *
- *-----------------------------------------------------------------------
- */
-static void
-SuffFindArchiveDeps(GNode *gn, Lst *slst)
-{
- char *eoarch; /* End of archive portion */
- char *eoname; /* End of member portion */
- char *name; /* Start of member's name */
- GNode *mem; /* Node for member */
- Suff *ms; /* Suffix descriptor for member */
-
- static const char *copy[] = {
- TARGET, /* Must be first */
- PREFIX, /* Must be second */
- };
-
- /*
- * The node is an archive(member) pair. so we must find a
- * suffix for both of them.
- */
- eoarch = strchr(gn->name, '(');
- eoname = strchr(eoarch, ')');
-
- *eoname = '\0'; /* Nuke parentheses during suffix search */
- *eoarch = '\0'; /* So a suffix can be found */
-
- name = eoarch + 1;
-
- /*
- * To simplify things, call Suff_FindDeps recursively on the member now,
- * so we can simply compare the member's .PREFIX and .TARGET variables
- * to locate its suffix. This allows us to figure out the suffix to
- * use for the archive without having to do a quadratic search over the
- * suffix list, backtracking for each one...
- */
- mem = Targ_FindNode(name, TARG_CREATE);
- SuffFindDeps(mem, slst);
-
- /*
- * Create the link between the two nodes right off
- */
- if (Lst_Member(&gn->children, mem) == NULL) {
- Lst_AtEnd(&gn->children, mem);
- Lst_AtEnd(&mem->parents, gn);
- gn->unmade += 1;
- }
-
- /*
- * Copy in the variables from the member node to this one.
- */
- Var_Set(copy[1], Var_Value(copy[1], mem), gn);
- Var_Set(copy[0], Var_Value(copy[0], mem), gn);
-
- ms = mem->suffix;
- if (ms == NULL) {
- /*
- * Didn't know what it was -- use .NULL suffix if not in
- * make mode
- */
- DEBUGF(SUFF, ("using null suffix\n"));
- ms = suffNull;
- }
-
- /*
- * Set the other two local variables required for this target.
- */
- Var_Set(MEMBER, name, gn);
- Var_Set(ARCHIVE, gn->name, gn);
-
- if (ms != NULL) {
- /*
- * Member has a known suffix, so look for a transformation rule
- * from it to a possible suffix of the archive. Rather than
- * searching through the entire list, we just look at suffixes
- * to which the member's suffix may be transformed...
- */
- LstNode *ln;
-
- /*
- * Use first matching suffix...
- */
- LST_FOREACH(ln, &ms->parents) {
- if (SuffSuffIsSuffix(Lst_Datum(ln), gn->name) != NULL)
- break;
- }
-
- if (ln != NULL) {
- /*
- * Got one -- apply it
- */
- if (!SuffApplyTransform(gn, mem, Lst_Datum(ln), ms)) {
- DEBUGF(SUFF, ("\tNo transformation from "
- "%s -> %s\n", ms->name,
- ((Suff *)Lst_Datum(ln))->name));
- }
- }
- }
-
- /*
- * Replace the opening and closing parens now we've no need
- * of the separate pieces.
- */
- *eoarch = '(';
- *eoname = ')';
-
- /*
- * Pretend gn appeared to the left of a dependency operator so
- * the user needn't provide a transformation from the member to the
- * archive.
- */
- if (OP_NOP(gn->type)) {
- gn->type |= OP_DEPENDS;
- }
-
- /*
- * Flag the member as such so we remember to look in the archive for
- * its modification time.
- */
- mem->type |= OP_MEMBER;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SuffFindNormalDeps --
- * Locate implicit dependencies for regular targets.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Same as Suff_FindDeps...
- *
- *-----------------------------------------------------------------------
- */
-static void
-SuffFindNormalDeps(GNode *gn, Lst *slst)
-{
- char *eoname; /* End of name */
- char *sopref; /* Start of prefix */
- LstNode *ln; /* Next suffix node to check */
- Lst srcs; /* List of sources at which to look */
- Lst targs; /* List of targets to which things can be
- * transformed. They all have the same file,
- * but different suff and pref fields */
- Src *bottom; /* Start of found transformation path */
- Src *src; /* General Src pointer */
- char *pref; /* Prefix to use */
- Src *targ; /* General Src target pointer */
-
- eoname = gn->name + strlen(gn->name);
- sopref = gn->name;
-
- /*
- * Begin at the beginning...
- */
- ln = Lst_First(&sufflist);
- Lst_Init(&srcs);
- Lst_Init(&targs);
-
- /*
- * We're caught in a catch-22 here. On the one hand, we want to use any
- * transformation implied by the target's sources, but we can't examine
- * the sources until we've expanded any variables/wildcards they may
- * hold, and we can't do that until we've set up the target's local
- * variables and we can't do that until we know what the proper suffix
- * for the target is (in case there are two suffixes one of which is a
- * suffix of the other) and we can't know that until we've found its
- * implied source, which we may not want to use if there's an existing
- * source that implies a different transformation.
- *
- * In an attempt to get around this, which may not work all the time,
- * but should work most of the time, we look for implied sources first,
- * checking transformations to all possible suffixes of the target,
- * use what we find to set the target's local variables, expand the
- * children, then look for any overriding transformations they imply.
- * Should we find one, we discard the one we found before.
- */
-
- while (ln != NULL) {
- /*
- * Look for next possible suffix...
- */
- while (ln != NULL) {
- if (SuffSuffIsSuffix(Lst_Datum(ln), gn->name) != NULL)
- break;
- ln = LST_NEXT(ln);
- }
-
- if (ln != NULL) {
- int prefLen; /* Length of the prefix */
- Src *target;
-
- /*
- * Allocate a Src structure to which things can be
- * transformed
- */
- target = SuffSrcCreate(estrdup(gn->name), NULL,
- Lst_Datum(ln), NULL, gn);
- target->suff->refCount++;
-
- /*
- * Allocate room for the prefix, whose end is found
- * by subtracting the length of the suffix from
- * the end of the name.
- */
- prefLen = (eoname - target->suff->nameLen) - sopref;
- assert(prefLen >= 0);
- target->pref = emalloc(prefLen + 1);
- memcpy(target->pref, sopref, prefLen);
- target->pref[prefLen] = '\0';
-
- /*
- * Add nodes from which the target can be made
- */
- SuffAddLevel(&srcs, target);
-
- /*
- * Record the target so we can nuke it
- */
- Lst_AtEnd(&targs, target);
-
- /*
- * Search from this suffix's successor...
- */
- ln = Lst_Succ(ln);
- }
- }
-
- /*
- * Handle target of unknown suffix...
- */
- if (Lst_IsEmpty(&targs) && suffNull != NULL) {
- DEBUGF(SUFF, ("\tNo known suffix on %s. Using .NULL suffix\n",
- gn->name));
-
- targ = SuffSrcCreate(estrdup(gn->name), estrdup(sopref),
- suffNull, NULL, gn);
- targ->suff->refCount++;
-
- /*
- * Only use the default suffix rules if we don't have commands
- * or dependencies defined for this gnode
- */
- if (Lst_IsEmpty(&gn->commands) && Lst_IsEmpty(&gn->children))
- SuffAddLevel(&srcs, targ);
- else {
- DEBUGF(SUFF, ("not "));
- }
-
- DEBUGF(SUFF, ("adding suffix rules\n"));
-
- Lst_AtEnd(&targs, targ);
- }
-
- /*
- * Using the list of possible sources built up from the target
- * suffix(es), try and find an existing file/target that matches.
- */
- bottom = SuffFindThem(&srcs, slst);
-
- if (bottom == NULL) {
- /*
- * No known transformations -- use the first suffix found for
- * setting the local variables.
- */
- if (!Lst_IsEmpty(&targs)) {
- targ = Lst_Datum(Lst_First(&targs));
- } else {
- targ = NULL;
- }
- } else {
- /*
- * Work up the transformation path to find the suffix of the
- * target to which the transformation was made.
- */
- for (targ = bottom; targ->parent != NULL; targ = targ->parent)
- continue;
- }
-
- /*
- * The .TARGET variable we always set to be the name at this point,
- * since it's only set to the path if the thing is only a source and
- * if it's only a source, it doesn't matter what we put here as far
- * as expanding sources is concerned, since it has none...
- */
- Var_Set(TARGET, gn->name, gn);
-
- pref = (targ != NULL) ? targ->pref : gn->name;
- Var_Set(PREFIX, pref, gn);
-
- /*
- * Now we've got the important local variables set, expand any sources
- * that still contain variables or wildcards in their names.
- */
- SuffExpandChildren(gn, NULL);
-
- if (targ == NULL) {
- DEBUGF(SUFF, ("\tNo valid suffix on %s\n", gn->name));
-
- sfnd_abort:
- /*
- * Deal with finding the thing on the default search path if the
- * node is only a source (not on the lhs of a dependency
- * operator or [XXX] it has neither children or commands).
- */
- if (OP_NOP(gn->type) || (Lst_IsEmpty(&gn->children) &&
- Lst_IsEmpty(&gn->commands))) {
- gn->path = Path_FindFile(gn->name,
- (targ == NULL ? &dirSearchPath :
- &targ->suff->searchPath));
- if (gn->path != NULL) {
- char *ptr;
- Var_Set(TARGET, gn->path, gn);
-
- if (targ != NULL) {
- /*
- * Suffix known for the thing -- trim
- * the suffix off the path to form the
- * proper .PREFIX variable.
- */
- int savep = strlen(gn->path) -
- targ->suff->nameLen;
- char savec;
-
- if (gn->suffix)
- gn->suffix->refCount--;
- gn->suffix = targ->suff;
- gn->suffix->refCount++;
-
- savec = gn->path[savep];
- gn->path[savep] = '\0';
-
- if ((ptr = strrchr(gn->path, '/')) != NULL)
- ptr++;
- else
- ptr = gn->path;
-
- Var_Set(PREFIX, ptr, gn);
-
- gn->path[savep] = savec;
- } else {
- /*
- * The .PREFIX gets the full path if
- * the target has no known suffix.
- */
- if (gn->suffix)
- gn->suffix->refCount--;
- gn->suffix = NULL;
-
- if ((ptr = strrchr(gn->path, '/')) != NULL)
- ptr++;
- else
- ptr = gn->path;
-
- Var_Set(PREFIX, ptr, gn);
- }
- }
- } else {
- /*
- * Not appropriate to search for the thing -- set the
- * path to be the name so Dir_MTime won't go
- * grovelling for it.
- */
- if (gn->suffix)
- gn->suffix->refCount--;
- gn->suffix = (targ == NULL) ? NULL : targ->suff;
- if (gn->suffix)
- gn->suffix->refCount++;
- free(gn->path);
- gn->path = estrdup(gn->name);
- }
-
- goto sfnd_return;
- }
-
- /*
- * If the suffix indicates that the target is a library, mark that in
- * the node's type field.
- */
- if (targ->suff->flags & SUFF_LIBRARY) {
- gn->type |= OP_LIB;
- }
-
- /*
- * Check for overriding transformation rule implied by sources
- */
- if (!Lst_IsEmpty(&gn->children)) {
- src = SuffFindCmds(targ, slst);
-
- if (src != NULL) {
- /*
- * Free up all the Src structures in the
- * transformation path up to, but not including,
- * the parent node.
- */
- while (bottom && bottom->parent != NULL) {
- if (Lst_Member(slst, bottom) == NULL) {
- Lst_AtEnd(slst, bottom);
- }
- bottom = bottom->parent;
- }
- bottom = src;
- }
- }
-
- if (bottom == NULL) {
- /*
- * No idea from where it can come -- return now.
- */
- goto sfnd_abort;
- }
-
- /*
- * We now have a list of Src structures headed by 'bottom' and linked
- * via their 'parent' pointers. What we do next is create links between
- * source and target nodes (which may or may not have been created)
- * and set the necessary local variables in each target. The
- * commands for each target are set from the commands of the
- * transformation rule used to get from the src suffix to the targ
- * suffix. Note that this causes the commands list of the original
- * node, gn, to be replaced by the commands of the final
- * transformation rule. Also, the unmade field of gn is incremented.
- * Etc.
- */
- if (bottom->node == NULL) {
- bottom->node = Targ_FindNode(bottom->file, TARG_CREATE);
- }
-
- for (src = bottom; src->parent != NULL; src = src->parent) {
- targ = src->parent;
-
- if (src->node->suffix)
- src->node->suffix->refCount--;
- src->node->suffix = src->suff;
- src->node->suffix->refCount++;
-
- if (targ->node == NULL) {
- targ->node = Targ_FindNode(targ->file, TARG_CREATE);
- }
-
- SuffApplyTransform(targ->node, src->node,
- targ->suff, src->suff);
-
- if (targ->node != gn) {
- /*
- * Finish off the dependency-search process for any
- * nodes between bottom and gn (no point in questing
- * around the filesystem for their implicit source
- * when it's already known). Note that the node can't
- * have any sources that need expanding, since
- * SuffFindThem will stop on an existing
- * node, so all we need to do is set the standard and
- * System V variables.
- */
- targ->node->type |= OP_DEPS_FOUND;
-
- Var_Set(PREFIX, targ->pref, targ->node);
- Var_Set(TARGET, targ->node->name, targ->node);
- }
- }
-
- if (gn->suffix)
- gn->suffix->refCount--;
- gn->suffix = src->suff;
- gn->suffix->refCount++;
-
- /*
- * So Dir_MTime doesn't go questing for it...
- */
- free(gn->path);
- gn->path = estrdup(gn->name);
-
- /*
- * Nuke the transformation path and the Src structures left over in the
- * two lists.
- */
- sfnd_return:
- if (bottom)
- if (Lst_Member(slst, bottom) == NULL)
- Lst_AtEnd(slst, bottom);
-
- while (SuffRemoveSrc(&srcs) || SuffRemoveSrc(&targs))
- continue;
-
- Lst_Concat(slst, &srcs, LST_CONCLINK);
- Lst_Concat(slst, &targs, LST_CONCLINK);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_FindDeps --
- * Find implicit sources for the target described by the graph node
- * gn
- *
- * Results:
- * Nothing.
- *
- * Side Effects:
- * Nodes are added to the graph below the passed-in node. The nodes
- * are marked to have their IMPSRC variable filled in. The
- * PREFIX variable is set for the given node and all its
- * implied children.
- *
- * Notes:
- * The path found by this target is the shortest path in the
- * transformation graph, which may pass through non-existent targets,
- * to an existing target. The search continues on all paths from the
- * root suffix until a file is found. I.e. if there's a path
- * .o -> .c -> .l -> .l,v from the root and the .l,v file exists but
- * the .c and .l files don't, the search will branch out in
- * all directions from .o and again from all the nodes on the
- * next level until the .l,v node is encountered.
- *
- *-----------------------------------------------------------------------
- */
-void
-Suff_FindDeps(GNode *gn)
-{
-
- SuffFindDeps(gn, &srclist);
- while (SuffRemoveSrc(&srclist))
- continue;
-}
-
-
-static void
-SuffFindDeps(GNode *gn, Lst *slst)
-{
-
- if (gn->type & OP_DEPS_FOUND) {
- /*
- * If dependencies already found, no need to do it again...
- */
- return;
- } else {
- gn->type |= OP_DEPS_FOUND;
- }
-
- DEBUGF(SUFF, ("SuffFindDeps (%s)\n", gn->name));
-
- if (gn->type & OP_ARCHV) {
- SuffFindArchiveDeps(gn, slst);
-
- } else if (gn->type & OP_LIB) {
- /*
- * If the node is a library, it is the arch module's job to find
- * it and set the TARGET variable accordingly. We merely provide
- * the search path, assuming all libraries end in ".a" (if the
- * suffix hasn't been defined, there's nothing we can do for it,
- * so we just set the TARGET variable to the node's name in order
- * to give it a value).
- */
- Suff *s;
-
- s = SuffSuffFind(LIBSUFF);
- if (gn->suffix)
- gn->suffix->refCount--;
- if (s != NULL) {
- gn->suffix = s;
- gn->suffix->refCount++;
- Arch_FindLib(gn, &s->searchPath);
- } else {
- gn->suffix = NULL;
- Var_Set(TARGET, gn->name, gn);
- }
-
- /*
- * Because a library (-lfoo) target doesn't follow the standard
- * filesystem conventions, we don't set the regular variables for
- * the thing. .PREFIX is simply made empty...
- */
- Var_Set(PREFIX, "", gn);
-
- } else {
- SuffFindNormalDeps(gn, slst);
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_SetNull --
- * Define which suffix is the null suffix.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * 'suffNull' is altered.
- *
- * Notes:
- * Need to handle the changing of the null suffix gracefully so the
- * old transformation rules don't just go away.
- *
- *-----------------------------------------------------------------------
- */
-void
-Suff_SetNull(char *name)
-{
- Suff *s;
-
- if ((s = SuffSuffFind(name)) == NULL) {
- Parse_Error(PARSE_WARNING, "Desired null suffix %s "
- "not defined.", name);
- return;
- }
-
- if (suffNull != NULL) {
- suffNull->flags &= ~SUFF_NULL;
- }
- s->flags |= SUFF_NULL;
-
- /*
- * XXX: Here's where the transformation mangling
- * would take place
- */
- suffNull = s;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * Suff_Init --
- * Initialize suffixes module
- *
- * Results:
- * None
- *
- * Side Effects:
- * Many
- *-----------------------------------------------------------------------
- */
-void
-Suff_Init(void)
-{
-
- sNum = 0;
- /*
- * Create null suffix for single-suffix rules (POSIX). The thing doesn't
- * actually go on the suffix list or everyone will think that's its
- * suffix.
- */
- emptySuff = suffNull = emalloc(sizeof(Suff));
-
- suffNull->name = estrdup("");
- suffNull->nameLen = 0;
- TAILQ_INIT(&suffNull->searchPath);
- Path_Concat(&suffNull->searchPath, &dirSearchPath);
- Lst_Init(&suffNull->children);
- Lst_Init(&suffNull->parents);
- Lst_Init(&suffNull->ref);
- suffNull->sNum = sNum++;
- suffNull->flags = SUFF_NULL;
- suffNull->refCount = 1;
-}
-
-/********************* DEBUGGING FUNCTIONS **********************/
-
-void
-Suff_PrintAll(void)
-{
- const LstNode *ln;
- const LstNode *tln;
- const GNode *gn;
- const Suff *s;
-
- static const struct flag2str suff_flags[] = {
- { SUFF_INCLUDE, "INCLUDE" },
- { SUFF_LIBRARY, "LIBRARY" },
- { SUFF_NULL, "NULL" },
- { 0, NULL }
- };
-
- printf("#*** Suffixes:\n");
- LST_FOREACH(ln, &sufflist) {
- s = Lst_Datum(ln);
- printf("# `%s' [%d] ", s->name, s->refCount);
-
- if (s->flags != 0) {
- printf(" ");
- print_flags(stdout, suff_flags, s->flags, 1);
- }
-
- printf("\n#\tTo: ");
- LST_FOREACH(tln, &s->parents)
- printf("`%s' ", ((const Suff *)Lst_Datum(tln))->name);
-
- printf("\n#\tFrom: ");
- LST_FOREACH(tln, &s->children)
- printf("`%s' ", ((const Suff *)Lst_Datum(tln))->name);
-
- printf("\n#\tSearch Path: ");
- Path_Print(&s->searchPath);
-
- printf("\n");
- }
-
- printf("#*** Transformations:\n");
- LST_FOREACH(ln, &transforms) {
- gn = Lst_Datum(ln);
- printf("%-16s: ", gn->name);
- Targ_PrintType(gn->type);
- printf("\n");
- LST_FOREACH(tln, &gn->commands)
- printf("\t%s\n", (const char *)Lst_Datum(tln));
- printf("\n");
- }
-}
diff --git a/usr.bin/make/suff.h b/usr.bin/make/suff.h
deleted file mode 100644
index 9982ab4..0000000
--- a/usr.bin/make/suff.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef suff_h_2d5a821c
-#define suff_h_2d5a821c
-
-struct GNode;
-struct Path;
-
-void Suff_ClearSuffixes(void);
-Boolean Suff_IsTransform(char *);
-struct GNode *Suff_AddTransform(char *);
-void Suff_EndTransform(const struct GNode *);
-void Suff_AddSuffix(char *);
-struct Path *Suff_GetPath(char *);
-void Suff_DoPaths(void);
-void Suff_AddInclude(char *);
-void Suff_AddLib(char *);
-void Suff_FindDeps(struct GNode *);
-void Suff_SetNull(char *);
-void Suff_Init(void);
-void Suff_PrintAll(void);
-
-#endif /* suff_h_2d5a821c */
diff --git a/usr.bin/make/targ.c b/usr.bin/make/targ.c
deleted file mode 100644
index 75ced89..0000000
--- a/usr.bin/make/targ.c
+++ /dev/null
@@ -1,472 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)targ.c 8.2 (Berkeley) 3/19/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * Functions for maintaining the Lst allTargets. Target nodes are
- * kept in two structures: a Lst, maintained by the list library, and a
- * hash table, maintained by the hash library.
- *
- * Interface:
- * Targ_Init Initialization procedure.
- *
- * Targ_NewGN Create a new GNode for the passed target (string).
- * The node is *not* placed in the hash table, though all
- * its fields are initialized.
- *
- * Targ_FindNode Find the node for a given target, creating and storing
- * it if it doesn't exist and the flags are right
- * (TARG_CREATE)
- *
- * Targ_FindList Given a list of names, find nodes for all of them. If a
- * name doesn't exist and the TARG_NOCREATE flag was given,
- * an error message is printed. Else, if a name doesn't
- * exist, its node is created.
- *
- * Targ_Ignore Return TRUE if errors should be ignored when creating
- * the given target.
- *
- * Targ_Silent Return TRUE if we should be silent when creating the
- * given target.
- *
- * Targ_Precious Return TRUE if the target is precious and should not
- * be removed if we are interrupted.
- *
- * Debugging:
- * Targ_PrintGraph Print out the entire graphm all variables and statistics
- * for the directory cache. Should print something for
- * suffixes, too, but...
- */
-
-#include <stdio.h>
-
-#include "dir.h"
-#include "globals.h"
-#include "GNode.h"
-#include "hash.h"
-#include "suff.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/* the list of all targets found so far */
-static Lst allTargets = Lst_Initializer(allTargets);
-
-static Hash_Table targets; /* a hash table of same */
-
-#define HTSIZE 191 /* initial size of hash table */
-
-/**
- * Targ_Init
- * Initialize this module
- *
- * Side Effects:
- * The allTargets list and the targets hash table are initialized
- */
-void
-Targ_Init(void)
-{
-
- Hash_InitTable(&targets, HTSIZE);
-}
-
-/**
- * Targ_NewGN
- * Create and initialize a new graph node
- *
- * Results:
- * An initialized graph node with the name field filled with a copy
- * of the passed name
- *
- * Side Effects:
- * The gnode is added to the list of all gnodes.
- */
-GNode *
-Targ_NewGN(const char *name)
-{
- GNode *gn;
-
- gn = emalloc(sizeof(GNode));
- gn->name = estrdup(name);
- gn->path = NULL;
- if (name[0] == '-' && name[1] == 'l') {
- gn->type = OP_LIB;
- } else {
- gn->type = 0;
- }
- gn->unmade = 0;
- gn->make = FALSE;
- gn->made = UNMADE;
- gn->childMade = FALSE;
- gn->order = 0;
- gn->mtime = gn->cmtime = 0;
- gn->cmtime_gn = NULL;
- Lst_Init(&gn->iParents);
- Lst_Init(&gn->cohorts);
- Lst_Init(&gn->parents);
- Lst_Init(&gn->children);
- Lst_Init(&gn->successors);
- Lst_Init(&gn->preds);
- Lst_Init(&gn->context);
- Lst_Init(&gn->commands);
- gn->suffix = NULL;
-
- return (gn);
-}
-
-/**
- * Targ_FindNode
- * Find a node in the list using the given name for matching
- *
- * Results:
- * The node in the list if it was. If it wasn't, return NULL of
- * flags was TARG_NOCREATE or the newly created and initialized node
- * if it was TARG_CREATE
- *
- * Side Effects:
- * Sometimes a node is created and added to the list
- */
-GNode *
-Targ_FindNode(const char *name, int flags)
-{
- GNode *gn; /* node in that element */
- Hash_Entry *he; /* New or used hash entry for node */
- Boolean isNew; /* Set TRUE if Hash_CreateEntry had to create */
- /* an entry for the node */
-
- if (flags & TARG_CREATE) {
- he = Hash_CreateEntry(&targets, name, &isNew);
- if (isNew) {
- gn = Targ_NewGN(name);
- Hash_SetValue(he, gn);
- Lst_AtEnd(&allTargets, gn);
- }
- } else {
- he = Hash_FindEntry(&targets, name);
- }
-
- if (he == NULL) {
- return (NULL);
- } else {
- return (Hash_GetValue(he));
- }
-}
-
-/**
- * Targ_FindList
- * Make a complete list of GNodes from the given list of names
- *
- * Results:
- * A complete list of graph nodes corresponding to all instances of all
- * the names in names.
- *
- * Side Effects:
- * If flags is TARG_CREATE, nodes will be created for all names in
- * names which do not yet have graph nodes. If flags is TARG_NOCREATE,
- * an error message will be printed for each name which can't be found.
- */
-void
-Targ_FindList(Lst *nodes, Lst *names, int flags)
-{
- LstNode *ln; /* name list element */
- GNode *gn; /* node in tLn */
- char *name;
-
- for (ln = Lst_First(names); ln != NULL; ln = Lst_Succ(ln)) {
- name = Lst_Datum(ln);
- gn = Targ_FindNode(name, flags);
- if (gn != NULL) {
- /*
- * Note: Lst_AtEnd must come before the Lst_Concat so
- * the nodes are added to the list in the order in which
- * they were encountered in the makefile.
- */
- Lst_AtEnd(nodes, gn);
- if (gn->type & OP_DOUBLEDEP) {
- Lst_Concat(nodes, &gn->cohorts, LST_CONCNEW);
- }
-
- } else if (flags == TARG_NOCREATE) {
- Error("\"%s\" -- target unknown.", name);
- }
- }
-}
-
-/**
- * Targ_Ignore
- * Return true if should ignore errors when creating gn
- *
- * Results:
- * TRUE if should ignore errors
- */
-Boolean
-Targ_Ignore(GNode *gn)
-{
-
- if (ignoreErrors || (gn->type & OP_IGNORE)) {
- return (TRUE);
- } else {
- return (FALSE);
- }
-}
-
-/**
- * Targ_Silent
- * Return true if be silent when creating gn
- *
- * Results:
- * TRUE if should be silent
- */
-Boolean
-Targ_Silent(GNode *gn)
-{
-
- if (beSilent || (gn->type & OP_SILENT)) {
- return (TRUE);
- } else {
- return (FALSE);
- }
-}
-
-/**
- * Targ_Precious
- * See if the given target is precious
- *
- * Results:
- * TRUE if it is precious. FALSE otherwise
- */
-Boolean
-Targ_Precious(GNode *gn)
-{
-
- if (allPrecious || (gn->type & (OP_PRECIOUS | OP_DOUBLEDEP))) {
- return (TRUE);
- } else {
- return (FALSE);
- }
-}
-
-static GNode *mainTarg; /* the main target, as set by Targ_SetMain */
-
-/**
- * Targ_SetMain
- * Set our idea of the main target we'll be creating. Used for
- * debugging output.
- *
- * Side Effects:
- * "mainTarg" is set to the main target's node.
- */
-void
-Targ_SetMain(GNode *gn)
-{
-
- mainTarg = gn;
-}
-
-/**
- * Targ_FmtTime
- * Format a modification time in some reasonable way and return it.
- *
- * Results:
- * The time reformatted.
- *
- * Side Effects:
- * The time is placed in a static area, so it is overwritten
- * with each call.
- */
-char *
-Targ_FmtTime(time_t modtime)
-{
- struct tm *parts;
- static char buf[128];
-
- parts = localtime(&modtime);
-
- strftime(buf, sizeof(buf), "%H:%M:%S %b %d, %Y", parts);
- buf[sizeof(buf) - 1] = '\0';
- return (buf);
-}
-
-/**
- * Targ_PrintType
- * Print out a type field giving only those attributes the user can
- * set.
- */
-void
-Targ_PrintType(int type)
-{
- static const struct flag2str type2str[] = {
- { OP_OPTIONAL, ".OPTIONAL" },
- { OP_USE, ".USE" },
- { OP_EXEC, ".EXEC" },
- { OP_IGNORE, ".IGNORE" },
- { OP_PRECIOUS, ".PRECIOUS" },
- { OP_SILENT, ".SILENT" },
- { OP_MAKE, ".MAKE" },
- { OP_JOIN, ".JOIN" },
- { OP_INVISIBLE, ".INVISIBLE" },
- { OP_NOTMAIN, ".NOTMAIN" },
- { OP_PHONY, ".PHONY" },
- { OP_LIB, ".LIB" },
- { OP_MEMBER, ".MEMBER" },
- { OP_ARCHV, ".ARCHV" },
- { 0, NULL }
- };
-
- type &= ~OP_OPMASK;
- if (!DEBUG(TARG))
- type &= ~(OP_ARCHV | OP_LIB | OP_MEMBER);
- print_flags(stdout, type2str, type, 0);
-}
-
-/**
- * TargPrintNode
- * print the contents of a node
- */
-static int
-TargPrintNode(const GNode *gn, int pass)
-{
- const LstNode *tln;
-
- if (!OP_NOP(gn->type)) {
- printf("#\n");
- if (gn == mainTarg) {
- printf("# *** MAIN TARGET ***\n");
- }
- if (pass == 2) {
- if (gn->unmade) {
- printf("# %d unmade children\n", gn->unmade);
- } else {
- printf("# No unmade children\n");
- }
- if (!(gn->type & (OP_JOIN | OP_USE | OP_EXEC))) {
- if (gn->mtime != 0) {
- printf("# last modified %s: %s\n",
- Targ_FmtTime(gn->mtime),
- gn->made == UNMADE ? "unmade" :
- gn->made == MADE ? "made" :
- gn->made == UPTODATE ? "up-to-date":
- "error when made");
- } else if (gn->made != UNMADE) {
- printf("# non-existent (maybe): %s\n",
- gn->made == MADE ? "made" :
- gn->made == UPTODATE ? "up-to-date":
- gn->made == ERROR?"error when made":
- "aborted");
- } else {
- printf("# unmade\n");
- }
- }
- if (!Lst_IsEmpty(&gn->iParents)) {
- printf("# implicit parents: ");
- LST_FOREACH(tln, &gn->iParents)
- printf("%s ", ((const GNode *)
- Lst_Datum(tln))->name);
- printf("\n");
- }
- }
- if (!Lst_IsEmpty(&gn->parents)) {
- printf("# parents: ");
- LST_FOREACH(tln, &gn->parents)
- printf("%s ", ((const GNode *)
- Lst_Datum(tln))->name);
- printf("\n");
- }
-
- printf("%-16s", gn->name);
- switch (gn->type & OP_OPMASK) {
- case OP_DEPENDS:
- printf(": ");
- break;
- case OP_FORCE:
- printf("! ");
- break;
- case OP_DOUBLEDEP:
- printf(":: ");
- break;
- default:
- break;
- }
- Targ_PrintType(gn->type);
- LST_FOREACH(tln, &gn->children)
- printf("%s ", ((const GNode *)Lst_Datum(tln))->name);
- printf("\n");
- LST_FOREACH(tln, &gn->commands)
- printf("\t%s\n", (const char *)Lst_Datum(tln));
- printf("\n\n");
- if (gn->type & OP_DOUBLEDEP) {
- LST_FOREACH(tln, &gn->cohorts)
- TargPrintNode((const GNode *)Lst_Datum(tln),
- pass);
- }
- }
- return (0);
-}
-
-/**
- * Targ_PrintGraph
- * Print the entire graph.
- */
-void
-Targ_PrintGraph(int pass)
-{
- const GNode *gn;
- const LstNode *tln;
-
- printf("#*** Input graph:\n");
- LST_FOREACH(tln, &allTargets)
- TargPrintNode((const GNode *)Lst_Datum(tln), pass);
- printf("\n\n");
-
- printf("#\n# Files that are only sources:\n");
- LST_FOREACH(tln, &allTargets) {
- gn = Lst_Datum(tln);
- if (OP_NOP(gn->type))
- printf("#\t%s [%s]\n", gn->name,
- gn->path ? gn->path : gn->name);
- }
- Var_Dump();
- printf("\n");
- Dir_PrintDirectories();
- printf("\n");
- Suff_PrintAll();
-}
diff --git a/usr.bin/make/targ.h b/usr.bin/make/targ.h
deleted file mode 100644
index 3882833..0000000
--- a/usr.bin/make/targ.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef targ_h_6ded1830
-#define targ_h_6ded1830
-
-#include <time.h>
-
-/*
- * The TARG_ constants are used when calling the Targ_FindNode and
- * Targ_FindList functions in targ.c. They simply tell the functions what to
- * do if the desired node(s) is (are) not found. If the TARG_CREATE constant
- * is given, a new, empty node will be created for the target, placed in the
- * table of all targets and its address returned. If TARG_NOCREATE is given,
- * a NULL pointer will be returned.
- */
-#define TARG_CREATE 0x01 /* create node if not found */
-#define TARG_NOCREATE 0x00 /* don't create it */
-
-struct GNode;
-struct Lst;
-
-void Targ_Init(void);
-struct GNode *Targ_NewGN(const char *);
-struct GNode *Targ_FindNode(const char *, int);
-void Targ_FindList(struct Lst *, struct Lst *, int);
-Boolean Targ_Ignore(struct GNode *);
-Boolean Targ_Silent(struct GNode *);
-Boolean Targ_Precious(struct GNode *);
-void Targ_SetMain(struct GNode *);
-int Targ_PrintCmd(void *, void *);
-char *Targ_FmtTime(time_t);
-void Targ_PrintType(int);
-void Targ_PrintGraph(int);
-
-#endif /* targ_h_6ded1830 */
diff --git a/usr.bin/make/util.c b/usr.bin/make/util.c
deleted file mode 100644
index 3a27b0a..0000000
--- a/usr.bin/make/util.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*-
- * Copyright (c) 2002 Juli Mallett. All rights reserved.
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)main.c 8.3 (Berkeley) 3/19/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*-
- * util.c --
- * General utilitarian routines for make(1).
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <err.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "globals.h"
-#include "job.h"
-#include "targ.h"
-#include "util.h"
-
-static void enomem(void) __dead2;
-
-/*-
- * Debug --
- * Print a debugging message given its format.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The message is printed.
- */
-/* VARARGS */
-void
-Debug(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fflush(stderr);
-}
-
-/*-
- * Print a debugging message given its format and append the current
- * errno description. Terminate with a newline.
- */
-/* VARARGS */
-void
-DebugM(const char *fmt, ...)
-{
- va_list ap;
- int e = errno;
-
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ": %s\n", strerror(e));
- va_end(ap);
- fflush(stderr);
-}
-
-/*-
- * Error --
- * Print an error message given its format.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The message is printed.
- */
-/* VARARGS */
-void
-Error(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fprintf(stderr, "\n");
- fflush(stderr);
-}
-
-/*-
- * Fatal --
- * Produce a Fatal error message. If jobs are running, waits for them
- * to finish.
- *
- * Results:
- * None
- *
- * Side Effects:
- * The program exits
- */
-/* VARARGS */
-void
-Fatal(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- if (jobsRunning)
- Job_Wait();
-
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fprintf(stderr, "\n");
- fflush(stderr);
-
- if (DEBUG(GRAPH2))
- Targ_PrintGraph(2);
- exit(2); /* Not 1 so -q can distinguish error */
-}
-
-/*
- * Punt --
- * Major exception once jobs are being created. Kills all jobs, prints
- * a message and exits.
- *
- * Results:
- * None
- *
- * Side Effects:
- * All children are killed indiscriminately and the program Lib_Exits
- */
-/* VARARGS */
-void
-Punt(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- fprintf(stderr, "make: ");
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fprintf(stderr, "\n");
- fflush(stderr);
-
- DieHorribly();
-}
-
-/*-
- * DieHorribly --
- * Exit without giving a message.
- *
- * Results:
- * None
- *
- * Side Effects:
- * A big one...
- */
-void
-DieHorribly(void)
-{
- if (jobsRunning)
- Job_AbortAll();
- if (DEBUG(GRAPH2))
- Targ_PrintGraph(2);
- exit(2); /* Not 1, so -q can distinguish error */
-}
-
-/*
- * Finish --
- * Called when aborting due to errors in child shell to signal
- * abnormal exit, with the number of errors encountered in Make_Make.
- *
- * Results:
- * None
- *
- * Side Effects:
- * The program exits
- */
-void
-Finish(int errors)
-{
-
- Fatal("%d error%s", errors, errors == 1 ? "" : "s");
-}
-
-/*
- * emalloc --
- * malloc, but die on error.
- */
-void *
-emalloc(size_t len)
-{
- void *p;
-
- if ((p = malloc(len)) == NULL)
- enomem();
- return (p);
-}
-
-/*
- * estrdup --
- * strdup, but die on error.
- */
-char *
-estrdup(const char *str)
-{
- char *p;
-
- if ((p = strdup(str)) == NULL)
- enomem();
- return (p);
-}
-
-/*
- * erealloc --
- * realloc, but die on error.
- */
-void *
-erealloc(void *ptr, size_t size)
-{
-
- if ((ptr = realloc(ptr, size)) == NULL)
- enomem();
- return (ptr);
-}
-
-/*
- * enomem --
- * die when out of memory.
- */
-static void
-enomem(void)
-{
- err(2, NULL);
-}
-
-/*
- * enunlink --
- * Remove a file carefully, avoiding directories.
- */
-int
-eunlink(const char *file)
-{
- struct stat st;
-
- if (lstat(file, &st) == -1)
- return (-1);
-
- if (S_ISDIR(st.st_mode)) {
- errno = EISDIR;
- return (-1);
- }
- return (unlink(file));
-}
-
-/*
- * Convert a flag word to a printable thing and print it
- */
-void
-print_flags(FILE *fp, const struct flag2str *tab, u_int flags, int par)
-{
- int first = 1;
-
- if (par)
- fprintf(fp, "(");
- while (tab->str != NULL) {
- if (flags & tab->flag) {
- if (!first)
- fprintf(fp, par ? "|" : " ");
- first = 0;
- fprintf(fp, "%s", tab->str);
- }
- tab++;
- }
- if (par)
- fprintf(fp, ")");
-}
diff --git a/usr.bin/make/util.h b/usr.bin/make/util.h
deleted file mode 100644
index 9a1dedf..0000000
--- a/usr.bin/make/util.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*-
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef util_h_b7020fdb
-#define util_h_b7020fdb
-
-#include <sys/types.h>
-#include <stdio.h>
-
-/*
- * A boolean type is defined as an integer, not an enum. This allows a
- * boolean argument to be an expression that isn't strictly 0 or 1 valued.
- */
-
-typedef int Boolean;
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif /* TRUE */
-
-#define CONCAT(a,b) a##b
-
-struct flag2str {
- u_int flag;
- const char *str;
-};
-
-/*
- * debug control:
- * There is one bit per module. It is up to the module what debug
- * information to print.
- */
-#define DEBUG_ARCH 0x0001
-#define DEBUG_COND 0x0002
-#define DEBUG_DIR 0x0004
-#define DEBUG_GRAPH1 0x0008
-#define DEBUG_GRAPH2 0x0010
-#define DEBUG_JOB 0x0020
-#define DEBUG_MAKE 0x0040
-#define DEBUG_SUFF 0x0080
-#define DEBUG_TARG 0x0100
-#define DEBUG_VAR 0x0200
-#define DEBUG_FOR 0x0400
-#define DEBUG_LOUD 0x0800
-
-#define DEBUG(module) (debug & CONCAT(DEBUG_,module))
-#define DEBUGF(module,args) \
-do { \
- if (DEBUG(module)) { \
- Debug args ; \
- } \
-} while (0)
-#define DEBUGM(module, args) do { \
- if (DEBUG(module)) { \
- DebugM args; \
- } \
- } while (0)
-
-#define ISDOT(c) ((c)[0] == '.' && (((c)[1] == '\0') || ((c)[1] == '/')))
-#define ISDOTDOT(c) ((c)[0] == '.' && ISDOT(&((c)[1])))
-
-#ifndef MAX
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#endif
-
-void Debug(const char *, ...);
-void DebugM(const char *, ...);
-void Error(const char *, ...);
-void Fatal(const char *, ...) __dead2;
-void Punt(const char *, ...) __dead2;
-void DieHorribly(void) __dead2;
-void Finish(int) __dead2;
-char *estrdup(const char *);
-void *emalloc(size_t);
-void *erealloc(void *, size_t);
-int eunlink(const char *);
-void print_flags(FILE *, const struct flag2str *, u_int, int);
-
-#endif /* util_h_b7020fdb */
diff --git a/usr.bin/make/var.c b/usr.bin/make/var.c
deleted file mode 100644
index cbaea9e..0000000
--- a/usr.bin/make/var.c
+++ /dev/null
@@ -1,2623 +0,0 @@
-/*-
- * Copyright (c) 2002 Juli Mallett.
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)var.c 8.3 (Berkeley) 3/19/94
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/**
- * var.c --
- * Variable-handling functions
- *
- * Interface:
- * Var_Set Set the value of a variable in the given
- * context. The variable is created if it doesn't
- * yet exist. The value and variable name need not
- * be preserved.
- *
- * Var_Append Append more characters to an existing variable
- * in the given context. The variable needn't
- * exist already -- it will be created if it doesn't.
- * A space is placed between the old value and the
- * new one.
- *
- * Var_Exists See if a variable exists.
- *
- * Var_Value Return the value of a variable in a context or
- * NULL if the variable is undefined.
- *
- * Var_Subst Substitute named variable, or all variables if
- * NULL in a string using
- * the given context as the top-most one. If the
- * third argument is non-zero, Parse_Error is
- * called if any variables are undefined.
- *
- * Var_Parse Parse a variable expansion from a string and
- * return the result and the number of characters
- * consumed.
- *
- * Var_Delete Delete a variable in a context.
- *
- * Var_Init Initialize this module.
- *
- * Debugging:
- * Var_Dump Print out all variables defined in the given
- * context.
- *
- * XXX: There's a lot of duplication in these functions.
- */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <regex.h>
-
-#include "buf.h"
-#include "config.h"
-#include "globals.h"
-#include "GNode.h"
-#include "job.h"
-#include "lst.h"
-#include "parse.h"
-#include "str.h"
-#include "targ.h"
-#include "util.h"
-#include "var.h"
-
-/**
- *
- */
-typedef struct VarParser {
- const char *const input; /* pointer to input string */
- const char *ptr; /* current parser pos in input str */
- GNode *ctxt;
- Boolean err;
- Boolean execute;
-} VarParser;
-
-typedef struct Var {
- char *name; /* the variable's name */
- struct Buffer *val; /* its value */
- int flags; /* miscellaneous status flags */
-
-#define VAR_IN_USE 1 /* Variable's value currently being used.
- * Used to avoid recursion */
-
-#define VAR_JUNK 4 /* Variable is a junk variable that
- * should be destroyed when done with
- * it. Used by Var_Parse for undefined,
- * modified variables */
-
-#define VAR_TO_ENV 8 /* Place variable in environment */
-} Var;
-
-typedef struct {
- struct Buffer *lhs; /* String to match */
- struct Buffer *rhs; /* Replacement string (w/ &'s removed) */
-
- regex_t re;
- int nsub;
- regmatch_t *matches;
-
- int flags;
-#define VAR_SUB_GLOBAL 0x01 /* Apply substitution globally */
-#define VAR_SUB_ONE 0x02 /* Apply substitution to one word */
-#define VAR_SUB_MATCHED 0x04 /* There was a match */
-#define VAR_MATCH_START 0x08 /* Match at start of word */
-#define VAR_MATCH_END 0x10 /* Match at end of word */
-} VarPattern;
-
-typedef Boolean VarModifyProc(const char *, Boolean, struct Buffer *, void *);
-
-static char *VarParse(VarParser *, Boolean *);
-
-/*
- * This is a harmless return value for Var_Parse that can be used by Var_Subst
- * to determine if there was an error in parsing -- easier than returning
- * a flag, as things outside this module don't give a hoot.
- */
-char var_Error[] = "";
-
-/*
- * Similar to var_Error, but returned when the 'err' flag for Var_Parse is
- * set false. Why not just use a constant? Well, gcc likes to condense
- * identical string instances...
- */
-static char varNoError[] = "";
-
-/*
- * Internally, variables are contained in four different contexts.
- * 1) the environment. They may not be changed. If an environment
- * variable is appended-to, the result is placed in the global
- * context.
- * 2) the global context. Variables set in the Makefile are located in
- * the global context. It is the penultimate context searched when
- * substituting.
- * 3) the command-line context. All variables set on the command line
- * are placed in this context. They are UNALTERABLE once placed here.
- * 4) the local context. Each target has associated with it a context
- * list. On this list are located the structures describing such
- * local variables as $(@) and $(*)
- * The four contexts are searched in the reverse order from which they are
- * listed.
- */
-static GNode *VAR_ENV; /* variables from the environment */
-GNode *VAR_GLOBAL; /* variables from the makefile */
-GNode *VAR_CMD; /* variables defined on the command-line */
-
-Boolean oldVars; /* variable substitution style */
-Boolean checkEnvFirst; /* -e flag */
-
-#define OPEN_PAREN '('
-#define CLOSE_PAREN ')'
-#define OPEN_BRACE '{'
-#define CLOSE_BRACE '}'
-
-/**
- * Create a Var object.
- *
- * Params:
- * name Name of variable (copied).
- * value Value of variable (copied) or NULL.
- * flags Flags set on variable.
- *
- * Returns:
- * New variable.
- */
-static Var *
-VarCreate(const char name[], const char value[], int flags)
-{
- Var *v;
-
- v = emalloc(sizeof(Var));
- v->name = estrdup(name);
- v->val = Buf_Init(0);
- v->flags = flags;
-
- if (value != NULL) {
- Buf_Append(v->val, value);
- }
- return (v);
-}
-
-/**
- * Destroy a Var object.
- *
- * Params:
- * v Object to destroy.
- * f True if internal buffer in Buffer object is to be removed.
- */
-static void
-VarDestroy(Var *v, Boolean f)
-{
-
- Buf_Destroy(v->val, f);
- free(v->name);
- free(v);
-}
-
-/**
- * Remove the tail of the given word and place the result in the given
- * buffer.
- *
- * Results:
- * TRUE if characters were added to the buffer (a space needs to be
- * added to the buffer before the next word).
- *
- * Side Effects:
- * The trimmed word is added to the buffer.
- */
-static Boolean
-VarHead(const char *word, Boolean addSpace, Buffer *buf, void *dummy __unused)
-{
- char *slash;
-
- slash = strrchr(word, '/');
- if (slash != NULL) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- Buf_AppendRange(buf, word, slash);
- } else {
- /*
- * If no directory part, give . (q.v. the POSIX standard)
- */
- if (addSpace) {
- Buf_Append(buf, " .");
- } else {
- Buf_AddByte(buf, (Byte)'.');
- }
- }
- return (TRUE);
-}
-
-/**
- * Remove the head of the given word and place the result in the given
- * buffer.
- *
- * Results:
- * TRUE if characters were added to the buffer (a space needs to be
- * added to the buffer before the next word).
- *
- * Side Effects:
- * The trimmed word is added to the buffer.
- */
-static Boolean
-VarTail(const char *word, Boolean addSpace, Buffer *buf, void *dummy __unused)
-{
- const char *slash;
-
- if (addSpace) {
- Buf_AddByte (buf, (Byte)' ');
- }
-
- slash = strrchr(word, '/');
- if (slash != NULL) {
- slash++;
- Buf_Append(buf, slash);
- } else {
- Buf_Append(buf, word);
- }
- return (TRUE);
-}
-
-/**
- * Place the suffix of the given word in the given buffer.
- *
- * Results:
- * TRUE if characters were added to the buffer (a space needs to be
- * added to the buffer before the next word).
- *
- * Side Effects:
- * The suffix from the word is placed in the buffer.
- */
-static Boolean
-VarSuffix(const char *word, Boolean addSpace, Buffer *buf, void *dummy __unused)
-{
- const char *dot;
-
- dot = strrchr(word, '.');
- if (dot != NULL) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- dot++;
- Buf_Append(buf, dot);
- addSpace = TRUE;
- }
- return (addSpace);
-}
-
-/**
- * Remove the suffix of the given word and place the result in the
- * buffer.
- *
- * Results:
- * TRUE if characters were added to the buffer (a space needs to be
- * added to the buffer before the next word).
- *
- * Side Effects:
- * The trimmed word is added to the buffer.
- */
-static Boolean
-VarRoot(const char *word, Boolean addSpace, Buffer *buf, void *dummy __unused)
-{
- char *dot;
-
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
-
- dot = strrchr(word, '.');
- if (dot != NULL) {
- Buf_AppendRange(buf, word, dot);
- } else {
- Buf_Append(buf, word);
- }
- return (TRUE);
-}
-
-/**
- * Place the word in the buffer if it matches the given pattern.
- * Callback function for VarModify to implement the :M modifier.
- * A space will be added if requested. A pattern is supplied
- * which the word must match.
- *
- * Results:
- * TRUE if a space should be placed in the buffer before the next
- * word.
- *
- * Side Effects:
- * The word may be copied to the buffer.
- */
-static Boolean
-VarMatch(const char *word, Boolean addSpace, Buffer *buf, void *pattern)
-{
-
- if (Str_Match(word, pattern)) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- addSpace = TRUE;
- Buf_Append(buf, word);
- }
- return (addSpace);
-}
-
-#ifdef SYSVVARSUB
-/**
- * Place the word in the buffer if it matches the given pattern.
- * Callback function for VarModify to implement the System V %
- * modifiers. A space is added if requested.
- *
- * Results:
- * TRUE if a space should be placed in the buffer before the next
- * word.
- *
- * Side Effects:
- * The word may be copied to the buffer.
- */
-static Boolean
-VarSYSVMatch(const char *word, Boolean addSpace, Buffer *buf, void *patp)
-{
- int len;
- const char *ptr;
- VarPattern *pat = (VarPattern *)patp;
-
- if (addSpace)
- Buf_AddByte(buf, (Byte)' ');
-
- addSpace = TRUE;
-
- if ((ptr = Str_SYSVMatch(word, Buf_Data(pat->lhs), &len)) != NULL)
- Str_SYSVSubst(buf, Buf_Data(pat->rhs), ptr, len);
- else
- Buf_Append(buf, word);
-
- return (addSpace);
-}
-#endif
-
-/**
- * Place the word in the buffer if it doesn't match the given pattern.
- * Callback function for VarModify to implement the :N modifier. A
- * space is added if requested.
- *
- * Results:
- * TRUE if a space should be placed in the buffer before the next
- * word.
- *
- * Side Effects:
- * The word may be copied to the buffer.
- */
-static Boolean
-VarNoMatch(const char *word, Boolean addSpace, Buffer *buf, void *pattern)
-{
-
- if (!Str_Match(word, pattern)) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- addSpace = TRUE;
- Buf_Append(buf, word);
- }
- return (addSpace);
-}
-
-/**
- * Perform a string-substitution on the given word, placing the
- * result in the passed buffer. A space is added if requested.
- *
- * Results:
- * TRUE if a space is needed before more characters are added.
- */
-static Boolean
-VarSubstitute(const char *word, Boolean addSpace, Buffer *buf, void *patternp)
-{
- size_t wordLen; /* Length of word */
- const char *cp; /* General pointer */
- VarPattern *pattern = patternp;
-
- wordLen = strlen(word);
- if (1) { /* substitute in each word of the variable */
- /*
- * Break substitution down into simple anchored cases
- * and if none of them fits, perform the general substitution
- * case.
- */
- if ((pattern->flags & VAR_MATCH_START) &&
- (strncmp(word, Buf_Data(pattern->lhs),
- Buf_Size(pattern->lhs)) == 0)) {
- /*
- * Anchored at start and beginning of word matches
- * pattern.
- */
- if ((pattern->flags & VAR_MATCH_END) &&
- (wordLen == Buf_Size(pattern->lhs))) {
- /*
- * Also anchored at end and matches to the end
- * (word is same length as pattern) add space
- * and rhs only if rhs is non-null.
- */
- if (Buf_Size(pattern->rhs) != 0) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- addSpace = TRUE;
- Buf_AppendBuf(buf, pattern->rhs);
- }
-
- } else if (pattern->flags & VAR_MATCH_END) {
- /*
- * Doesn't match to end -- copy word wholesale
- */
- goto nosub;
-
- } else {
- /*
- * Matches at start but need to copy in
- * trailing characters.
- */
- if ((Buf_Size(pattern->rhs) + wordLen -
- Buf_Size(pattern->lhs)) != 0) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- addSpace = TRUE;
- }
- Buf_AppendBuf(buf, pattern->rhs);
- Buf_AddBytes(buf, wordLen -
- Buf_Size(pattern->lhs),
- (word + Buf_Size(pattern->lhs)));
- }
-
- } else if (pattern->flags & VAR_MATCH_START) {
- /*
- * Had to match at start of word and didn't -- copy
- * whole word.
- */
- goto nosub;
-
- } else if (pattern->flags & VAR_MATCH_END) {
- /*
- * Anchored at end, Find only place match could occur
- * (leftLen characters from the end of the word) and
- * see if it does. Note that because the $ will be
- * left at the end of the lhs, we have to use strncmp.
- */
- cp = word + (wordLen - Buf_Size(pattern->lhs));
- if ((cp >= word) && (strncmp(cp, Buf_Data(pattern->lhs),
- Buf_Size(pattern->lhs)) == 0)) {
- /*
- * Match found. If we will place characters in
- * the buffer, add a space before hand as
- * indicated by addSpace, then stuff in the
- * initial, unmatched part of the word followed
- * by the right-hand-side.
- */
- if ((cp - word) + Buf_Size(pattern->rhs) != 0) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- addSpace = TRUE;
- }
- Buf_AppendRange(buf, word, cp);
- Buf_AppendBuf(buf, pattern->rhs);
-
- } else {
- /*
- * Had to match at end and didn't. Copy entire
- * word.
- */
- goto nosub;
- }
- } else {
- /*
- * Pattern is unanchored: search for the pattern in the
- * word using strstr(3), copying unmatched portions and
- * the right-hand-side for each match found, handling
- * non-global substitutions correctly, etc. When the
- * loop is done, any remaining part of the word (word
- * and wordLen are adjusted accordingly through the
- * loop) is copied straight into the buffer.
- * addSpace is set FALSE as soon as a space is added
- * to the buffer.
- */
- Boolean done;
- size_t origSize;
-
- done = FALSE;
- origSize = Buf_Size(buf);
- while (!done) {
- cp = strstr(word, Buf_Data(pattern->lhs));
- if (cp != NULL) {
- if (addSpace && (((cp - word) +
- Buf_Size(pattern->rhs)) != 0)) {
- Buf_AddByte(buf, (Byte)' ');
- addSpace = FALSE;
- }
- Buf_AppendRange(buf, word, cp);
- Buf_AppendBuf(buf, pattern->rhs);
- wordLen -= (cp - word) +
- Buf_Size(pattern->lhs);
- word = cp + Buf_Size(pattern->lhs);
- if (wordLen == 0 || (pattern->flags &
- VAR_SUB_GLOBAL) == 0) {
- done = TRUE;
- }
- } else {
- done = TRUE;
- }
- }
- if (wordLen != 0) {
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- Buf_AddBytes(buf, wordLen, (const Byte *)word);
- }
-
- /*
- * If added characters to the buffer, need to add a
- * space before we add any more. If we didn't add any,
- * just return the previous value of addSpace.
- */
- return ((Buf_Size(buf) != origSize) || addSpace);
- }
- /*
- * Common code for anchored substitutions:
- * addSpace was set TRUE if characters were added to the buffer.
- */
- return (addSpace);
- }
- nosub:
- if (addSpace) {
- Buf_AddByte(buf, (Byte)' ');
- }
- Buf_AddBytes(buf, wordLen, (const Byte *)word);
- return (TRUE);
-}
-
-/**
- * Print the error caused by a regcomp or regexec call.
- *
- * Side Effects:
- * An error gets printed.
- */
-static void
-VarREError(int err, regex_t *pat, const char *str)
-{
- char *errbuf;
- int errlen;
-
- errlen = regerror(err, pat, 0, 0);
- errbuf = emalloc(errlen);
- regerror(err, pat, errbuf, errlen);
- Error("%s: %s", str, errbuf);
- free(errbuf);
-}
-
-
-/**
- * Perform a regex substitution on the given word, placing the
- * result in the passed buffer. A space is added if requested.
- *
- * Results:
- * TRUE if a space is needed before more characters are added.
- */
-static Boolean
-VarRESubstitute(const char *word, Boolean addSpace, Buffer *buf, void *patternp)
-{
- VarPattern *pat;
- int xrv;
- const char *wp;
- char *rp;
- int added;
- int flags = 0;
-
-#define MAYBE_ADD_SPACE() \
- if (addSpace && !added) \
- Buf_AddByte(buf, (Byte)' '); \
- added = 1
-
- added = 0;
- wp = word;
- pat = patternp;
-
- if ((pat->flags & (VAR_SUB_ONE | VAR_SUB_MATCHED)) ==
- (VAR_SUB_ONE | VAR_SUB_MATCHED)) {
- xrv = REG_NOMATCH;
- } else {
- tryagain:
- xrv = regexec(&pat->re, wp, pat->nsub, pat->matches, flags);
- }
-
- switch (xrv) {
- case 0:
- pat->flags |= VAR_SUB_MATCHED;
- if (pat->matches[0].rm_so > 0) {
- MAYBE_ADD_SPACE();
- Buf_AddBytes(buf, pat->matches[0].rm_so,
- (const Byte *)wp);
- }
-
- for (rp = Buf_Data(pat->rhs); *rp; rp++) {
- if ((*rp == '\\') && ((rp[1] == '&') || (rp[1] == '\\'))) {
- MAYBE_ADD_SPACE();
- Buf_AddByte(buf, (Byte)rp[1]);
- rp++;
-
- } else if ((*rp == '&') ||
- ((*rp == '\\') && isdigit((unsigned char)rp[1]))) {
- int n;
- const char *subbuf;
- int sublen;
- char errstr[3];
-
- if (*rp == '&') {
- n = 0;
- errstr[0] = '&';
- errstr[1] = '\0';
- } else {
- n = rp[1] - '0';
- errstr[0] = '\\';
- errstr[1] = rp[1];
- errstr[2] = '\0';
- rp++;
- }
-
- if (n > pat->nsub) {
- Error("No subexpression %s",
- &errstr[0]);
- subbuf = "";
- sublen = 0;
-
- } else if ((pat->matches[n].rm_so == -1) &&
- (pat->matches[n].rm_eo == -1)) {
- Error("No match for subexpression %s",
- &errstr[0]);
- subbuf = "";
- sublen = 0;
-
- } else {
- subbuf = wp + pat->matches[n].rm_so;
- sublen = pat->matches[n].rm_eo -
- pat->matches[n].rm_so;
- }
-
- if (sublen > 0) {
- MAYBE_ADD_SPACE();
- Buf_AddBytes(buf, sublen,
- (const Byte *)subbuf);
- }
- } else {
- MAYBE_ADD_SPACE();
- Buf_AddByte(buf, (Byte)*rp);
- }
- }
- wp += pat->matches[0].rm_eo;
- if (pat->flags & VAR_SUB_GLOBAL) {
- flags |= REG_NOTBOL;
- if (pat->matches[0].rm_so == 0 &&
- pat->matches[0].rm_eo == 0) {
- MAYBE_ADD_SPACE();
- Buf_AddByte(buf, (Byte)*wp);
- wp++;
- }
- if (*wp)
- goto tryagain;
- }
- if (*wp) {
- MAYBE_ADD_SPACE();
- Buf_Append(buf, wp);
- }
- break;
-
- default:
- VarREError(xrv, &pat->re, "Unexpected regex error");
- /* fall through */
-
- case REG_NOMATCH:
- if (*wp) {
- MAYBE_ADD_SPACE();
- Buf_Append(buf, wp);
- }
- break;
- }
- return (addSpace || added);
-}
-
-/**
- * Find a variable in a variable list.
- */
-static Var *
-VarLookup(Lst *vlist, const char *name)
-{
- LstNode *ln;
-
- LST_FOREACH(ln, vlist)
- if (strcmp(((const Var *)Lst_Datum(ln))->name, name) == 0)
- return (Lst_Datum(ln));
- return (NULL);
-}
-
-/**
- * Expand a variable name's embedded variables in the given context.
- *
- * Results:
- * The contents of name, possibly expanded.
- */
-static char *
-VarPossiblyExpand(const char *name, GNode *ctxt)
-{
- Buffer *buf;
-
- if (strchr(name, '$') != NULL) {
- buf = Var_Subst(name, ctxt, 0);
- return (Buf_Peel(buf));
- } else {
- return estrdup(name);
- }
-}
-
-/**
- * If the variable name begins with a '.', it could very well be
- * one of the local ones. We check the name against all the local
- * variables and substitute the short version in for 'name' if it
- * matches one of them.
- */
-static const char *
-VarLocal(const char name[])
-{
- if (name[0] == '.') {
- switch (name[1]) {
- case 'A':
- if (!strcmp(name, ".ALLSRC"))
- return (ALLSRC);
- if (!strcmp(name, ".ARCHIVE"))
- return (ARCHIVE);
- break;
- case 'I':
- if (!strcmp(name, ".IMPSRC"))
- return (IMPSRC);
- break;
- case 'M':
- if (!strcmp(name, ".MEMBER"))
- return (MEMBER);
- break;
- case 'O':
- if (!strcmp(name, ".OODATE"))
- return (OODATE);
- break;
- case 'P':
- if (!strcmp(name, ".PREFIX"))
- return (PREFIX);
- break;
- case 'T':
- if (!strcmp(name, ".TARGET"))
- return (TARGET);
- break;
- default:
- break;
- }
- }
- return (name);
-}
-
-/**
- * Find the given variable in the given context and the environment.
- *
- * Results:
- * A pointer to the structure describing the desired variable or
- * NULL if the variable does not exist.
- */
-static Var *
-VarFindEnv(const char name[], GNode *ctxt)
-{
- Var *var;
-
- name = VarLocal(name);
-
- if ((var = VarLookup(&ctxt->context, name)) != NULL)
- return (var);
-
- if ((var = VarLookup(&VAR_ENV->context, name)) != NULL)
- return (var);
-
- return (NULL);
-}
-
-/**
- * Look for the variable in the given context.
- */
-static Var *
-VarFindOnly(const char name[], GNode *ctxt)
-{
- Var *var;
-
- name = VarLocal(name);
-
- if ((var = VarLookup(&ctxt->context, name)) != NULL)
- return (var);
-
- return (NULL);
-}
-
-/**
- * Look for the variable in all contexts.
- */
-static Var *
-VarFindAny(const char name[], GNode *ctxt)
-{
- Boolean localCheckEnvFirst;
- LstNode *ln;
- Var *var;
-
- name = VarLocal(name);
-
- /*
- * Note whether this is one of the specific variables we were told
- * through the -E flag to use environment-variable-override for.
- */
- localCheckEnvFirst = FALSE;
- LST_FOREACH(ln, &envFirstVars) {
- if (strcmp(Lst_Datum(ln), name) == 0) {
- localCheckEnvFirst = TRUE;
- break;
- }
- }
-
- /*
- * First look for the variable in the given context. If it's not there,
- * look for it in VAR_CMD, VAR_GLOBAL and the environment,
- * in that order, depending on the FIND_* flags in 'flags'
- */
- if ((var = VarLookup(&ctxt->context, name)) != NULL)
- return (var);
-
- /* not there - try command line context */
- if (ctxt != VAR_CMD) {
- if ((var = VarLookup(&VAR_CMD->context, name)) != NULL)
- return (var);
- }
-
- /* not there - try global context, but only if not -e/-E */
- if (ctxt != VAR_GLOBAL && (!checkEnvFirst && !localCheckEnvFirst)) {
- if ((var = VarLookup(&VAR_GLOBAL->context, name)) != NULL)
- return (var);
- }
-
- if ((var = VarLookup(&VAR_ENV->context, name)) != NULL)
- return (var);
-
- /* deferred check for the environment (in case of -e/-E) */
- if ((ctxt != VAR_GLOBAL) && (checkEnvFirst || localCheckEnvFirst)) {
- if ((var = VarLookup(&VAR_GLOBAL->context, name)) != NULL)
- return (var);
- }
-
- return (NULL);
-}
-
-/**
- * Add a new variable of name name and value val to the given context.
- *
- * Side Effects:
- * The new variable is placed at the front of the given context
- * The name and val arguments are duplicated so they may
- * safely be freed.
- */
-static Var *
-VarAdd(const char *name, const char *val, GNode *ctxt)
-{
- Var *v;
-
- Lst_AtFront(&ctxt->context, v = VarCreate(name, val, 0));
- DEBUGF(VAR, ("%s:%s = %s\n", ctxt->name, name, val));
- return (v);
-}
-
-/**
- * Remove a variable from a context.
- *
- * Side Effects:
- * The Var structure is removed and freed.
- */
-void
-Var_Delete(const char *name, GNode *ctxt)
-{
- LstNode *ln;
-
- DEBUGF(VAR, ("%s:delete %s\n", ctxt->name, name));
- LST_FOREACH(ln, &ctxt->context) {
- if (strcmp(((const Var *)Lst_Datum(ln))->name, name) == 0) {
- VarDestroy(Lst_Datum(ln), TRUE);
- Lst_Remove(&ctxt->context, ln);
- break;
- }
- }
-}
-
-/**
- * Set the variable name to the value val in the given context.
- *
- * Side Effects:
- * If the variable doesn't yet exist, a new record is created for it.
- * Else the old value is freed and the new one stuck in its place
- *
- * Notes:
- * The variable is searched for only in its context before being
- * created in that context. I.e. if the context is VAR_GLOBAL,
- * only VAR_GLOBAL->context is searched. Likewise if it is VAR_CMD, only
- * VAR_CMD->context is searched. This is done to avoid the literally
- * thousands of unnecessary strcmp's that used to be done to
- * set, say, $(@) or $(<).
- */
-void
-Var_Set(const char *name, const char *val, GNode *ctxt)
-{
- Var *v;
- char *n;
-
- /*
- * We only look for a variable in the given context since anything
- * set here will override anything in a lower context, so there's not
- * much point in searching them all just to save a bit of memory...
- */
- n = VarPossiblyExpand(name, ctxt);
- v = VarFindOnly(n, ctxt);
- if (v == NULL) {
- v = VarAdd(n, val, ctxt);
- } else {
- Buf_Clear(v->val);
- Buf_Append(v->val, val);
- DEBUGF(VAR, ("%s:%s = %s\n", ctxt->name, n, val));
- }
-
- if (ctxt == VAR_CMD || (v->flags & VAR_TO_ENV)) {
- /*
- * Any variables given on the command line
- * are automatically exported to the
- * environment (as per POSIX standard)
- */
- setenv(n, val, 1);
- }
-
- free(n);
-}
-
-/**
- * Set the a global name variable to the value.
- */
-void
-Var_SetGlobal(const char name[], const char value[])
-{
-
- Var_Set(name, value, VAR_GLOBAL);
-}
-
-
-/**
- * Set the VAR_TO_ENV flag on a variable
- */
-void
-Var_SetEnv(const char *name, GNode *ctxt)
-{
- Var *v;
-
- v = VarFindOnly(name, VAR_CMD);
- if (v != NULL) {
- /*
- * Do not allow .EXPORT: to be set on variables
- * from the comand line or MAKEFLAGS.
- */
- Error(
- "Warning: Did not set .EXPORTVAR: on %s because it "
- "is from the comand line or MAKEFLAGS", name);
- return;
- }
-
- v = VarFindAny(name, ctxt);
- if (v == NULL) {
- Lst_AtFront(&VAR_ENV->context,
- VarCreate(name, NULL, VAR_TO_ENV));
- setenv(name, "", 1);
- Error("Warning: .EXPORTVAR: set on undefined variable %s", name);
- } else {
- if ((v->flags & VAR_TO_ENV) == 0) {
- v->flags |= VAR_TO_ENV;
- setenv(v->name, Buf_Data(v->val), 1);
- }
- }
-}
-
-/**
- * The variable of the given name has the given value appended to it in
- * the given context.
- *
- * Side Effects:
- * If the variable doesn't exist, it is created. Else the strings
- * are concatenated (with a space in between).
- *
- * Notes:
- * Only if the variable is being sought in the global context is the
- * environment searched.
- * XXX: Knows its calling circumstances in that if called with ctxt
- * an actual target, it will only search that context since only
- * a local variable could be being appended to. This is actually
- * a big win and must be tolerated.
- */
-void
-Var_Append(const char *name, const char *val, GNode *ctxt)
-{
- Var *v;
- char *n;
-
- n = VarPossiblyExpand(name, ctxt);
- if (ctxt == VAR_GLOBAL) {
- v = VarFindEnv(n, ctxt);
- } else {
- v = VarFindOnly(n, ctxt);
- }
- if (v == NULL) {
- VarAdd(n, val, ctxt);
- } else {
- Buf_AddByte(v->val, (Byte)' ');
- Buf_Append(v->val, val);
- DEBUGF(VAR, ("%s:%s = %s\n", ctxt->name, n, Buf_Data(v->val)));
- }
- free(n);
-}
-
-/**
- * See if the given variable exists.
- *
- * Results:
- * TRUE if it does, FALSE if it doesn't
- */
-Boolean
-Var_Exists(const char *name, GNode *ctxt)
-{
- Var *v;
- char *n;
-
- n = VarPossiblyExpand(name, ctxt);
- v = VarFindAny(n, ctxt);
- if (v == NULL) {
- free(n);
- return (FALSE);
- } else {
- free(n);
- return (TRUE);
- }
-}
-
-/**
- * Return the value of the named variable in the given context
- *
- * Results:
- * The value if the variable exists, NULL if it doesn't.
- */
-const char *
-Var_Value(const char name[], GNode *ctxt)
-{
- Var *v;
- char *n;
-
- n = VarPossiblyExpand(name, ctxt);
- v = VarFindAny(n, ctxt);
- free(n);
- if (v == NULL) {
- return (NULL);
- } else {
- return (Buf_Data(v->val));
- }
-}
-
-/**
- * Modify each of the words of the passed string using the given
- * function. Used to implement all modifiers.
- *
- * Results:
- * A string of all the words modified appropriately.
- *
- * Side Effects:
- * Uses brk_string() so it invalidates any previous call to
- * brk_string().
- */
-static char *
-VarModify(const char *str, VarModifyProc *modProc, void *datum)
-{
- ArgArray aa;
- Buffer *buf; /* Buffer for the new string */
- int i;
- Boolean addSpace; /*
- * TRUE if need to add a space to
- * the buffer before adding the
- * trimmed word
- */
-
- brk_string(&aa, str, FALSE);
-
- addSpace = FALSE;
- buf = Buf_Init(0);
- for (i = 1; i < aa.argc; i++)
- addSpace = (*modProc)(aa.argv[i], addSpace, buf, datum);
-
- ArgArray_Done(&aa);
- return (Buf_Peel(buf));
-}
-
-/**
- * Sort the words in the string.
- *
- * Input:
- * str String whose words should be sorted
- * cmp A comparison function to control the ordering
- *
- * Results:
- * A string containing the words sorted
- */
-static char *
-VarSortWords(const char *str, int (*cmp)(const void *, const void *))
-{
- ArgArray aa;
- Buffer *buf;
- int i;
-
- brk_string(&aa, str, FALSE);
- qsort(aa.argv + 1, aa.argc - 1, sizeof(char *), cmp);
-
- buf = Buf_Init(0);
- for (i = 1; i < aa.argc; i++) {
- Buf_Append(buf, aa.argv[i]);
- Buf_AddByte(buf, (Byte)((i < aa.argc - 1) ? ' ' : '\0'));
- }
-
- ArgArray_Done(&aa);
- return (Buf_Peel(buf));
-}
-
-static int
-SortIncreasing(const void *l, const void *r)
-{
-
- return (strcmp(*(const char* const*)l, *(const char* const*)r));
-}
-
-/**
- * Remove adjacent duplicate words.
- *
- * Results:
- * A string containing the resulting words.
- */
-static char *
-VarUniq(const char *str)
-{
- ArgArray aa;
- Buffer *buf; /* Buffer for new string */
- int i, j;
-
- buf = Buf_Init(0);
- brk_string(&aa, str, FALSE);
-
- if (aa.argc > 2) {
- for (j = 1, i = 2; i < aa.argc; i++) {
- if (strcmp(aa.argv[i], aa.argv[j]) != 0 && (++j != i))
- aa.argv[j] = aa.argv[i];
- }
- aa.argc = j + 1;
- }
-
- for (i = 1; i < aa.argc; i++) {
- Buf_AddBytes(buf, strlen(aa.argv[i]), (Byte *)aa.argv[i]);
- if (i != aa.argc - 1)
- Buf_AddByte(buf, ' ');
- }
- Buf_AddByte(buf, '\0');
-
- ArgArray_Done(&aa);
- return (Buf_Peel(buf));
-}
-
-/**
- * Pass through the tstr looking for 1) escaped delimiters,
- * '$'s and backslashes (place the escaped character in
- * uninterpreted) and 2) unescaped $'s that aren't before
- * the delimiter (expand the variable substitution).
- * Return the expanded string or NULL if the delimiter was missing
- * If pattern is specified, handle escaped ampersands, and replace
- * unescaped ampersands with the lhs of the pattern.
- *
- * Results:
- * A string of all the words modified appropriately.
- * If length is specified, return the string length of the buffer
- * If flags is specified and the last character of the pattern is a
- * $ set the VAR_MATCH_END bit of flags.
- */
-static Buffer *
-VarGetPattern(VarParser *vp, int delim, int *flags, VarPattern *patt)
-{
- Buffer *buf;
-
- buf = Buf_Init(0);
-
- /*
- * Skim through until the matching delimiter is found; pick up
- * variable substitutions on the way. Also allow backslashes to quote
- * the delimiter, $, and \, but don't touch other backslashes.
- */
- while (*vp->ptr != '\0') {
- if (*vp->ptr == delim) {
- return (buf);
-
- } else if ((vp->ptr[0] == '\\') &&
- ((vp->ptr[1] == delim) ||
- (vp->ptr[1] == '\\') ||
- (vp->ptr[1] == '$') ||
- (vp->ptr[1] == '&' && patt != NULL))) {
- vp->ptr++; /* consume backslash */
- Buf_AddByte(buf, (Byte)vp->ptr[0]);
- vp->ptr++;
-
- } else if (vp->ptr[0] == '$') {
- if (vp->ptr[1] == delim) {
- if (flags == NULL) {
- Buf_AddByte(buf, (Byte)vp->ptr[0]);
- vp->ptr++;
- } else {
- /*
- * Unescaped $ at end of patt =>
- * anchor patt at end.
- */
- *flags |= VAR_MATCH_END;
- vp->ptr++;
- }
- } else {
- VarParser subvp = {
- vp->ptr,
- vp->ptr,
- vp->ctxt,
- vp->err,
- vp->execute
- };
- char *rval;
- Boolean rfree;
-
- /*
- * If unescaped dollar sign not
- * before the delimiter, assume it's
- * a variable substitution and
- * recurse.
- */
- rval = VarParse(&subvp, &rfree);
- Buf_Append(buf, rval);
- if (rfree)
- free(rval);
- vp->ptr = subvp.ptr;
- }
- } else if (vp->ptr[0] == '&' && patt != NULL) {
- Buf_AppendBuf(buf, patt->lhs);
- vp->ptr++;
- } else {
- Buf_AddByte(buf, (Byte)vp->ptr[0]);
- vp->ptr++;
- }
- }
-
- Buf_Destroy(buf, TRUE);
- return (NULL);
-}
-
-/**
- * Make sure this variable is fully expanded.
- */
-static char *
-VarExpand(Var *v, VarParser *vp)
-{
- char *value;
- char *result;
-
- if (v->flags & VAR_IN_USE) {
- Fatal("Variable %s is recursive.", v->name);
- /* NOTREACHED */
- }
-
- v->flags |= VAR_IN_USE;
-
- /*
- * Before doing any modification, we have to make sure the
- * value has been fully expanded. If it looks like recursion
- * might be necessary (there's a dollar sign somewhere in the
- * variable's value) we just call Var_Subst to do any other
- * substitutions that are necessary. Note that the value
- * returned by Var_Subst will have been
- * dynamically-allocated, so it will need freeing when we
- * return.
- */
- value = Buf_Data(v->val);
- if (strchr(value, '$') == NULL) {
- result = strdup(value);
- } else {
- Buffer *buf;
-
- buf = Var_Subst(value, vp->ctxt, vp->err);
- result = Buf_Peel(buf);
- }
-
- v->flags &= ~VAR_IN_USE;
-
- return (result);
-}
-
-/**
- * Select only those words in value that match the modifier.
- */
-static char *
-modifier_M(VarParser *vp, const char value[], char endc)
-{
- char *patt;
- char *ptr;
- char *newValue;
- char modifier;
-
- modifier = vp->ptr[0];
- vp->ptr++; /* consume 'M' or 'N' */
-
- /*
- * Compress the \:'s out of the pattern, so allocate enough
- * room to hold the uncompressed pattern and compress the
- * pattern into that space.
- */
- patt = estrdup(vp->ptr);
- ptr = patt;
- while (vp->ptr[0] != '\0') {
- if (vp->ptr[0] == endc || vp->ptr[0] == ':') {
- break;
- }
- if (vp->ptr[0] == '\\' &&
- (vp->ptr[1] == endc || vp->ptr[1] == ':')) {
- vp->ptr++; /* consume backslash */
- }
- *ptr = vp->ptr[0];
- ptr++;
- vp->ptr++;
- }
- *ptr = '\0';
- DEBUGF(VAR, ("Pattern :%s\n", patt));
-
- if (modifier == 'M') {
- newValue = VarModify(value, VarMatch, patt);
- } else {
- newValue = VarModify(value, VarNoMatch, patt);
- }
- free(patt);
-
- return (newValue);
-}
-
-/**
- * Substitute the replacement string for the pattern. The substitution
- * is applied to each word in value.
- */
-static char *
-modifier_S(VarParser *vp, const char value[], Var *v)
-{
- VarPattern patt;
- char delim;
- char *newValue;
-
- patt.flags = 0;
-
- vp->ptr++; /* consume 'S' */
-
- delim = *vp->ptr; /* used to find end of pattern */
- vp->ptr++; /* consume 1st delim */
-
- /*
- * If pattern begins with '^', it is anchored to the start of the
- * word -- skip over it and flag pattern.
- */
- if (*vp->ptr == '^') {
- patt.flags |= VAR_MATCH_START;
- vp->ptr++;
- }
-
- patt.lhs = VarGetPattern(vp, delim, &patt.flags, NULL);
- if (patt.lhs == NULL) {
- /*
- * LHS didn't end with the delim, complain and exit.
- */
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, delim);
- }
-
- vp->ptr++; /* consume 2nd delim */
-
- patt.rhs = VarGetPattern(vp, delim, NULL, &patt);
- if (patt.rhs == NULL) {
- /*
- * RHS didn't end with the delim, complain and exit.
- */
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, delim);
- }
-
- vp->ptr++; /* consume last delim */
-
- /*
- * Check for global substitution. If 'g' after the final delimiter,
- * substitution is global and is marked that way.
- */
- if (vp->ptr[0] == 'g') {
- patt.flags |= VAR_SUB_GLOBAL;
- vp->ptr++;
- }
-
- /*
- * Global substitution of the empty string causes an infinite number
- * of matches, unless anchored by '^' (start of string) or '$' (end
- * of string). Catch the infinite substitution here. Note that flags
- * can only contain the 3 bits we're interested in so we don't have
- * to mask unrelated bits. We can test for equality.
- */
- if (Buf_Size(patt.lhs) == 0 && patt.flags == VAR_SUB_GLOBAL)
- Fatal("Global substitution of the empty string");
-
- newValue = VarModify(value, VarSubstitute, &patt);
-
- /*
- * Free the two strings.
- */
- free(patt.lhs);
- free(patt.rhs);
-
- return (newValue);
-}
-
-static char *
-modifier_C(VarParser *vp, char value[], Var *v)
-{
- VarPattern patt;
- char delim;
- int error;
- char *newValue;
-
- patt.flags = 0;
-
- vp->ptr++; /* consume 'C' */
-
- delim = *vp->ptr; /* delimiter between sections */
-
- vp->ptr++; /* consume 1st delim */
-
- patt.lhs = VarGetPattern(vp, delim, NULL, NULL);
- if (patt.lhs == NULL) {
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, delim);
- }
-
- vp->ptr++; /* consume 2st delim */
-
- patt.rhs = VarGetPattern(vp, delim, NULL, NULL);
- if (patt.rhs == NULL) {
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, delim);
- }
-
- vp->ptr++; /* consume last delim */
-
- switch (*vp->ptr) {
- case 'g':
- patt.flags |= VAR_SUB_GLOBAL;
- vp->ptr++; /* consume 'g' */
- break;
- case '1':
- patt.flags |= VAR_SUB_ONE;
- vp->ptr++; /* consume '1' */
- break;
- default:
- break;
- }
-
- error = regcomp(&patt.re, Buf_Data(patt.lhs), REG_EXTENDED);
- if (error) {
- VarREError(error, &patt.re, "RE substitution error");
- free(patt.rhs);
- free(patt.lhs);
- return (var_Error);
- }
-
- patt.nsub = patt.re.re_nsub + 1;
- if (patt.nsub < 1)
- patt.nsub = 1;
- if (patt.nsub > 10)
- patt.nsub = 10;
- patt.matches = emalloc(patt.nsub * sizeof(regmatch_t));
-
- newValue = VarModify(value, VarRESubstitute, &patt);
-
- regfree(&patt.re);
- free(patt.matches);
- free(patt.rhs);
- free(patt.lhs);
-
- return (newValue);
-}
-
-static char *
-sysVvarsub(VarParser *vp, char startc, Var *v, const char value[])
-{
-#ifdef SYSVVARSUB
- /*
- * This can either be a bogus modifier or a System-V substitution
- * command.
- */
- char endc;
- VarPattern patt;
- Boolean eqFound;
- int cnt;
- char *newStr;
- const char *cp;
-
- endc = (startc == OPEN_PAREN) ? CLOSE_PAREN : CLOSE_BRACE;
-
- patt.flags = 0;
-
- /*
- * First we make a pass through the string trying to verify it is a
- * SYSV-make-style translation: it must be: <string1>=<string2>)
- */
- eqFound = FALSE;
- cp = vp->ptr;
- cnt = 1;
- while (*cp != '\0' && cnt) {
- if (*cp == '=') {
- eqFound = TRUE;
- /* continue looking for endc */
- } else if (*cp == endc)
- cnt--;
- else if (*cp == startc)
- cnt++;
- if (cnt)
- cp++;
- }
-
- if (*cp == endc && eqFound) {
- /*
- * Now we break this sucker into the lhs and rhs.
- */
- patt.lhs = VarGetPattern(vp, '=', &patt.flags, NULL);
- if (patt.lhs == NULL) {
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, '=');
- }
- vp->ptr++; /* consume '=' */
-
- patt.rhs = VarGetPattern(vp, endc, NULL, &patt);
- if (patt.rhs == NULL) {
- Fatal("Unclosed substitution for %s (%c missing)",
- v->name, endc);
- }
-
- /*
- * SYSV modifications happen through the whole string. Note
- * the pattern is anchored at the end.
- */
- newStr = VarModify(value, VarSYSVMatch, &patt);
-
- free(patt.lhs);
- free(patt.rhs);
- } else
-#endif
- {
- Error("Unknown modifier '%c'\n", *vp->ptr);
- vp->ptr++;
- while (*vp->ptr != '\0') {
- if (*vp->ptr == endc && *vp->ptr == ':') {
- break;
- }
- vp->ptr++;
- }
- newStr = var_Error;
- }
-
- return (newStr);
-}
-
-/**
- * Quote shell meta-characters in the string
- *
- * Results:
- * The quoted string
- */
-static char *
-Var_Quote(const char *str)
-{
- Buffer *buf;
- /* This should cover most shells :-( */
- static char meta[] = "\n \t'`\";&<>()|*?{}[]\\$!#^~";
-
- buf = Buf_Init(MAKE_BSIZE);
- for (; *str; str++) {
- if (strchr(meta, *str) != NULL)
- Buf_AddByte(buf, (Byte)'\\');
- Buf_AddByte(buf, (Byte)*str);
- }
-
- return (Buf_Peel(buf));
-}
-
-
-/*
- * Now we need to apply any modifiers the user wants applied.
- * These are:
- * :M<pattern>
- * words which match the given <pattern>.
- * <pattern> is of the standard file
- * wildcarding form.
- * :N<pattern>
- * words which do not match the given <pattern>
- * <pattern> is of the standard file
- * wildcarding form.
- * :S<d><pat1><d><pat2><d>[g]
- * Substitute <pat2> for <pat1> in the value
- * :C<d><pat1><d><pat2><d>[g]
- * Substitute <pat2> for regex <pat1> in the value
- * :H Substitute the head of each word
- * :T Substitute the tail of each word
- * :E Substitute the extension (minus '.') of
- * each word
- * :R Substitute the root of each word
- * (pathname minus the suffix).
- * :lhs=rhs
- * Like :S, but the rhs goes to the end of
- * the invocation.
- * :U Converts variable to upper-case.
- * :L Converts variable to lower-case.
- * :O ("Order") Alphabeticaly sort words in variable.
- * :u ("uniq") Remove adjacent duplicate words.
- */
-static char *
-ParseModifier(VarParser *vp, char startc, Var *v, Boolean *freeResult)
-{
- char *value;
- char endc;
-
- value = VarExpand(v, vp);
- *freeResult = TRUE;
-
- endc = (startc == OPEN_PAREN) ? CLOSE_PAREN : CLOSE_BRACE;
-
- vp->ptr++; /* consume first colon */
-
- while (*vp->ptr != '\0') {
- char *newStr; /* New value to return */
-
- if (*vp->ptr == endc) {
- return (value);
- }
-
- DEBUGF(VAR, ("Applying :%c to \"%s\"\n", *vp->ptr, value));
- switch (*vp->ptr) {
- case 'N':
- case 'M':
- newStr = modifier_M(vp, value, endc);
- break;
- case 'S':
- newStr = modifier_S(vp, value, v);
- break;
- case 'C':
- newStr = modifier_C(vp, value, v);
- break;
- case 't':
- /* :tl :tu for OSF ODE & NetBSD make compatibility */
- switch (vp->ptr[1]) {
- case 'l':
- vp->ptr++;
- goto mod_lower;
- break;
- case 'u':
- vp->ptr++;
- goto mod_upper;
- break;
- }
- /* FALLTHROUGH */
- default:
- if (vp->ptr[1] != endc && vp->ptr[1] != ':') {
-#ifdef SUNSHCMD
- if ((vp->ptr[0] == 's') &&
- (vp->ptr[1] == 'h') &&
- (vp->ptr[2] == endc || vp->ptr[2] == ':')) {
- const char *error = NULL;
-
- if (vp->execute) {
- newStr = Buf_Peel(
- Cmd_Exec(value, &error));
- } else {
- newStr = estrdup("");
- }
-
- if (error)
- Error(error, value);
- vp->ptr += 2;
- } else
-#endif
- {
- newStr = sysVvarsub(vp, startc, v, value);
- }
- break;
- }
-
- switch (vp->ptr[0]) {
- case 'L':
- mod_lower:
- {
- const char *cp;
- Buffer *buf;
- buf = Buf_Init(MAKE_BSIZE);
- for (cp = value; *cp; cp++)
- Buf_AddByte(buf, (Byte)tolower(*cp));
-
- newStr = Buf_Peel(buf);
-
- vp->ptr++;
- break;
- }
- case 'O':
- newStr = VarSortWords(value, SortIncreasing);
- vp->ptr++;
- break;
- case 'Q':
- newStr = Var_Quote(value);
- vp->ptr++;
- break;
- case 'T':
- newStr = VarModify(value, VarTail, NULL);
- vp->ptr++;
- break;
- case 'U':
- mod_upper:
- {
- const char *cp;
- Buffer *buf;
- buf = Buf_Init(MAKE_BSIZE);
- for (cp = value; *cp; cp++)
- Buf_AddByte(buf, (Byte)toupper(*cp));
-
- newStr = Buf_Peel(buf);
-
- vp->ptr++;
- break;
- }
- case 'H':
- newStr = VarModify(value, VarHead, NULL);
- vp->ptr++;
- break;
- case 'E':
- newStr = VarModify(value, VarSuffix, NULL);
- vp->ptr++;
- break;
- case 'R':
- newStr = VarModify(value, VarRoot, NULL);
- vp->ptr++;
- break;
- case 'u':
- newStr = VarUniq(value);
- vp->ptr++;
- break;
- default:
- newStr = sysVvarsub(vp, startc, v, value);
- break;
- }
- break;
- }
-
- DEBUGF(VAR, ("Result is \"%s\"\n", newStr));
- if (*freeResult) {
- free(value);
- }
-
- value = newStr;
- *freeResult = (value == var_Error) ? FALSE : TRUE;
-
- if (vp->ptr[0] == ':') {
- vp->ptr++; /* consume colon */
- }
- }
-
- return (value);
-}
-
-static char *
-ParseRestModifier(VarParser *vp, char startc, Buffer *buf, Boolean *freeResult)
-{
- const char *vname;
- size_t vlen;
- Var *v;
- char *value;
-
- vname = Buf_GetAll(buf, &vlen);
-
- v = VarFindAny(vname, vp->ctxt);
- if (v != NULL) {
- value = ParseModifier(vp, startc, v, freeResult);
- return (value);
- }
-
- if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
- size_t consumed;
- /*
- * Still need to get to the end of the variable
- * specification, so kludge up a Var structure for the
- * modifications
- */
- v = VarCreate(vname, NULL, VAR_JUNK);
- value = ParseModifier(vp, startc, v, freeResult);
- if (*freeResult) {
- free(value);
- }
- VarDestroy(v, TRUE);
-
- consumed = vp->ptr - vp->input + 1;
- /*
- * If substituting a local variable in a non-local context,
- * assume it's for dynamic source stuff. We have to handle
- * this specially and return the longhand for the variable
- * with the dollar sign escaped so it makes it back to the
- * caller. Only four of the local variables are treated
- * specially as they are the only four that will be set when
- * dynamic sources are expanded.
- */
- if (vlen == 1 ||
- (vlen == 2 && (vname[1] == 'F' || vname[1] == 'D'))) {
- if (strchr("!%*@", vname[0]) != NULL) {
- value = emalloc(consumed + 1);
- strncpy(value, vp->input, consumed);
- value[consumed] = '\0';
-
- *freeResult = TRUE;
- return (value);
- }
- }
- if (vlen > 2 &&
- vname[0] == '.' &&
- isupper((unsigned char)vname[1])) {
- if ((strncmp(vname, ".TARGET", vlen - 1) == 0) ||
- (strncmp(vname, ".ARCHIVE", vlen - 1) == 0) ||
- (strncmp(vname, ".PREFIX", vlen - 1) == 0) ||
- (strncmp(vname, ".MEMBER", vlen - 1) == 0)) {
- value = emalloc(consumed + 1);
- strncpy(value, vp->input, consumed);
- value[consumed] = '\0';
-
- *freeResult = TRUE;
- return (value);
- }
- }
-
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
- } else {
- /*
- * Check for D and F forms of local variables since we're in
- * a local context and the name is the right length.
- */
- if (vlen == 2 &&
- (vname[1] == 'F' || vname[1] == 'D') &&
- (strchr("!%*<>@", vname[0]) != NULL)) {
- char name[2];
-
- name[0] = vname[0];
- name[1] = '\0';
-
- v = VarFindOnly(name, vp->ctxt);
- if (v != NULL) {
- value = ParseModifier(vp, startc, v, freeResult);
- return (value);
- }
- }
-
- /*
- * Still need to get to the end of the variable
- * specification, so kludge up a Var structure for the
- * modifications
- */
- v = VarCreate(vname, NULL, VAR_JUNK);
- value = ParseModifier(vp, startc, v, freeResult);
- if (*freeResult) {
- free(value);
- }
- VarDestroy(v, TRUE);
-
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
- }
-}
-
-static char *
-ParseRestEnd(VarParser *vp, Buffer *buf, Boolean *freeResult)
-{
- const char *vname;
- size_t vlen;
- Var *v;
- char *value;
-
- vname = Buf_GetAll(buf, &vlen);
-
- v = VarFindAny(vname, vp->ctxt);
- if (v != NULL) {
- value = VarExpand(v, vp);
- *freeResult = TRUE;
- return (value);
- }
-
- if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
- size_t consumed = vp->ptr - vp->input + 1;
-
- /*
- * If substituting a local variable in a non-local context,
- * assume it's for dynamic source stuff. We have to handle
- * this specially and return the longhand for the variable
- * with the dollar sign escaped so it makes it back to the
- * caller. Only four of the local variables are treated
- * specially as they are the only four that will be set when
- * dynamic sources are expanded.
- */
- if (vlen == 1 ||
- (vlen == 2 && (vname[1] == 'F' || vname[1] == 'D'))) {
- if (strchr("!%*@", vname[0]) != NULL) {
- value = emalloc(consumed + 1);
- strncpy(value, vp->input, consumed);
- value[consumed] = '\0';
-
- *freeResult = TRUE;
- return (value);
- }
- }
- if (vlen > 2 &&
- vname[0] == '.' &&
- isupper((unsigned char)vname[1])) {
- if ((strncmp(vname, ".TARGET", vlen - 1) == 0) ||
- (strncmp(vname, ".ARCHIVE", vlen - 1) == 0) ||
- (strncmp(vname, ".PREFIX", vlen - 1) == 0) ||
- (strncmp(vname, ".MEMBER", vlen - 1) == 0)) {
- value = emalloc(consumed + 1);
- strncpy(value, vp->input, consumed);
- value[consumed] = '\0';
-
- *freeResult = TRUE;
- return (value);
- }
- }
- } else {
- /*
- * Check for D and F forms of local variables since we're in
- * a local context and the name is the right length.
- */
- if (vlen == 2 &&
- (vname[1] == 'F' || vname[1] == 'D') &&
- (strchr("!%*<>@", vname[0]) != NULL)) {
- char name[2];
-
- name[0] = vname[0];
- name[1] = '\0';
-
- v = VarFindOnly(name, vp->ctxt);
- if (v != NULL) {
- char *val;
- /*
- * No need for nested expansion or anything,
- * as we're the only one who sets these
- * things and we sure don't put nested
- * invocations in them...
- */
- val = Buf_Data(v->val);
-
- if (vname[1] == 'D') {
- val = VarModify(val, VarHead, NULL);
- } else {
- val = VarModify(val, VarTail, NULL);
- }
-
- *freeResult = TRUE;
- return (val);
- }
- }
- }
-
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
-}
-
-/**
- * Parse a multi letter variable name, and return it's value.
- */
-static char *
-VarParseLong(VarParser *vp, Boolean *freeResult)
-{
- Buffer *buf;
- char startc;
- char endc;
- char *value;
-
- buf = Buf_Init(MAKE_BSIZE);
-
- startc = vp->ptr[0];
- vp->ptr++; /* consume opening paren or brace */
-
- endc = (startc == OPEN_PAREN) ? CLOSE_PAREN : CLOSE_BRACE;
-
- /*
- * Process characters until we reach an end character or a colon,
- * replacing embedded variables as we go.
- */
- while (*vp->ptr != '\0') {
- if (*vp->ptr == endc) {
- value = ParseRestEnd(vp, buf, freeResult);
- vp->ptr++; /* consume closing paren or brace */
- Buf_Destroy(buf, TRUE);
- return (value);
-
- } else if (*vp->ptr == ':') {
- value = ParseRestModifier(vp, startc, buf, freeResult);
- vp->ptr++; /* consume closing paren or brace */
- Buf_Destroy(buf, TRUE);
- return (value);
-
- } else if (*vp->ptr == '$') {
- VarParser subvp = {
- vp->ptr,
- vp->ptr,
- vp->ctxt,
- vp->err,
- vp->execute
- };
- char *rval;
- Boolean rfree;
-
- rval = VarParse(&subvp, &rfree);
- if (rval == var_Error) {
- Fatal("Error expanding embedded variable.");
- }
- Buf_Append(buf, rval);
- if (rfree)
- free(rval);
- vp->ptr = subvp.ptr;
- } else {
- Buf_AddByte(buf, (Byte)*vp->ptr);
- vp->ptr++;
- }
- }
-
- /* If we did not find the end character, return var_Error */
- Buf_Destroy(buf, TRUE);
- *freeResult = FALSE;
- return (var_Error);
-}
-
-/**
- * Parse a single letter variable name, and return it's value.
- */
-static char *
-VarParseShort(VarParser *vp, Boolean *freeResult)
-{
- char vname[2];
- Var *v;
- char *value;
-
- vname[0] = vp->ptr[0];
- vname[1] = '\0';
-
- vp->ptr++; /* consume single letter */
-
- v = VarFindAny(vname, vp->ctxt);
- if (v != NULL) {
- value = VarExpand(v, vp);
- *freeResult = TRUE;
- return (value);
- }
-
- /*
- * If substituting a local variable in a non-local context, assume
- * it's for dynamic source stuff. We have to handle this specially
- * and return the longhand for the variable with the dollar sign
- * escaped so it makes it back to the caller. Only four of the local
- * variables are treated specially as they are the only four that
- * will be set when dynamic sources are expanded.
- */
- if ((vp->ctxt == VAR_CMD) || (vp->ctxt == VAR_GLOBAL)) {
-
- /* XXX: It looks like $% and $! are reversed here */
- switch (vname[0]) {
- case '@':
- *freeResult = TRUE;
- return (estrdup("$(.TARGET)"));
- case '%':
- *freeResult = TRUE;
- return (estrdup("$(.ARCHIVE)"));
- case '*':
- *freeResult = TRUE;
- return (estrdup("$(.PREFIX)"));
- case '!':
- *freeResult = TRUE;
- return (estrdup("$(.MEMBER)"));
- default:
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
- }
- }
-
- /* Variable name was not found. */
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
-}
-
-static char *
-VarParse(VarParser *vp, Boolean *freeResult)
-{
-
- vp->ptr++; /* consume '$' or last letter of conditional */
-
- if (vp->ptr[0] == '\0') {
- /* Error, there is only a dollar sign in the input string. */
- *freeResult = FALSE;
- return (vp->err ? var_Error : varNoError);
-
- } else if (vp->ptr[0] == OPEN_PAREN || vp->ptr[0] == OPEN_BRACE) {
- /* multi letter variable name */
- return (VarParseLong(vp, freeResult));
-
- } else {
- /* single letter variable name */
- return (VarParseShort(vp, freeResult));
- }
-}
-
-/**
- * Given the start of a variable invocation, extract the variable
- * name and find its value, then modify it according to the
- * specification.
- *
- * Results:
- * The value of the variable or var_Error if the specification
- * is invalid. The number of characters in the specification
- * is placed in the variable pointed to by consumed. (for
- * invalid specifications, this is just 2 to skip the '$' and
- * the following letter, or 1 if '$' was the last character
- * in the string). A Boolean in *freeResult telling whether the
- * returned string should be freed by the caller.
- */
-char *
-Var_Parse(const char input[], GNode *ctxt, Boolean err,
- size_t *consumed, Boolean *freeResult)
-{
- VarParser vp = {
- input,
- input,
- ctxt,
- err,
- TRUE
- };
- char *value;
-
- value = VarParse(&vp, freeResult);
- *consumed += vp.ptr - vp.input;
- return (value);
-}
-
-/*
- * Given the start of a variable invocation, determine the length
- * of the specification.
- *
- * Results:
- * The number of characters in the specification. For invalid
- * specifications, this is just 2 to skip the '$' and the
- * following letter, or 1 if '$' was the last character in the
- * string.
- */
-size_t
-Var_Match(const char input[], GNode *ctxt)
-{
- VarParser vp = {
- input,
- input,
- ctxt,
- FALSE,
- FALSE
- };
- char *value;
- Boolean freeResult;
-
- value = VarParse(&vp, &freeResult);
- if (freeResult) {
- free(value);
- }
- return (vp.ptr - vp.input);
-}
-
-static int
-match_var(const char str[], const char var[])
-{
- const char *start = str;
- size_t len;
-
- str++; /* consume '$' */
-
- if (str[0] == OPEN_PAREN || str[0] == OPEN_BRACE) {
- str++; /* consume opening paren or brace */
-
- while (str[0] != '\0') {
- if (str[0] == '$') {
- /*
- * A variable inside the variable. We cannot
- * expand the external variable yet.
- */
- return (str - start);
- } else if (str[0] == ':' ||
- str[0] == CLOSE_PAREN ||
- str[0] == CLOSE_BRACE) {
- len = str - (start + 2);
-
- if (strncmp(var, start + 2, len) == 0 && var[len] == '\0') {
- return (0); /* match */
- } else {
- /*
- * Not the variable we want to
- * expand.
- */
- return (str - start);
- }
- } else {
- ++str;
- }
- }
- return (str - start);
- } else {
- /* Single letter variable name */
- if (var[1] == '\0' && var[0] == str[0]) {
- return (0); /* match */
- } else {
- str++; /* consume variable name */
- return (str - start);
- }
- }
-}
-
-/**
- * Substitute for all variables in the given string in the given
- * context If err is TRUE, Parse_Error will be called when an
- * undefined variable is encountered.
- *
- * Results:
- * The resulting string.
- *
- * Side Effects:
- * None. The old string must be freed by the caller
- */
-Buffer *
-Var_Subst(const char *str, GNode *ctxt, Boolean err)
-{
- Boolean errorReported;
- Buffer *buf; /* Buffer for forming things */
-
- /*
- * Set TRUE if an error has already been reported to prevent a
- * plethora of messages when recursing. XXXHB this comment sounds
- * wrong.
- */
- errorReported = FALSE;
-
- buf = Buf_Init(0);
- while (str[0] != '\0') {
- if ((str[0] == '$') && (str[1] == '$')) {
- /*
- * A dollar sign may be escaped with another dollar
- * sign. In such a case, we skip over the escape
- * character and store the dollar sign into the
- * buffer directly.
- */
- str++;
- Buf_AddByte(buf, (Byte)str[0]);
- str++;
-
- } else if (str[0] == '$') {
- /* Variable invocation. */
- VarParser subvp = {
- str,
- str,
- ctxt,
- err,
- TRUE
- };
- char *rval;
- Boolean rfree;
-
- rval = VarParse(&subvp, &rfree);
-
- /*
- * When we come down here, val should either point to
- * the value of this variable, suitably modified, or
- * be NULL. Length should be the total length of the
- * potential variable invocation (from $ to end
- * character...)
- */
- if (rval == var_Error || rval == varNoError) {
- /*
- * If performing old-time variable
- * substitution, skip over the variable and
- * continue with the substitution. Otherwise,
- * store the dollar sign and advance str so
- * we continue with the string...
- */
- if (oldVars) {
- str = subvp.ptr;
- } else if (err) {
- /*
- * If variable is undefined, complain
- * and skip the variable. The
- * complaint will stop us from doing
- * anything when the file is parsed.
- */
- if (!errorReported) {
- Parse_Error(PARSE_FATAL,
- "Undefined variable \"%.*s\"", subvp.ptr - subvp.input, str);
- }
- errorReported = TRUE;
- str = subvp.ptr;
- } else {
- Buf_AddByte(buf, (Byte)str[0]);
- str++;
- }
- } else {
- /*
- * Copy all the characters from the variable
- * value straight into the new string.
- */
- Buf_Append(buf, rval);
- if (rfree) {
- free(rval);
- }
- str = subvp.ptr;
- }
- } else {
- Buf_AddByte(buf, (Byte)str[0]);
- str++;
- }
- }
-
- return (buf);
-}
-
-/**
- * Substitute for all variables except if it is the same as 'var',
- * in the given string in the given context. If err is TRUE,
- * Parse_Error will be called when an undefined variable is
- * encountered.
- *
- * Results:
- * The resulting string.
- *
- * Side Effects:
- * None. The old string must be freed by the caller
- */
-Buffer *
-Var_SubstOnly(const char *var, const char *str, Boolean err)
-{
- GNode *ctxt = VAR_GLOBAL;
- Boolean errorReported;
- Buffer *buf; /* Buffer for forming things */
-
- /*
- * Set TRUE if an error has already been reported to prevent a
- * plethora of messages when recursing. XXXHB this comment sounds
- * wrong.
- */
- errorReported = FALSE;
-
- buf = Buf_Init(0);
- while (str[0] != '\0') {
- if (str[0] == '$') {
- int skip;
-
- skip = match_var(str, var);
- if (skip > 0) {
- Buf_AddBytes(buf, skip, str);
- str += skip;
- } else {
- /* Variable invocation. */
- VarParser subvp = {
- str,
- str,
- ctxt,
- err,
- TRUE
- };
- char *rval;
- Boolean rfree;
-
- rval = VarParse(&subvp, &rfree);
-
- /*
- * When we get down here, rval should either
- * point to the value of this variable, or be
- * NULL.
- */
- if (rval == var_Error || rval == varNoError) {
- /*
- * If performing old-time variable
- * substitution, skip over the
- * variable and continue with the
- * substitution. Otherwise, store the
- * dollar sign and advance str so we
- * continue with the string...
- */
- if (oldVars) {
- str = subvp.ptr;
- } else if (err) {
- /*
- * If variable is undefined,
- * complain and skip the
- * variable. The complaint
- * will stop us from doing
- * anything when the file is
- * parsed.
- */
- if (!errorReported) {
- Parse_Error(PARSE_FATAL,
- "Undefined variable \"%.*s\"", subvp.ptr - subvp.input, str);
- }
- errorReported = TRUE;
- str = subvp.ptr;
- } else {
- Buf_AddByte(buf, (Byte)str[0]);
- str++;
- }
- } else {
- /*
- * Copy all the characters from the
- * variable value straight into the
- * new string.
- */
- Buf_Append(buf, rval);
- if (rfree) {
- free(rval);
- }
- str = subvp.ptr;
- }
- }
- } else {
- Buf_AddByte(buf, (Byte)str[0]);
- str++;
- }
- }
-
- return (buf);
-}
-
-/**
- * Initialize the module
- *
- * Side Effects:
- * The VAR_CMD and VAR_GLOBAL contexts are created
- */
-void
-Var_Init(char **env)
-{
- char **ptr;
-
- VAR_CMD = Targ_NewGN("Command");
- VAR_ENV = Targ_NewGN("Environment");
- VAR_GLOBAL = Targ_NewGN("Global");
-
- /*
- * Copy user environment variables into ENV context.
- */
- for (ptr = env; *ptr != NULL; ++ptr) {
- char *tmp = estrdup(*ptr);
- const char *name = tmp;
- char *sep = strchr(name, '=');
- const char *value = sep + 1;
-
- if (sep != NULL) {
- *sep = '\0';
- VarAdd(name, value, VAR_ENV);
- }
- free(tmp);
- }
-}
-
-/**
- * Print all variables in global and command line contexts.
- */
-void
-Var_Dump(void)
-{
- const LstNode *ln;
- const Var *v;
-
- printf("#*** Global Variables:\n");
- LST_FOREACH(ln, &VAR_GLOBAL->context) {
- v = Lst_Datum(ln);
- printf("%-16s = %s\n", v->name, Buf_Data(v->val));
- }
-
- printf("#*** Command-line Variables:\n");
- LST_FOREACH(ln, &VAR_CMD->context) {
- v = Lst_Datum(ln);
- printf("%-16s = %s\n", v->name, Buf_Data(v->val));
- }
-}
-
-/**
- * Print the values of any variables requested by
- * the user.
- */
-void
-Var_Print(Lst *vlist, Boolean expandVars)
-{
- LstNode *n;
- char *name;
-
- LST_FOREACH(n, vlist) {
- name = Lst_Datum(n);
- if (expandVars) {
- char *value;
- char *v;
-
- if (*name == '$') {
- v = name;
- } else {
- v = emalloc(strlen(name) + 1 + 3);
- sprintf(v, "${%s}", name);
- }
- value = Buf_Peel(Var_Subst(v, VAR_GLOBAL, FALSE));
- printf("%s\n", value);
-
- if (v != name)
- free(v);
- free(value);
- } else {
- const char *value = Var_Value(name, VAR_GLOBAL);
- printf("%s\n", value != NULL ? value : "");
- }
- }
-}
-
diff --git a/usr.bin/make/var.h b/usr.bin/make/var.h
deleted file mode 100644
index 618cf7a..0000000
--- a/usr.bin/make/var.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * Copyright (c) 2002 Juli Mallett.
- * Copyright (c) 1988, 1989, 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * Copyright (c) 1989 by Berkeley Softworks
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Adam de Boor.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef var_h_9cccafce
-#define var_h_9cccafce
-
-struct Buffer;
-struct GNode;
-struct List;
-
-/* Variables defined in a global context, e.g in the Makefile itself */
-extern struct GNode *VAR_GLOBAL;
-
-/* Variables defined on the command line */
-extern struct GNode *VAR_CMD;
-
-/*
- * Value returned by Var_Parse when an error is encountered. It actually
- * points to an empty string, so naive callers needn't worry about it.
- */
-extern char var_Error[];
-
-/*
- * TRUE if environment should be searched for all variables before
- * the global context
- */
-extern Boolean checkEnvFirst;
-
-/* Do old-style variable substitution */
-extern Boolean oldVars;
-
-void Var_Append(const char *, const char *, struct GNode *);
-void Var_Delete(const char *, struct GNode *);
-void Var_Dump(void);
-Boolean Var_Exists(const char *, struct GNode *);
-void Var_Init(char **);
-size_t Var_Match(const char [], struct GNode *);
-char *Var_Parse(const char *, struct GNode *, Boolean, size_t *, Boolean *);
-void Var_Print(struct Lst *, Boolean);
-void Var_Set(const char *, const char *, struct GNode *);
-void Var_SetGlobal(const char *, const char *);
-void Var_SetEnv(const char *, struct GNode *);
-struct Buffer *Var_Subst(const char *, struct GNode *, Boolean);
-struct Buffer *Var_SubstOnly(const char *, const char *, Boolean);
-const char *Var_Value(const char [], struct GNode *);
-
-#endif /* var_h_9cccafce */
diff --git a/usr.bin/makewhatis/Makefile.depend b/usr.bin/makewhatis/Makefile.depend
new file mode 100644
index 0000000..d209adb
--- /dev/null
+++ b/usr.bin/makewhatis/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/man/Makefile.depend b/usr.bin/man/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/man/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mandoc/Makefile.depend b/usr.bin/mandoc/Makefile.depend
new file mode 100644
index 0000000..e3848e3
--- /dev/null
+++ b/usr.bin/mandoc/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libohash \
+ lib/libsqlite3 \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mesg/Makefile.depend b/usr.bin/mesg/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/mesg/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/minigzip/Makefile.depend b/usr.bin/minigzip/Makefile.depend
new file mode 100644
index 0000000..d209adb
--- /dev/null
+++ b/usr.bin/minigzip/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ministat/Makefile.depend b/usr.bin/ministat/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/usr.bin/ministat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkcsmapper_static/Makefile b/usr.bin/mkcsmapper_static/Makefile
index b2a1a13..e16471a 100644
--- a/usr.bin/mkcsmapper_static/Makefile
+++ b/usr.bin/mkcsmapper_static/Makefile
@@ -7,6 +7,9 @@ SRCS= citrus_bcs.c citrus_db_factory.c citrus_db_hash.c \
citrus_lookup_factory.c citrus_pivot_factory.c
MAN=
NO_SHARED= yes
+.if ${MACHINE} == "host"
+NO_WARNS= yes
+.endif
build-tools: mkcsmapper_static
diff --git a/usr.bin/mkcsmapper_static/Makefile.depend b/usr.bin/mkcsmapper_static/Makefile.depend
new file mode 100644
index 0000000..911a48d
--- /dev/null
+++ b/usr.bin/mkcsmapper_static/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.o: yacc.h
+lex.po: lex.c
+lex.po: yacc.h
+yacc.o: yacc.c
+yacc.po: yacc.c
+.endif
diff --git a/usr.bin/mkdep/Makefile.depend b/usr.bin/mkdep/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/mkdep/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkesdb_static/Makefile b/usr.bin/mkesdb_static/Makefile
index 613b25e..fb10f01 100644
--- a/usr.bin/mkesdb_static/Makefile
+++ b/usr.bin/mkesdb_static/Makefile
@@ -7,6 +7,9 @@ SRCS= citrus_bcs.c citrus_db_factory.c citrus_db_hash.c \
citrus_lookup_factory.c
MAN=
NO_SHARED= yes
+.if ${MACHINE} == "host"
+NO_WARNS= yes
+.endif
build-tools: mkesdb_static
diff --git a/usr.bin/mkfifo/Makefile.depend b/usr.bin/mkfifo/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/mkfifo/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu
index 3e83de7..754920fd 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-4096-apm.vhdf.gz
-M'XL(".W%'50``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD9BYO=70`K571:L(P%'WW
-M*R[L35A)DYM;][@Q?1O(9,]:;2N%J<4)VT,_?DF3V-16<2/I)23<YO3DG.26
-M,=,`4(+DP%0P&Z+IV_E%0#U]CU1CD6OUR(#%MU9=AXLN6CT:&T"NTY(!9KUU
-MP@>,NXEZ_G8):.`T/XPA83IH`R3OXO=<59_Y`!P/M5T#)_KL9-&,8X"$0X)`
-M3[:G`BC7:<MN6:7'4WDJ#_NE@T,%1YE>G/R%W2ZM!MG)P-[BG=Y.[(!;P*ZW
-MX/AAZ+.'C1VDA5=&J$`.4@`B\$P1ESJGYCW`V3'/7Q:OCQ^SA:\?8F!^=(=^
-MW-//7!)?/_#Y46C]Z*9^B8`D&3B;K7Y?W^8@.GZ!]8N9U8^E`_WU1#V/NH\!
-M1`L8C"'9ZDS"WG4MHG`U8.(#\M;>!G!SV.>;4_GCWV"RU;DHAD.OYT+_"R@!
-MGC8E)M-CC]_#=#LN=UL'YZJ?^[#R^FSQY2ZIN]V9,KB!7+7L1%\D\M5;(S"$
-M..YLW+);^>H9.#QO-B]@+1N:+CJ33F*P-FNXIOKY+__76P-'@8^*^E&.?@&@
-'6R\`T@<`````
+M'XL("+F;>54``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD9BYO=70`K57+:L,P$+SG
+M*[;T%JC18R6YQX8FMT)H*/163&RGAB8Q::`]N/]>R9)B^9&0%LL;8['6>'9F
+MI1!B!P`*$`R(#N*"4>`(S;P34,V?(SUN,'*CFE@P2BZL.@\7=48UF5I`9M*"
+M`*:]=3P$I.U$M7SJ`EHXPP\I*&)"KD&*J_@]E.5'-@#'QBK7PO$^.Y'7SQ1`
+M,5`(\M[=90XR,VG'[JU,#L?B6.QW;QX.-9Q,S6+U%W;;I!QD)T;V%J_T-O9-
+MZ0#;WH+GAV/W'M9V2".\-D(',A`<$(&EFK@P.3WO`2X.639;/=Z]+%:A?H@C
+M\Y-7Z,<"_>PF"?6#D)\<6S]Y43_%0:F!WFST^_RRC>CYC:P?)4X_D@S<SR>J
+M9=2^+"`ZP-$8(I.Q24ON]KH1D?LS(`X!66-O#;C>[[+UL?@.=["!,P[G^7"8
+M]8R;_P*I@"7U$9.:YX#?[7PS+;8;#^=//_]A[?7)XFZ5.B'CIMR%-KB&G+V?
+MV/&^2,TJ_5.ZSQ$H;17NV&F8Z*==+)Z*S7(0<4W31VO22ABXU[89%JX^_<*7
+4_^NMA9,CMTI"R.076*/W'M('````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu
index 6660765..76af0f8 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu
@@ -1,13 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-bsd.vhdf.gz
-M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD9BYO=70`K91-;X,P#(;O
-M_`I+N_6`DI`8>JW6G2=-VJX%"E4/W2X[[)`?OQ@"Q'RUFPA1!'+\\-I.+$0[
-M`+0"D<^LRP9[B/ECHUW4T!0!30K:@$'(W'8Q3/;!#/;C^!Z'PWJ<7/-:QL6C
-MT>'4/5PO6#Z"2\A+,DHRX)8,+4YXEAAP>DV=RX2H_A2LV2IW76VSD5]89Y`U
-MR#.(S-L4!_;UA4'??BI#L7!7],$TW)QP*=\O`YRZ$RYP7+%:VW5U8JJNW+@8
-MR?AF/'AS"<)O;HM3VS8"U706=P+=KNFZ;+"O,7]:H/;`S3*(OO=A`E@#5H"&
-MWE,-N(<T"X&*GR1;?GU6Y??U)ZPPX:@@=3T_R5\E=%LP!9733_!,[X&^I^-E
-M=[U=.ES7JKH?:Z2D&P?1DW"1A_MR>'MND*=!73)-$H;9*S0(#5*RP+VZ$S_.
-IA--]L%4-A6ED=I-],,-LJR*<$2.O_]:VQ>'&1\4=ON@7D=A:0S`'````
+M'XL("+R;>54``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD9BYO=70`K93!3H0P$(;O
+M/,48;VM"VJ$MW2MQ/9N8J%>6A74/ZL6#!WQW.T"A`PN[&DJ!DNE\_#/35HBV
+M`2@$D9]YSAOJ+.97'6VBAH8$U"DH#=J`==/%T-D',]0ON^<X;'6'DTM>\[AX
+MU#P.+^%ZP?(:7$)>P<Q$`<H>-V=H<.JF1=';X]22.I<)4?XI6+U6[GQM[<@O
+MK#/@'D0!PG8VY$"J[QT-8-"WG<I`%NZ"/IB&FQ,NY?-E@,,+X0+'[1=KNZC.
+MUS;$%2L7(QGOC"MW+D'XSFUQN.Y!@,W)XE:@FS5]SAOJQYA?+5!UP-4RJ-!8
+M,IL$3`6F!*-IG"HP6TAM"$2^DNKB\Z,LOD[?884)1P6IJO.=_#&AW6)2P)Q^
+M8@XT#O3=[HZ;T_O1X_Q1Y7^L#"5=.XB:A.L,Q@[A/F1/]PTR>^O5)=,D#5[N
+M3@\@%$C)`N_4.4S\PX-5?;!E!=HV,GUG'\Q`N-?Q444X+49>_ZUMBS,K+Y5<
++B.@7"Y_:'#`'````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu
index f298a70..c46cfba 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu
@@ -1,14 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-4096-ebr.vhdf.gz
-M'XL("/#%'50``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD9BYO=70`K96Q;H,P$(;W
-M/,5%W3)$MK$/LD9-YTI5VS5`(,J0=NG0@8>OC3'Q82"D,A@P.M_'?[ZS8<P>
-M`/H:;=.&9CLXFM5FU=)X\3"PKD>!%E=J+SU`MUQU'=T8]W"<@>#3^M8^[A0[
-MW/HQH%*0YP'PW>D3QDL*8/G(?=K0[+?T[/5)`U0I2`4*(1-+`_X\?(RE0_)8
-M\V=QXAZN%\R7X!+CY8WT*V/:T-S*Q#X=3LZITPA6/12LBEQ[,AOX^7D&IE=)
-M"2SK;(("^_S"3=\NE"%(N#/Z(`PW-[B4CN<>3MP)%RBNF,WMO+IUJ*Z,G`PU
-M7!D+5ZZ!T)5K<2+N1B#:G457H!X5WJ<-S>N6GA8H.V"T&<3N5X0)8`U8`2K3
-M3R7@#M+,!PI:24WY_565/Y=?/\,&Q_L_1]B,OTC,:L$41&X^@B?3]_0]'<Z;
-MR_7L<&ZK<A^6:"9=:8@,PD4:[LO^[;E%'F_JDG"2T)^]0@*3P#D)O%-WI.6,
-I[3[O@JUJ*%0KTS7R0@RC6Y7!*3;P^F]N+0XCEXJNO=4?V8%!.+\(````
+M'XL("+^;>54``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD9BYO=70`K94]<X,P#(;W
+M_`KENF7@;&$;9\TUG7O7Z\=*"*09VBX=.M#_7@OS86,@2<]@P)RLAU>6;!BS
+M!X"Y)MN\H4Y&1[W:K!H:/]P,K*I)H,45QLL,,"V7;<<TQAT<9X!\7M_:Q1UC
+MAUO=!I02\CP`/G?ZD+P$`LLG[O.&>I?X9Z]/$%!F("1(!1JO#?AU_S*5#L%C
+MS9_%X25<+YA?@TO)RQGI5L:\H1[*Q#X[G%A29Q"LO"E8&;GVA![YN7D&9E9)
+M`4RW-O2!?7YAT+<-9:`7[H(^",/-"9?YX[F#PPOA@H\[+.9V6=TZ5%=$3H8<
+MKXPK5RY!_)5K<1AW(\!F9S$5:$:%]WE#_9CXIP6*%AAM!@4J36:5@JI`E:`D
+M]3,!:@N9=H'H5U)=?'V6Q??YQ\TPX7C_YP@;^6-*JT5E@#E]1!VI[^B[VY\V
+MYX]3A^NVJN[#0M&D2P,10;C&H/00[L/NZ;Y![MY[=6DX28.7N;(C,`&<>X&W
+MZ@PF^?6#%7VP9052-S*[YKUX!L*]C;<JPDDV\OIO;BU.12Z5G+'5'\M!HE._
+#"```
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu
index 0c18ed8..b84dcdd 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu
@@ -1,19 +1,19 @@
# $FreeBSD$
begin 644 img-1x1-4096-gpt.vhdf.gz
-M'XL("/'%'50``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD9BYO=70`K9<[;]PP#(#W
-M^Q4LNJ6HH_?IE@`-F@#=TD>V#O%#"C+DBJ(=.OC'5Y3LL^23C%XAFS!TH/F9
-MI$G11T@X``0#TF:N9<5XVZ3GN+O:>1KM+@.ZYZ,+*V#C@`'7.R5A>(\Q8.TD
-MA'JK8.R$DV7M<<URD";"#;'52LJ*&-<$W!RNO0PH);3M&?!Q]H_YUR%!*!`'
-M8.Y^`H*"9"#%">=CEWWLW]W])WCX\.4;PKXOX3+JE`,#W4-_`-NMO*/_'F[`
-M.8<P^\QF@^5%W'4>QQ$W;.!R4L:)+:M00Y<$*TEJI6,K;J#C8%MHAP+N9H53
-ME2M/H+I3L.]!&9`4>HN+00&E`-JUB?80!LRY>(`]!=8A<#Q^;HX!]K[Y^6[R
-M3]"I(G)25I2R)[!4B"Z%N\?:W@P74AROG3V-V9/5LG>8BB4G944Q>VW(7CY)
-MF+U<ZSK<E+7F38KKZF:/^JGA^L/MW^?7LF)\:-(S`,4$K.:AM+:OV!V(J]@=
-MB*O8'8BKVAT(K-@=B*O8'8BKV!V(J]H=#FA(O2&..*P]KL%0V'/HTJHIC^-1
-M-[^"8]=)N(9MC?Z-(9Y_&:;B$$?<YA"WIA3LB;,*MN(01US5(:ZFSV_%0?G^
-M4A+7>P'*M92.@6RI&0_L?QQ-__OE3YP]Y7=F6#Z25X+VC&-A*M<B+3Y$#;B.
-M_'M[]WSU\OH\X]@4U?Q@K&A7Q0XBSL)5:;CWMU\_>N33XEUFFU)Q]CH!1.`6
-M$P<^>?>4EHKR7T!SL,:"EFA[DN1'HL@6,N)\J<0W_^^[#;C:I>+^&NS^`N3M
-&#A:S#0``
+M'XL(",*;>54``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD9BYO=70`K98[;]M`#,=W
+M?PH:78H4%>ZMTQ(@1F.@6_K:NDBRE&2(@P`=.JC?O>2=7B?KA+HX^2S(H/@3
+M_SQ2-&/^`%`"6+ERCANZ0Q9^NMW-SM%X=1T0GT\A+(`9`CVN1B,3=$_30-OV
+MBW'GY9VE`L'[ZP&7C8?:9S/<:?2Z7''##.>/26Y['5!K*,L+X(\A/N&V0X,R
+MH`H0>#\#Q4$+T&K$.:VZGL=W?_P,#W=?OQ/LYR17<#36`NH<"@&\6$3'_UVN
+MQV%`(.4RVP-.QG!ROXZ3A.,;N+4%'8_@U):7KZ%KQ&H6>MFYEVR@DM"64)XB
+MN-L%SB2N/$7FRD!>@VE`<ZA;NC@9X!S`8IM8!Q$@,,0"<DQT1<#N_"4[>]C'
+M[.U#'Y_B?46LK;@AECU%I<)L3&Y.M;TI%T*<3)T]2]G3R;)7],6RMN*&:/9*
+MG[WU)%'V5ENF&[*6[4-<E39[W$T-[`]\?U^>XX;N(0L_'JAZ8+((E3`INX-P
+M";N#<`F[@W!)NX.`";N#<`F[@W`)NX-P2;L#@8:E&^*$<T,<YP]F7Q(T"",Z
+MCBF^(Z%D*->(K=$?'^*1S3`)ASCA-H>X%!MBW2$68A,.<<(E'>((M&0V$HSK
+M+Z/I.E=@L*7L'"BFFG'`^O7<U+^>?R^R9ZE4QC_)BT7^0E)A&FR1DAYB3G0]
+MB^_=_>/-\\OC@!.]JN'!5-%8Q0A1%W+18.PD]WCX]LDA#T]C="NOJ<D+OSEN
+M@Z)7S%QX'QUBLC^A6#6*;5H0EGS'%?P(#(1[OU)YUI7*_.;_W5N/2UTJ)6.[
+)OZ@^X(6S#0``
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu
index 171e991..04d78d5 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-4096-mbr.vhdf.gz
-M'XL("/+%'50``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD9BYO=70`K96Q;H,P$(;W
-M/,5%W3(@^[`/LD9-YTI5VS5`(,J0=NG0@8>OC3'8.)"D,AQ@=/;'?[ZS8<P<
-M``*!%5?N\XYVE_AGN]JL.AHO'P/F#)HF`"8*:'"5PJD.R@K9-Y0Q#EJXNI1Q
-M!LC[MC%HD_%8)P[N.(P*;=[AXA*#L^$VCP&EA*((@.]6'\9.A]!`F8&0(`ER
-MO#?@S_W')&"#X['FS^#P%FX0S._!I7J4T].MC'E'.Y:)>5J<6%*G$*Q^*%@9
-MN?9$/AGGYAF86B45L+SWH0\<\@NCOFTH`[UP%_1!&&ZA<9G?GSLXO!$N^+AR
-M,;?+ZM:ANBIR,N1T9=RY<C7$7[D&AW$W`NQV%E6!JE=XGW>TKXE_&J#H@=%F
-MD/I?$:5`#5`-)'4[$T!;R'(7B'XEM=7W5UW]G'_=#&L<'_X<H>GQF.K50AE@
-MH3]"1]UV]#WM3YOSY61Q=JNR'Q:D)UTJB`C")3_<E]W;<X<\C.K2<)+(G;U2
-M`!/`N1=XK^[@ES-U^[P-MFZ@E)U,:]Z+Y[BZ56F<9)-1_\VMP5'D4E&UM_H#
-(GF2M3+\(````
+M'XL(",:;>54``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD9BYO=70`K94]<\,@#(;W
+M_`KUNF7P`09,UES3N7>]?JS$L=,,;9<.'=S_7LGX`TSM)#UBV2$G]/@5$H0Q
+M]P&0`IC]XSGO:+99>#6K]:JE\?UU0,.@KB-@AD"'*Q&'$]"LZ@9HC`,)QQN-
+M,Q"\&SN#)AL_-YF'.PQ1L<T[?%SF<'VZ]75`I<#:"/C4ZQ.IRR$)J`J0"I0&
+M(RY-^&7W/$G8X7BJ]7,X<0XW".:7X'**\F;ZG3'O:,8V<=\]3BZI0P2KKDI6
+M)>X]:29Q?IV!X2XI@9G.)T+@4%\8]6UB&2)(=T$?Q.E:PA7A?.[AQ)ET(<3M
+M%VN[K.XF5E<F+H::[HP+=RY!PIWK<"+M02#:DP4[$&?%SWE'\Y"%EP/*#IAL
+M!:70AMPZ!UV#KD`K&A<2]`8*XP-%V$E-^?E1E5^G;[_"A./#/T=L%"]RVBVZ
+M`&'I)?I`8T_?[>ZX/KT?>UQ_5/4OEIH672%$1NFB0YLQW?OMXUV+W+X-ZO)X
+MD<8HO(L#,`F<!XEWZA"3_83)RB'9J@9E6IF]!3\"!^%>IT<5X12;1/VWM@ZG
+/$[>*96SU"XRD3B>_"```
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu
index 49a64aa..2cfff46 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-pc98.vhdf.gz
-M'XL("//%'50``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9&8N;W5T`*V5L6Z#,!"&
-M]SS%1=TR1/BP#UBCIG.EJNT:0B'*T';IT(&'KVU,\&$@266PD-'AC__WV><D
-MZ2X`B9"4$\_Y0+O;\KM=;5:6)IK[@$I!&0)?-=#BT.@K)%02=&_4H&F&Q@+M
-M=G3U.*&#(<B-F@U,X)Q=&7G^T!I6&4@%BB#'6Q6^[]\F#&,\PQT.K^$N@L4M
-MN-2,\K[4:E%<<'.!#K=VK/6`DTOJ-"*I[S*KXBX6Q'PTSL\S)'H-5Y#D+H8<
-M>,DO#/J*4`8RNPOZ(+1;&ES&OQ<>#J_8!8X[+N9V6=TZ5%=%3D8ZWADW[EP#
-MX3NWPV'<0B!M9=8KT-3(X#D?:)^W_.Z`T@&CS2"YLX-2H`:H!E*FGTF@`K+<
-M!R)?26WU_557/^=?/\,&)T85W6]F/*9FMU`&6)J?T(?I>_H>]J?-^?/4X_I2
-MU?]8DIETI2$RL$O<[M/NY=$B#X.Z-)PD\F?OJ$\H"4(PXT[=@2]GLOGMS=8-
-D')65V3?VP@*3I<K@5#(:]=_<=CB*O%3TJ;;Z`TU!^3)P"```
+M'XL(",F;>54``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9&8N;W5T`*V4/4_#,!"&
+M]_Z*J]@Z1/;E[+AK19F1$!]K"$GI`"P,#.&_X\NG'3=IBYRXD:O+/7E?GWU"
+MM!<`(8C\Q',^4.\2_ZY7FU5#D]5U0*4@#X&/%MC@D/5M"0H".YL,J*IQ>($Z
+MF5P]3MI@".JR9@,G<)U=BKQ^V!A6&9`"I<'@I0J?]T\G#&,\PRT.S^$&P?(2
+M7,I9SIM6+<H!-Q=H<>N.M1YQM*3.(D1YE5D5=[,@FDF>6V<0=@\7($P70Q\X
+MU!=&?=M0!GIV%_1!:#=G7.:_+QT<GK$+/NYUL;;+ZM:ANB)R,=+IR;CPY#+$
+M/[DM#N,V`FHZL]V!W".#YWR@OD_\NP52!XRV@H3:<%BGH"O0)6C%\XQ`;R$S
+M+A#]G5077Y]E\7W\<2O,.#GIZ.[@?$SYM.@,,.>/Z#>>._IN]H?-\>/0X_I6
+MU7^8-"^ZLA`*[-J`-J/=N]W#;8/<O0_JTG"1QBS[R]Y`$$CI&>_464SRZYNE
+IP6Q9@3*-S'YX?[P`XUZFK8IQ2DRR_EO;%J<C;Y5<B-4?7X$:67`(````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu
index bcf2071..098c281 100644
--- a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-vtoc8.vhdf.gz
-M'XL("/7%'50``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME,MN@S`0
-M1??YBBMUEP7R<PC;JLVN4J7^0""8J(NV4M5%%_[XVK%)L'$>JC"#!1KF>*X]
-M#&-A`(I0"Y#VI@2TA%*0Y!P]G']NL-MO8Q[?GNBE"L.N`HP[9S&$77/8*AMV
-MM8[`31+'KP,W8`V8*`(#KCE'-3=QU_(+N'8IN0'7W8LC-_?H#8S)<+L);K_P
-M8?"97`-WX/(^(,OE<B]79M_S.%_`.8=EL_P"[BQ73$)$@N.E[%"%.\7U)UR>
-MXPVQK)B=6;14^'`OKF_1&4@)J6<XJ2-.^"CMOF\+\V6'?:W2*Y2*BL#%:H]B
-MHR()&D#FV*LD:@5J4&^F0)$<,^S^Z]/L?]Y_I_M'L5$-0]E\O'!-T"U20[1^
-M$>K]\R2_A^?#^OWC,.)$5#4N[%KJJ9/F*BF5NW5]=/QU1YR<;Q)-=Z]38`J<
-M)\)C=KNT6#Q.G<2:`9T^ICE:\I(XBK7G<9IE4?\O98^CA4O%U=[J#P!,R,C=
-#!@``
+M'XL(",R;>54``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME$]/A#`0
+MQ>_[*9YZVP-IAU+@NM&]F9AX\2@+9=V#FA@/'O"[.Z6PT,+^B:$4`GG,K_/:
+MR0CA!J`T4H).[%2$)(92B!4+%5B?3C3;+V,VS_?J,7*C63F89'$V1)P3FB@8
+MS6K=`3,O3IX'9A`Y!,T"'2X?HO*+N'/Y.5RQE%V'VUV+T_RL4!D8$^!>1[AR
+MX<.0$[L&?.`DVV*Y!+Q1@5UI[;K@\(3E*1P+S0#R<8-=&H60AY-SV2%RMX^K
+M!ER0XX7=\_/K<6;14I'UM;BJP,Z`""*>X&Y['-FHA/\O9IZGA>8I\B]7*JH#
+M+E9[BG1F91U#U]"F[54Q4@6=(\W&0/*.&4WY^6'*[\//>/\LSC:JNIZ?-IZX
+M"?(B*:BPB^C*OH_RNWO8KP_O^QY'G:M^86ZIQTX:NF1!9X/=+??1%KEY.V87
+M3S=IB.([Y<:L(*5GO,N.,=&O;U8=S9H:2=:FV4_OPQ,L[B6L/8M+1!#U_U*V
+1.+UPJ11"K/X`5,-&%]T&````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu
index 189b488..b793e81 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-512-apm.vhdf.gz
-M'XL(".7%'50``VEM9RTQ>#$M-3$R+6%P;2YV:&1F+F]U=`"M54UOPC`,O?,K
-M+.V&M*I-'(<=-PUND]#0SE!HBRH-J!C2=NB/7SYI2@MB4U,K2N3F]?G9<>/8
-M#@`4(!C$RF)GW,S-_L*@GKY':L21'_7(@B6W3EV'BRY&/1I;0*;=(@;,.N=X
-M")BT'?7\[1+0PFE^F(",M=$&2-S%[[FJ/O,>.#94N!:.=]F)PJP3`,E`(M"3
-MFZD`RK7;L5M6Z?%4GLK#?NGA4,%1I@_+O[#;I54O.S%P;O'.W*);,`?8SBUX
-M?CAT[:%)!VGA52*4(0/!`1%8IH@+[5/[#N#LF.<OB]?'C]DBU`]Q8'YTAWXL
-MT,]>DE`_"/G1T/K13?TD!RE[:K/1[^O;%J+G-[1^$Z=?G/;,UQWU/&H_%A`=
-MX&`,R75GXNZN:Q&Y[P&3$)`UZ36`F\,^WYS*G_`&D^O.1=%O^CSC^E]`$EAJ
-M6DRFUP&_A^EV7.ZV'LYW/_]AE>MSBB^CI':X,Y5@`[EJV/&N2!2JMT9=RTG2
-M"MRQ6X7J63@\!YL7L!:&IK?6IN7H[<T:SG2_\.7_YM;"T<"EHGZ4HU\LKXQY
-$T@<`````
+M'XL("*2;>54``VEM9RTQ>#$M-3$R+6%P;2YV:&1F+F]U=`"ME5UKPC`4AN_]
+M%6?L3EA)DY.DNYQ,[P8R&>QN%-NZPM3BA.VB^^_+ITT_%#<:CZ7E-(]OWG,2
+M";$#`#EP"D0%<4%C8`C-<R>@GC]':MQ@Y$8]L;"87)AU'A=U1CV96B#5:4X`
+ML]X\%@+C=J)>/G6!%J?U80R2Z!!K$/PJ?0]5]9$/X.A8R[4XUE?'"W,?`T@*
+M$D'<NZLH0.0Z[=2]5>GA6![+_>[-XU#A1*8GR[^HVZ;5H#H^<FWQRMJB;TH'
+M;-<6O#X<N_?0E$-HXU4A5"`%S@`1:*:$<YU3SSW@XI#GL]7CW<MB%?J'.+(^
+M<85_-/#/;I+0/PCUB;']$Q?]DPRD'.C-QK_/+]N(7M_8_B7./Y(.7,\GZF74
+M_E@@.N!H"I$*`Q3,[75M(O-G0!(":5->`USO=_GZ6'Z'.UCC=(6+8CCT?,KT
+M?X&00%-SQ&3Z/M!W.]],R^W&X_SIYW]8U?I4XNXJ54(DS7(7JL`&.7L_J6-]
+MDYI9ZBLSW<MQW%JX4Z<PT4][L7A:;%X`3XQ,'ZV'5D+C7MO%L#AS^H4O_[>V
+1%B=&;I64D,DOU%=49]('````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu
index 7edc3a0..203face 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu
@@ -1,13 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-512-bsd.vhdf.gz
-M'XL(".;%'50``VEM9RTQ>#$M-3$R+6)S9"YV:&1F+F]U=`"ME$UO@S`,AN_\
-M"DN[]8"2D!AZK=:=)TW:K@4*50_=+COLD!^_&`+$?+6;"%$$<OSPVDXL1#L`
-MM`*1SZS+!GN(^6.C7=30%`%-"MJ`0<C<=C%,]L$,]N/X'H?#>IQ<\UK&Q:/1
-MX=0]7"]8/H)+R$LR2C+@E@PM3GB6&'!Z39W+A*C^%*S9*G==;;.17UAGD#7(
-M,XC,VQ0']O6%0=]^*D.Q<%?TP33<G'`IWR\#G+H3+G!<L5K;=75BJJ[<N!C)
-M^&8\>',)PF]NBU/;-@+5=!9W`MVNZ;ILL*\Q?UJ@]L#-,HB^]V$"6`-6@(;>
-M4PVXAS0+@8J?)%M^?5;E]_4GK##AJ"!U/3_)7R5T6S`%E=-/\$SO@;ZGXV5W
-MO5TZ7->JNA]KI*0;!]&3<)&'^W)X>VZ0IT%=,DT2AMDK-`@-4K+`O;H3/\Z$
-HTWVP50V%:61VDWTPPVRK(IP1(Z__UK;%X<9'Q1V^Z!>1V%I#,`<`````
+M'XL("*>;>54``VEM9RTQ>#$M-3$R+6)S9"YV:&1F+F]U=`"ME,%.A#`0AN\\
+MQ1AO:T+:H2W=*W$]FYBH5Y:%=0_JQ8,'?'<[0*$#"[L:2H&2Z7S\,]-6B+8!
+M*`21GWG.&^HLYE<=;:*&A@34*2@-VH!UT\70V0<SU"^[YSAL=8>32U[SN'C4
+M/`XOX7K!\AI<0E[!S$0!RAXW9VAPZJ9%T=OCU)(ZEPE1_BE8O5;N?&WMR"^L
+M,^`>1`'"=C;D0*KO'0U@T+>=RD`6[H(^F(:;$R[E\V6`PPOA`L?M%VN[J,[7
+M-L05*Q<C&>^,*W<N0?C.;7&X[D&`S<GB5J";-7W.&^K'F%\M4'7`U3*HT%@R
+MFP1,!:8$HVF<*C!;2&T(1+Z2ZN+SHRR^3M]AA0E'!:FJ\YW\,:'=8E+`G'YB
+M#C0.]-WNCIO3^]'C_%'E?ZP,)5T[B)J$ZPS&#N$^9$_W#3)[Z]4ETR0-7NY.
+M#R`42,D"[]0Y3/S#@U5]L&4%VC8R?6<?S$"XU_%113@M1E[_K6V+,RLOE5R(
+*Z!<+G]H<,`<`````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu
index c7d0a81..45c1d9b 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu
@@ -1,14 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-512-ebr.vhdf.gz
-M'XL(".?%'50``VEM9RTQ>#$M-3$R+65B<BYV:&1F+F]U=`"ME;%N@S`0AO<\
-MQ47=,D2VL0^R1DWG2E7;-4`@RI!VZ="!AZ^-,?%A(*0R&#`ZW\=_OK-AS!X`
-M^AIMTX9F.SB:U6;5TGCQ,+"N1X$65VHO/4"W7'4=W1CW<)R!X-/ZUC[N%#O<
-M^C&@4I#G`?#=Z1/&2PI@^<A]VM#LM_3L]4D#5"E(!0HA$TL#_CQ\C*5#\ECS
-M9W'B'JX7S)?@$N/EC?0K8]K0W,K$/AU.SJG3"%8]%*R*7'LR&_CY>0:F5TD)
-M+.ML@@+[_,)-WRZ4(4BX,_H@##<WN)2.YQY.W`D7**Z8S>V\NG6HKHR<##5<
-M&0M7KH'0E6MQ(NY&(-J=15>@'A7>IPW-ZY:>%B@[8+09Q.Y7A`E@#5@!*M-/
-M)>`.TLP'"EI)3?G]594_EU\_PP;'^S]'V(R_2,QJP11$;CZ")]/W]#T=SIO+
-M]>QP;JMR'Y9H)EUIB`S"11KNR_[MN44>;^J2<)+0G[U"`I/`.0F\4W>DY8SM
-H/N^"K6HH5"O3-?)"#*-;E<$I-O#Z;VXM#B.7BJZ]U1_9@4$XOP@`````
+M'XL("*J;>54``VEM9RTQ>#$M-3$R+65B<BYV:&1F+F]U=`"ME3US@S`,AO?\
+M"N6Z9>!L81MGS36=>]?KQTH(I!G:+ATZT/]>"_-A8R!)SV#`G*R'5Y9L&+,'
+M@+DFV[RA3D9'O=JL&AH_W`RLJDF@Q17&RPPP+9=MQS3&'1QG@'Q>W]K%'6.'
+M6]T&E!+R/``^=_J0O`0"RR?N\X9ZE_AGKT\04&8@)$@%&J\-^'7_,I4.P6/-
+MG\7A)5POF%^#2\G+&>E6QKRA'LK$/CN<6%)G$*R\*5@9N?:$'OFY>09F5DD!
+M3+<V](%]?F'0MPUEH!?N@CX(P\T)E_GCN8/#"^&"CSLLYG99W3I45T1.AARO
+MC"M7+D'\E6MQ&'<CP&9G,15H1H7W>4/]F/BG!8H6&&T&!2I-9I6"JD"5H"3U
+M,P%J"YEV@>A74EU\?9;%]_G'S3#A>/_G"!OY8TJK166`.7U$':GOZ+O;GS;G
+MCU.'Z[:J[L-"T:1+`Q%!N,:@]!#NP^[IOD'NWGMU:3A)@Y>YLB,P`9Q[@;?J
+M#";Y]8,5?;!E!5(W,KOFO7@&PKV-MRK"23;R^F]N+4Y%+I6<L=4?RT&B4[\(
+"````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu
index 7e6c736..5990d3c 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu
@@ -1,18 +1,19 @@
# $FreeBSD$
begin 644 img-1x1-512-gpt.vhdf.gz
-M'XL(".G%'50``VEM9RTQ>#$M-3$R+6=P="YV:&1F+F]U=`"METMOU#`0@._[
-M*P;U5D2P'=O)'EO12MS*Z]9#\["KE6`1$@<.^?%X_"!VU@X4.1E%64W\99X9
-M+R'N`.`,R)"YEA7+;9.>R^'Z8&ET?!G0O!]-V``;`W2XR2@)PV>4`JV]$&I7
-MN<5&6K+>6URS'J2)<'.\:B-E18QK'"ZXJU\&%`*&X0+X)=C';#H$<`G\",P\
-M3X!3$`P$_X.SOHLIMN_N_CT\W'S\C+#'U5U&C5+-0%J01]#SQCI:=O>T<=?A
-MC$$8?::SSK9%W-MM]!RN1=R\@\M)&<?W5KD:^K?<.IP@Z:H^7M4+Z!G(">:A
-MB/N:X&3ERN.H'B5T$T@%@L*D\6:60*FQS[1);R$,F,G[$3H*;$3@<O[0G!WL
-M3?/CM;>/4U\1.2DK2M'C;*\BT*B_N`LIKJT=O1ZC)ZI%[^B+)2=E13%Z@XM>
-M/DAH5*YU#<Y'K7F5XL;*T9.H-OUAOM^7U[)B>6C2TP&Y!U:S4&@]5>P.Q%7L
-M#L15[`[$5>T.!%;L#L15[`[$5>P.Q%7M#@-4I-X01YRMO<XFH(51I684Q_$2
-M$A'&9<"QO=&_,\3SR5`5ASCB=H>X5D5GP[%QMN(01US5(2[]]EN:W9GM+RGP
-MON.X6>OZ&,C6FK'`Z?M933]/O^+H(8ZZBL@*KF<M%J;L@`WX$CGC?63?U=WS
-M]>G;<\`Q[U5X,5:TJ6(#X1?NRM3=^]M/[RSR:;4N\YF2<?1&#H3C)R9VW%OW
-ME):*M#N@X*S2F$O"5TE^)(IL(2/.EDK\\/_FUN%JEXKY:W#X#1@%S56S#0``
+M'XL("*V;>54``VEM9RTQ>#$M-3$R+6=P="YV:&1F+F]U=`"ME4N/U#`,@._S
+M*SS:"UI$E3B/9FXP8E=P6V"Y<>ES60D&(7'@4/X[<9(^TFD&=I4T4V7D^*OM
+MV#%C?@!(!%9MO-."X5C$S["[WCD:KY\&M-\G$U;`P@(]KK%"AK2GZZ#OPV3<
+M:7EE(0%Y6(^X8AIR7RQP[:1U/M."!<Z/V=W^:4"EH*K.@)]'^]`=AP*I01X`
+M[7X&DH-"4'+".5]5L[3OYO8]W+WY>$^P+[.[R*VP;T$:$`B\7UG'D^Z^PY6[
+M'F<-`B'6T1YQ(H43^W7T/$X0CE_`;4T8>`(G+VGY'/J_L_4XQ6(ML]0R"@R"
+M;J"MDKAO$4YGSCQ)XEI#V8#N0'%H>EJT&CBW]MDR,0Z"@"VP`Y0VT#4!A].'
+MXN1AKXJ?+X-]DH>,V)II02IZ$B]E!!GU#W<AQHG<T3,4/94M>H>0+%LS+4A&
+MK_+1VPX2&;59,L,8M6(?X^K,T=,DMO5A[^_S=UHPW!7QXX$R`+-9*%'GK`["
+M9:P.PF6L#L)EK0X"9JP.PF6L#L)EK`["9:T."W3)G*F)$\XU\9[B7`N0*S.2
+M[9CL>TTH$;NK\5+K3S?QQ&'HC$V<<!>;N$B?;1BX<C9C$R=<UB9N@8;$6H!V
+M]:45K4L)VI:460)QSAD';'Z<NN;7X^]5]$Q(E<U)^B@H,74)6-%'=$OKA7U7
+M-P_7C]\?1AP&K\8/4T;;++80>>:N%6@SNWM[_/36(8]?)^LVKJE9R_Y*>YE(
+MNF*6C@?K+*;X$SLK)V>['M"0[C2C/Y&`<"\V,L^X5%EN?N[9>ESN5*D8V_T%
+(**T"\+,-````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu
index b9c8a97..fcecea2 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-512-mbr.vhdf.gz
-M'XL(".K%'50``VEM9RTQ>#$M-3$R+6UB<BYV:&1F+F]U=`"ME;%N@S`0AO<\
-MQ47=,B#[L`^R1DWG2E7;-4`@RI!VZ="!AZ^-,=@XD*0R'&!T]L=_OK-AS!P`
-M`H$55^[SCG:7^&>[VJPZ&B\?`^8,FB8`)@IH<)7"J0[*"MDWE#$.6KBZE'$&
-MR/NV,6B3\5@G#NXXC`IMWN'B$H.SX3:/`:6$H@B`[U8?QDZ'T$"9@9`@"7*\
-M-^#/_<<D8(/CL>;/X/`6;A#,[\&E>I33TZV,>4<[EHEY6IQ84J<0K'XH6!FY
-M]D0^&>?F&9A:)16PO/>A#QSR"Z.^;2@#O7`7]$$8;J%QF=^?.SB\$2[XN'(Q
-MM\OJUJ&Z*G(RY'1EW+ER-<1?N0:'<3<"['8658&J5WB?=[2OB7\:H.B!T6:0
-M^E\1I4`-4`TD=3L30%O(<A>(?B6UU?=77?V<?]T,:QP?_ARAZ?&8ZM5"&6"A
-M/T)'W7;T/>U/F_/E9'%VJ[(?%J0G72J(",(E/]R7W=MSASR,ZM)PDLB=O5(`
-M$\"Y%WBO[N"7,W7[O`VV;J"4G4QKWHOGN+I5:9QDDU'_S:W!4>124;6W^@.>
-'9*U,OP@`````
+M'XL("+";>54``VEM9RTQ>#$M-3$R+6UB<BYV:&1F+F]U=`"ME3USPR`,AO?\
+M"O6Z9?`!!DS67-.Y=[U^K,2QTPQMEPX=W/]>R?@#3.TD/6+9(2?T^!42A#'W
+M`9`"F/WC.>]HMEEX-:OUJJ7Q_75`PZ"N(V"&0(<K$8<3T*SJ!FB,`PG'&XTS
+M$+P;.X,F&S\WF8<[#%&QS3M\7.9P?;KU=4"EP-H(^-3K$ZG+(0FH"I`*E`8C
+M+DWX9?<\2=CA>*KU<SAQ#C<(YI?@<HKR9OJ=,>]HQC9QWSU.+JE#!*NN2E8E
+M[CUI)G%^G8'A+BF!F<XG0N!07QCU;6(9(DAW01_$Z5K"%>%\[N'$F70AQ.T7
+M:[NL[B965R8NAIKNC`MW+D'"G>MP(NU!(-J3!3L09\7/>4?SD(67`\H.F&P%
+MI="&W#H'78.N0"L:%Q+T!@KC`T7824WY^5&57Z=OO\*$X\,_1VP4+W+:+;H`
+M8>DE^D!C3]_M[K@^O1][7']4]2^6FA9=(41&Z:)#FS'=^^WC78O<O@WJ\GB1
+MQBB\BP,P"9P'B7?J$)/]A,G*(=FJ!F5:F;T%/P('X5ZG1Q7A%)M$_;>V#J<3
+.MXIE;/4+C*1.)[\(````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu
index 94e27d6..f54ce7f 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-512-pc98.vhdf.gz
-M'XL(".O%'50``VEM9RTQ>#$M-3$R+7!C.3@N=FAD9BYO=70`K96Q;H,P$(;W
-M/,5%W3)$^+`/6*.F<Z6J[1I"(<K0=NG0@8>O;4SP82!)9;"0T>&/__?9YR3I
-M+@")D)03S_E`N]ORNUUM5I8FFON`2D$9`E\UT.+0Z"LD5!)T;]2@:8;&`NUV
-M=/4XH8,AR(V:#4S@G%T9>?[0&E892`6*(,=;%;[OWR8,8SS#'0ZOX2Z"Q2VX
-MU(SROM1J45QP<X$.MW:L]8"32^HT(JGO,JOB+A;$?#3.SS,D>@U7D.0NAAQX
-MR2\,^HI0!C*["_H@M%L:7,:_%QX.K]@%CCLNYG99W3I45T5.1CK>&3?N7`/A
-M.[?#8=Q"(&UEUBO0U,C@.1]HG[?\[H#2`:/-(+FS@U*@!J@&4J:?2:`"LMP'
-M(E]);?7]55<_YU\_PP8G1A7=;V8\IF:W4`98FI_0A^E[^A[VI\WY\]3C^E+5
-M_UB2F72E(3*P2]SNT^[ET2(/@[HTG"3R9^^H3R@)0C#C3MV!+V>R^>W-U@T<
-CE979-_;"`I.ERN!4,AKUW]QV.(J\5/2IMOH#34'Y,G`(````
+M'XL("+2;>54``VEM9RTQ>#$M-3$R+7!C.3@N=FAD9BYO=70`K90]3\,P$(;W
+M_HJKV#I$]N7LN&M%F9$0'VL(2>D`+`P,X;_CRZ<=-VF+G+B1J\L]>5^??4*T
+M%P`AB/S$<SY0[Q+_KE>;54.3U75`I2`/@8\6V."0]6T)"@([FPRHJG%X@3J9
+M7#U.VF`(ZK)F`R=PG5V*O'[8&%89D`*EP>"E"I_W3R<,8SS#+0[/X0;!\A)<
+MREG.FU8MR@$W%VAQZXZU'G&TI,XB1'F5615WLR":29Y;9Q!V#Q<@3!=#'SC4
+M%T9]VU`&>G87]$%H-V=<YK\O'1R>L0L^[G6QMLOJUJ&Z(G(QTNG)N/#D,L0_
+MN2T.XS8":CJSW8'<(X/G?*"^3_R[!5('C+:"A-IP6*>@*]`E:,7SC$!O(3,N
+M$/V=5!=?GV7Q??QQ*\PX.>GH[N!\3/FTZ`PPYX_H-YX[^F[VA\WQX]#C^E;5
+M?Y@T+[JR$`KLVH`VH]V[W<-M@]R]#^K2<)'&+/O+WD`02.D9[]193/+KFZ7!
+H;%F!,HW,?GA_O`#C7J:MBG%*3++^6]L6IR-OE5R(U1]?@1I9<`@`````
`
end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu
index bb8e698..63b7b65 100644
--- a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-512-vtoc8.vhdf.gz
-M'XL(".S%'50``VEM9RTQ>#$M-3$R+79T;V,X+G9H9&8N;W5T`*V4RVZ#,!!%
-M]_F**W67!?)S"-NJS:Y2I?Y`()BHB[92U447_OC:L4FP<1ZJ,(,%&N9XKCT,
-M8V$`BE`+D/:F!+2$4I#D'#V<?VZPVV]C'M^>Z*4*PZX"C#MG,81=<]@J&W:U
-MCL!-$L>O`S=@#9@H`@.N.4<U-W'7\@NX=BFY`=?=BR,W]^@-C,EPNPENO_!A
-M\)E<`W?@\CX@R^5R+U=FW_,X7\`YAV6S_`+N+%=,0D2"XZ7L4(4[Q?4G7)[C
-M#;&LF)U9M%3X<"^N;]$92`FI9SBI(T[X*.V^;POS98=]K=(KE(J*P,5JCV*C
-M(@D:0.;8JR1J!6I0;Z9`D1PS[/[KT^Q_WG^G^T>Q40U#V7R\<$W0+5)#M'X1
-MZOWS)+^'Y\/Z_>,PXD14-2[L6NJID^8J*96[=7UT_'5'G)QO$DUWKU-@"IPG
-MPF-VN[18/$Z=Q)H!G3ZF.5KRDCB*M>=QFF51_R]ECZ.%2\75WNH/`$S(R-T&
-"````
+M'XL("+>;>54``VEM9RTQ>#$M-3$R+79T;V,X+G9H9&8N;W5T`*V43T^$,!#%
+M[_LIGGK;`VF'4N"ZT;V9F'CQ*`MEW8.:&`\>\+L[I;#0POZ)H10"><RO\]K)
+M".$&H#12@D[L5(0DAE*(%0L56)].--LO8S;/]^HQ<J-9.9AD<39$G!.:*!C-
+M:MT!,R].G@=F$#D$S0(=+A^B\HNX<_DY7+&478?;78O3_*Q0&1@3X%Y'N'+A
+MPY`3NP9\X"3;8KD$O%&!76GMNN#PA.4I'`O-`/)Q@UT:A9"'DW/9(7*WCZL&
+M7)#CA=WS\^MQ9M%2D?6UN*K`SH`((I[@;GL<V:B$_R]FGJ>%YBGR+U<JJ@,N
+M5GN*=&9E'4/7T*;M53%2!9TCS<9`\HX93?GY8<KOP\]X_RS.-JJZGI\VGK@)
+M\B(IJ+"+Z,J^C_*[>]BO#^_['D>=JWYA;JG'3AJZ9$%G@]TM]]$6N7D[9A=/
+M-VF(XCOEQJP@I6>\RXXQT:]O5AW-FAI)UJ;93^_#$RSN):P]BTM$$/7_4K8X
+0O7"I%$*L_@!4PT87W08`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu
index e1b6626..24ca4e7 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-4096-apm.vhdf.gz
-M'XL("/_%'50``VEM9RTV,W@R-34M-#`Y-BUA<&TN=FAD9BYO=70`K57);L(P
-M$+WS%2/UAM3(\3*FIRXJW"JAHIXA(@F*5""B2.TA'U^OX"P@6MF,+$<3/]Z\
-M9T\(L0.`"Q`4B`KB@IGY_-P):*;OB1HD\:,96;#TVJ[+<$EG-*.Q!:0Z+0CP
-MO+>/A8!I.]',W[J`%D[SXRE(H@/7@.(F?L]U_5D,P-%8Y5HXUF<G2K-.`20%
-MR0$?W(PE8*'3CMVRS@['ZECM=TL/QQ4<YGJS_`N[;58/LA.1O>4W>CMQ"^H`
-MV]Z"Y\=CGSUN[$`MO#)"!:<@&'`.-%?$A<ZIYQ[@[%`4+XO7^X_9(M2/\\C\
-M\`;]:*"?O22A?A#RP]CZX57])`,I!\[F6;^O;WL0/;_(^J7$Z4>R@?ERHIDG
-M[9\%Y`XP&D-TW1F9N^M:1.9[P"0$I&=[#>!ZORO6Q^HGO,'HNG-9#H?>3YG^
-M%J`$FID6D^MUP.]NNAE7VXV'\]W/_['R^F1QMTILESM3!AO(U9D=ZXN$'?44
-M3U:V"G?L5F9^#(OEIV*+$KBEZ:/UT$IHN*>V&1;.=+_PY?]Z:^$P\E%1'\K1
-)+TV"K"_2!P``
+M'XL("&NF>54``VEM9RTV,W@R-34M-#`Y-BUA<&TN=FAD9BYO=70`K55=:\(P
+M%'WW5US8F["2YM.];&Q,WP8RV;.4-I7"U.*$[:'^]^73IA^*&XF7D'*;TW//
+M2:X(V0%`&3`,2`5R023D*;3/O8!F_IZH\9CXT4PL6(JN[+H,E_1&,YE:0*S3
+M#`$M!OM(")AV$\WRK0]HX30_FH)`.G@.G-W$[[FN/^4('(Y5KH4C0W:L-&ME
+MAL`@*/`'-_,2N-1IQVY=9X=C=:SVN[6'HPJ.%WJS^`N[;5:/LF.1O:4W>CMS
+M"^P`N]Z"YT=CGSUJ[.!:>&6$"HJ!$:`4<*&(,YU3SP/`Q4'*E]7K_<=B%>I'
+M:61^_`;]<*"?O22A?A#RX['UXU?U$P2$&#F;K7Y?W_8@>GZ1]4N1TP]E(_/E
+M1+-,NC\+2!U@-(:BF)GNQXF[ZUI$XGO`+`3$K;T&,-_O9'ZL?L(;K.&TPV4Y
+M'GH_)OJ_@`O`F6DQA5X'_.[FFVFUW7@XW_W\AY779XO[58H"9K@M=Z$,-I"G
+MEAT9BM3NLM]1/$G9*=RQ.YGY*2R6GHN5TG`,HO_<)D9[LX8SW2]\^;_>6C@>
+/^:BH9CKY!5KF!832!P``
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu
index 1605f5a..5b09216 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-63x255-4096-bsd.vhdf.gz
-M'XL("`#&'50``VEM9RTV,W@R-34M-#`Y-BUB<V0N=FAD9BYO=70`K90[3\,P
-M$(#W_(J3V#I$?L==:%519B0DF$-PJ@[`PL#@'X\OB1M?G@C%=J)8=_?E'O8Q
-MU@X`)8"5$^]Y@3_E=/ILES4T@4!=@-*@#=B@SOI%-D3@7\\O>3I\A^-+5O.X
-M?#`B3JSAHL.RGL,=$IP,PCK19#RQJCA(U^_5!.X^/,<>IY:\"YE@;DHP&ZS>
-M*G>QMG9@E]89N`,N@=E.)BCP5E_H_=N/W1`DW`7_8!QNB;B"ZO,$)U;"!8I[
-M0QPGRGT)5[)W''M7;5P,.;P9?[RY"*$WM\6);1N!:#I+.(%!:_R>%_BGG,X6
-MJ#K@9AFT7>\S$DP-QH'1^%TH,'LH;`H4]"3YZNO35=_7G[3"B.-M,YA<:"\D
-MWA93@"CQ)^8=OQ/_[LZ7W?7C$G&Q5<4?*X-)UP&B1N%:&N[CZ?EAZ)T<)\F2
-M[''T,VU[(7"2O4.*4[=@G6M:(.\7V1#!9*M"G&8#J__6ML69C8]*.'S9+_P)
-&SWLP!P``
+M'XL("&VF>54``VEM9RTV,W@R-34M-#`Y-BUB<V0N=FAD9BYO=70`K90[;\,@
+M$(!W_XJ3NF6P>.,LB10UG2M5:F?7QE&&MDN'#LY_+Q@3'\:/JC+&"'3<QSW@
+M"/$-0#`@Y<0X+VA/>?RUV2[K:,P!I08A02HH['8R]&@1"=JW\VN.6]OCZ)+6
+M/"X?M8!C:[A@,&_F<$>$XU;8H)V$(JV*`C?]`L\1[N#_@!-+UME($#,EF'56
+M;A6[D-MBI(?S#-0`Y4"*7L9BX#V_,-BW3\U@D;L+]D'J;NEP.MY/$8ZMN`LQ
+M[MWA4#ZC%*Y$[Y!:5VV<##Y^&7]\N0X2OUR/8]L6`M95%GL#[:YTG!>TSWG\
+M>:#H@9M%4-=%5ZH4!]6`,J"DFVL!:@^ZP$`6WZ2V^OHTU??U!V?8X:@O!I/=
+MZ3/N7HO2P$IWB*K='-GW<+[LKA^7@`NE*APLE`NZM!"1N*OKOM1ZW-/IY;%#
+MW@;K>!JD0<N?8^W$9<\ZWEMWZ\8C=E;<G36FLQ'U\7H03)8JAY-DI/7?W'J<
+/VOBJ"$*R7\Y^^\XP!P``
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu
index c48c7d2..8048b55 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-4096-ebr.vhdf.gz
-M'XL("%_N+50``VEM9RTV,W@R-34M-#`Y-BUE8G(N=FAD9BYO=70`K94[;\,@
-M$(#W_(J3NF6(``,F2R)%3>=*5=O9<7&4H>W2H8-_?#EC',[&>508C$`'G^_%
-MF3'_`+@WV><%[6KTM(OEHJ/QP_U`G@1Z7(VG.&ZK%(Y%@TL<!USMUC:AW]8U
-M]VQBW$=N<YO[@$I!54V`KT$_D3D<I46Q%,"JQ#@O:'<KV@+0=`FC2I`*E`8C
-M;M7P??^6B*]A/)?!'B>NX8+"/H-2N&V$*YRPB7;Z3.Q/Q7D7SR/<QK\!)R]I
-MYSS!;$HP:ZS*FRS&-7HNCC-P"[P`9GJ9H,`AOG#6;SU50Q!S+^@'4W,KQ)5T
-M/X]PXHJY0'&'H;(D0GC%>YNI=G7F8/#QS;CQYB*$WER/$WD+P;JK+"X#W:[I
-M."]HGU>T>:#L@=D\:/I_FRY`-Z`M:(7S4H)>0VEBH*"9U-;?7[;^.?W&$48<
-M]\4@V?&\*/"VZ!)$A1_1'SB/]'O8'Y>GSV/`A5(5/BPU.ETYB)R8:ZBY3[N7
-MQ[%VQ=1)AGB/HYYQV7.&$^]M8YP<C+6V*X'\W,F"")*E"G&*C4[]-[8>IS.G
-.BOOO+OX`/$*Q[A`)````
+M'XL("'&F>54``VEM9RTV,W@R-34M-#`Y-BUE8G(N=FAD9BYO=70`K90];\,@
+M$(;W_(J3NF6(``-VED2*FLZ5JK:S[>`H0]JE0P?_^-Z%X(#!^:@`&]D^>/P>
+M=QQCM@'@G;RF#?UBU/K9?':B\>9Q($\"+:ZE59RFU8K&HJ-7&@=<B^\FH6^-
+M'=O*Q^URN]L]!E0*ZCH"OCM](G,X2D-F*8#5B7':T&\687?`ZI0PJ@2I0&FH
+MQ+T*/[<?B?A6C.=RV.+$+9P3;#,HA5M[N`*-G3?39N)YE9]W_K.'6]G;X>0U
+M=;@3S*0,D\ZJO,E280_7^7$&;H`7P*JS383`(;YPT;>,98C`W2OZ(':W)EP9
+MSN<>3MQP%T)<,U261`AO[-XJ5M=F#@8?GXP[3RY!PI-K<2)O(5B>*@MF(,Z*
+MQVE#_[H(NP7*,S#;#G8-,M&L"]`=:`-:T7,I02^AK'R@"#.I;[^_3/MS^/4C
+M3#ANBT'RHO6BH-.B2Q`U_43OZ-G3][3=SP_'O<.Y4N5^+#5MND*(C-SM&F#R
+MXN[+YNUYK*Z(-^FRRKJ).OVRAU^"W5O[.#DX:XR3Z:[@)3`D2Q7A%!NM^F]L
+1+4YG3A7-V.P/(8K+DQ`)````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu
index 820c91d..ce2279b 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu
@@ -1,19 +1,19 @@
# $FreeBSD$
begin 644 img-63x255-4096-gpt.vhdf.gz
-M'XL("`/&'50``VEM9RTV,W@R-34M-#`Y-BUG<'0N=FAD9BYO=70`K9<[;]PP
-M#,?W^Q0LLJ6HHK=]2XL&38!NZ6OK$#^D($.O*-JA@S]\1<EWEGR2T0MD$X8/
-MM'[FGR9-'Z5A`Y`<:)<YEAW3+4GW:7>]\S367P9T]\<05D#B@`$W."?E>(TQ
-M8.ULE/E58;$S09=SCR/+1DF$&^-5*RL[8AP)N*-<>QE0*>BZ,^"W8WS</PX%
-M4H/<`W?74Y`,%`<E3SBO70UQ?'?W'^'A_>>O"/N^R.7,.4<.[0##'FR_BH[]
-MO]R`<P%A]KG-BA5%W$T>)Q`W;N!R5L;)K56AABX1JVBZJHU7"0.]`-M!-Q9P
-M;U<X7;GR)+I[#<T`VH!B,%@\&34P!M"Z-FD]A`-W(>ZA8<![!$Z'3^008&_(
-MK]=S?)+-%9&SLJ.4/8FE0MN2W`9K>U,NI#A1.WLM9D]5R]Y^+I:<E1W%['4A
-M>_DD8?9RK>MP<];(JQ37U\T>\U/#]8=[?Y\?RX[I@:1[`,H96"U"9>U0L3L0
-M5[$[$%>Q.Q!7M3L06+$[$%>Q.Q!7L3L05[4['-#0>D,<<5A[H@7#H!'0IU53
-M'L=32WZ'P&X2N89OC?Z-(9Y_&*;B$$?<YA"WIB3VQ%F)K3C$$5=UB.OY\UL+
-MT+Z_M,+S1H)V+=7&0+[4C`<./P]F^//\-\Z>]F]F6#Z25X;KN<#"U*Y%.KR)
-M'O$\BN_J[NGZ^<?3$<=G5<<;8T6[*G80>297IW+O;[]\\,C');K,:TJOLN?B
-M%#81/D?WZ(_O8K'R)-98<,JI7"SYD3BRA8PX7RKQQ2]]M@%7NU3<7X/=/VC0
-&,#.S#0``
+M'XL("'2F>54``VEM9RTV,W@R-34M-#`Y-BUG<'0N=FAD9BYO=70`K99-;]P@
+M$(;O^RNFZBU5$6#`[&6K1$VDWM*O6R^VL:,<LE6E'GK8_/?.@+T&K[&Z%6MD
+M>37FX9UAQ@/GX0>@)/!FY9XWG.Y8>IUV-SM/$^UU0%R?)"R`#($!UZ&12WJG
+M[V$8QL&%GQ4F=P*J?GR><&S^'5B$<^=9ER-OB'$LX"9WA^N`6D/37`"_3_JD
+MWPX-RH#:@\3W.2@!6H)69YSW77>QOON'3_!X^^4;P7[,[DI!(AS8!CH#M5NH
+M$QONOJ;N!AP*`MR01;0G7)7%'9;1"[@*C6V_@5L;>9S:FA5RZ-_V-N`T3V?9
+M>!9J;BL8&FA<!G=8X$SAS%-D;G%7.S`]:`'=0`_.@!``%LO$>H@$B1+W4`N0
+M+0%/Q\_L&&#OV:]WHSXEQHQ8&WE#+GJ*4H7;G+LUY?:FNY#BJM+1LQ0]72QZ
+M^S%9UD;>D(U>$Z*W'B2*WEKI(FZ,&GN3XMJRT1.^:V!]X/?[\IXWG!Y9>@6@
+M&H'%%-:N[@M6!^$*5@?A"E8'X8I6!P$+5@?A"E8'X0I6!^&*5D?M;#A3E6GB
+MA*/<$WL0"H::6GDB(]N.9WV'V%W+Y5;KWVCBJYMA><$F3KC-)MX.USI;L(D3
+MKF@31Z`_[YD*C*\OH^FY5F"PI&P,E'/.>&#W\]AWOY__+*+GSWOG0_)BT'Q9
+M46(:+)&&%C&.GB-];^^?;IY?GB:<'+V:%J:,QBQ&B+IP%T^75L[N/MQ]_>B1
+MK[.ZE<_4/"NL@SJK(7%\5!?.HQ]B9]79V=Z!0XUJ'LF?Q)!+Y'#>BU_^W[T-
+0N-*I@N>]W5^),'<SLPT`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu
index 1e1f537..209001e 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-4096-mbr.vhdf.gz
-M'XL("&+N+50``VEM9RTV,W@R-34M-#`Y-BUM8G(N=FAD9BYO=70`K94];\,@
-M$(;W_(J3NF6P``,F2R)%3>=*5=O9<7"4(>W2H8-_?.^,[8"Q\U%A",(Z>/(>
-M=YP9<P^`%,#*B7'>T&RSL#6+Y:*E\?UC0,.`\0B8(=#A*L3A`I19*AKSFEYI
-M)`.C7N&[[>:N0X.$;(,-GW7FX0[#KKC/&UJ<_US<K1\#*@5E&0'?>WWBJHS'
-M]14V<7Q-FS"J`*E`:3#B7H6?NX^10H?CJ1QV.'$+UPMV&32%VWBX'(VUM])E
-M8K?+SSM_[N'6[M?CY#5U>!+,3AEFG55ID\5@"_?Y<09N@>?`3&<3(7"(+UST
-MK6(9(G#WBCZ(W2T)5X3KN8<3-]R%$+<?*LM$"&^<WCI65R4.!A_?C#MO+D'"
-MF^MP(FTA6+65!3,05\7CO*%YS<+F@+(#)CM!TWW;=`ZZ!FU!*YH7$O0*"N,#
-M19A)3?7]9:N?TZ\?8<)Q5PPF.^T7.=T678`HZ4_T@>:>OJ?=<7DZ'WM<7ZKZ
-M/Y::#ETA1$;NFM#=E^W;\UA='A^2"4Z/DTZ_[*'CP>EM?)P<G+6V+8'\TH.7
-=P#!9J@BGV&C7?V/K<#IQJN!W=_$'S:-I2Q`)````
+M'XL("'BF>54``VEM9RTV,W@R-34M-#`Y-BUM8G(N=FAD9BYO=70`K90];\,@
+M$(;W_(J3NF6P``-VED2*FLZ5JK:S[>`H0]JE0P?_^-X98X.Q\U'9$(1S\/@]
+M[CC&[`,@!;!B8IPW-/LD;,UJO6IIO'P,F#-@/`(F"+2X"G&X`&46BL:TIE<:
+MR<"H5_ANNKGMT"`AV6'#9YMXN&._*^[SAA;G/X.[]6-`I:`H(N"[TR>NRGA<
+M7V86CF_>)HS*0"I0&G)QK\+/P\=(H<7QI1RV.'$+YP3;#)K"[3Q<BL;:6VDS
+ML=OEYYT_]W!;^W,X>4T=G@0S4X999]6RR9)C"_?Y<09N@*?`\LXF0F`?7QCT
+M;6(9(G#WBCZ(W2T(EX7KN8<3-]R%$%?VE64BA#=.;QNKJQ8.!A_?C#MO+D'"
+MFVMQ8ME"L&DK"V8@KHK'>4/SFH3-`F4'7.P$ZQ*9:-8IZ!JT`:UHGDG0&\AR
+M'RC"3&JJ[R]3_9Q__0@3CMMB,-EIOTCIMN@,1$$?T4>:>_J>#J?U^7)R.%>J
+MW(>EID-7")&1NW4)3`[NONS?GL?JTOB0AEW63=3IESW\)SB]G8^3O;/&.)FN
+?!R^!8;)4$4ZQT:[_QM;B],*IHAE;_0'0:Q,V$`D`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu
index 8662222..2bc05e1 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-4096-pc98.vhdf.gz
-M'XL("&3N+50``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G9H9&8N;W5T`*V5.V^#
-M,!#']WR*D[IE0'YCED2*FLZ5JK8SI2;*D';IT($/7QL;XL.01V5,B-'A'_][
-M^"#$'P""`:EGKLN&;E?@T:W6JYY&V_N`4D*=`E\ML,<QIZ\2T`BPL\D)O.UG
-M-#%T13BVX7_`46M,06'5HF'$%2,NN"LRQX^1BT+N5UB:S`IUKU"6("1(!9K=
-MJO!]_S91Z''94N)Q[!IN$!R*9P:WC7#<&MOHR;C8H*'`3;B)YQ%NXW\#3EQ2
-M9R-!S)QAT5F9MUBT'7A=G&>@!B@'HH.-8>"87SCKJU(9#+E[01^D[M8.5^+G
-M:81C5]P%C/MPN"B?*(57HK=)U369DT&G.^/&G>L@>.=Z',O;"*J^L]@*=%T\
-MN2X;NN<"#P\4`9@M@CI\W10'U8(RH*2;EP)4!:6.@0Q74M=\?YGFY_@;9]CA
-MJ&\&LZ=;S[C;+:H$5KN7J$\WC_0][`_KX^DPX(96-;Q8*!=T:2$B<5=C=Y]V
-M+X]3=3P-DD;1HTYGW/:LXRAZVQ@G1F>-Z5L@/9_H!AEF6Y7#23)9]=_<>IS*
-/7"KVP[OZ`WO*69D2"0``
+M'XL("'RF>54``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G9H9&8N;W5T`*V4.V^#
+M,!#']WR*D[IE0'X#2R)%3>=*5=N94!-E:+MTZ,"'KP_;Q,:01V5,B.'PC_\]
+M?(38`T`P(,W,==G0[XIX]*OU:J#1[CZ@E-"DP%<#''`,]=4"6@%F-CF!=\.,
+M)H:^<,?6_7L<-<84Y%8M&D9<,>*<NR)S_!BY*.1^A:7.K+`:%,H2A`2IH&*W
+M*GS?OTT46ERVE%@<NX;S@EWQS."V`8X;8Q>\&18;M!2X=C?A/,!M[,_CQ"5U
+M)A)$SQD6G95YBZ4R(UX7YAFH!LJ!5,[&8N"87SCKJU,9+'+W@CY(W6T05\;O
+MTP#'KK@+,>Z`N""?40JO1&^3JFLS)X-.=\:-.Q<A\<ZU.):W$=1#9S$5B%T\
+MN2X;^N<B'A8H'#!;!+N#[<Z*@^I`:5`2YZ4`54-9A4`65U+??G_I]N?T&V88
+M<=0V@]D3US..NT65P!K\B/K`>:#O87]<GSZ/'N=;E?^P4!AT:2`B<;<[`!%G
+M=Y]V+X]3=3P-TGF5==/H#-N>>1)%;QOBQ.BLUEZF/Z.;R##;JA`GR635?W-K
+0<2ISJ2A"5G]F`B/D$@D`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu
index d5ecd33..433c602 100644
--- a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-63x255-4096-vtoc8.vhdf.gz
-M'XL("`?&'50``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME+UN
-MPR`4A?<\Q9&Z98C,C[$]1>I/MDJ5^@*U#409VDI5APY^^&*P8R#832-CA(C@
-M?)Q++C?+7`.X0$$A\KYSBIR!<S`*,#.3,%NBCN[PI=3]ZR-ESSO;NHV#$;-X
-MN7]0S2YTNZAUF^T`+`,=60:6R"ID-`ETN&I257_BEOPY7+U6N`[77(L39I20
-M"DI%N#</UZ[\9Y"+<!6(F[`;PB5CN&S:K'4_,CV'(Q-N'^.F<&FDHICT"7=(
-MNI-G7-."LU"U&.Q#"J=6316BK\7)&HW)$P+=SN/HHHG_IDHA2PO,S:XZ,<XO
-M="^[\'/`9@"NY9"40^43#$)#*%O\&`H.4:$H?2`-\@9=^_FAVN_3CW>#%M=7
-M/I.]R=[KJ:FEYI`"M.X/$;*?>_[NGH[;T_MQQ-$AJO%@4Z//I3E^$F48[L$4
-MYM@=BR_)5[DW:'PR'3X:__;V/HZ?@S4%2#?6YMB#'\%"*OLL+L\BU<UOP^+$
-/RJEB<F_S"YNC6FHN!P``
+M'XL("'^F>54``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME,EN
+MPR`0AN]YBI%ZRR%B,\:G2EURJU2I+U#;0)1#6ZGJ(0<>OBQV,`2[:62,$-8P
+M'__8,X-0&`",0TV`5VXR`A4%QH`2`&IW$NR1;(+9?ROU\/9$Z,O.#[,),&R-
+ME^<'KUF#V67#;+8#4"1^>!DH`#6`2!$8<$WT:O[$+>D+N':M<`.NNQ;'[2I!
+M*E`JP[U/</W*/P-?A*L`APV](5P\ADOC8:W=2O4<#D?<?8Z+X9+,BT#T+ZB#
+MHCIYQG4],)IZ+0;[6,*I55,%ZVMQLH7.Y@D&W<_CR**(_Z9*+84'5O946UCG
+M#>9UESX!V`W`M13B6@CNS)P"U\"5;WX4:@:\@5I,@23)&S#]UZ?J?XZGR1?T
+M.-?Y;/86I_,GMI?:2VH@K;N$2[>?Z+M[/FR/'X<11X:HQHMMCSZWYKPDK&#!
+M8[A[VY@]\A35T?PC3;U"#5J=5*=%8T;,6&XCCIV#5=+7+(XS>4D,I>SSN`IE
+57C?7AL?QE5-%(+3Y!5F3,44N!P``
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu
index 6096dac..ebcf736 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-512-apm.vhdf.gz
-M'XL("/;%'50``VEM9RTV,W@R-34M-3$R+6%P;2YV:&1F+F]U=`"M54UKPD`0
-MO?LK!GH3&I+=R<2>^D'U5I!*SQI,(H&JP0KM(3^^^ZF[211;=AV6#9-]OGEO
-M=Q+'>@!@"BF#6$1L@JOY_-P):*?OD1AQ9$<[TF#)M5V7X:+.:$=C#<AD.HT!
-MB]X^[@(F?J*=OW4!-9SDAPEDL0Q:`Z4W\7MNFL]R`(Z%*E?#\3Z[M%+K!"!C
-MD"'0@YFI`BIEVK!;-OGA6!_K_6YIX5#`42$W9W]AM\V;079I8&_Q1F_1+)@!
-M]+T%RP]#GSU4=I`47A@A`AFD'!"!%8)X*G/BN0<X.Y3ER^+U_F.V</5##,R/
-M;M"/.?KI2^+J!RX_"JT?7=4OXY!E`V?SK-_7MSZ(EE]H_29&OS@?F"\GVGGD
-M_S0@&L!@#,ET9^+FKDL1N>T!$Q>0G>U5@.O]KEP?ZQ_W!I/ISE4U''(_X_);
-M0!FP7+680JX=?G?3S;C>;BR<[7[VCX77)XN[59)?[DP8K"!79W:\+Q)UU!,\
-M>>45;MBMU/SH%HNG8LL*4-.TX3UX"0GWY)NAX53W<U_^K[<:C@(?%?&A'/T"
-(P78/5M('````
+M'XL("%>E>54``VEM9RTV,W@R-34M-3$R+6%P;2YV:&1F+F]U=`"M55UKPC`4
+M??=77-B;L)+FT[UL;$S?!C+9LY0VE<+4XH3MH?[WY=.F'XH;B9>0<IO3<\])
+MK@C9`4`9,`Q(!7)!).0IM,^]@&;^GJCQF/C13"Q8BJ[LN@R7]$8SF5I`K-,,
+M`2T&^T@(F'83S?*M#VCA-#^:@D`Z>`Z<W<3ON:X_Y0@<CE6NA2-#=JPT:V6&
+MP"`H\`<W\Q*XU&G';EUGAV-UK/:[M8>C"HX7>K/X"[MM5H^R8Y&]I3=Z2]T"
+M.\"NM^#YT=AGCQH[N!9>&:&"8F`$*`5<*.),Y]3S`'!QD/)E]7K_L5B%^E$:
+MF1^_03\<Z&<O2:@?A/QX;/WX5?T$`2%&SF:KW]>W/8B>7VS]9DX_E(W,EQ/-
+M,NG^+"!U@-$8BF)FNA\G[JYK$8GO`;,0$+?V&L!\OY/YL?H);["&TPZ7Y7CH
+M_9CH_P(N`&>FQ11Z'?"[FV^FU7;CX7SW\Q]67I\M[E<I"ICAMMR%,MA`GEIV
+M9"A2N\M^1_$D9:=PQ^YDYJ>P6'HN5DK#,8C^<YL8[<T:SG2_\.7_>FOA>.2C
+-HH[?Y!?6$J;]T@<`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu
index c102a9f..9df781c 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-63x255-512-bsd.vhdf.gz
-M'XL("/?%'50``VEM9RTV,W@R-34M-3$R+6)S9"YV:&1F+F]U=`"ME#M/PS`0
-M@/?\BI/8.D1^QUUH55%F)"280W"J#L#"P.`?CR^)&U^>",5VHEAW]^4>]C'6
-M#@`E@)43[WF!/^5T^FR7-32!0%V`TJ`-V*#.^D4V1.!?SR]Y.GR'XTM6\[A\
-M,").K.&BP[*>PQT2G`S".M%D/+&J.$C7[]4$[CX\QQZGEKP+F6!N2C`;K-XJ
-M=[&V=F"7UAFX`RZ!V4XF*/!67^C]VX_=$"3<!?]@'&Z)N(+J\P0G5L(%BGM#
-M'"?*?0E7LG<<>U=M7`PYO!E_O+D(H3>WQ8EM&X%H.DLX@4%K_)X7^*><SA:H
-M.N!F&;1=[S,23`W&@='X72@P>RAL"A3T)/GJZ]-5W]>?M,*(XVTSF%QH+R3>
-M%E.`*/$GYAV_$__NSI?=]>,2<;%5Q1\K@TG7`:)&X5H:[N/I^6'HG1PGR9+L
-M<?0S;7LA<)*]0XI3MV"=:UH@[Q?9$,%DJT*<9@.K_]:VQ9F-CTHX?-DO_`G/
-%>S`'````
+M'XL("%JE>54``VEM9RTV,W@R-34M-3$R+6)S9"YV:&1F+F]U=`"ME#MOPR`0
+M@'?_BI.Z9;!XXRR)%#6=*U5J9]?&48:V2X<.SG\O&!,?QH^J,L8(=-S'/>`(
+M\0U`,"#EQ#@O:$]Y_+79+NMHS`&E!B%!*BCL=C+T:!$)VK?S:XY;V^/HDM8\
+M+A^U@&-KN&`P;^9P1X3C5MB@G80BK8H"-_T"SQ'NX/^`$TO6V4@0,R68=59N
+M%;N0VV*DA_,,U`#E0(I>QF+@/;\PV+=/S6"1NPOV0>INZ7`ZWD\1CJVX"S'N
+MW>%0/J,4KD3OD%I7;9P,/GX9?WRY#A*_7(]CVQ8"UE46>P/MKG2<%[3/>?QY
+MH.B!FT50UT57JA0'U8`RH*2;:P%J#[K`0!;?I+;Z^C35]_4'9]CAJ"\&D]WI
+M,^Y>B]+`2G>(JMT<V?=PONRN'Y>`"Z4J'"R4"[JT$)&XJ^N^U'K<T^GEL4/>
+M!NMX&J1!RY]C[<1ESSK>6W?KQB-V5MR=-::S$?7Q>A!,EBJ'DV2D]=_<>IS:
+.^*H(0K)?SG[[SC`'````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu
index edf4354..0a93429 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-512-ebr.vhdf.gz
-M'XL("%/N+50``VEM9RTV,W@R-34M-3$R+65B<BYV:&1F+F]U=`"ME3MOPR`0
-M@/?\BI.Z98@``R9+(D5-YTI5V]EQ<92A[=*A@W]\.6,<SL9Y5!B,0`>?[\69
-M,?\`N#?9YP7M:O2TB^6BH_'#_4">!'I<C:<X;JL4CD6#2QP'7.W6-J'?UC7W
-M;&+<1VYSF_N`2D%538"O03^1.1RE1;$4P*K$."]H=RO:`M!T":-*D`J4!B-N
-MU?!]_Y:(KV$\E\$>)Z[A@L(^@U*X;80KG+")=OI,[$_%>1?/(]S&OP$G+VGG
-M/,%L2C!KK,J;+,8U>BZ.,W`+O`!F>IF@P"&^<-9O/55#$',OZ`=3<RO$E70_
-MCW#BBKE`<8>ALB1">,5[FZEV=>9@\/'-N/'F(H3>7(\3>0O!NJLL+@/=KNDX
-M+VB?5[1YH.R!V3QH^G^;+D`WH"UHA?-2@EY#:6*@H)G4UM]?MOXY_<811ASW
-MQ2#9\;PH\+;H$D2%']$?.(_T>]@?EZ?/8\"%4A4^+#4Z73F(G)AKJ+E/NY?'
-ML7;%U$F&>(^CGG'9<X83[VUCG!R,M;8K@?S<R8((DJ4*<8J-3OTWMAZG,Z>*
--^^\N_@`\0K'N$`D`````
+M'XL("%JF>54``VEM9RTV,W@R-34M-3$R+65B<BYV:&1F+F]U=`"ME#UOPR`0
+MAO?\BI.Z98@``W:61(J:SI6JMK/MX"A#VJ5#!__XWH7@@,'YJ``;V3YX_!YW
+M'&.V`>"=O*8-_6+4^ME\=J+QYG$@3P(MKJ55G*;5BL:BHU<:!UR+[R:A;XT=
+MV\K'[7*[VST&5`KJ.@*^.WTB<SA*0V8I@-6)<=K0;Q9A=\#JE#"J!*E`::C$
+MO0H_MQ^)^%:,YW+8XL0MG!-L,RB%6WNX`HV=-]-FXGF5GW?^LX=;V=OAY#5U
+MN!/,I`R3SJJ\R5)A#]?Y<09N@!?`JK--A,`AOG#1MXQEB,#=*_H@=K<F7!G.
+MYQY.W'`70EPS5)9$"&_LWBI6UV8.!A^?C#M/+D'"DVMQ(F\A6)XJ"V8@SHK'
+M:4/_N@B[!<HS,-L.=@TRT:P+T!UH`UK1<RE!+Z&L?*`(,ZEOO[],^W/X]2-,
+M.&Z+0?*B]:*@TZ)+$#7]1._HV=/WM-W/#\>]P[E2Y7XL-6VZ0HB,W.T:8/+B
+M[LOF[7FLKH@WZ;+*NHDZ_;*'7X+=6_LX.3AKC)/IKN`E,"1+%>$4&ZWZ;VPM
+03F=.%<W8[`\ABLN3$`D`````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu
index b9a9b8a..9aebe79 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu
@@ -1,19 +1,19 @@
# $FreeBSD$
begin 644 img-63x255-512-gpt.vhdf.gz
-M'XL("/G%'50``VEM9RTV,W@R-34M-3$R+6=P="YV:&1F+F]U=`"METUOU#`0
-MAN_[*P9Q*R+8CNUD3XB*5N)6/GKCT'S8U4JP"(D#A_QX9NRDL;-VH,B)%7DU
-M\9-YQS.9+&/^`)`"6)>XY@W3=16?T^'JX&B\?QX0GT\N;(`5`CUN0",3=(\Q
-M8.T\&'>K_&(<-5OG#E>M!ZL"W!BNVHR\(<15'K?(M<\#*@5==P&\7_P3;CL4
-M2`WR"`+O9R`Y*`%*/N&<=C6$_MW<?H"[=Y^^$.SK*E=P-)H16`WZ"';<>,?S
-M<D\;N1Z'#E'TA4V*K;.X-]OH>5Q-N'$'EQIYG-Q;Y7/HW_;6XQ2+5[7AJE9!
-M*T`/,'99W+<(IPMGGB1SKZ$90!M0'`9+DU$#Y^@?EDGK(`($[OL1&@ZB)^!T
-M_EB=/>QU]?/5[)_D<T:D1MZ0BYX4>QE!3OU%+L2XNG3T6HJ>*A:]XYPLJ9$W
-M9*/7^>BE@T1.I4H7<7/4JA<QKB\</4UFK`]\?U]>\X;IKHI/#Y0SL)B'RMJA
-M8'40KF!U$*Y@=1"N:'40L&!U$*Y@=1"N8'40KFAU(-"P<DV<<"[W&K<!-?0F
-M=B/;CJ=E(Y9VN>#$7NO?:>+IS3`%FSCA=INX-5FQR[$16[")$ZYH$]?SY[?&
-MKS-77UK1O)'TL=:T(5"L.>.`PX^S&7Z=?H?1(QSW&9$<M%[4E)BZ`='10_1(
-M\\"_ES>/5Z?OCPM.S*J6!U-&8Q8C1%[(U;'<V^O/[QWR8?4N\9K2F^BAG[6-
-MA,_>/;CKVU"L?!)K+*!R)M<1_8@,R40FG$N5\.;_W5N/*YTJ^-?@\`>4./-P
-$LPT`````
+M'XL("%VF>54``VEM9RTV,W@R-34M-3$R+6=P="YV:&1F+F]U=`"MEDUOU#`0
+MAN_[*P8A<2BJ93NVX[TLHJ*5N!4HXL(EB9.J$BQ"XH#$]K\S8^?+V3C0RALK
+MRFKBQ^^,9S+F//P`E`1>K=S3AM,5BZ_3[F+G::)^&A#7)PD+($-@P#5HY)+>
+M:5OHNGYPX6>%R8V`HNV?!QR;?@<VP[EQUOE(&^8X%G"#N]W3@%I#59T!/P_Z
+MI-\.#<J`VH/$]SDH`5J"5B/.^ZZ;N;[KF_=P^_;C'<&^3NY*@<8"HZ?!&"CK
+MA3J1<E>R[D_L;L"A(,`-641[P!7)Z!V6T0NX`HUUNX%;&VF<VIH5<NC_]C;@
+M-(]GV?DLJ\%*,`VX*HG[%N%,YLQ39*YQ5QLP+6@!34</SH`0J`_+Q'J(!.F`
+M[Z$4(&L"GHX?V#'`+MG/U[T^)?J,6!MI0RIZ2FYE!(GZA[L0XXK<T;,4/9TM
+M>OL^6=9&VI",7A6BMQXD$K56NHCKH\9>Q+@Z<_0,F;$^\/M]?D\;3K<LO@)0
+M]<!L"DM7MAFK@W`9JX-P&:N#<%FK@X`9JX-P&:N#<!FK@W!9JZ-T-IRI\C1Q
+MPE'N20/[&G0)MHEE)-OQZ17[$H0=YNY:+K=:_T837]T,RS,V<<)M-O&Z2SD[
+M<A;.9FSBA,O:Q!'HSWNF`./KRVAZ+A48+"D[!\HI9SRP^7%LFU\/OQ?1\^>]
+M\9"\&#1?%I28I@19T2+&T?-,W\OK^XN'[_<#3O9>#0M31F,6(T2=N5LZ"N;H
+M[LW5IW<>^3BI6_E,3;/".JBSZ"+'>W6/_OYF[JP:G6T=.-2HIA']B0RI1`[G
+7O?G+S]W;@,N=*M@E=W\!E(LU`;,-````
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu
index 0ba7533..75debd4 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-512-mbr.vhdf.gz
-M'XL("%;N+50``VEM9RTV,W@R-34M-3$R+6UB<BYV:&1F+F]U=`"ME3UOPR`0
-MAO?\BI.Z9;```R9+(D5-YTI5V]EQ<)0A[=*A@W]\[XSM@+'S46$(PCIX\AYW
-MG!ES#X`4P,J)<=[0;+.P-8OEHJ7Q_6-`PX#Q")@AT.$JQ.$"E%DJ&O.:7FDD
-M`Z->X;OMYJY#@X1L@PV?=>;A#L.NN,\;6IS_7-RM'P,J!649`=][?>*JC,?U
-M%39Q?$V;,*H`J4!I,.)>A9^[CY%"A^.I''8X<0O7"W89-(7;>+@<C;6WTF5B
-MM\O/.W_NX=;NU^/D-75X$LQ.&6:=56F3Q6`+]_EQ!FZ!Y\!,9Q,A<(@O7/2M
-M8ADB</>*/HC=+0E7A.NYAQ,WW(40MQ\JRT0(;YS>.E97)0X&']^,.V\N0<*;
-MZW`B;2%8M94%,Q!7Q>.\H7G-PN:`L@,F.T'3?=MT#KH&;4$KFA<2]`H*XP-%
-MF$E-]?UEJY_3KQ]APG%7#"8[[1<YW19=@"CI3_2!YIZ^I]UQ>3H?>UQ?JOH_
-MEIH.72%$1NZ:T-V7[=OS6%T>'Y()3H^33K_LH>/!Z6U\G!R<M;8M@?S2@Y?`
-<,%FJ"*?8:-=_8^MP.G&JX'=W\0?-HVE+$`D`````
+M'XL("&&F>54``VEM9RTV,W@R-34M-3$R+6UB<BYV:&1F+F]U=`"ME#UOPR`0
+MAO?\BI.Z9;```W:61(J:SI6JMK/MX"A#VJ5#!__XWAEC@['S4=D0A'/P^#WN
+M.,;L`R`%L&)BG#<T^R1LS6J]:FF\?`R8,V`\`B8(M+@*<;@`91:*QK2F5QK)
+MP*A7^&ZZN>W0("'98<-GFWBX8[\K[O.&%N<_@[OU8T"EH"@BX+O3)Z[*>%Q?
+M9A:.;]XFC,I`*E`:<G&OPL_#QTBAQ?&E'+8X<0OG!-L,FL+M/%R*QMI;:3.Q
+MV^7GG3_W<%O[<SAY31V>!#-3AEEGU;+)DF,+]_EQ!FZ`I\#RSB9"8!]?&/1M
+M8ADB</>*/HC=+0B7A>NYAQ,WW(405_:592*$-TYO&ZNK%@X&']^,.V\N0<*;
+M:W%BV4*P:2L+9B"NBL=Y0_.:A,T"90=<[`3K$IEHUBGH&K0!K6B>2=`;R'(?
+M*,),:JKO+U/]G'_]"!..VV(PV6F_2.FVZ`Q$01_11YI[^IX.I_7Y<G(X5ZK<
+MAZ6F0U<(D9&[=0E,#NZ^[-^>Q^K2^)"&7=9-U.F7/?PG.+V=CY.]L\8XF:X'
+>+X%ALE013K'1KO_&UN+TPJFB&5O]`=!K$S80"0``
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu
index 5600c7a..cb329a1 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu
@@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-63x255-512-pc98.vhdf.gz
-M'XL("%CN+50``VEM9RTV,W@R-34M-3$R+7!C.3@N=FAD9BYO=70`K94[;X,P
-M$,?W?(J3NF5`?F.61(J:SI6JMC.E)LJ0=NG0@0]?&QOBPY!'94R(T>$?_WOX
-M(,0?`((!J6>NRX9N5^#1K=:KGD;;^X!20IT"7RVPQS&GKQ+0"+"SR0F\[6<T
-M,71%.+;A?\!1:TQ!8=6B8<05(RZX*S+'CY&+0NY76)K,"G6O4)8@)$@%FMVJ
-M\'W_-E'H<=E2XG'L&FX0'(IG!K>-<-P:V^C)N-B@H<!-N(GG$6[C?P-.7%)G
-M(T',G&'169FW6+0=>%V<9Z`&*`>B@XUAX)A?..NK4AD,N7M!'Z3NU@Y7XN=I
-MA&-7W`6,^W"X*)\HA5>BMTG5-9F30:<[X\:=ZR!XYWH<R]L(JKZSV`IT73RY
-M+ANZYP(/#Q0!F"V".GS=%`?5@C*@I)N7`E0%I8Z!#%=2UWQ_F>;G^!MGV.&H
-M;P:SIUO/N-LMJ@16NY>H3S>/]#WL#^OCZ3#@AE8UO%@H%W1I(2)Q5V-WGW8O
-MCU-U/`V21M&C3F?<]JSC*'K;&"=&9XWI6R`]G^@&&69;E<-),EGUW]QZG,I<
-.*O;#N_H#>\I9F1()````
+M'XL("&6F>54``VEM9RTV,W@R-34M-3$R+7!C.3@N=FAD9BYO=70`K90[;X,P
+M$,?W?(J3NF5`?@-+(D5-YTI5VYE0$V5HNW3HP(>O#]O$QI!'94R(X?"/_SU\
+MA-@#0#`@S<QUV=#OBGCTJ_5JH-'N/J"4T*3`5P,<<`SUU0):`68V.8%WPXPF
+MAKYPQ];]>QPUQA3D5BT:1EPQXIR[(G/\&+DHY'Z%I<ZLL!H4RA*$!*F@8K<J
+M?-^_311:7+:46!R[AO."7?',X+8!CAMC%[P9%ANT%+AV-^$\P&WLS^/$)74F
+M$D3/&1:=E7F+I3(C7A?F&:@&RH%4SL9BX)A?..NK4QDL<O>"/DC=;1!7QN_3
+M`,>NN`LQ[H"X()]1"J]$;Y.J:S,G@TYWQHT[%R'QSK4XEK<1U$-G,16(73RY
+M+AOZYR(>%B@<,%L$NX/MSHJ#ZD!I4!+GI0!50UF%0!974M]^?^GVY_0;9AAQ
+MU#:#V1/7,XZ[197`&OR(^L!YH.]A?UR?/H\>YUN5_[!0&'1I(")QMSL`$6=W
+MGW8OCU-U/`W2>95UT^@,VYYY$D5O&^+$Z*S67J8_HYO(,-NJ$"?)9-5_<VMQ
+/*G.I*$)6?V8"(^02"0``
`
end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu
index d8c4d3d..cc939bc 100644
--- a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu
@@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-63x255-512-vtoc8.vhdf.gz
-M'XL("/[%'50``VEM9RTV,W@R-34M-3$R+79T;V,X+G9H9&8N;W5T`*V4O6[#
-M(!2%]SS%D;IEB,R/L3U%ZD^V2I7Z`K4-1!G:2E6'#G[X8K!C(-A-(V.$B.!\
-MG$LN-\M<`[A`02'ROG.*G(%S,`HP,Y,P6Z*.[O"EU/WK(V7/.]NZC8,1LWBY
-M?U#-+G2[J'6;[0`L`QU9!I;(*F0T"72X:E)5?^*6_#E<O5:X#M=<BQ-FE)`*
-M2D6X-P_7KOQGD(MP%8B;L!O")6.X;-JL=3\R/8<C$VX?XZ9P::2BF/0)=TBZ
-MDV=<TX*S4+48[$,*IU9-%:*OQ<D:C<D3`MW.X^BBB?^F2B%+"\S-KCHQSB]T
-M+[OP<\!F`*[ED)1#Y1,,0D,H6_P8"@Y1H2A](`WR!EW[^:':[]./=X,6UU<^
-MD[W)WNNIJ:7FD`*T[@\1LI][_NZ>CMO3^W'$T2&J\6!3H\^E.7X291CNP13F
-MV!V++\E7N3=H?#(=/AK_]O8^CI^#-05(-];FV(,?P4(J^RPNSR+5S6_#XL3*
-.J6)R;_,+FZ-::BX'````
+M'XL("&BF>54``VEM9RTV,W@R-34M-3$R+79T;V,X+G9H9&8N;W5T`*V4R6[#
+M(!"&[WF*D7K+(6(SQJ=*77*K5*DO4-M`E$-;J>HA!QZ^+'8P!+MI9(P0UC`?
+M_]@S@U`8`(Q#38!7;C("%07&@!(`:G<2[)%L@ME_*_7P]D3HR\X/LPDP;(V7
+MYP>O68/99<-LM@-0)'YX&2@`-8!($1AP3?1J_L0MZ0NX=JUP`ZZ[%L?M*D$J
+M4"K#O4]P_<H_`U^$JP"'#;TA7#R&2^-AK=U*]1P.1]Q]CHOADLR+0/0OJ(.B
+M.GG&=3TPFGHM!OM8PJE54P7K:W&RA<[F"0;=S^/(HHC_IDHMA0=6]E1;6.<-
+MYG67/@'8#<"U%.):".[,G`+7P)5O?A1J!KR!6DR!),D;,/W7I^I_CJ?)%_0X
+MU_EL]A:G\R>VE]I+:B"MNX1+MY_HNWL^;(\?AQ%'AJC&BVV//K?FO"2L8,%C
+MN'O;F#WR%-71_"--O4(-6IU4IT5C1LQ8;B..G8-5TM<LCC-Y20RE[/.X"F5>
+4-]>&Q_&54T4@M/D%69,Q12X'````
`
end
diff --git a/usr.bin/mkimg/vhd.c b/usr.bin/mkimg/vhd.c
index 6b9d6a0..6860c16 100644
--- a/usr.bin/mkimg/vhd.c
+++ b/usr.bin/mkimg/vhd.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2014 Marcel Moolenaar
+ * Copyright (c) 2014, 2015 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,6 +62,12 @@ __FBSDID("$FreeBSD$");
#define VHD_SECTOR_SIZE 512
#define VHD_BLOCK_SIZE (4096 * VHD_SECTOR_SIZE) /* 2MB blocks */
+struct vhd_geom {
+ uint16_t cylinders;
+ uint8_t heads;
+ uint8_t sectors;
+};
+
struct vhd_footer {
uint64_t cookie;
#define VHD_FOOTER_COOKIE 0x636f6e6563746978ULL
@@ -80,9 +86,7 @@ struct vhd_footer {
#define VHD_CREATOR_OS 0x46425344
uint64_t original_size;
uint64_t current_size;
- uint16_t cylinders;
- uint8_t heads;
- uint8_t sectors;
+ struct vhd_geom geometry;
uint32_t disk_type;
#define VHD_DISK_TYPE_FIXED 2
#define VHD_DISK_TYPE_DYNAMIC 3
@@ -111,46 +115,48 @@ vhd_checksum(void *buf, size_t sz)
}
static void
-vhd_geometry(struct vhd_footer *footer, uint64_t image_size)
+vhd_geometry(uint64_t image_size, struct vhd_geom *geom)
{
lba_t imgsz;
long cth;
+ imgsz = image_size / VHD_SECTOR_SIZE;
+
/* Respect command line options if possible. */
if (nheads > 1 && nheads < 256 &&
nsecs > 1 && nsecs < 256 &&
ncyls < 65536) {
- be16enc(&footer->cylinders, ncyls);
- footer->heads = nheads;
- footer->sectors = nsecs;
+ geom->cylinders = (ncyls != 0) ? ncyls :
+ imgsz / (nheads * nsecs);
+ geom->heads = nheads;
+ geom->sectors = nsecs;
return;
}
- imgsz = image_size / VHD_SECTOR_SIZE;
if (imgsz > 65536 * 16 * 255)
imgsz = 65536 * 16 * 255;
if (imgsz >= 65535 * 16 * 63) {
- be16enc(&footer->cylinders, imgsz / (16 * 255));
- footer->heads = 16;
- footer->sectors = 255;
+ geom->cylinders = imgsz / (16 * 255);
+ geom->heads = 16;
+ geom->sectors = 255;
return;
}
- footer->sectors = 17;
+ geom->sectors = 17;
cth = imgsz / 17;
- footer->heads = (cth + 1023) / 1024;
- if (footer->heads < 4)
- footer->heads = 4;
- if (cth >= (footer->heads * 1024) || footer->heads > 16) {
- footer->heads = 16;
- footer->sectors = 31;
+ geom->heads = (cth + 1023) / 1024;
+ if (geom->heads < 4)
+ geom->heads = 4;
+ if (cth >= (geom->heads * 1024) || geom->heads > 16) {
+ geom->heads = 16;
+ geom->sectors = 31;
cth = imgsz / 31;
}
- if (cth >= (footer->heads * 1024)) {
- footer->heads = 16;
- footer->sectors = 63;
+ if (cth >= (geom->heads * 1024)) {
+ geom->heads = 16;
+ geom->sectors = 63;
cth = imgsz / 63;
}
- be16enc(&footer->cylinders, cth / footer->heads);
+ geom->cylinders = cth / geom->heads;
}
static uint32_t
@@ -198,7 +204,8 @@ vhd_make_footer(struct vhd_footer *footer, uint64_t image_size,
be32enc(&footer->creator_os, VHD_CREATOR_OS);
be64enc(&footer->original_size, image_size);
be64enc(&footer->current_size, image_size);
- vhd_geometry(footer, image_size);
+ vhd_geometry(image_size, &footer->geometry);
+ be16enc(&footer->geometry.cylinders, footer->geometry.cylinders);
be32enc(&footer->disk_type, disk_type);
mkimg_uuid(&id);
vhd_uuid_enc(&footer->id, &id);
@@ -206,23 +213,6 @@ vhd_make_footer(struct vhd_footer *footer, uint64_t image_size,
}
/*
- * We round the image size to 2MB for both the dynamic and
- * fixed VHD formats. For dynamic VHD, this is needed to
- * have the image size be a multiple of the grain size. For
- * fixed VHD this is not really needed, but makes sure that
- * it's easy to convert from fixed VHD to dynamic VHD.
- */
-static int
-vhd_resize(lba_t imgsz)
-{
- uint64_t imagesz;
-
- imagesz = imgsz * secsz;
- imagesz = (imagesz + VHD_BLOCK_SIZE - 1) & ~(VHD_BLOCK_SIZE - 1);
- return (image_set_size(imagesz / secsz));
-}
-
-/*
* PART 2: Dynamic VHD support
*
* Notes:
@@ -262,6 +252,16 @@ _Static_assert(sizeof(struct vhd_dyn_header) == VHD_SECTOR_SIZE * 2,
#endif
static int
+vhd_dyn_resize(lba_t imgsz)
+{
+ uint64_t imagesz;
+
+ imagesz = imgsz * secsz;
+ imagesz = (imagesz + VHD_BLOCK_SIZE - 1) & ~(VHD_BLOCK_SIZE - 1);
+ return (image_set_size(imagesz / secsz));
+}
+
+static int
vhd_dyn_write(int fd)
{
struct vhd_footer footer;
@@ -349,17 +349,36 @@ vhd_dyn_write(int fd)
static struct mkimg_format vhd_dyn_format = {
.name = "vhd",
.description = "Virtual Hard Disk",
- .resize = vhd_resize,
+ .resize = vhd_dyn_resize,
.write = vhd_dyn_write,
};
FORMAT_DEFINE(vhd_dyn_format);
/*
- * PART 2: Fixed VHD
+ * PART 3: Fixed VHD
*/
static int
+vhd_fix_resize(lba_t imgsz)
+{
+ struct vhd_geom geom;
+ int64_t imagesz;
+
+ imgsz *= secsz;
+ imagesz = imgsz;
+ while (1) {
+ vhd_geometry(imagesz, &geom);
+ imagesz = (int64_t)geom.cylinders * geom.heads *
+ geom.sectors * VHD_SECTOR_SIZE;
+ if (imagesz >= imgsz)
+ break;
+ imagesz += geom.heads * geom.sectors * VHD_SECTOR_SIZE;
+ }
+ return (image_set_size(imagesz / secsz));
+}
+
+static int
vhd_fix_write(int fd)
{
struct vhd_footer footer;
@@ -379,7 +398,7 @@ vhd_fix_write(int fd)
static struct mkimg_format vhd_fix_format = {
.name = "vhdf",
.description = "Fixed Virtual Hard Disk",
- .resize = vhd_resize,
+ .resize = vhd_fix_resize,
.write = vhd_fix_write,
};
diff --git a/usr.bin/mklocale/Makefile.depend b/usr.bin/mklocale/Makefile.depend
new file mode 100644
index 0000000..b3bfc6d
--- /dev/null
+++ b/usr.bin/mklocale/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.o: y.tab.h
+lex.po: lex.c
+lex.po: y.tab.h
+yacc.o: yacc.c
+yacc.po: yacc.c
+.endif
diff --git a/usr.bin/mkstr/Makefile.depend b/usr.bin/mkstr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/mkstr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mktemp/Makefile.depend b/usr.bin/mktemp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/mktemp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkulzma/Makefile.depend b/usr.bin/mkulzma/Makefile.depend
new file mode 100644
index 0000000..987c487
--- /dev/null
+++ b/usr.bin/mkulzma/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkuzip/Makefile.depend b/usr.bin/mkuzip/Makefile.depend
new file mode 100644
index 0000000..d209adb
--- /dev/null
+++ b/usr.bin/mkuzip/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/msgs/Makefile.depend b/usr.bin/msgs/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/msgs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mt/Makefile.depend b/usr.bin/mt/Makefile.depend
new file mode 100644
index 0000000..81381e2
--- /dev/null
+++ b/usr.bin/mt/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libmt \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nc/Makefile.depend b/usr.bin/nc/Makefile.depend
new file mode 100644
index 0000000..27cbf26
--- /dev/null
+++ b/usr.bin/nc/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ncal/Makefile.depend b/usr.bin/ncal/Makefile.depend
new file mode 100644
index 0000000..1841f7d
--- /dev/null
+++ b/usr.bin/ncal/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcalendar \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/netstat/Makefile.depend b/usr.bin/netstat/Makefile.depend
new file mode 100644
index 0000000..fb0bf8c
--- /dev/null
+++ b/usr.bin/netstat/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/libnetgraph \
+ lib/libutil \
+ lib/libxo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/newgrp/Makefile.depend b/usr.bin/newgrp/Makefile.depend
new file mode 100644
index 0000000..d8297c2
--- /dev/null
+++ b/usr.bin/newgrp/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/newkey/Makefile.depend b/usr.bin/newkey/Makefile.depend
new file mode 100644
index 0000000..bae15c2
--- /dev/null
+++ b/usr.bin/newkey/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nfsstat/Makefile.depend b/usr.bin/nfsstat/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.bin/nfsstat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nice/Makefile.depend b/usr.bin/nice/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/nice/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nl/Makefile.depend b/usr.bin/nl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/nl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nm/Makefile.depend b/usr.bin/nm/Makefile.depend
new file mode 100644
index 0000000..20f498c
--- /dev/null
+++ b/usr.bin/nm/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libelftc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nohup/Makefile.depend b/usr.bin/nohup/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/nohup/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opieinfo/Makefile.depend b/usr.bin/opieinfo/Makefile.depend
new file mode 100644
index 0000000..0466610
--- /dev/null
+++ b/usr.bin/opieinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opiekey/Makefile.depend b/usr.bin/opiekey/Makefile.depend
new file mode 100644
index 0000000..0466610
--- /dev/null
+++ b/usr.bin/opiekey/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opiepasswd/Makefile.depend b/usr.bin/opiepasswd/Makefile.depend
new file mode 100644
index 0000000..0466610
--- /dev/null
+++ b/usr.bin/opiepasswd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pagesize/Makefile.depend b/usr.bin/pagesize/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/pagesize/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pamtest/Makefile.depend b/usr.bin/pamtest/Makefile.depend
new file mode 100644
index 0000000..80d4de2
--- /dev/null
+++ b/usr.bin/pamtest/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/passwd/Makefile.depend b/usr.bin/passwd/Makefile.depend
new file mode 100644
index 0000000..1078f33
--- /dev/null
+++ b/usr.bin/passwd/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/paste/Makefile.depend b/usr.bin/paste/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/paste/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pathchk/Makefile.depend b/usr.bin/pathchk/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/pathchk/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/perror/Makefile.depend b/usr.bin/perror/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/perror/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pr/Makefile.depend b/usr.bin/pr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/pr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/printenv/Makefile.depend b/usr.bin/printenv/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/printenv/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/printf/Makefile.depend b/usr.bin/printf/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/printf/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/procstat/Makefile.depend b/usr.bin/procstat/Makefile.depend
new file mode 100644
index 0000000..588a394
--- /dev/null
+++ b/usr.bin/procstat/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/quota/Makefile.depend b/usr.bin/quota/Makefile.depend
new file mode 100644
index 0000000..88d0220
--- /dev/null
+++ b/usr.bin/quota/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rctl/Makefile.depend b/usr.bin/rctl/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/rctl/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/readelf/Makefile.depend b/usr.bin/readelf/Makefile.depend
new file mode 100644
index 0000000..20f498c
--- /dev/null
+++ b/usr.bin/readelf/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libelftc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/renice/Makefile.depend b/usr.bin/renice/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/renice/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rev/Makefile.depend b/usr.bin/rev/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/rev/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/revoke/Makefile.depend b/usr.bin/revoke/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/revoke/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rlogin/Makefile.depend b/usr.bin/rlogin/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/rlogin/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rpcgen/Makefile.depend b/usr.bin/rpcgen/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/rpcgen/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rpcinfo/Makefile.depend b/usr.bin/rpcinfo/Makefile.depend
new file mode 100644
index 0000000..1eb0f33
--- /dev/null
+++ b/usr.bin/rpcinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rs/Makefile.depend b/usr.bin/rs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/rs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rsh/Makefile.depend b/usr.bin/rsh/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/rsh/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rup/Makefile.depend b/usr.bin/rup/Makefile.depend
new file mode 100644
index 0000000..bdd7bc2
--- /dev/null
+++ b/usr.bin/rup/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ruptime/Makefile.depend b/usr.bin/ruptime/Makefile.depend
new file mode 100644
index 0000000..26cae4e
--- /dev/null
+++ b/usr.bin/ruptime/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rusers/Makefile.depend b/usr.bin/rusers/Makefile.depend
new file mode 100644
index 0000000..bdd7bc2
--- /dev/null
+++ b/usr.bin/rusers/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rwall/Makefile.depend b/usr.bin/rwall/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.bin/rwall/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rwho/Makefile.depend b/usr.bin/rwho/Makefile.depend
new file mode 100644
index 0000000..26cae4e
--- /dev/null
+++ b/usr.bin/rwho/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/script/Makefile.depend b/usr.bin/script/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/script/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sed/Makefile.depend b/usr.bin/sed/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/sed/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/seq/Makefile.depend b/usr.bin/seq/Makefile.depend
new file mode 100644
index 0000000..c9f9d52
--- /dev/null
+++ b/usr.bin/seq/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/setchannel/Makefile.depend b/usr.bin/setchannel/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.bin/setchannel/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/shar/Makefile.depend b/usr.bin/shar/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/shar/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/showmount/Makefile.depend b/usr.bin/showmount/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.bin/showmount/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/size/Makefile.depend b/usr.bin/size/Makefile.depend
new file mode 100644
index 0000000..40241f3
--- /dev/null
+++ b/usr.bin/size/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libelftc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/smbutil/Makefile.depend b/usr.bin/smbutil/Makefile.depend
new file mode 100644
index 0000000..a1b4494
--- /dev/null
+++ b/usr.bin/smbutil/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sockstat/Makefile.depend b/usr.bin/sockstat/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/sockstat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1
index 5076ae8..280fc2c 100644
--- a/usr.bin/sockstat/sockstat.1
+++ b/usr.bin/sockstat/sockstat.1
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 7, 2015
+.Dd June 20, 2015
.Dt SOCKSTAT 1
.Os
.Sh NAME
@@ -61,7 +61,7 @@ Show connected sockets.
.It Fl j Ar jid
Show only sockets belonging to the specified jail ID.
.It Fl L
-Only show Internet sockets if the local or foreign addresses are not
+Only show Internet sockets if the local and foreign addresses are not
in the loopback network prefix
.Li 127.0.0.0/8 ,
or do not contain the IPv6 loopback address
@@ -119,7 +119,9 @@ The process ID of the command which holds the socket.
The file descriptor number of the socket.
.It Li PROTO
The transport protocol associated with the socket for Internet
-sockets, or the type of socket (stream or datagram) for
+sockets, or the type of socket
+.Pq stream, datagram, or seqpacket
+for
.Ux
sockets.
.It Li LOCAL ADDRESS
diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c
index c80c833..d1ec0d3 100644
--- a/usr.bin/sockstat/sockstat.c
+++ b/usr.bin/sockstat/sockstat.c
@@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
#include <netinet/in.h>
#include <netinet/in_pcb.h>
+#include <netinet/sctp.h>
#include <netinet/tcp.h>
#include <netinet/tcp_seq.h>
#include <netinet/tcp_var.h>
@@ -59,6 +60,11 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include <unistd.h>
+#define sstosin(ss) ((struct sockaddr_in *)(ss))
+#define sstosin6(ss) ((struct sockaddr_in6 *)(ss))
+#define sstosun(ss) ((struct sockaddr_un *)(ss))
+#define sstosa(ss) ((struct sockaddr *)(ss))
+
static int opt_4; /* Show IPv4 sockets */
static int opt_6; /* Show IPv6 sockets */
static int opt_c; /* Show connected sockets */
@@ -71,9 +77,8 @@ static int opt_v; /* Verbose mode */
/*
* Default protocols to use if no -P was defined.
*/
-static const char *default_protos[] = {"tcp", "udp", "divert" };
-static size_t default_numprotos =
- sizeof(default_protos) / sizeof(default_protos[0]);
+static const char *default_protos[] = {"sctp", "tcp", "udp", "divert" };
+static size_t default_numprotos = nitems(default_protos);
static int *protos; /* protocols to use */
static size_t numprotos; /* allocated size of protos[] */
@@ -84,6 +89,11 @@ static int *ports;
#define SET_PORT(p) do { ports[p / INT_BIT] |= 1 << (p % INT_BIT); } while (0)
#define CHK_PORT(p) (ports[p / INT_BIT] & (1 << (p % INT_BIT)))
+struct addr {
+ struct sockaddr_storage address;
+ struct addr *next;
+};
+
struct sock {
void *socket;
void *pcb;
@@ -92,8 +102,8 @@ struct sock {
int family;
int proto;
const char *protoname;
- struct sockaddr_storage laddr;
- struct sockaddr_storage faddr;
+ struct addr *laddr;
+ struct addr *faddr;
struct sock *next;
};
@@ -134,7 +144,8 @@ get_proto_type(const char *proto)
}
-static void init_protos(int num)
+static void
+init_protos(int num)
{
int proto_count = 0;
@@ -157,7 +168,6 @@ static int
parse_protos(char *protospec)
{
char *prot;
- char *tmp = protospec;
int proto_type, proto_index;
if (protospec == NULL)
@@ -165,7 +175,7 @@ parse_protos(char *protospec)
init_protos(0);
proto_index = 0;
- while ((prot = strsep(&tmp, ",")) != NULL) {
+ while ((prot = strsep(&protospec, ",")) != NULL) {
if (strlen(prot) == 0)
continue;
proto_type = get_proto_type(prot);
@@ -222,26 +232,32 @@ parse_ports(const char *portspec)
}
static void
-sockaddr(struct sockaddr_storage *sa, int af, void *addr, int port)
+sockaddr(struct sockaddr_storage *ss, int af, void *addr, int port)
{
struct sockaddr_in *sin4;
struct sockaddr_in6 *sin6;
- bzero(sa, sizeof *sa);
+ bzero(ss, sizeof(*ss));
switch (af) {
case AF_INET:
- sin4 = (struct sockaddr_in *)sa;
- sin4->sin_len = sizeof *sin4;
+ sin4 = sstosin(ss);
+ sin4->sin_len = sizeof(*sin4);
sin4->sin_family = af;
sin4->sin_port = port;
sin4->sin_addr = *(struct in_addr *)addr;
break;
case AF_INET6:
- sin6 = (struct sockaddr_in6 *)sa;
- sin6->sin6_len = sizeof *sin6;
+ sin6 = sstosin6(ss);
+ sin6->sin6_len = sizeof(*sin6);
sin6->sin6_family = af;
sin6->sin6_port = port;
sin6->sin6_addr = *(struct in6_addr *)addr;
+#define s6_addr16 __u6_addr.__u6_addr16
+ if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
+ sin6->sin6_scope_id =
+ ntohs(sin6->sin6_addr.s6_addr16[1]);
+ sin6->sin6_addr.s6_addr16[1] = 0;
+ }
break;
default:
abort();
@@ -249,6 +265,267 @@ sockaddr(struct sockaddr_storage *sa, int af, void *addr, int port)
}
static void
+free_socket(struct sock *sock)
+{
+ struct addr *cur, *next;
+
+ cur = sock->laddr;
+ while (cur != NULL) {
+ next = cur->next;
+ free(cur);
+ cur = next;
+ }
+ cur = sock->faddr;
+ while (cur != NULL) {
+ next = cur->next;
+ free(cur);
+ cur = next;
+ }
+ free(sock);
+}
+
+static void
+gather_sctp(void)
+{
+ struct sock *sock;
+ struct addr *laddr, *prev_laddr, *faddr, *prev_faddr;
+ struct xsctp_inpcb *xinpcb;
+ struct xsctp_tcb *xstcb;
+ struct xsctp_raddr *xraddr;
+ struct xsctp_laddr *xladdr;
+ const char *varname;
+ size_t len, offset;
+ char *buf;
+ int hash, vflag;
+ int no_stcb, local_all_loopback, foreign_all_loopback;
+
+ vflag = 0;
+ if (opt_4)
+ vflag |= INP_IPV4;
+ if (opt_6)
+ vflag |= INP_IPV6;
+
+ varname = "net.inet.sctp.assoclist";
+ if (sysctlbyname(varname, 0, &len, 0, 0) < 0) {
+ if (errno != ENOENT)
+ err(1, "sysctlbyname()");
+ return;
+ }
+ if ((buf = (char *)malloc(len)) == NULL) {
+ err(1, "malloc()");
+ return;
+ }
+ if (sysctlbyname(varname, buf, &len, 0, 0) < 0) {
+ err(1, "sysctlbyname()");
+ free(buf);
+ return;
+ }
+ xinpcb = (struct xsctp_inpcb *)(void *)buf;
+ offset = sizeof(struct xsctp_inpcb);
+ while ((offset < len) && (xinpcb->last == 0)) {
+ if ((sock = calloc(1, sizeof *sock)) == NULL)
+ err(1, "malloc()");
+ sock->socket = xinpcb->socket;
+ sock->proto = IPPROTO_SCTP;
+ sock->protoname = "sctp";
+ if (xinpcb->flags & SCTP_PCB_FLAGS_BOUND_V6) {
+ sock->family = AF_INET6;
+ sock->vflag = INP_IPV6;
+ } else {
+ sock->family = AF_INET;
+ sock->vflag = INP_IPV4;
+ }
+ prev_laddr = NULL;
+ local_all_loopback = 1;
+ while (offset < len) {
+ xladdr = (struct xsctp_laddr *)(void *)(buf + offset);
+ offset += sizeof(struct xsctp_laddr);
+ if (xladdr->last == 1)
+ break;
+ if ((laddr = calloc(1, sizeof(struct addr))) == NULL)
+ err(1, "malloc()");
+ switch (xladdr->address.sa.sa_family) {
+ case AF_INET:
+#define __IN_IS_ADDR_LOOPBACK(pina) \
+ ((ntohl((pina)->s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET)
+ if (!__IN_IS_ADDR_LOOPBACK(&xladdr->address.sin.sin_addr))
+ local_all_loopback = 0;
+#undef __IN_IS_ADDR_LOOPBACK
+ sockaddr(&laddr->address,
+ AF_INET,
+ &xladdr->address.sin.sin_addr,
+ htons(xinpcb->local_port));
+ break;
+ case AF_INET6:
+ if (!IN6_IS_ADDR_LOOPBACK(&xladdr->address.sin6.sin6_addr))
+ local_all_loopback = 0;
+ sockaddr(&laddr->address,
+ AF_INET6,
+ &xladdr->address.sin6.sin6_addr,
+ htons(xinpcb->local_port));
+ break;
+ default:
+ errx(1, "adress family %d not supported",
+ xladdr->address.sa.sa_family);
+ }
+ laddr->next = NULL;
+ if (prev_laddr == NULL)
+ sock->laddr = laddr;
+ else
+ prev_laddr->next = laddr;
+ prev_laddr = laddr;
+ }
+ if (sock->laddr == NULL) {
+ if ((sock->laddr = calloc(1, sizeof(struct addr))) == NULL)
+ err(1, "malloc()");
+ sock->laddr->address.ss_family = sock->family;
+ if (sock->family == AF_INET)
+ sock->laddr->address.ss_len = sizeof(struct sockaddr_in);
+ else
+ sock->laddr->address.ss_len = sizeof(struct sockaddr_in);
+ local_all_loopback = 0;
+ }
+ if ((sock->faddr = calloc(1, sizeof(struct addr))) == NULL)
+ err(1, "malloc()");
+ sock->faddr->address.ss_family = sock->family;
+ if (sock->family == AF_INET)
+ sock->faddr->address.ss_len = sizeof(struct sockaddr_in);
+ else
+ sock->faddr->address.ss_len = sizeof(struct sockaddr_in);
+ no_stcb = 1;
+ while (offset < len) {
+ xstcb = (struct xsctp_tcb *)(void *)(buf + offset);
+ offset += sizeof(struct xsctp_tcb);
+ if (no_stcb) {
+ if (opt_l &&
+ (!opt_L || !local_all_loopback) &&
+ ((xinpcb->flags & SCTP_PCB_FLAGS_UDPTYPE) ||
+ (xstcb->last == 1))) {
+ hash = (int)((uintptr_t)sock->socket % HASHSIZE);
+ sock->next = sockhash[hash];
+ sockhash[hash] = sock;
+ } else {
+ free_socket(sock);
+ }
+ }
+ if (xstcb->last == 1)
+ break;
+ no_stcb = 0;
+ if (opt_c) {
+ if ((sock = calloc(1, sizeof *sock)) == NULL)
+ err(1, "malloc()");
+ sock->socket = xinpcb->socket;
+ sock->proto = IPPROTO_SCTP;
+ sock->protoname = "sctp";
+ if (xinpcb->flags & SCTP_PCB_FLAGS_BOUND_V6) {
+ sock->family = AF_INET6;
+ sock->vflag = INP_IPV6;
+ } else {
+ sock->family = AF_INET;
+ sock->vflag = INP_IPV4;
+ }
+ }
+ prev_laddr = NULL;
+ local_all_loopback = 1;
+ while (offset < len) {
+ xladdr = (struct xsctp_laddr *)(void *)(buf + offset);
+ offset += sizeof(struct xsctp_laddr);
+ if (xladdr->last == 1)
+ break;
+ if (!opt_c)
+ continue;
+ if ((laddr = calloc(1, sizeof(struct addr))) == NULL)
+ err(1, "malloc()");
+ switch (xladdr->address.sa.sa_family) {
+ case AF_INET:
+#define __IN_IS_ADDR_LOOPBACK(pina) \
+ ((ntohl((pina)->s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET)
+ if (!__IN_IS_ADDR_LOOPBACK(&xladdr->address.sin.sin_addr))
+ local_all_loopback = 0;
+#undef __IN_IS_ADDR_LOOPBACK
+ sockaddr(&laddr->address,
+ AF_INET,
+ &xladdr->address.sin.sin_addr,
+ htons(xstcb->local_port));
+ break;
+ case AF_INET6:
+ if (!IN6_IS_ADDR_LOOPBACK(&xladdr->address.sin6.sin6_addr))
+ local_all_loopback = 0;
+ sockaddr(&laddr->address,
+ AF_INET6,
+ &xladdr->address.sin6.sin6_addr,
+ htons(xstcb->local_port));
+ break;
+ default:
+ errx(1, "adress family %d not supported",
+ xladdr->address.sa.sa_family);
+ }
+ laddr->next = NULL;
+ if (prev_laddr == NULL)
+ sock->laddr = laddr;
+ else
+ prev_laddr->next = laddr;
+ prev_laddr = laddr;
+ }
+ prev_faddr = NULL;
+ foreign_all_loopback = 1;
+ while (offset < len) {
+ xraddr = (struct xsctp_raddr *)(void *)(buf + offset);
+ offset += sizeof(struct xsctp_raddr);
+ if (xraddr->last == 1)
+ break;
+ if (!opt_c)
+ continue;
+ if ((faddr = calloc(1, sizeof(struct addr))) == NULL)
+ err(1, "malloc()");
+ switch (xraddr->address.sa.sa_family) {
+ case AF_INET:
+#define __IN_IS_ADDR_LOOPBACK(pina) \
+ ((ntohl((pina)->s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET)
+ if (!__IN_IS_ADDR_LOOPBACK(&xraddr->address.sin.sin_addr))
+ foreign_all_loopback = 0;
+#undef __IN_IS_ADDR_LOOPBACK
+ sockaddr(&faddr->address,
+ AF_INET,
+ &xraddr->address.sin.sin_addr,
+ htons(xstcb->remote_port));
+ break;
+ case AF_INET6:
+ if (!IN6_IS_ADDR_LOOPBACK(&xraddr->address.sin6.sin6_addr))
+ foreign_all_loopback = 0;
+ sockaddr(&faddr->address,
+ AF_INET6,
+ &xraddr->address.sin6.sin6_addr,
+ htons(xstcb->remote_port));
+ break;
+ default:
+ errx(1, "adress family %d not supported",
+ xraddr->address.sa.sa_family);
+ }
+ faddr->next = NULL;
+ if (prev_faddr == NULL)
+ sock->faddr = faddr;
+ else
+ prev_faddr->next = faddr;
+ prev_faddr = faddr;
+ }
+ if (opt_c) {
+ if (!opt_L || !(local_all_loopback || foreign_all_loopback)) {
+ hash = (int)((uintptr_t)sock->socket % HASHSIZE);
+ sock->next = sockhash[hash];
+ sockhash[hash] = sock;
+ } else {
+ free_socket(sock);
+ }
+ }
+ }
+ xinpcb = (struct xsctp_inpcb *)(void *)(buf + offset);
+ offset += sizeof(struct xsctp_inpcb);
+ }
+ free(buf);
+}
+
+static void
gather_inet(int proto)
{
struct xinpgen *xig, *exig;
@@ -257,6 +534,7 @@ gather_inet(int proto)
struct inpcb *inp;
struct xsocket *so;
struct sock *sock;
+ struct addr *laddr, *faddr;
const char *varname, *protoname;
size_t len, bufsize;
void *buf;
@@ -319,7 +597,7 @@ gather_inet(int proto)
switch (proto) {
case IPPROTO_TCP:
xtp = (struct xtcpcb *)xig;
- if (xtp->xt_len != sizeof *xtp) {
+ if (xtp->xt_len != sizeof(*xtp)) {
warnx("struct xtcpcb size mismatch");
goto out;
}
@@ -330,7 +608,7 @@ gather_inet(int proto)
case IPPROTO_UDP:
case IPPROTO_DIVERT:
xip = (struct xinpcb *)xig;
- if (xip->xi_len != sizeof *xip) {
+ if (xip->xi_len != sizeof(*xip)) {
warnx("struct xinpcb size mismatch");
goto out;
}
@@ -366,23 +644,31 @@ gather_inet(int proto)
warnx("invalid vflag 0x%x", inp->inp_vflag);
continue;
}
- if ((sock = calloc(1, sizeof *sock)) == NULL)
+ if ((sock = calloc(1, sizeof(*sock))) == NULL)
+ err(1, "malloc()");
+ if ((laddr = calloc(1, sizeof *laddr)) == NULL)
+ err(1, "malloc()");
+ if ((faddr = calloc(1, sizeof *faddr)) == NULL)
err(1, "malloc()");
sock->socket = so->xso_so;
sock->proto = proto;
if (inp->inp_vflag & INP_IPV4) {
sock->family = AF_INET;
- sockaddr(&sock->laddr, sock->family,
+ sockaddr(&laddr->address, sock->family,
&inp->inp_laddr, inp->inp_lport);
- sockaddr(&sock->faddr, sock->family,
+ sockaddr(&faddr->address, sock->family,
&inp->inp_faddr, inp->inp_fport);
} else if (inp->inp_vflag & INP_IPV6) {
sock->family = AF_INET6;
- sockaddr(&sock->laddr, sock->family,
+ sockaddr(&laddr->address, sock->family,
&inp->in6p_laddr, inp->inp_lport);
- sockaddr(&sock->faddr, sock->family,
+ sockaddr(&faddr->address, sock->family,
&inp->in6p_faddr, inp->inp_fport);
}
+ laddr->next = NULL;
+ faddr->next = NULL;
+ sock->laddr = laddr;
+ sock->faddr = faddr;
sock->vflag = inp->inp_vflag;
sock->protoname = protoname;
hash = (int)((uintptr_t)sock->socket % HASHSIZE);
@@ -399,6 +685,7 @@ gather_unix(int proto)
struct xunpgen *xug, *exug;
struct xunpcb *xup;
struct sock *sock;
+ struct addr *laddr, *faddr;
const char *varname, *protoname;
size_t len, bufsize;
void *buf;
@@ -413,6 +700,10 @@ gather_unix(int proto)
varname = "net.local.dgram.pcblist";
protoname = "dgram";
break;
+ case SOCK_SEQPACKET:
+ varname = "net.local.seqpacket.pcblist";
+ protoname = "seqpac";
+ break;
default:
abort();
}
@@ -432,9 +723,9 @@ gather_unix(int proto)
}
xug = (struct xunpgen *)buf;
exug = (struct xunpgen *)(void *)
- ((char *)buf + len - sizeof *exug);
- if (xug->xug_len != sizeof *xug ||
- exug->xug_len != sizeof *exug) {
+ ((char *)buf + len - sizeof(*exug));
+ if (xug->xug_len != sizeof(*xug) ||
+ exug->xug_len != sizeof(*exug)) {
warnx("struct xinpgen size mismatch");
goto out;
}
@@ -448,14 +739,18 @@ gather_unix(int proto)
if (xug >= exug)
break;
xup = (struct xunpcb *)xug;
- if (xup->xu_len != sizeof *xup) {
+ if (xup->xu_len != sizeof(*xup)) {
warnx("struct xunpcb size mismatch");
goto out;
}
if ((xup->xu_unp.unp_conn == NULL && !opt_l) ||
(xup->xu_unp.unp_conn != NULL && !opt_c))
continue;
- if ((sock = calloc(1, sizeof *sock)) == NULL)
+ if ((sock = calloc(1, sizeof(*sock))) == NULL)
+ err(1, "malloc()");
+ if ((laddr = calloc(1, sizeof *laddr)) == NULL)
+ err(1, "malloc()");
+ if ((faddr = calloc(1, sizeof *faddr)) == NULL)
err(1, "malloc()");
sock->socket = xup->xu_socket.xso_so;
sock->pcb = xup->xu_unpp;
@@ -463,10 +758,14 @@ gather_unix(int proto)
sock->family = AF_UNIX;
sock->protoname = protoname;
if (xup->xu_unp.unp_addr != NULL)
- sock->laddr =
+ laddr->address =
*(struct sockaddr_storage *)(void *)&xup->xu_addr;
else if (xup->xu_unp.unp_conn != NULL)
- *(void **)&sock->faddr = xup->xu_unp.unp_conn;
+ *(void **)&(faddr->address) = xup->xu_unp.unp_conn;
+ laddr->next = NULL;
+ faddr->next = NULL;
+ sock->laddr = laddr;
+ sock->faddr = faddr;
hash = (int)((uintptr_t)sock->socket % HASHSIZE);
sock->next = sockhash[hash];
sockhash[hash] = sock;
@@ -480,7 +779,7 @@ getfiles(void)
{
size_t len, olen;
- olen = len = sizeof *xfiles;
+ olen = len = sizeof(*xfiles);
if ((xfiles = malloc(len)) == NULL)
err(1, "malloc()");
while (sysctlbyname("kern.file", xfiles, &len, 0, 0) == -1) {
@@ -490,39 +789,40 @@ getfiles(void)
if ((xfiles = realloc(xfiles, len)) == NULL)
err(1, "realloc()");
}
- if (len > 0 && xfiles->xf_size != sizeof *xfiles)
+ if (len > 0 && xfiles->xf_size != sizeof(*xfiles))
errx(1, "struct xfile size mismatch");
- nxfiles = len / sizeof *xfiles;
+ nxfiles = len / sizeof(*xfiles);
}
static int
-printaddr(int af, struct sockaddr_storage *ss)
+printaddr(struct sockaddr_storage *ss)
{
- char addrstr[INET6_ADDRSTRLEN] = { '\0', '\0' };
struct sockaddr_un *sun;
- void *addr = NULL; /* Keep compiler happy. */
- int off, port = 0;
+ char addrstr[NI_MAXHOST] = { '\0', '\0' };
+ int error, off, port = 0;
- switch (af) {
+ switch (ss->ss_family) {
case AF_INET:
- addr = &((struct sockaddr_in *)ss)->sin_addr;
- if (inet_lnaof(*(struct in_addr *)addr) == INADDR_ANY)
+ if (inet_lnaof(sstosin(ss)->sin_addr) == INADDR_ANY)
addrstr[0] = '*';
- port = ntohs(((struct sockaddr_in *)ss)->sin_port);
+ port = ntohs(sstosin(ss)->sin_port);
break;
case AF_INET6:
- addr = &((struct sockaddr_in6 *)ss)->sin6_addr;
- if (IN6_IS_ADDR_UNSPECIFIED((struct in6_addr *)addr))
+ if (IN6_IS_ADDR_UNSPECIFIED(&sstosin6(ss)->sin6_addr))
addrstr[0] = '*';
- port = ntohs(((struct sockaddr_in6 *)ss)->sin6_port);
+ port = ntohs(sstosin6(ss)->sin6_port);
break;
case AF_UNIX:
- sun = (struct sockaddr_un *)ss;
+ sun = sstosun(ss);
off = (int)((char *)&sun->sun_path - (char *)sun);
return (xprintf("%.*s", sun->sun_len - off, sun->sun_path));
}
- if (addrstr[0] == '\0')
- inet_ntop(af, addr, addrstr, sizeof addrstr);
+ if (addrstr[0] == '\0') {
+ error = getnameinfo(sstosa(ss), ss->ss_len, addrstr,
+ sizeof(addrstr), NULL, 0, NI_NUMERICHOST);
+ if (error)
+ errx(1, "getnameinfo()");
+ }
if (port == 0)
return xprintf("%s:*", addrstr);
else
@@ -540,8 +840,8 @@ getprocname(pid_t pid)
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID;
mib[3] = (int)pid;
- len = sizeof proc;
- if (sysctl(mib, 4, &proc, &len, NULL, 0) == -1) {
+ len = sizeof(proc);
+ if (sysctl(mib, nitems(mib), &proc, &len, NULL, 0) == -1) {
/* Do not warn if the process exits before we get its name. */
if (errno != ESRCH)
warn("sysctl()");
@@ -561,8 +861,8 @@ getprocjid(pid_t pid)
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID;
mib[3] = (int)pid;
- len = sizeof proc;
- if (sysctl(mib, 4, &proc, &len, NULL, 0) == -1) {
+ len = sizeof(proc);
+ if (sysctl(mib, nitems(mib), &proc, &len, NULL, 0) == -1) {
/* Do not warn if the process exits before we get its jid. */
if (errno != ESRCH)
warn("sysctl()");
@@ -575,23 +875,28 @@ static int
check_ports(struct sock *s)
{
int port;
+ struct addr *addr;
if (ports == NULL)
return (1);
if ((s->family != AF_INET) && (s->family != AF_INET6))
return (1);
- if (s->family == AF_INET)
- port = ntohs(((struct sockaddr_in *)(&s->laddr))->sin_port);
- else
- port = ntohs(((struct sockaddr_in6 *)(&s->laddr))->sin6_port);
- if (CHK_PORT(port))
- return (1);
- if (s->family == AF_INET)
- port = ntohs(((struct sockaddr_in *)(&s->faddr))->sin_port);
- else
- port = ntohs(((struct sockaddr_in6 *)(&s->faddr))->sin6_port);
- if (CHK_PORT(port))
- return (1);
+ for (addr = s->laddr; addr != NULL; addr = addr->next) {
+ if (s->family == AF_INET)
+ port = ntohs(sstosin(&addr->address)->sin_port);
+ else
+ port = ntohs(sstosin6(&addr->address)->sin6_port);
+ if (CHK_PORT(port))
+ return (1);
+ }
+ for (addr = s->faddr; addr != NULL; addr = addr->next) {
+ if (s->family == AF_INET)
+ port = ntohs(sstosin(&addr->address)->sin_port);
+ else
+ port = ntohs(sstosin6(&addr->address)->sin6_port);
+ if (CHK_PORT(port))
+ return (1);
+ }
return (0);
}
@@ -600,6 +905,8 @@ displaysock(struct sock *s, int pos)
{
void *p;
int hash;
+ struct addr *laddr, *faddr;
+ struct sock *s_tmp;
while (pos < 29)
pos += xprintf(" ");
@@ -608,45 +915,67 @@ displaysock(struct sock *s, int pos)
pos += xprintf("4 ");
if (s->vflag & INP_IPV6)
pos += xprintf("6 ");
- while (pos < 36)
- pos += xprintf(" ");
- switch (s->family) {
- case AF_INET:
- case AF_INET6:
- pos += printaddr(s->family, &s->laddr);
- if (s->family == AF_INET6 && pos >= 58)
+ laddr = s->laddr;
+ faddr = s->faddr;
+ while (laddr != NULL || faddr != NULL) {
+ while (pos < 36)
pos += xprintf(" ");
- while (pos < 58)
- pos += xprintf(" ");
- pos += printaddr(s->family, &s->faddr);
- break;
- case AF_UNIX:
- /* server */
- if (s->laddr.ss_len > 0) {
- pos += printaddr(s->family, &s->laddr);
+ switch (s->family) {
+ case AF_INET:
+ case AF_INET6:
+ if (laddr != NULL) {
+ pos += printaddr(&laddr->address);
+ if (s->family == AF_INET6 && pos >= 58)
+ pos += xprintf(" ");
+ }
+ while (pos < 58)
+ pos += xprintf(" ");
+ if (faddr != NULL)
+ pos += printaddr(&faddr->address);
break;
- }
- /* client */
- p = *(void **)&s->faddr;
- if (p == NULL) {
- pos += xprintf("(not connected)");
+ case AF_UNIX:
+ if ((laddr == NULL) || (faddr == NULL))
+ errx(1, "laddr = %p or faddr = %p is NULL",
+ (void *)laddr, (void *)faddr);
+ /* server */
+ if (laddr->address.ss_len > 0) {
+ pos += printaddr(&laddr->address);
+ break;
+ }
+ /* client */
+ p = *(void **)&(faddr->address);
+ if (p == NULL) {
+ pos += xprintf("(not connected)");
+ break;
+ }
+ pos += xprintf("-> ");
+ for (hash = 0; hash < HASHSIZE; ++hash) {
+ for (s_tmp = sockhash[hash];
+ s_tmp != NULL;
+ s_tmp = s_tmp->next)
+ if (s_tmp->pcb == p)
+ break;
+ if (s_tmp != NULL)
+ break;
+ }
+ if (s_tmp == NULL ||
+ s_tmp->laddr == NULL ||
+ s_tmp->laddr->address.ss_len == 0)
+ pos += xprintf("??");
+ else
+ pos += printaddr(&s_tmp->laddr->address);
break;
+ default:
+ abort();
}
- pos += xprintf("-> ");
- for (hash = 0; hash < HASHSIZE; ++hash) {
- for (s = sockhash[hash]; s != NULL; s = s->next)
- if (s->pcb == p)
- break;
- if (s != NULL)
- break;
+ if (laddr != NULL)
+ laddr = laddr->next;
+ if (faddr != NULL)
+ faddr = faddr->next;
+ if ((laddr != NULL) || (faddr != NULL)) {
+ xprintf("\n");
+ pos = 0;
}
- if (s == NULL || s->laddr.ss_len == 0)
- pos += xprintf("??");
- else
- pos += printaddr(s->family, &s->laddr);
- break;
- default:
- abort();
}
xprintf("\n");
}
@@ -669,29 +998,28 @@ display(void)
if (opt_j >= 0 && opt_j != getprocjid(xf->xf_pid))
continue;
hash = (int)((uintptr_t)xf->xf_data % HASHSIZE);
- for (s = sockhash[hash]; s != NULL; s = s->next)
- if ((void *)s->socket == xf->xf_data)
- break;
- if (s == NULL)
- continue;
- if (!check_ports(s))
- continue;
- s->shown = 1;
- pos = 0;
- if ((pwd = getpwuid(xf->xf_uid)) == NULL)
- pos += xprintf("%lu ", (u_long)xf->xf_uid);
- else
- pos += xprintf("%s ", pwd->pw_name);
- while (pos < 9)
- pos += xprintf(" ");
- pos += xprintf("%.10s", getprocname(xf->xf_pid));
- while (pos < 20)
- pos += xprintf(" ");
- pos += xprintf("%lu ", (u_long)xf->xf_pid);
- while (pos < 26)
- pos += xprintf(" ");
- pos += xprintf("%d ", xf->xf_fd);
- displaysock(s, pos);
+ for (s = sockhash[hash]; s != NULL; s = s->next) {
+ if ((void *)s->socket != xf->xf_data)
+ continue;
+ if (!check_ports(s))
+ continue;
+ s->shown = 1;
+ pos = 0;
+ if ((pwd = getpwuid(xf->xf_uid)) == NULL)
+ pos += xprintf("%lu ", (u_long)xf->xf_uid);
+ else
+ pos += xprintf("%s ", pwd->pw_name);
+ while (pos < 9)
+ pos += xprintf(" ");
+ pos += xprintf("%.10s", getprocname(xf->xf_pid));
+ while (pos < 20)
+ pos += xprintf(" ");
+ pos += xprintf("%lu ", (u_long)xf->xf_pid);
+ while (pos < 26)
+ pos += xprintf(" ");
+ pos += xprintf("%d ", xf->xf_fd);
+ displaysock(s, pos);
+ }
}
if (opt_j >= 0)
return;
@@ -797,12 +1125,16 @@ main(int argc, char *argv[])
if (opt_4 || opt_6) {
for (i = 0; i < protos_defined; i++)
- gather_inet(protos[i]);
+ if (protos[i] == IPPROTO_SCTP)
+ gather_sctp();
+ else
+ gather_inet(protos[i]);
}
if (opt_u || (protos_defined == -1 && !opt_4 && !opt_6)) {
gather_unix(SOCK_STREAM);
gather_unix(SOCK_DGRAM);
+ gather_unix(SOCK_SEQPACKET);
}
getfiles();
display();
diff --git a/usr.bin/sort/Makefile.depend b/usr.bin/sort/Makefile.depend
new file mode 100644
index 0000000..0940f16
--- /dev/null
+++ b/usr.bin/sort/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/split/Makefile.depend b/usr.bin/split/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/split/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ssh-copy-id/Makefile.depend b/usr.bin/ssh-copy-id/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.bin/ssh-copy-id/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/stat/Makefile.depend b/usr.bin/stat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/stat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/stdbuf/Makefile.depend b/usr.bin/stdbuf/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/stdbuf/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/strings/Makefile.depend b/usr.bin/strings/Makefile.depend
new file mode 100644
index 0000000..40241f3
--- /dev/null
+++ b/usr.bin/strings/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libelftc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/su/Makefile.depend b/usr.bin/su/Makefile.depend
new file mode 100644
index 0000000..85813bf
--- /dev/null
+++ b/usr.bin/su/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libapr/Makefile.depend b/usr.bin/svn/lib/libapr/Makefile.depend
new file mode 100644
index 0000000..402745d
--- /dev/null
+++ b/usr.bin/svn/lib/libapr/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libapr_util/Makefile.depend b/usr.bin/svn/lib/libapr_util/Makefile.depend
new file mode 100644
index 0000000..9caf2d1
--- /dev/null
+++ b/usr.bin/svn/lib/libapr_util/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libserf/Makefile.depend b/usr.bin/svn/lib/libserf/Makefile.depend
new file mode 100644
index 0000000..b8e3639
--- /dev/null
+++ b/usr.bin/svn/lib/libserf/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_client/Makefile.depend b/usr.bin/svn/lib/libsvn_client/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_client/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_delta/Makefile.depend b/usr.bin/svn/lib/libsvn_delta/Makefile.depend
new file mode 100644
index 0000000..35add0c
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_delta/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_diff/Makefile.depend b/usr.bin/svn/lib/libsvn_diff/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_diff/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs/Makefile.depend b/usr.bin/svn/lib/libsvn_fs/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend b/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend b/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra/Makefile.depend b/usr.bin/svn/lib/libsvn_ra/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend
new file mode 100644
index 0000000..9caf2d1
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_repos/Makefile.depend b/usr.bin/svn/lib/libsvn_repos/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_repos/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_subr/Makefile.depend b/usr.bin/svn/lib/libsvn_subr/Makefile.depend
new file mode 100644
index 0000000..365567e
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_subr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_wc/Makefile.depend b/usr.bin/svn/lib/libsvn_wc/Makefile.depend
new file mode 100644
index 0000000..ccd19e5
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_wc/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svn/Makefile.depend b/usr.bin/svn/svn/Makefile.depend
new file mode 100644
index 0000000..ccbe233
--- /dev/null
+++ b/usr.bin/svn/svn/Makefile.depend
@@ -0,0 +1,43 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnadmin/Makefile.depend b/usr.bin/svn/svnadmin/Makefile.depend
new file mode 100644
index 0000000..6a83703
--- /dev/null
+++ b/usr.bin/svn/svnadmin/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svndumpfilter/Makefile.depend b/usr.bin/svn/svndumpfilter/Makefile.depend
new file mode 100644
index 0000000..6a83703
--- /dev/null
+++ b/usr.bin/svn/svndumpfilter/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnlook/Makefile.depend b/usr.bin/svn/svnlook/Makefile.depend
new file mode 100644
index 0000000..327a76e
--- /dev/null
+++ b/usr.bin/svn/svnlook/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnmucc/Makefile.depend b/usr.bin/svn/svnmucc/Makefile.depend
new file mode 100644
index 0000000..eb9e68b
--- /dev/null
+++ b/usr.bin/svn/svnmucc/Makefile.depend
@@ -0,0 +1,41 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnrdump/Makefile.depend b/usr.bin/svn/svnrdump/Makefile.depend
new file mode 100644
index 0000000..ccbe233
--- /dev/null
+++ b/usr.bin/svn/svnrdump/Makefile.depend
@@ -0,0 +1,43 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnserve/Makefile.depend b/usr.bin/svn/svnserve/Makefile.depend
new file mode 100644
index 0000000..978f241
--- /dev/null
+++ b/usr.bin/svn/svnserve/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnsync/Makefile.depend b/usr.bin/svn/svnsync/Makefile.depend
new file mode 100644
index 0000000..978f241
--- /dev/null
+++ b/usr.bin/svn/svnsync/Makefile.depend
@@ -0,0 +1,40 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnversion/Makefile.depend b/usr.bin/svn/svnversion/Makefile.depend
new file mode 100644
index 0000000..ca6c01c
--- /dev/null
+++ b/usr.bin/svn/svnversion/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/systat/Makefile.depend b/usr.bin/systat/Makefile.depend
new file mode 100644
index 0000000..3e4daea
--- /dev/null
+++ b/usr.bin/systat/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tabs/Makefile.depend b/usr.bin/tabs/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/tabs/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tail/Makefile.depend b/usr.bin/tail/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tail/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/talk/Makefile.depend b/usr.bin/talk/Makefile.depend
new file mode 100644
index 0000000..618a09d
--- /dev/null
+++ b/usr.bin/talk/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tar/Makefile.depend b/usr.bin/tar/Makefile.depend
new file mode 100644
index 0000000..4e7906b
--- /dev/null
+++ b/usr.bin/tar/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tcopy/Makefile.depend b/usr.bin/tcopy/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tcopy/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tee/Makefile.depend b/usr.bin/tee/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tee/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/telnet/Makefile.depend b/usr.bin/telnet/Makefile.depend
new file mode 100644
index 0000000..6578e9f
--- /dev/null
+++ b/usr.bin/telnet/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libipsec \
+ lib/libmp \
+ lib/libpam/libpam \
+ lib/libtelnet \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tftp/Makefile.depend b/usr.bin/tftp/Makefile.depend
new file mode 100644
index 0000000..d6c8db8
--- /dev/null
+++ b/usr.bin/tftp/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/time/Makefile.depend b/usr.bin/time/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/time/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/timeout/Makefile.depend b/usr.bin/timeout/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/timeout/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tip/tip/Makefile.depend b/usr.bin/tip/tip/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tip/tip/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/top/Makefile b/usr.bin/top/Makefile
index e7ace68..9e62b4f 100644
--- a/usr.bin/top/Makefile
+++ b/usr.bin/top/Makefile
@@ -25,7 +25,8 @@ LIBADD= ncursesw m kvm jail
CLEANFILES= sigdesc.h
SIGCONV_AWK= ${.CURDIR}/../../contrib/top/sigconv.awk
-SIGNAL_H= ${DESTDIR}/usr/include/sys/signal.h
+STAGED_INCLUDE_DIR?= ${DESTDIR}/usr/include
+SIGNAL_H= ${STAGED_INCLUDE_DIR}/sys/signal.h
sigdesc.h: ${SIGCONV_AWK} ${SIGNAL_H}
awk -f ${SIGCONV_AWK} < ${SIGNAL_H} > ${.TARGET}
diff --git a/usr.bin/top/Makefile.depend b/usr.bin/top/Makefile.depend
new file mode 100644
index 0000000..4a6d98d
--- /dev/null
+++ b/usr.bin/top/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+commands.o: sigdesc.h
+commands.po: sigdesc.h
+display.o: top.local.h
+display.po: top.local.h
+top.o: top.local.h
+top.po: top.local.h
+username.o: top.local.h
+username.po: top.local.h
+.endif
diff --git a/usr.bin/touch/Makefile.depend b/usr.bin/touch/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/touch/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tput/Makefile.depend b/usr.bin/tput/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/tput/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tr/Makefile.depend b/usr.bin/tr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/true/Makefile.depend b/usr.bin/true/Makefile.depend
new file mode 100644
index 0000000..43d71f8
--- /dev/null
+++ b/usr.bin/true/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/truncate/Makefile.depend b/usr.bin/truncate/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.bin/truncate/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/truss/Makefile b/usr.bin/truss/Makefile
index a5eff14..34a6ef4 100644
--- a/usr.bin/truss/Makefile
+++ b/usr.bin/truss/Makefile
@@ -24,7 +24,7 @@ syscalls.h: syscalls.master
ioctl.c: ${.CURDIR}/../kdump/mkioctls
env MACHINE=${MACHINE} CPP="${CPP}" \
- /bin/sh ${.CURDIR}/../kdump/mkioctls return ${DESTDIR}/usr/include > ${.TARGET}
+ /bin/sh ${.CURDIR}/../kdump/mkioctls return ${DESTDIR}${INCLUDEDIR} > ${.TARGET}
.if ${MACHINE_CPUARCH} == "i386"
SRCS+= i386-linux.c linux_syscalls.h
diff --git a/usr.bin/truss/Makefile.depend.amd64 b/usr.bin/truss/Makefile.depend.amd64
new file mode 100644
index 0000000..fa75c7d
--- /dev/null
+++ b/usr.bin/truss/Makefile.depend.amd64
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+amd64-fbsd.o: syscalls.h
+amd64-fbsd.po: syscalls.h
+amd64-fbsd32.o: freebsd32_syscalls.h
+amd64-fbsd32.po: freebsd32_syscalls.h
+amd64-linux32.o: linux32_syscalls.h
+amd64-linux32.po: linux32_syscalls.h
+ioctl.o: ioctl.c
+ioctl.po: ioctl.c
+.endif
diff --git a/usr.bin/tset/Makefile.depend b/usr.bin/tset/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/tset/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tsort/Makefile.depend b/usr.bin/tsort/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/tsort/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tty/Makefile.depend b/usr.bin/tty/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/tty/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ul/Makefile.depend b/usr.bin/ul/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.bin/ul/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uname/Makefile.depend b/usr.bin/uname/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/uname/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unexpand/Makefile.depend b/usr.bin/unexpand/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/unexpand/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unifdef/Makefile.depend b/usr.bin/unifdef/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/unifdef/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uniq/Makefile.depend b/usr.bin/uniq/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/uniq/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/units/Makefile.depend b/usr.bin/units/Makefile.depend
new file mode 100644
index 0000000..3d92039
--- /dev/null
+++ b/usr.bin/units/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unvis/Makefile.depend b/usr.bin/unvis/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/unvis/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unzip/Makefile.depend b/usr.bin/unzip/Makefile.depend
new file mode 100644
index 0000000..4e7906b
--- /dev/null
+++ b/usr.bin/unzip/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/usbhidaction/Makefile.depend b/usr.bin/usbhidaction/Makefile.depend
new file mode 100644
index 0000000..3a42599
--- /dev/null
+++ b/usr.bin/usbhidaction/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/usbhidctl/Makefile.depend b/usr.bin/usbhidctl/Makefile.depend
new file mode 100644
index 0000000..3a42599
--- /dev/null
+++ b/usr.bin/usbhidctl/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/users/Makefile.depend b/usr.bin/users/Makefile.depend
new file mode 100644
index 0000000..b602708
--- /dev/null
+++ b/usr.bin/users/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uudecode/Makefile.depend b/usr.bin/uudecode/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/uudecode/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uuencode/Makefile.depend b/usr.bin/uuencode/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/uuencode/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vacation/Makefile.depend b/usr.bin/vacation/Makefile.depend
new file mode 100644
index 0000000..1b8e038
--- /dev/null
+++ b/usr.bin/vacation/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+vacation.o: sm_os.h
+vacation.po: sm_os.h
+.endif
diff --git a/usr.bin/vgrind/Makefile.depend b/usr.bin/vgrind/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/vgrind/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vgrind/RETEST/Makefile.depend b/usr.bin/vgrind/RETEST/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.bin/vgrind/RETEST/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vi/Makefile.depend b/usr.bin/vi/Makefile.depend
new file mode 100644
index 0000000..57c7034
--- /dev/null
+++ b/usr.bin/vi/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vis/Makefile.depend b/usr.bin/vis/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/vis/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vmstat/Makefile.depend b/usr.bin/vmstat/Makefile.depend
new file mode 100644
index 0000000..2322cbf
--- /dev/null
+++ b/usr.bin/vmstat/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vtfontcvt/Makefile.depend b/usr.bin/vtfontcvt/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/vtfontcvt/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/w/Makefile.depend b/usr.bin/w/Makefile.depend
new file mode 100644
index 0000000..e03ca69
--- /dev/null
+++ b/usr.bin/w/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/libutil \
+ lib/libxo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/wall/Makefile.depend b/usr.bin/wall/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/wall/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/wc/Makefile.depend b/usr.bin/wc/Makefile.depend
new file mode 100644
index 0000000..9b71a67
--- /dev/null
+++ b/usr.bin/wc/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libxo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/what/Makefile.depend b/usr.bin/what/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/what/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/whereis/Makefile.depend b/usr.bin/whereis/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/whereis/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/which/Makefile.depend b/usr.bin/which/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/which/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/who/Makefile.depend b/usr.bin/who/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/who/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/whois/Makefile.depend b/usr.bin/whois/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.bin/whois/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/write/Makefile.depend b/usr.bin/write/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/write/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xargs/Makefile.depend b/usr.bin/xargs/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/xargs/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xinstall/Makefile.depend b/usr.bin/xinstall/Makefile.depend
new file mode 100644
index 0000000..b4491b50
--- /dev/null
+++ b/usr.bin/xinstall/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xinstall/Makefile.depend.host b/usr.bin/xinstall/Makefile.depend.host
new file mode 100644
index 0000000..abd0b21
--- /dev/null
+++ b/usr.bin/xinstall/Makefile.depend.host
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/ld \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/lint1/Makefile.depend b/usr.bin/xlint/lint1/Makefile.depend
new file mode 100644
index 0000000..22a5556
--- /dev/null
+++ b/usr.bin/xlint/lint1/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cgram.o: cgram.c
+cgram.po: cgram.c
+func.o: cgram.h
+func.po: cgram.h
+scan.o: cgram.h
+scan.o: scan.c
+scan.po: cgram.h
+scan.po: scan.c
+tree.o: cgram.h
+tree.po: cgram.h
+.endif
diff --git a/usr.bin/xlint/lint2/Makefile.depend b/usr.bin/xlint/lint2/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/xlint/lint2/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/llib/Makefile b/usr.bin/xlint/llib/Makefile
index 9f1e3c1..63b2b2b 100644
--- a/usr.bin/xlint/llib/Makefile
+++ b/usr.bin/xlint/llib/Makefile
@@ -15,3 +15,7 @@ llib-lstdc.ln: llib-lstdc
${LINT} ${LINTFLAGS} -Cstdc ${.ALLSRC}
.include <bsd.prog.mk>
+
+.if ${MK_META_MODE} == "yes"
+LINTFLAGS+= -I${STAGE_INCLUDEDIR}
+.endif
diff --git a/usr.bin/xlint/llib/Makefile.depend b/usr.bin/xlint/llib/Makefile.depend
new file mode 100644
index 0000000..19a3979
--- /dev/null
+++ b/usr.bin/xlint/llib/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ lib/msun \
+ usr.bin/xlint/xlint.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/xlint/Makefile.depend b/usr.bin/xlint/xlint/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/xlint/xlint/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xstr/Makefile.depend b/usr.bin/xstr/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/xstr/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xz/Makefile.depend b/usr.bin/xz/Makefile.depend
new file mode 100644
index 0000000..987c487
--- /dev/null
+++ b/usr.bin/xz/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xzdec/Makefile.depend b/usr.bin/xzdec/Makefile.depend
new file mode 100644
index 0000000..987c487
--- /dev/null
+++ b/usr.bin/xzdec/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/yacc/Makefile.depend b/usr.bin/yacc/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.bin/yacc/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/yes/Makefile.depend b/usr.bin/yes/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.bin/yes/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypcat/Makefile.depend b/usr.bin/ypcat/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.bin/ypcat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypmatch/Makefile.depend b/usr.bin/ypmatch/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.bin/ypmatch/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypwhich/Makefile.depend b/usr.bin/ypwhich/Makefile.depend
new file mode 100644
index 0000000..c0b7a14
--- /dev/null
+++ b/usr.bin/ypwhich/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ac/Makefile.depend b/usr.sbin/ac/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/ac/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/accton/Makefile.depend b/usr.sbin/accton/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/accton/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpiconf/Makefile.depend b/usr.sbin/acpi/acpiconf/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/acpi/acpiconf/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpidb/Makefile.depend b/usr.sbin/acpi/acpidb/Makefile.depend
new file mode 100644
index 0000000..7b92dbd
--- /dev/null
+++ b/usr.sbin/acpi/acpidb/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpidump/Makefile.depend b/usr.sbin/acpi/acpidump/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/acpi/acpidump/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/iasl/Makefile.depend b/usr.sbin/acpi/iasl/Makefile.depend
new file mode 100644
index 0000000..ef1c922
--- /dev/null
+++ b/usr.sbin/acpi/iasl/Makefile.depend
@@ -0,0 +1,107 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+aslanalyze.o: aslcompiler.y.h
+aslanalyze.po: aslcompiler.y.h
+aslbtypes.o: aslcompiler.y.h
+aslbtypes.po: aslcompiler.y.h
+aslcodegen.o: aslcompiler.y.h
+aslcodegen.po: aslcompiler.y.h
+aslcompilerlex.o: aslcompiler.y.h
+aslcompilerlex.o: aslcompilerlex.c
+aslcompilerlex.po: aslcompiler.y.h
+aslcompilerlex.po: aslcompilerlex.c
+aslcompilerparse.o: aslcompilerparse.c
+aslcompilerparse.po: aslcompilerparse.c
+aslfold.o: aslcompiler.y.h
+aslfold.po: aslcompiler.y.h
+asllength.o: aslcompiler.y.h
+asllength.po: aslcompiler.y.h
+asllisting.o: aslcompiler.y.h
+asllisting.po: aslcompiler.y.h
+asllistsup.o: aslcompiler.y.h
+asllistsup.po: aslcompiler.y.h
+aslload.o: aslcompiler.y.h
+aslload.po: aslcompiler.y.h
+asllookup.o: aslcompiler.y.h
+asllookup.po: aslcompiler.y.h
+aslmapoutput.o: aslcompiler.y.h
+aslmapoutput.po: aslcompiler.y.h
+aslmaputils.o: aslcompiler.y.h
+aslmaputils.po: aslcompiler.y.h
+aslmethod.o: aslcompiler.y.h
+aslmethod.po: aslcompiler.y.h
+aslnamesp.o: aslcompiler.y.h
+aslnamesp.po: aslcompiler.y.h
+asloffset.o: aslcompiler.y.h
+asloffset.po: aslcompiler.y.h
+aslopcodes.o: aslcompiler.y.h
+aslopcodes.po: aslcompiler.y.h
+asloperands.o: aslcompiler.y.h
+asloperands.po: aslcompiler.y.h
+aslopt.o: aslcompiler.y.h
+aslopt.po: aslcompiler.y.h
+aslpredef.o: aslcompiler.y.h
+aslpredef.po: aslcompiler.y.h
+aslprepkg.o: aslcompiler.y.h
+aslprepkg.po: aslcompiler.y.h
+aslprintf.o: aslcompiler.y.h
+aslprintf.po: aslcompiler.y.h
+aslprune.o: aslcompiler.y.h
+aslprune.po: aslcompiler.y.h
+aslresource.o: aslcompiler.y.h
+aslresource.po: aslcompiler.y.h
+aslrestype1.o: aslcompiler.y.h
+aslrestype1.po: aslcompiler.y.h
+aslrestype1i.o: aslcompiler.y.h
+aslrestype1i.po: aslcompiler.y.h
+aslrestype2.o: aslcompiler.y.h
+aslrestype2.po: aslcompiler.y.h
+aslrestype2d.o: aslcompiler.y.h
+aslrestype2d.po: aslcompiler.y.h
+aslrestype2q.o: aslcompiler.y.h
+aslrestype2q.po: aslcompiler.y.h
+aslrestype2s.o: aslcompiler.y.h
+aslrestype2s.po: aslcompiler.y.h
+aslrestype2w.o: aslcompiler.y.h
+aslrestype2w.po: aslcompiler.y.h
+asltransform.o: aslcompiler.y.h
+asltransform.po: aslcompiler.y.h
+asltree.o: aslcompiler.y.h
+asltree.po: aslcompiler.y.h
+aslutils.o: aslcompiler.y.h
+aslutils.po: aslcompiler.y.h
+aslwalks.o: aslcompiler.y.h
+aslwalks.po: aslcompiler.y.h
+aslxref.o: aslcompiler.y.h
+aslxref.po: aslcompiler.y.h
+dtexpress.o: dtparser.y.h
+dtexpress.po: dtparser.y.h
+dtparserlex.o: dtparser.y.h
+dtparserlex.o: dtparserlex.c
+dtparserlex.po: dtparser.y.h
+dtparserlex.po: dtparserlex.c
+dtparserparse.o: dtparserparse.c
+dtparserparse.po: dtparserparse.c
+prparserlex.o: prparser.y.h
+prparserlex.o: prparserlex.c
+prparserlex.po: prparser.y.h
+prparserlex.po: prparserlex.c
+prparserparse.o: prparserparse.c
+prparserparse.po: prparserparse.c
+.endif
diff --git a/usr.sbin/adduser/Makefile.depend b/usr.sbin/adduser/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/adduser/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/amd/Makefile.depend b/usr.sbin/amd/amd/Makefile.depend
new file mode 100644
index 0000000..c0afb66
--- /dev/null
+++ b/usr.sbin/amd/amd/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.bin/yacc.host \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+conf_parse.o: conf_parse.c
+conf_parse.po: conf_parse.c
+conf_tok.o: conf_parse.h
+conf_tok.o: conf_tok.c
+conf_tok.po: conf_parse.h
+conf_tok.po: conf_tok.c
+mount_xdr.o: mount_xdr.c
+mount_xdr.po: mount_xdr.c
+.endif
diff --git a/usr.sbin/amd/amq/Makefile.depend b/usr.sbin/amd/amq/Makefile.depend
new file mode 100644
index 0000000..30890ab
--- /dev/null
+++ b/usr.sbin/amd/amq/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/fixmount/Makefile.depend b/usr.sbin/amd/fixmount/Makefile.depend
new file mode 100644
index 0000000..4ed4920
--- /dev/null
+++ b/usr.sbin/amd/fixmount/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/fsinfo/Makefile.depend b/usr.sbin/amd/fsinfo/Makefile.depend
new file mode 100644
index 0000000..5d30d8b
--- /dev/null
+++ b/usr.sbin/amd/fsinfo/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.bin/yacc.host \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fsi_gram.o: fsi_gram.c
+fsi_gram.po: fsi_gram.c
+fsi_lex.o: fsi_gram.h
+fsi_lex.o: fsi_lex.c
+fsi_lex.po: fsi_gram.h
+fsi_lex.po: fsi_lex.c
+fsinfo.o: fsi_gram.h
+fsinfo.po: fsi_gram.h
+.endif
diff --git a/usr.sbin/amd/hlfsd/Makefile.depend b/usr.sbin/amd/hlfsd/Makefile.depend
new file mode 100644
index 0000000..30890ab
--- /dev/null
+++ b/usr.sbin/amd/hlfsd/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/include/Makefile.depend b/usr.sbin/amd/include/Makefile.depend
new file mode 100644
index 0000000..50936ca
--- /dev/null
+++ b/usr.sbin/amd/include/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/libamu/Makefile.depend b/usr.sbin/amd/libamu/Makefile.depend
new file mode 100644
index 0000000..ee19de4
--- /dev/null
+++ b/usr.sbin/amd/libamu/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/libwrap \
+ usr.sbin/amd/include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+nfs_prot_x.o: nfs_prot_x.c
+nfs_prot_x.po: nfs_prot_x.c
+xdr_func_%undef.o: xdr_func_%undef.c
+xdr_func_%undef.po: xdr_func_%undef.c
+.endif
diff --git a/usr.sbin/amd/mk-amd-map/Makefile.depend b/usr.sbin/amd/mk-amd-map/Makefile.depend
new file mode 100644
index 0000000..30890ab
--- /dev/null
+++ b/usr.sbin/amd/mk-amd-map/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/pawd/Makefile.depend b/usr.sbin/amd/pawd/Makefile.depend
new file mode 100644
index 0000000..30890ab
--- /dev/null
+++ b/usr.sbin/amd/pawd/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/scripts/Makefile.depend b/usr.sbin/amd/scripts/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/amd/scripts/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/wire-test/Makefile.depend b/usr.sbin/amd/wire-test/Makefile.depend
new file mode 100644
index 0000000..30890ab
--- /dev/null
+++ b/usr.sbin/amd/wire-test/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ancontrol/Makefile.depend b/usr.sbin/ancontrol/Makefile.depend
new file mode 100644
index 0000000..6a2d406
--- /dev/null
+++ b/usr.sbin/ancontrol/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/apm/Makefile.depend b/usr.sbin/apm/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/apm/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/apmd/Makefile.depend b/usr.sbin/apmd/Makefile.depend
new file mode 100644
index 0000000..6596113
--- /dev/null
+++ b/usr.sbin/apmd/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+apmdlex.o: apmdlex.c
+apmdlex.o: y.tab.h
+apmdlex.po: apmdlex.c
+apmdlex.po: y.tab.h
+apmdparse.o: apmdparse.c
+apmdparse.po: apmdparse.c
+.endif
diff --git a/usr.sbin/arp/Makefile.depend b/usr.sbin/arp/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/arp/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/asf/Makefile.depend b/usr.sbin/asf/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.sbin/asf/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/audit/Makefile.depend b/usr.sbin/audit/Makefile.depend
new file mode 100644
index 0000000..97143a8
--- /dev/null
+++ b/usr.sbin/audit/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/auditd/Makefile.depend b/usr.sbin/auditd/Makefile.depend
new file mode 100644
index 0000000..ae040b6
--- /dev/null
+++ b/usr.sbin/auditd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libauditd \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/auditreduce/Makefile.depend b/usr.sbin/auditreduce/Makefile.depend
new file mode 100644
index 0000000..97143a8
--- /dev/null
+++ b/usr.sbin/auditreduce/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/authpf/Makefile.depend b/usr.sbin/authpf/Makefile.depend
new file mode 100644
index 0000000..fb0a041
--- /dev/null
+++ b/usr.sbin/authpf/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
index bb81bcb..be5cb33 100644
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -13,6 +13,7 @@ SRCS= \
acpi.c \
bhyverun.c \
block_if.c \
+ bootrom.c \
consport.c \
dbgport.c \
inout.c \
diff --git a/usr.sbin/bhyve/bhyve.8 b/usr.sbin/bhyve/bhyve.8
index ee0f2ca..c5de82a 100644
--- a/usr.sbin/bhyve/bhyve.8
+++ b/usr.sbin/bhyve/bhyve.8
@@ -32,7 +32,7 @@
.Nd "run a guest operating system inside a virtual machine"
.Sh SYNOPSIS
.Nm
-.Op Fl abehuwxACHPWY
+.Op Fl abehuwxACHPSWY
.Op Fl c Ar numcpus
.Op Fl g Ar gdbport
.Op Fl l Ar lpcdev Ns Op , Ns Ar conf
@@ -99,10 +99,12 @@ Yield the virtual CPU thread when a HLT instruction is detected.
If this option is not specified, virtual CPUs will use 100% of a host CPU.
.It Fl l Ar lpcdev Ns Op , Ns Ar conf
Allow devices behind the LPC PCI-ISA bridge to be configured.
-The only supported devices are the TTY-class devices,
-.Li com1
+The only supported devices are the TTY-class devices
+.Ar com1
and
-.Li com2 .
+.Ar com2
+and the boot ROM device
+.Ar bootrom .
.It Fl m Ar size Ns Op Ar K|k|M|m|G|g|T|t
Guest physical memory size in bytes.
This must be the same size that was given to
@@ -165,8 +167,8 @@ AHCI controller attached to a SATA hard-drive.
.It Li uart
PCI 16550 serial device.
.It Li lpc
-LPC PCI-ISA bridge with COM1 and COM2 16550 serial ports. The LPC bridge
-emulation can only be configured on bus 0.
+LPC PCI-ISA bridge with COM1 and COM2 16550 serial ports and a boot ROM.
+The LPC bridge emulation can only be configured on bus 0.
.El
.It Op Ar conf
This optional parameter describes the backend for device emulations.
@@ -224,6 +226,14 @@ the bhyve process.
Use the host TTY device for serial port I/O.
.El
.Pp
+Boot ROM device:
+.Bl -tag -width 10n
+.It Pa romfile
+Map
+.Ar romfile
+in the guest address space reserved for boot firmware.
+.El
+.Pp
Pass-through devices:
.Bl -tag -width 10n
.It Ns Ar slot Ns / Ns Ar bus Ns / Ns Ar function
@@ -235,11 +245,17 @@ and
numbers.
.El
.Pp
+Guest memory must be wired using the
+.Fl S
+option when a pass-through device is configured.
+.Pp
The host device must have been reserved at boot-time using the
.Va pptdev
loader variable as described in
.Xr vmm 4 .
.El
+.It Fl S
+Wire guest memory.
.It Fl u
RTC keeps UTC time.
.It Fl U Ar uuid
diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c
index ee0f106..cfb3fe4 100644
--- a/usr.sbin/bhyve/bhyverun.c
+++ b/usr.sbin/bhyve/bhyverun.c
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
#include <pthread.h>
#include <pthread_np.h>
#include <sysexits.h>
+#include <stdbool.h>
#include <machine/vmm.h>
#include <vmmapi.h>
@@ -122,7 +123,7 @@ usage(int code)
{
fprintf(stderr,
- "Usage: %s [-abehuwxACHPWY] [-c vcpus] [-g <gdb port>] [-l <lpc>]\n"
+ "Usage: %s [-abehuwxACHPSWY] [-c vcpus] [-g <gdb port>] [-l <lpc>]\n"
" %*s [-m mem] [-p vcpu:hostcpu] [-s <pci>] [-U uuid] <vm>\n"
" -a: local apic is in xAPIC mode (deprecated)\n"
" -A: create ACPI tables\n"
@@ -137,6 +138,7 @@ usage(int code)
" -p: pin 'vcpu' to 'hostcpu'\n"
" -P: vmexit from the guest on pause\n"
" -s: <slot,driver,configinfo> PCI slot config\n"
+ " -S: guest memory cannot be swapped\n"
" -u: RTC keeps UTC time\n"
" -U: uuid\n"
" -w: ignore unimplemented MSRs\n"
@@ -700,26 +702,82 @@ fbsdrun_set_capabilities(struct vmctx *ctx, int cpu)
vm_set_capability(ctx, cpu, VM_CAP_ENABLE_INVPCID, 1);
}
+static struct vmctx *
+do_open(const char *vmname)
+{
+ struct vmctx *ctx;
+ int error;
+ bool reinit, romboot;
+
+ reinit = romboot = false;
+
+ if (lpc_bootrom())
+ romboot = true;
+
+ error = vm_create(vmname);
+ if (error) {
+ if (errno == EEXIST) {
+ if (romboot) {
+ reinit = true;
+ } else {
+ /*
+ * The virtual machine has been setup by the
+ * userspace bootloader.
+ */
+ }
+ } else {
+ perror("vm_create");
+ exit(1);
+ }
+ } else {
+ if (!romboot) {
+ /*
+ * If the virtual machine was just created then a
+ * bootrom must be configured to boot it.
+ */
+ fprintf(stderr, "virtual machine cannot be booted\n");
+ exit(1);
+ }
+ }
+
+ ctx = vm_open(vmname);
+ if (ctx == NULL) {
+ perror("vm_open");
+ exit(1);
+ }
+
+ if (reinit) {
+ error = vm_reinit(ctx);
+ if (error) {
+ perror("vm_reinit");
+ exit(1);
+ }
+ }
+ return (ctx);
+}
+
int
main(int argc, char *argv[])
{
int c, error, gdb_port, err, bvmcons;
- int dump_guest_memory, max_vcpus, mptgen;
+ int max_vcpus, mptgen, memflags;
int rtc_localtime;
struct vmctx *ctx;
uint64_t rip;
size_t memsize;
+ char *optstr;
bvmcons = 0;
- dump_guest_memory = 0;
progname = basename(argv[0]);
gdb_port = 0;
guest_ncpus = 1;
memsize = 256 * MB;
mptgen = 1;
rtc_localtime = 1;
+ memflags = 0;
- while ((c = getopt(argc, argv, "abehuwxACHIPWYp:g:c:s:m:l:U:")) != -1) {
+ optstr = "abehuwxACHIPSWYp:g:c:s:m:l:U:";
+ while ((c = getopt(argc, argv, optstr)) != -1) {
switch (c) {
case 'a':
x2apic_mode = 0;
@@ -740,7 +798,7 @@ main(int argc, char *argv[])
guest_ncpus = atoi(optarg);
break;
case 'C':
- dump_guest_memory = 1;
+ memflags |= VM_MEM_F_INCORE;
break;
case 'g':
gdb_port = atoi(optarg);
@@ -756,6 +814,9 @@ main(int argc, char *argv[])
exit(1);
else
break;
+ case 'S':
+ memflags |= VM_MEM_F_WIRED;
+ break;
case 'm':
error = vm_parse_memsize(optarg, &memsize);
if (error)
@@ -810,12 +871,7 @@ main(int argc, char *argv[])
usage(1);
vmname = argv[0];
-
- ctx = vm_open(vmname);
- if (ctx == NULL) {
- perror("vm_open");
- exit(1);
- }
+ ctx = do_open(vmname);
if (guest_ncpus < 1) {
fprintf(stderr, "Invalid guest vCPUs (%d)\n", guest_ncpus);
@@ -831,11 +887,10 @@ main(int argc, char *argv[])
fbsdrun_set_capabilities(ctx, BSP);
- if (dump_guest_memory)
- vm_set_memflags(ctx, VM_MEM_F_INCORE);
+ vm_set_memflags(ctx, memflags);
err = vm_setup_memory(ctx, memsize, VM_MMAP_ALL);
if (err) {
- fprintf(stderr, "Unable to setup memory (%d)\n", err);
+ fprintf(stderr, "Unable to setup memory (%d)\n", errno);
exit(1);
}
@@ -865,6 +920,16 @@ main(int argc, char *argv[])
if (bvmcons)
init_bvmcons();
+ if (lpc_bootrom()) {
+ if (vm_set_capability(ctx, BSP, VM_CAP_UNRESTRICTED_GUEST, 1)) {
+ fprintf(stderr, "ROM boot failed: unrestricted guest "
+ "capability not available\n");
+ exit(1);
+ }
+ error = vcpu_reset(ctx, BSP);
+ assert(error == 0);
+ }
+
error = vm_get_register(ctx, BSP, VM_REG_GUEST_RIP, &rip);
assert(error == 0);
diff --git a/usr.sbin/bhyve/bootrom.c b/usr.sbin/bhyve/bootrom.c
new file mode 100644
index 0000000..5e4e0e9
--- /dev/null
+++ b/usr.sbin/bhyve/bootrom.c
@@ -0,0 +1,111 @@
+/*-
+ * Copyright (c) 2015 Neel Natu <neel@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/param.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#include <machine/vmm.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+#include <vmmapi.h>
+#include "bhyverun.h"
+#include "bootrom.h"
+
+#define MAX_BOOTROM_SIZE (16 * 1024 * 1024) /* 16 MB */
+
+int
+bootrom_init(struct vmctx *ctx, const char *romfile)
+{
+ struct stat sbuf;
+ vm_paddr_t gpa;
+ ssize_t rlen;
+ char *ptr;
+ int fd, i, rv, prot;
+
+ rv = -1;
+ fd = open(romfile, O_RDONLY);
+ if (fd < 0) {
+ fprintf(stderr, "Error opening bootrom \"%s\": %s\n",
+ romfile, strerror(errno));
+ goto done;
+ }
+
+ if (fstat(fd, &sbuf) < 0) {
+ fprintf(stderr, "Could not fstat bootrom file \"%s\": %s\n",
+ romfile, strerror(errno));
+ goto done;
+ }
+
+ /*
+ * Limit bootrom size to 16MB so it doesn't encroach into reserved
+ * MMIO space (e.g. APIC, HPET, MSI).
+ */
+ if (sbuf.st_size > MAX_BOOTROM_SIZE || sbuf.st_size < PAGE_SIZE) {
+ fprintf(stderr, "Invalid bootrom size %ld\n", sbuf.st_size);
+ goto done;
+ }
+
+ if (sbuf.st_size & PAGE_MASK) {
+ fprintf(stderr, "Bootrom size %ld is not a multiple of the "
+ "page size\n", sbuf.st_size);
+ goto done;
+ }
+
+ ptr = vm_create_devmem(ctx, VM_BOOTROM, "bootrom", sbuf.st_size);
+ if (ptr == MAP_FAILED)
+ goto done;
+
+ /* Map the bootrom into the guest address space */
+ prot = PROT_READ | PROT_EXEC;
+ gpa = (1ULL << 32) - sbuf.st_size;
+ if (vm_mmap_memseg(ctx, gpa, VM_BOOTROM, 0, sbuf.st_size, prot) != 0)
+ goto done;
+
+ /* Read 'romfile' into the guest address space */
+ for (i = 0; i < sbuf.st_size / PAGE_SIZE; i++) {
+ rlen = read(fd, ptr + i * PAGE_SIZE, PAGE_SIZE);
+ if (rlen != PAGE_SIZE) {
+ fprintf(stderr, "Incomplete read of page %d of bootrom "
+ "file %s: %ld bytes\n", i, romfile, rlen);
+ goto done;
+ }
+ }
+ rv = 0;
+done:
+ if (fd >= 0)
+ close(fd);
+ return (rv);
+}
diff --git a/usr.bin/make/hash_tables.h b/usr.sbin/bhyve/bootrom.h
index 8fa43a5..af150d3 100644
--- a/usr.bin/make/hash_tables.h
+++ b/usr.sbin/bhyve/bootrom.h
@@ -1,6 +1,6 @@
-/*
- * Copyright (C) 2005 Max Okumoto.
- * All rights reserved.
+/*-
+ * Copyright (c) 2015 Neel Natu <neel@freebsd.org>
+ * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -11,10 +11,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -25,12 +25,14 @@
*
* $FreeBSD$
*/
-#ifndef hash_tables_h_
-#define hash_tables_h_
-#include <sys/types.h>
+#ifndef _BOOTROM_H_
+#define _BOOTROM_H_
-int directive_hash(const u_char *, size_t);
-int keyword_hash(const u_char *, size_t);
+#include <stdbool.h>
+
+struct vmctx;
+
+int bootrom_init(struct vmctx *ctx, const char *romfile);
#endif
diff --git a/usr.sbin/bhyve/dbgport.c b/usr.sbin/bhyve/dbgport.c
index 534ae65..5be0ceb 100644
--- a/usr.sbin/bhyve/dbgport.c
+++ b/usr.sbin/bhyve/dbgport.c
@@ -116,6 +116,8 @@ SYSRES_IO(BVM_DBG_PORT, 4);
void
init_dbgport(int sport)
{
+ int reuse;
+
conn_fd = -1;
if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
@@ -128,6 +130,13 @@ init_dbgport(int sport)
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(sport);
+ reuse = 1;
+ if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &reuse,
+ sizeof(reuse)) < 0) {
+ perror("setsockopt");
+ exit(1);
+ }
+
if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
perror("bind");
exit(1);
diff --git a/usr.sbin/bhyve/pci_lpc.c b/usr.sbin/bhyve/pci_lpc.c
index e98b141..2203a00 100644
--- a/usr.sbin/bhyve/pci_lpc.c
+++ b/usr.sbin/bhyve/pci_lpc.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <vmmapi.h>
#include "acpi.h"
+#include "bootrom.h"
#include "inout.h"
#include "pci_emul.h"
#include "pci_irq.h"
@@ -62,6 +63,8 @@ SYSRES_IO(NMISC_PORT, 1);
static struct pci_devinst *lpc_bridge;
+static const char *romfile;
+
#define LPC_UART_NUM 2
static struct lpc_uart_softc {
struct uart_softc *uart_softc;
@@ -76,7 +79,7 @@ static const char *lpc_uart_names[LPC_UART_NUM] = { "COM1", "COM2" };
/*
* LPC device configuration is in the following form:
* <lpc_device_name>[,<options>]
- * For e.g. "com1,stdio"
+ * For e.g. "com1,stdio" or "bootrom,/var/romfile"
*/
int
lpc_device_parse(const char *opts)
@@ -88,6 +91,11 @@ lpc_device_parse(const char *opts)
str = cpy = strdup(opts);
lpcdev = strsep(&str, ",");
if (lpcdev != NULL) {
+ if (strcasecmp(lpcdev, "bootrom") == 0) {
+ romfile = str;
+ error = 0;
+ goto done;
+ }
for (unit = 0; unit < LPC_UART_NUM; unit++) {
if (strcasecmp(lpcdev, lpc_uart_names[unit]) == 0) {
lpc_uart_softc[unit].opts = str;
@@ -104,6 +112,13 @@ done:
return (error);
}
+const char *
+lpc_bootrom(void)
+{
+
+ return (romfile);
+}
+
static void
lpc_uart_intr_assert(void *arg)
{
@@ -156,13 +171,19 @@ lpc_uart_io_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
}
static int
-lpc_init(void)
+lpc_init(struct vmctx *ctx)
{
struct lpc_uart_softc *sc;
struct inout_port iop;
const char *name;
int unit, error;
+ if (romfile != NULL) {
+ error = bootrom_init(ctx, romfile);
+ if (error)
+ return (error);
+ }
+
/* COM1 and COM2 */
for (unit = 0; unit < LPC_UART_NUM; unit++) {
sc = &lpc_uart_softc[unit];
@@ -379,7 +400,7 @@ pci_lpc_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts)
return (-1);
}
- if (lpc_init() != 0)
+ if (lpc_init(ctx) != 0)
return (-1);
/* initialize config space */
diff --git a/usr.sbin/bhyve/pci_lpc.h b/usr.sbin/bhyve/pci_lpc.h
index 55a5865..431f5cf 100644
--- a/usr.sbin/bhyve/pci_lpc.h
+++ b/usr.sbin/bhyve/pci_lpc.h
@@ -68,5 +68,6 @@ struct lpc_sysres {
int lpc_device_parse(const char *opt);
char *lpc_pirq_name(int pin);
void lpc_pirq_routed(void);
+const char *lpc_bootrom(void);
#endif
diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c
index 04d68c4..5b52b05 100644
--- a/usr.sbin/bhyve/pci_passthru.c
+++ b/usr.sbin/bhyve/pci_passthru.c
@@ -548,12 +548,18 @@ done:
static int
passthru_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts)
{
- int bus, slot, func, error;
+ int bus, slot, func, error, memflags;
struct passthru_softc *sc;
sc = NULL;
error = 1;
+ memflags = vm_get_memflags(ctx);
+ if (!(memflags & VM_MEM_F_WIRED)) {
+ fprintf(stderr, "passthru requires guest memory to be wired\n");
+ goto done;
+ }
+
if (pcifd < 0) {
pcifd = open(_PATH_DEVPCI, O_RDWR, 0);
if (pcifd < 0)
diff --git a/usr.sbin/bhyvectl/Makefile b/usr.sbin/bhyvectl/Makefile
index dba3f12..4a33dee 100644
--- a/usr.sbin/bhyvectl/Makefile
+++ b/usr.sbin/bhyvectl/Makefile
@@ -7,7 +7,7 @@ SRCS= bhyvectl.c
MAN=
-LIBADD= vmmapi
+LIBADD= vmmapi util
WARNS?= 3
diff --git a/usr.sbin/bhyvectl/bhyvectl.c b/usr.sbin/bhyvectl/bhyvectl.c
index 7d3017f..51bade1 100644
--- a/usr.sbin/bhyvectl/bhyvectl.c
+++ b/usr.sbin/bhyvectl/bhyvectl.c
@@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <sys/errno.h>
#include <sys/mman.h>
+#include <sys/cpuset.h>
#include <stdio.h>
#include <stdlib.h>
@@ -47,10 +48,12 @@ __FBSDID("$FreeBSD$");
#include <getopt.h>
#include <time.h>
#include <assert.h>
+#include <libutil.h>
#include <machine/cpufunc.h>
-#include <machine/vmm.h>
#include <machine/specialreg.h>
+#include <machine/vmm.h>
+#include <machine/vmm_dev.h>
#include <vmmapi.h>
#include "amd/vmcb.h"
@@ -236,7 +239,7 @@ static int get_stats, getcap, setcap, capval, get_gpa_pmap;
static int inject_nmi, assert_lapic_lvt;
static int force_reset, force_poweroff;
static const char *capname;
-static int create, destroy, get_lowmem, get_highmem;
+static int create, destroy, get_memmap, get_memseg;
static int get_intinfo;
static int get_active_cpus, get_suspended_cpus;
static uint64_t memsize;
@@ -1320,8 +1323,8 @@ setup_options(bool cpu_intel)
{ "get-desc-gdtr", NO_ARG, &get_desc_gdtr, 1 },
{ "set-desc-idtr", NO_ARG, &set_desc_idtr, 1 },
{ "get-desc-idtr", NO_ARG, &get_desc_idtr, 1 },
- { "get-lowmem", NO_ARG, &get_lowmem, 1 },
- { "get-highmem",NO_ARG, &get_highmem, 1 },
+ { "get-memmap", NO_ARG, &get_memmap, 1 },
+ { "get-memseg", NO_ARG, &get_memseg, 1 },
{ "get-efer", NO_ARG, &get_efer, 1 },
{ "get-cr0", NO_ARG, &get_cr0, 1 },
{ "get-cr3", NO_ARG, &get_cr3, 1 },
@@ -1520,18 +1523,92 @@ mon_str(int idx)
return ("UNK");
}
+static int
+show_memmap(struct vmctx *ctx)
+{
+ char name[SPECNAMELEN + 1], numbuf[8];
+ vm_ooffset_t segoff;
+ vm_paddr_t gpa;
+ size_t maplen, seglen;
+ int error, flags, prot, segid, delim;
+
+ printf("Address Length Segment Offset ");
+ printf("Prot Flags\n");
+
+ gpa = 0;
+ while (1) {
+ error = vm_mmap_getnext(ctx, &gpa, &segid, &segoff, &maplen,
+ &prot, &flags);
+ if (error)
+ return (errno == ENOENT ? 0 : error);
+
+ error = vm_get_memseg(ctx, segid, &seglen, name, sizeof(name));
+ if (error)
+ return (error);
+
+ printf("%-12lX", gpa);
+ humanize_number(numbuf, sizeof(numbuf), maplen, "B",
+ HN_AUTOSCALE, HN_NOSPACE);
+ printf("%-12s", numbuf);
+
+ printf("%-12s", name[0] ? name : "sysmem");
+ printf("%-12lX", segoff);
+ printf("%c%c%c ", prot & PROT_READ ? 'R' : '-',
+ prot & PROT_WRITE ? 'W' : '-',
+ prot & PROT_EXEC ? 'X' : '-');
+
+ delim = '\0';
+ if (flags & VM_MEMMAP_F_WIRED) {
+ printf("%cwired", delim);
+ delim = '/';
+ }
+ if (flags & VM_MEMMAP_F_IOMMU) {
+ printf("%ciommu", delim);
+ delim = '/';
+ }
+ printf("\n");
+
+ gpa += maplen;
+ }
+}
+
+static int
+show_memseg(struct vmctx *ctx)
+{
+ char name[SPECNAMELEN + 1], numbuf[8];
+ size_t seglen;
+ int error, segid;
+
+ printf("ID Length Name\n");
+
+ segid = 0;
+ while (1) {
+ error = vm_get_memseg(ctx, segid, &seglen, name, sizeof(name));
+ if (error)
+ return (errno == EINVAL ? 0 : error);
+
+ if (seglen) {
+ printf("%-4d", segid);
+ humanize_number(numbuf, sizeof(numbuf), seglen, "B",
+ HN_AUTOSCALE, HN_NOSPACE);
+ printf("%-12s", numbuf);
+ printf("%s", name[0] ? name : "sysmem");
+ printf("\n");
+ }
+ segid++;
+ }
+}
+
int
main(int argc, char *argv[])
{
char *vmname;
int error, ch, vcpu, ptenum;
- vm_paddr_t gpa, gpa_pmap;
- size_t len;
+ vm_paddr_t gpa_pmap;
struct vm_exit vmexit;
uint64_t rax, cr0, cr3, cr4, dr7, rsp, rip, rflags, efer, pat;
uint64_t eptp, bm, addr, u64, pteval[4], *pte, info[2];
struct vmctx *ctx;
- int wired;
cpuset_t cpus;
bool cpu_intel;
uint64_t cs, ds, es, fs, gs, ss, tr, ldtr;
@@ -1703,7 +1780,7 @@ main(int argc, char *argv[])
}
if (!error && memsize)
- error = vm_setup_memory(ctx, memsize, VM_MMAP_NONE);
+ error = vm_setup_memory(ctx, memsize, VM_MMAP_ALL);
if (!error && set_efer)
error = vm_set_register(ctx, vcpu, VM_REG_GUEST_EFER, efer);
@@ -1838,21 +1915,11 @@ main(int argc, char *argv[])
error = vm_lapic_local_irq(ctx, vcpu, assert_lapic_lvt);
}
- if (!error && (get_lowmem || get_all)) {
- gpa = 0;
- error = vm_get_memory_seg(ctx, gpa, &len, &wired);
- if (error == 0)
- printf("lowmem\t\t0x%016lx/%ld%s\n", gpa, len,
- wired ? " wired" : "");
- }
+ if (!error && (get_memseg || get_all))
+ error = show_memseg(ctx);
- if (!error && (get_highmem || get_all)) {
- gpa = 4 * GB;
- error = vm_get_memory_seg(ctx, gpa, &len, &wired);
- if (error == 0)
- printf("highmem\t\t0x%016lx/%ld%s\n", gpa, len,
- wired ? " wired" : "");
- }
+ if (!error && (get_memmap || get_all))
+ error = show_memmap(ctx);
if (!error)
error = get_all_registers(ctx, vcpu);
diff --git a/usr.sbin/bhyveload/bhyveload.8 b/usr.sbin/bhyveload/bhyveload.8
index c168832..fc9c8e1 100644
--- a/usr.sbin/bhyveload/bhyveload.8
+++ b/usr.sbin/bhyveload/bhyveload.8
@@ -35,6 +35,7 @@
guest inside a bhyve virtual machine
.Sh SYNOPSIS
.Nm
+.Op Fl S
.Op Fl c Ar cons-dev
.Op Fl d Ar disk-path
.Op Fl e Ar name=value
@@ -111,8 +112,10 @@ respectively.
The default value of
.Ar mem-size
is 256M.
-.El
+.It Fl S
+Wire guest memory.
.Sh EXAMPLES
+.El
To create a virtual machine named
.Ar freebsd-vm
that boots off the ISO image
diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c
index 8ebf116..8178bb2 100644
--- a/usr.sbin/bhyveload/bhyveload.c
+++ b/usr.sbin/bhyveload/bhyveload.c
@@ -629,7 +629,7 @@ usage(void)
{
fprintf(stderr,
- "usage: %s [-c <console-device>] [-d <disk-path>] [-e <name=value>]\n"
+ "usage: %s [-S][-c <console-device>] [-d <disk-path>] [-e <name=value>]\n"
" %*s [-h <host-path>] [-m mem-size] <vmname>\n",
progname,
(int)strlen(progname), "");
@@ -642,16 +642,17 @@ main(int argc, char** argv)
void *h;
void (*func)(struct loader_callbacks *, void *, int, int);
uint64_t mem_size;
- int opt, error, need_reinit;
+ int opt, error, need_reinit, memflags;
progname = basename(argv[0]);
+ memflags = 0;
mem_size = 256 * MB;
consin_fd = STDIN_FILENO;
consout_fd = STDOUT_FILENO;
- while ((opt = getopt(argc, argv, "c:d:e:h:m:")) != -1) {
+ while ((opt = getopt(argc, argv, "Sc:d:e:h:m:")) != -1) {
switch (opt) {
case 'c':
error = altcons_open(optarg);
@@ -678,6 +679,9 @@ main(int argc, char** argv)
if (error != 0)
errx(EX_USAGE, "Invalid memsize '%s'", optarg);
break;
+ case 'S':
+ memflags |= VM_MEM_F_WIRED;
+ break;
case '?':
usage();
}
@@ -715,6 +719,7 @@ main(int argc, char** argv)
}
}
+ vm_set_memflags(ctx, memflags);
error = vm_setup_memory(ctx, mem_size, VM_MMAP_ALL);
if (error) {
perror("vm_setup_memory");
diff --git a/usr.sbin/bluetooth/ath3kfw/Makefile.depend b/usr.sbin/bluetooth/ath3kfw/Makefile.depend
new file mode 100644
index 0000000..3ddb39c
--- /dev/null
+++ b/usr.sbin/bluetooth/ath3kfw/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bcmfw/Makefile.depend b/usr.sbin/bluetooth/bcmfw/Makefile.depend
new file mode 100644
index 0000000..92ae034
--- /dev/null
+++ b/usr.sbin/bluetooth/bcmfw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bt3cfw/Makefile.depend b/usr.sbin/bluetooth/bt3cfw/Makefile.depend
new file mode 100644
index 0000000..92ae034
--- /dev/null
+++ b/usr.sbin/bluetooth/bt3cfw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bthidcontrol/Makefile.depend b/usr.sbin/bluetooth/bthidcontrol/Makefile.depend
new file mode 100644
index 0000000..32222f2
--- /dev/null
+++ b/usr.sbin/bluetooth/bthidcontrol/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+ lib/libusbhid \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/bthidd/Makefile.depend b/usr.sbin/bluetooth/bthidd/Makefile.depend
new file mode 100644
index 0000000..a1ed9d7
--- /dev/null
+++ b/usr.sbin/bluetooth/bthidd/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/btpand/Makefile.depend b/usr.sbin/bluetooth/btpand/Makefile.depend
new file mode 100644
index 0000000..4633528
--- /dev/null
+++ b/usr.sbin/bluetooth/btpand/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/hccontrol/Makefile.depend b/usr.sbin/bluetooth/hccontrol/Makefile.depend
new file mode 100644
index 0000000..5d21038
--- /dev/null
+++ b/usr.sbin/bluetooth/hccontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/hcsecd/Makefile.depend b/usr.sbin/bluetooth/hcsecd/Makefile.depend
new file mode 100644
index 0000000..4a1ee3f
--- /dev/null
+++ b/usr.sbin/bluetooth/hcsecd/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/hcseriald/Makefile.depend b/usr.sbin/bluetooth/hcseriald/Makefile.depend
new file mode 100644
index 0000000..92ae034
--- /dev/null
+++ b/usr.sbin/bluetooth/hcseriald/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/l2control/Makefile.depend b/usr.sbin/bluetooth/l2control/Makefile.depend
new file mode 100644
index 0000000..5d21038
--- /dev/null
+++ b/usr.sbin/bluetooth/l2control/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/l2ping/Makefile.depend b/usr.sbin/bluetooth/l2ping/Makefile.depend
new file mode 100644
index 0000000..179dbbe
--- /dev/null
+++ b/usr.sbin/bluetooth/l2ping/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend b/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend
new file mode 100644
index 0000000..8fea47e
--- /dev/null
+++ b/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/sdpcontrol/Makefile.depend b/usr.sbin/bluetooth/sdpcontrol/Makefile.depend
new file mode 100644
index 0000000..8fea47e
--- /dev/null
+++ b/usr.sbin/bluetooth/sdpcontrol/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/sdpd/Makefile.depend b/usr.sbin/bluetooth/sdpd/Makefile.depend
new file mode 100644
index 0000000..ce65fbb
--- /dev/null
+++ b/usr.sbin/bluetooth/sdpd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/boot0cfg/Makefile.depend b/usr.sbin/boot0cfg/Makefile.depend
new file mode 100644
index 0000000..851372c
--- /dev/null
+++ b/usr.sbin/boot0cfg/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/boot98cfg/Makefile.depend b/usr.sbin/boot98cfg/Makefile.depend
new file mode 100644
index 0000000..4c7271b
--- /dev/null
+++ b/usr.sbin/boot98cfg/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bootparamd/bootparamd/Makefile.depend b/usr.sbin/bootparamd/bootparamd/Makefile.depend
new file mode 100644
index 0000000..a1d24b5
--- /dev/null
+++ b/usr.sbin/bootparamd/bootparamd/Makefile.depend
@@ -0,0 +1,33 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bootparam_prot_svc.o: bootparam_prot.h
+bootparam_prot_svc.o: bootparam_prot_svc.c
+bootparam_prot_svc.po: bootparam_prot.h
+bootparam_prot_svc.po: bootparam_prot_svc.c
+bootparam_prot_xdr.o: bootparam_prot.h
+bootparam_prot_xdr.o: bootparam_prot_xdr.c
+bootparam_prot_xdr.po: bootparam_prot.h
+bootparam_prot_xdr.po: bootparam_prot_xdr.c
+bootparamd.o: bootparam_prot.h
+bootparamd.po: bootparam_prot.h
+main.o: bootparam_prot.h
+main.po: bootparam_prot.h
+.endif
diff --git a/usr.sbin/bootparamd/callbootd/Makefile.depend b/usr.sbin/bootparamd/callbootd/Makefile.depend
new file mode 100644
index 0000000..e34ede1
--- /dev/null
+++ b/usr.sbin/bootparamd/callbootd/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bootparam_prot_clnt.o: bootparam_prot.h
+bootparam_prot_clnt.o: bootparam_prot_clnt.c
+bootparam_prot_clnt.po: bootparam_prot.h
+bootparam_prot_clnt.po: bootparam_prot_clnt.c
+bootparam_prot_xdr.o: bootparam_prot.h
+bootparam_prot_xdr.o: bootparam_prot_xdr.c
+bootparam_prot_xdr.po: bootparam_prot.h
+bootparam_prot_xdr.po: bootparam_prot_xdr.c
+callbootd.o: bootparam_prot.h
+callbootd.po: bootparam_prot.h
+.endif
diff --git a/usr.sbin/bsdconfig/packages/Makefile.depend b/usr.sbin/bsdconfig/packages/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/usr.sbin/bsdconfig/packages/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdconfig/packages/include/Makefile.depend b/usr.sbin/bsdconfig/packages/include/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/usr.sbin/bsdconfig/packages/include/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdconfig/share/packages/Makefile.depend b/usr.sbin/bsdconfig/share/packages/Makefile.depend
new file mode 100644
index 0000000..d14a02b
--- /dev/null
+++ b/usr.sbin/bsdconfig/share/packages/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdconfig/usermgmt/share/group.subr b/usr.sbin/bsdconfig/usermgmt/share/group.subr
index fb320d1..e9c8b16 100644
--- a/usr.sbin/bsdconfig/usermgmt/share/group.subr
+++ b/usr.sbin/bsdconfig/usermgmt/share/group.subr
@@ -82,9 +82,9 @@ f_group_add()
#
# NB: pw(8) has a ``feature'' wherein `-n name' can be taken as GID
# instead of name. Work-around is to also pass `-g GID' at the same
- # time (any GID will do; but `-1' is appropriate for this context).
+ # time (the GID is ignored in this case, so any GID will do).
#
- if [ "$input" ] && f_quietly pw groupshow -n "$input" -g -1; then
+ if [ "$input" ] && f_quietly pw groupshow -n "$input" -g 1337; then
f_show_err "$msg_group_already_used" "$input"
return $FAILURE
fi
@@ -182,7 +182,7 @@ f_group_add()
1) # Group Name (prompt for new group name)
f_dialog_input_group_name input "$group_name" ||
continue
- if f_quietly pw groupshow -n "$input" -g -1; then
+ if f_quietly pw groupshow -n "$input" -g 1337; then
f_show_err "$msg_group_already_used" "$input"
continue
fi
@@ -368,9 +368,9 @@ f_group_edit()
#
# NB: pw(8) has a ``feature'' wherein `-n name' can be taken as GID
# instead of name. Work-around is to also pass `-g GID' at the same
- # time (any GID will do; but `-1' is appropriate for this context).
+ # time (the GID is ignored in this case, so any GID will do).
#
- if [ "$input" ] && ! f_quietly pw groupshow -n "$input" -g -1; then
+ if [ "$input" ] && ! f_quietly pw groupshow -n "$input" -g 1337; then
f_show_err "$msg_group_not_found" "$input"
return $FAILURE
fi
diff --git a/usr.sbin/bsdconfig/usermgmt/share/user.subr b/usr.sbin/bsdconfig/usermgmt/share/user.subr
index d0e3887..27d9d66 100644
--- a/usr.sbin/bsdconfig/usermgmt/share/user.subr
+++ b/usr.sbin/bsdconfig/usermgmt/share/user.subr
@@ -231,9 +231,9 @@ f_user_add()
#
# NB: pw(8) has a ``feature'' wherein `-n name' can be taken as UID
# instead of name. Work-around is to also pass `-u UID' at the same
- # time (any UID will do; but `-1' is appropriate for this context).
+ # time (the UID is ignored in this case, so any UID will do).
#
- if [ "$input" ] && f_quietly pw usershow -n "$input" -u -1; then
+ if [ "$input" ] && f_quietly pw usershow -n "$input" -u 1337; then
f_show_err "$msg_login_already_used" "$input"
return $FAILURE
fi
@@ -414,7 +414,7 @@ f_user_add()
1) # Login (prompt for new login name)
f_dialog_input_name input "$user_name" ||
continue
- if f_quietly pw usershow -n "$input" -u -1; then
+ if f_quietly pw usershow -n "$input" -u 1337; then
f_show_err "$msg_login_already_used" "$input"
continue
fi
@@ -920,9 +920,9 @@ f_user_edit()
#
# NB: pw(8) has a ``feature'' wherein `-n name' can be taken as UID
# instead of name. Work-around is to also pass `-u UID' at the same
- # time (any UID will do; but `-1' is appropriate for this context).
+ # time (the UID is ignored in this case, so any UID will do).
#
- if [ "$input" ] && ! f_quietly pw usershow -n "$input" -u -1; then
+ if [ "$input" ] && ! f_quietly pw usershow -n "$input" -u 1337; then
f_show_err "$msg_login_not_found" "$input"
return $FAILURE
fi
diff --git a/usr.sbin/bsdinstall/Makefile.depend b/usr.sbin/bsdinstall/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/usr.sbin/bsdinstall/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/distextract/Makefile.depend b/usr.sbin/bsdinstall/distextract/Makefile.depend
new file mode 100644
index 0000000..d7411cc
--- /dev/null
+++ b/usr.sbin/bsdinstall/distextract/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdpv \
+ lib/libexpat \
+ lib/libfigpar \
+ lib/liblzma \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/distfetch/Makefile.depend b/usr.sbin/bsdinstall/distfetch/Makefile.depend
new file mode 100644
index 0000000..5dca986
--- /dev/null
+++ b/usr.sbin/bsdinstall/distfetch/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libfetch \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/partedit/Makefile.depend b/usr.sbin/bsdinstall/partedit/Makefile.depend
new file mode 100644
index 0000000..c0a768d
--- /dev/null
+++ b/usr.sbin/bsdinstall/partedit/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/scripts/Makefile.depend b/usr.sbin/bsdinstall/scripts/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/bsdinstall/scripts/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/bsnmpd/Makefile.depend b/usr.sbin/bsnmpd/bsnmpd/Makefile.depend
new file mode 100644
index 0000000..3df74f7
--- /dev/null
+++ b/usr.sbin/bsnmpd/bsnmpd/Makefile.depend
@@ -0,0 +1,51 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbegemot \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+action.o: oid.h
+action.o: tree.h
+action.po: oid.h
+action.po: tree.h
+config.o: tree.h
+config.po: tree.h
+export.o: tree.h
+export.po: tree.h
+main.o: oid.h
+main.o: tree.h
+main.po: oid.h
+main.po: tree.h
+trans_lsock.o: oid.h
+trans_lsock.o: tree.h
+trans_lsock.po: oid.h
+trans_lsock.po: tree.h
+trans_udp.o: oid.h
+trans_udp.o: tree.h
+trans_udp.po: oid.h
+trans_udp.po: tree.h
+trap.o: oid.h
+trap.o: tree.h
+trap.po: oid.h
+trap.po: tree.h
+tree.o: tree.c
+tree.o: tree.h
+tree.po: tree.c
+tree.po: tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/gensnmptree/Makefile.depend b/usr.sbin/bsnmpd/gensnmptree/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/bsnmpd/gensnmptree/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/modules/Makefile.depend b/usr.sbin/bsnmpd/modules/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend
new file mode 100644
index 0000000..06b5e37
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+ usr.sbin/bsnmpd/modules/snmp_netgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atm_sys.So: atm_oid.h
+atm_sys.So: atm_tree.h
+atm_sys.po: atm_oid.h
+atm_sys.po: atm_tree.h
+atm_tree.So: atm_tree.c
+atm_tree.So: atm_tree.h
+atm_tree.po: atm_tree.c
+atm_tree.po: atm_tree.h
+snmp_atm.So: atm_oid.h
+snmp_atm.So: atm_tree.h
+snmp_atm.po: atm_oid.h
+snmp_atm.po: atm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend
new file mode 100644
index 0000000..7d1ccb6
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bridge_addrs.So: bridge_tree.h
+bridge_addrs.po: bridge_tree.h
+bridge_if.So: bridge_oid.h
+bridge_if.So: bridge_tree.h
+bridge_if.po: bridge_oid.h
+bridge_if.po: bridge_tree.h
+bridge_pf.So: bridge_tree.h
+bridge_pf.po: bridge_tree.h
+bridge_port.So: bridge_tree.h
+bridge_port.po: bridge_tree.h
+bridge_snmp.So: bridge_oid.h
+bridge_snmp.So: bridge_tree.h
+bridge_snmp.po: bridge_oid.h
+bridge_snmp.po: bridge_tree.h
+bridge_sys.So: bridge_tree.h
+bridge_sys.po: bridge_tree.h
+bridge_tree.So: bridge_tree.c
+bridge_tree.So: bridge_tree.h
+bridge_tree.po: bridge_tree.c
+bridge_tree.po: bridge_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend
new file mode 100644
index 0000000..419cddd
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend
@@ -0,0 +1,37 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hast_snmp.So: hast_oid.h
+hast_snmp.So: hast_tree.h
+hast_snmp.po: hast_oid.h
+hast_snmp.po: hast_tree.h
+hast_tree.So: hast_tree.c
+hast_tree.So: hast_tree.h
+hast_tree.po: hast_tree.c
+hast_tree.po: hast_tree.h
+parse.So: parse.c
+parse.po: parse.c
+token.So: token.c
+token.So: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend
new file mode 100644
index 0000000..64bb2df
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend
@@ -0,0 +1,83 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevinfo \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/msun \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hostres_begemot.So: hostres_oid.h
+hostres_begemot.So: hostres_tree.h
+hostres_begemot.po: hostres_oid.h
+hostres_begemot.po: hostres_tree.h
+hostres_device_tbl.So: hostres_oid.h
+hostres_device_tbl.So: hostres_tree.h
+hostres_device_tbl.po: hostres_oid.h
+hostres_device_tbl.po: hostres_tree.h
+hostres_diskstorage_tbl.So: hostres_oid.h
+hostres_diskstorage_tbl.So: hostres_tree.h
+hostres_diskstorage_tbl.po: hostres_oid.h
+hostres_diskstorage_tbl.po: hostres_tree.h
+hostres_fs_tbl.So: hostres_oid.h
+hostres_fs_tbl.So: hostres_tree.h
+hostres_fs_tbl.po: hostres_oid.h
+hostres_fs_tbl.po: hostres_tree.h
+hostres_network_tbl.So: hostres_oid.h
+hostres_network_tbl.So: hostres_tree.h
+hostres_network_tbl.po: hostres_oid.h
+hostres_network_tbl.po: hostres_tree.h
+hostres_partition_tbl.So: hostres_oid.h
+hostres_partition_tbl.So: hostres_tree.h
+hostres_partition_tbl.po: hostres_oid.h
+hostres_partition_tbl.po: hostres_tree.h
+hostres_printer_tbl.So: hostres_oid.h
+hostres_printer_tbl.So: hostres_tree.h
+hostres_printer_tbl.po: hostres_oid.h
+hostres_printer_tbl.po: hostres_tree.h
+hostres_processor_tbl.So: hostres_oid.h
+hostres_processor_tbl.So: hostres_tree.h
+hostres_processor_tbl.po: hostres_oid.h
+hostres_processor_tbl.po: hostres_tree.h
+hostres_scalars.So: hostres_oid.h
+hostres_scalars.So: hostres_tree.h
+hostres_scalars.po: hostres_oid.h
+hostres_scalars.po: hostres_tree.h
+hostres_snmp.So: hostres_oid.h
+hostres_snmp.So: hostres_tree.h
+hostres_snmp.po: hostres_oid.h
+hostres_snmp.po: hostres_tree.h
+hostres_storage_tbl.So: hostres_oid.h
+hostres_storage_tbl.So: hostres_tree.h
+hostres_storage_tbl.po: hostres_oid.h
+hostres_storage_tbl.po: hostres_tree.h
+hostres_swinstalled_tbl.So: hostres_oid.h
+hostres_swinstalled_tbl.So: hostres_tree.h
+hostres_swinstalled_tbl.po: hostres_oid.h
+hostres_swinstalled_tbl.po: hostres_tree.h
+hostres_swrun_tbl.So: hostres_oid.h
+hostres_swrun_tbl.So: hostres_tree.h
+hostres_swrun_tbl.po: hostres_oid.h
+hostres_swrun_tbl.po: hostres_tree.h
+hostres_tree.So: hostres_tree.c
+hostres_tree.So: hostres_tree.h
+hostres_tree.po: hostres_tree.c
+hostres_tree.po: hostres_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend
new file mode 100644
index 0000000..ea1a0a5
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lm75_tree.So: lm75_tree.c
+lm75_tree.So: lm75_tree.h
+lm75_tree.po: lm75_tree.c
+lm75_tree.po: lm75_tree.h
+snmp_lm75.So: lm75_oid.h
+snmp_lm75.So: lm75_tree.h
+snmp_lm75.po: lm75_oid.h
+snmp_lm75.po: lm75_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend
new file mode 100644
index 0000000..8e546b0
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend
@@ -0,0 +1,71 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mibII.So: mibII_oid.h
+mibII.So: mibII_tree.h
+mibII.po: mibII_oid.h
+mibII.po: mibII_tree.h
+mibII_begemot.So: mibII_oid.h
+mibII_begemot.So: mibII_tree.h
+mibII_begemot.po: mibII_oid.h
+mibII_begemot.po: mibII_tree.h
+mibII_ifmib.So: mibII_oid.h
+mibII_ifmib.So: mibII_tree.h
+mibII_ifmib.po: mibII_oid.h
+mibII_ifmib.po: mibII_tree.h
+mibII_ifstack.So: mibII_tree.h
+mibII_ifstack.po: mibII_tree.h
+mibII_interfaces.So: mibII_oid.h
+mibII_interfaces.So: mibII_tree.h
+mibII_interfaces.po: mibII_oid.h
+mibII_interfaces.po: mibII_tree.h
+mibII_ip.So: mibII_oid.h
+mibII_ip.So: mibII_tree.h
+mibII_ip.po: mibII_oid.h
+mibII_ip.po: mibII_tree.h
+mibII_ipaddr.So: mibII_oid.h
+mibII_ipaddr.So: mibII_tree.h
+mibII_ipaddr.po: mibII_oid.h
+mibII_ipaddr.po: mibII_tree.h
+mibII_nettomedia.So: mibII_oid.h
+mibII_nettomedia.So: mibII_tree.h
+mibII_nettomedia.po: mibII_oid.h
+mibII_nettomedia.po: mibII_tree.h
+mibII_rcvaddr.So: mibII_oid.h
+mibII_rcvaddr.So: mibII_tree.h
+mibII_rcvaddr.po: mibII_oid.h
+mibII_rcvaddr.po: mibII_tree.h
+mibII_route.So: mibII_oid.h
+mibII_route.So: mibII_tree.h
+mibII_route.po: mibII_oid.h
+mibII_route.po: mibII_tree.h
+mibII_tcp.So: mibII_oid.h
+mibII_tcp.So: mibII_tree.h
+mibII_tcp.po: mibII_oid.h
+mibII_tcp.po: mibII_tree.h
+mibII_tree.So: mibII_tree.c
+mibII_tree.So: mibII_tree.h
+mibII_tree.po: mibII_tree.c
+mibII_tree.po: mibII_tree.h
+mibII_udp.So: mibII_oid.h
+mibII_udp.So: mibII_tree.h
+mibII_udp.po: mibII_oid.h
+mibII_udp.po: mibII_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend
new file mode 100644
index 0000000..19bbcd5
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+netgraph_tree.So: netgraph_tree.c
+netgraph_tree.So: netgraph_tree.h
+netgraph_tree.po: netgraph_tree.c
+netgraph_tree.po: netgraph_tree.h
+snmp_netgraph.So: netgraph_oid.h
+snmp_netgraph.So: netgraph_tree.h
+snmp_netgraph.po: netgraph_oid.h
+snmp_netgraph.po: netgraph_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend
new file mode 100644
index 0000000..6843d75
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+pf_snmp.So: pf_oid.h
+pf_snmp.So: pf_tree.h
+pf_snmp.po: pf_oid.h
+pf_snmp.po: pf_tree.h
+pf_tree.So: pf_tree.c
+pf_tree.So: pf_tree.h
+pf_tree.po: pf_tree.c
+pf_tree.po: pf_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend
new file mode 100644
index 0000000..c8536c4
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+target_snmp.So: target_oid.h
+target_snmp.So: target_tree.h
+target_snmp.po: target_oid.h
+target_snmp.po: target_tree.h
+target_tree.So: target_tree.c
+target_tree.So: target_tree.h
+target_tree.po: target_tree.c
+target_tree.po: target_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend
new file mode 100644
index 0000000..2e9a3fe
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+usm_snmp.So: usm_oid.h
+usm_snmp.So: usm_tree.h
+usm_snmp.po: usm_oid.h
+usm_snmp.po: usm_tree.h
+usm_tree.So: usm_tree.c
+usm_tree.So: usm_tree.h
+usm_tree.po: usm_tree.c
+usm_tree.po: usm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend
new file mode 100644
index 0000000..25501c8
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+vacm_snmp.So: vacm_oid.h
+vacm_snmp.So: vacm_tree.h
+vacm_snmp.po: vacm_oid.h
+vacm_snmp.po: vacm_tree.h
+vacm_tree.So: vacm_tree.c
+vacm_tree.So: vacm_tree.h
+vacm_tree.po: vacm_tree.c
+vacm_tree.po: vacm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend
new file mode 100644
index 0000000..80b1aea
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+wlan_snmp.So: wlan_oid.h
+wlan_snmp.So: wlan_tree.h
+wlan_snmp.po: wlan_oid.h
+wlan_snmp.po: wlan_tree.h
+wlan_sys.So: wlan_tree.h
+wlan_sys.po: wlan_tree.h
+wlan_tree.So: wlan_tree.c
+wlan_tree.So: wlan_tree.h
+wlan_tree.po: wlan_tree.c
+wlan_tree.po: wlan_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend b/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend
new file mode 100644
index 0000000..0aeb983
--- /dev/null
+++ b/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.sbin/bsnmpd/tools/libbsnmptools \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend b/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend
new file mode 100644
index 0000000..06abcea
--- /dev/null
+++ b/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/btxld/Makefile.depend b/usr.sbin/btxld/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/btxld/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cdcontrol/Makefile.depend b/usr.sbin/cdcontrol/Makefile.depend
new file mode 100644
index 0000000..d6c8db8
--- /dev/null
+++ b/usr.sbin/cdcontrol/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chkgrp/Makefile.depend b/usr.sbin/chkgrp/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/chkgrp/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chown/Makefile.depend b/usr.sbin/chown/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/chown/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chroot/Makefile.depend b/usr.sbin/chroot/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/chroot/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ckdist/Makefile.depend b/usr.sbin/ckdist/Makefile.depend
new file mode 100644
index 0000000..064e492
--- /dev/null
+++ b/usr.sbin/ckdist/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/clear_locks/Makefile.depend b/usr.sbin/clear_locks/Makefile.depend
new file mode 100644
index 0000000..c8383bd
--- /dev/null
+++ b/usr.sbin/clear_locks/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/config/Makefile.depend b/usr.sbin/config/Makefile.depend
new file mode 100644
index 0000000..b443a43
--- /dev/null
+++ b/usr.sbin/config/Makefile.depend
@@ -0,0 +1,37 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+config.o: config.c
+config.po: config.c
+kernconf.o: kernconf.c
+kernconf.po: kernconf.c
+lang.o: lang.c
+lang.o: y.tab.h
+lang.po: lang.c
+lang.po: y.tab.h
+main.o: y.tab.h
+main.po: y.tab.h
+mkheaders.o: y.tab.h
+mkheaders.po: y.tab.h
+mkmakefile.o: y.tab.h
+mkmakefile.po: y.tab.h
+mkoptions.o: y.tab.h
+mkoptions.po: y.tab.h
+.endif
diff --git a/usr.sbin/cpucontrol/Makefile.depend b/usr.sbin/cpucontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/cpucontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/crashinfo/Makefile.depend b/usr.sbin/crashinfo/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/crashinfo/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/cron/Makefile.depend b/usr.sbin/cron/cron/Makefile.depend
new file mode 100644
index 0000000..b21f78a
--- /dev/null
+++ b/usr.sbin/cron/cron/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+ usr.sbin/cron/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/crontab/Makefile.depend b/usr.sbin/cron/crontab/Makefile.depend
new file mode 100644
index 0000000..a1bc9b1
--- /dev/null
+++ b/usr.sbin/cron/crontab/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libutil \
+ usr.sbin/cron/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/lib/Makefile.depend b/usr.sbin/cron/lib/Makefile.depend
new file mode 100644
index 0000000..cf2961c
--- /dev/null
+++ b/usr.sbin/cron/lib/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/crunch/crunchgen/Makefile.depend b/usr.sbin/crunch/crunchgen/Makefile.depend
new file mode 100644
index 0000000..f384605
--- /dev/null
+++ b/usr.sbin/crunch/crunchgen/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crunched_skel.o: crunched_skel.c
+crunched_skel.po: crunched_skel.c
+.endif
diff --git a/usr.sbin/crunch/crunchgen/crunchgen.c b/usr.sbin/crunch/crunchgen/crunchgen.c
index e25c1ac..79b240f 100644
--- a/usr.sbin/crunch/crunchgen/crunchgen.c
+++ b/usr.sbin/crunch/crunchgen/crunchgen.c
@@ -980,6 +980,7 @@ top_makefile_rules(FILE *outmk)
prog_t *p;
fprintf(outmk, "LD?= ld\n");
+ fprintf(outmk, "STRIP?= strip\n");
if ( subtract_strlst(&libs, &libs_so) )
fprintf(outmk, "# NOTE: Some LIBS declarations below overridden by LIBS_SO\n");
@@ -1027,7 +1028,7 @@ top_makefile_rules(FILE *outmk)
fprintf(outmk, "\t$(CC) -static -o %s %s.o $(CRUNCHED_OBJS) $(LIBS)\n",
execfname, execfname);
fprintf(outmk, ".endif\n");
- fprintf(outmk, "\tstrip %s\n", execfname);
+ fprintf(outmk, "\t$(STRIP) %s\n", execfname);
fprintf(outmk, "realclean: clean subclean\n");
fprintf(outmk, "clean:\n\trm -f %s *.lo *.o *_stub.c\n", execfname);
fprintf(outmk, "subclean: $(SUBCLEAN_TARGETS)\n");
@@ -1109,7 +1110,7 @@ prog_makefile_rules(FILE *outmk, prog_t *p)
fprintf(outmk, " $(%s_LIBS)", p->ident);
fprintf(outmk, "\n");
- fprintf(outmk, "\t$(LD) -dc -r -o %s.lo %s_stub.o $(%s_OBJPATHS)",
+ fprintf(outmk, "\t$(CC) -nostdlib -Wl,-dc -r -o %s.lo %s_stub.o $(%s_OBJPATHS)",
p->name, p->name, p->ident);
if (p->libs)
fprintf(outmk, " $(%s_LIBS)", p->ident);
diff --git a/usr.sbin/crunch/crunchide/Makefile.depend b/usr.sbin/crunch/crunchide/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/crunch/crunchide/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctladm/Makefile.depend b/usr.sbin/ctladm/Makefile.depend
new file mode 100644
index 0000000..f96ac2f
--- /dev/null
+++ b/usr.sbin/ctladm/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctld/token.l b/usr.sbin/ctld/token.l
index 54b803b..caf59cc 100644
--- a/usr.sbin/ctld/token.l
+++ b/usr.sbin/ctld/token.l
@@ -80,7 +80,7 @@ target { return TARGET; }
timeout { return TIMEOUT; }
\"[^"]+\" { yylval.str = strndup(yytext + 1,
strlen(yytext) - 2); return STR; }
-[a-zA-Z0-9\.\-_/\:\[\]]+ { yylval.str = strdup(yytext); return STR; }
+[a-zA-Z0-9\.\-@_/\:\[\]]+ { yylval.str = strdup(yytext); return STR; }
\{ { return OPENING_BRACKET; }
\} { return CLOSING_BRACKET; }
#.*$ /* ignore comments */;
diff --git a/usr.sbin/ctm/ctm/Makefile.depend b/usr.sbin/ctm/ctm/Makefile.depend
new file mode 100644
index 0000000..064e492
--- /dev/null
+++ b/usr.sbin/ctm/ctm/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_dequeue/Makefile.depend b/usr.sbin/ctm/ctm_dequeue/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/ctm/ctm_dequeue/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_rmail/Makefile.depend b/usr.sbin/ctm/ctm_rmail/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/ctm/ctm_rmail/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_smail/Makefile.depend b/usr.sbin/ctm/ctm_smail/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/ctm/ctm_smail/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/daemon/Makefile.depend b/usr.sbin/daemon/Makefile.depend
new file mode 100644
index 0000000..0f77a15
--- /dev/null
+++ b/usr.sbin/daemon/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/dconschat/Makefile.depend b/usr.sbin/dconschat/Makefile.depend
new file mode 100644
index 0000000..e2e70c8
--- /dev/null
+++ b/usr.sbin/dconschat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/devinfo/Makefile.depend b/usr.sbin/devinfo/Makefile.depend
new file mode 100644
index 0000000..a6afa47
--- /dev/null
+++ b/usr.sbin/devinfo/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/digictl/Makefile.depend b/usr.sbin/digictl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/digictl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/diskinfo/Makefile.depend b/usr.sbin/diskinfo/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/diskinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/dumpcis/Makefile.depend b/usr.sbin/dumpcis/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/dumpcis/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/editmap/Makefile.depend b/usr.sbin/editmap/Makefile.depend
new file mode 100644
index 0000000..afbd086
--- /dev/null
+++ b/usr.sbin/editmap/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+editmap.o: sm_os.h
+editmap.po: sm_os.h
+.endif
diff --git a/usr.sbin/edquota/Makefile.depend b/usr.sbin/edquota/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/edquota/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/eeprom/Makefile.depend b/usr.sbin/eeprom/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.sbin/eeprom/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/etcupdate/Makefile.depend b/usr.sbin/etcupdate/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/etcupdate/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/extattr/Makefile.depend b/usr.sbin/extattr/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/extattr/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/extattrctl/Makefile.depend b/usr.sbin/extattrctl/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/extattrctl/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdcontrol/Makefile.depend b/usr.sbin/fdcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/fdcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdformat/Makefile.depend b/usr.sbin/fdformat/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/fdformat/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdread/Makefile.depend b/usr.sbin/fdread/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/fdread/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdwrite/Makefile.depend b/usr.sbin/fdwrite/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/fdwrite/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_create/Makefile.depend b/usr.sbin/fifolog/fifolog_create/Makefile.depend
new file mode 100644
index 0000000..2a0e9d7
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_create/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libz \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_reader/Makefile.depend b/usr.sbin/fifolog/fifolog_reader/Makefile.depend
new file mode 100644
index 0000000..50fc7bd
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_reader/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_writer/Makefile.depend b/usr.sbin/fifolog/fifolog_writer/Makefile.depend
new file mode 100644
index 0000000..50fc7bd
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_writer/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/lib/Makefile.depend b/usr.sbin/fifolog/lib/Makefile.depend
new file mode 100644
index 0000000..f91d860
--- /dev/null
+++ b/usr.sbin/fifolog/lib/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+getdate.o: getdate.c
+getdate.po: getdate.c
+.endif
diff --git a/usr.sbin/flowctl/Makefile.depend b/usr.sbin/flowctl/Makefile.depend
new file mode 100644
index 0000000..4fa00ad
--- /dev/null
+++ b/usr.sbin/flowctl/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/freebsd-update/Makefile.depend b/usr.sbin/freebsd-update/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/freebsd-update/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh
index fda1d90..19d5198 100644
--- a/usr.sbin/freebsd-update/freebsd-update.sh
+++ b/usr.sbin/freebsd-update/freebsd-update.sh
@@ -216,7 +216,15 @@ config_KeepModifiedMetadata () {
# Add to the list of components which should be kept updated.
config_Components () {
for C in $@; do
- COMPONENTS="${COMPONENTS} ${C}"
+ if [ "$C" = "src" ]; then
+ if [ -e /usr/src/COPYRIGHT ]; then
+ COMPONENTS="${COMPONENTS} ${C}"
+ else
+ echo "src component not installed, skipped"
+ fi
+ else
+ COMPONENTS="${COMPONENTS} ${C}"
+ fi
done
}
@@ -2642,10 +2650,10 @@ install_unschg () {
while read F; do
if ! [ -e ${BASEDIR}/${F} ]; then
continue
+ else
+ echo ${BASEDIR}/${F}
fi
-
- chflags noschg ${BASEDIR}/${F} || return 1
- done < filelist
+ done < filelist | xargs chflags noschg || return 1
# Clean up
rm filelist
diff --git a/usr.sbin/fstyp/Makefile b/usr.sbin/fstyp/Makefile
index d0b14d1..d1de06e 100644
--- a/usr.sbin/fstyp/Makefile
+++ b/usr.sbin/fstyp/Makefile
@@ -1,9 +1,41 @@
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= fstyp
-SRCS= fstyp.c ext2fs.c cd9660.c msdosfs.c ntfs.c ufs.c
+SRCS= cd9660.c ext2fs.c fstyp.c geli.c msdosfs.c ntfs.c ufs.c
+
+.if ${MK_CDDL} != "no"
+SRCS += zfs.c
+.endif
+
MAN= fstyp.8
WARNS= 6
+.if ${MK_CDDL} != "no"
+IGNORE_PRAGMA= YES
+
+CFLAGS+= -DNEED_SOLARIS_BOOLEAN -DHAVE_CDDL
+CFLAGS+= -I${.CURDIR}/../../sys/cddl/compat/opensolaris
+CFLAGS+= -I${.CURDIR}/../../cddl/compat/opensolaris/include
+CFLAGS+= -I${.CURDIR}/../../cddl/compat/opensolaris/lib/libumem
+CFLAGS+= -I${.CURDIR}/../../cddl/contrib/opensolaris/lib/libnvpair
+CFLAGS+= -I${.CURDIR}/../../cddl/contrib/opensolaris/lib/libzpool/common
+CFLAGS+= -I${.CURDIR}/../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs
+CFLAGS+= -I${.CURDIR}/../../sys/cddl/contrib/opensolaris/uts/common
+CFLAGS+= -I${.CURDIR}/../../sys/cddl/contrib/opensolaris/uts/common/sys
+CFLAGS+= -I${.CURDIR}/../../cddl/contrib/opensolaris/head
+.endif
+
+CFLAGS+=-I${.CURDIR}/../../sys
+
+DPADD= ${LIBGEOM} ${LIBMD}
+LDADD= -lgeom -lmd
+
+.if ${MK_CDDL} != "no"
+DPADD += ${LIBNVPAIR} ${LIBZFS}
+LDADD += -lnvpair -lzfs
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.sbin/fstyp/cd9660.c b/usr.sbin/fstyp/cd9660.c
index ee6af11..658af33 100644
--- a/usr.sbin/fstyp/cd9660.c
+++ b/usr.sbin/fstyp/cd9660.c
@@ -45,7 +45,6 @@ int
fstyp_cd9660(FILE *fp, char *label, size_t size)
{
char *sector, *volume;
- int i;
sector = read_buf(fp, ISO9660_OFFSET, 512);
if (sector == NULL)
@@ -58,13 +57,6 @@ fstyp_cd9660(FILE *fp, char *label, size_t size)
bzero(label, size);
strlcpy(label, volume, MIN(size, VOLUME_LEN));
free(sector);
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ rtrim(label, size);
return (0);
}
diff --git a/usr.sbin/fstyp/fstyp.8 b/usr.sbin/fstyp/fstyp.8
index 5223f81..981a8d3 100644
--- a/usr.sbin/fstyp/fstyp.8
+++ b/usr.sbin/fstyp/fstyp.8
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 14, 2015
+.Dd June 15, 2015
.Dt FSTYP 8
.Os
.Sh NAME
@@ -37,20 +37,42 @@
.Nm
.Op Fl l
.Op Fl s
+.Op Fl u
.Ar special
.Sh DESCRIPTION
The
.Nm
utility is used to determine the filesystem type on a given device.
It can recognize ISO-9660, Ext2, FAT, NTFS, and UFS filesystems.
+When the
+.Fl u
+flag is specified,
+.Nm
+also recognizes certain additional metadata formats that cannot be
+handled using
+.Xr mount 8 ,
+such as ZFS pools and
+.Xr geli 8
+providers.
+.Pp
The filesystem name is printed to the standard output
-as, respectively,
-.Li cd9660 ,
-.Li ext2fs ,
-.Li msdosfs ,
-.Li ntfs ,
-or
-.Li ufs .
+as, respectively:
+.Bl -item -offset indent -compact
+.It
+cd9660
+.It
+ext2fs
+.It
+geli
+.It
+msdosfs
+.It
+ntfs
+.It
+ufs
+.It
+zfs
+.El
.Pp
Because
.Nm
@@ -73,6 +95,9 @@ By default,
only works on regular files and disk-like device nodes.
Trying to read other file types might have unexpected consequences or hang
indefinitely.
+.It Fl u
+Include filesystems and devices that cannot be mounted directly by
+.Xr mount 8 .
.El
.Sh EXIT STATUS
The
@@ -82,8 +107,11 @@ type is not recognized.
.Sh SEE ALSO
.Xr file 1 ,
.Xr capsicum 4 ,
+.Xr autofs 8 ,
+.Xr geli 8 ,
.Xr glabel 8 ,
-.Xr mount 8
+.Xr mount 8 ,
+.Xr zpool 8
.Sh HISTORY
The
.Nm
@@ -95,3 +123,5 @@ The
utility was developed by
.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
under sponsorship from the FreeBSD Foundation.
+ZFS and GELI support was added by
+.An Allan Jude Aq Mt allanjude@FreeBSD.org
diff --git a/usr.sbin/fstyp/fstyp.c b/usr.sbin/fstyp/fstyp.c
index d6a48f6..95218ca 100644
--- a/usr.sbin/fstyp/fstyp.c
+++ b/usr.sbin/fstyp/fstyp.c
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
#include <stdbool.h>
+#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@@ -54,13 +55,18 @@ typedef int (*fstyp_function)(FILE *, char *, size_t);
static struct {
const char *name;
fstyp_function function;
+ bool unmountable;
} fstypes[] = {
- { "cd9660", &fstyp_cd9660 },
- { "ext2fs", &fstyp_ext2fs },
- { "msdosfs", &fstyp_msdosfs },
- { "ntfs", &fstyp_ntfs },
- { "ufs", &fstyp_ufs },
- { NULL, NULL }
+ { "cd9660", &fstyp_cd9660, false },
+ { "ext2fs", &fstyp_ext2fs, false },
+ { "geli", &fstyp_geli, true },
+ { "msdosfs", &fstyp_msdosfs, false },
+ { "ntfs", &fstyp_ntfs, false },
+ { "ufs", &fstyp_ufs, false },
+#ifdef HAVE_CDDL
+ { "zfs", &fstyp_zfs, true },
+#endif
+ { NULL, NULL, NULL }
};
void *
@@ -104,11 +110,26 @@ checked_strdup(const char *s)
return (c);
}
+void
+rtrim(char *label, size_t size)
+{
+ ptrdiff_t i;
+
+ for (i = size - 1; i >= 0; i--) {
+ if (label[i] == '\0')
+ continue;
+ else if (label[i] == ' ')
+ label[i] = '\0';
+ else
+ break;
+ }
+}
+
static void
usage(void)
{
- fprintf(stderr, "usage: fstyp [-l][-s] special\n");
+ fprintf(stderr, "usage: fstyp [-l] [-s] [-u] special\n");
exit(1);
}
@@ -137,13 +158,13 @@ int
main(int argc, char **argv)
{
int ch, error, i, nbytes;
- bool ignore_type = false, show_label = false;
+ bool ignore_type = false, show_label = false, show_unmountable = false;
char label[LABEL_LEN + 1], strvised[LABEL_LEN * 4 + 1];
char *path;
FILE *fp;
fstyp_function fstyp_f;
- while ((ch = getopt(argc, argv, "ls")) != -1) {
+ while ((ch = getopt(argc, argv, "lsu")) != -1) {
switch (ch) {
case 'l':
show_label = true;
@@ -151,6 +172,9 @@ main(int argc, char **argv)
case 's':
ignore_type = true;
break;
+ case 'u':
+ show_unmountable = true;
+ break;
default:
usage();
}
@@ -177,6 +201,8 @@ main(int argc, char **argv)
memset(label, '\0', sizeof(label));
for (i = 0;; i++) {
+ if (show_unmountable == false && fstypes[i].unmountable == true)
+ continue;
fstyp_f = fstypes[i].function;
if (fstyp_f == NULL)
break;
diff --git a/usr.sbin/fstyp/fstyp.h b/usr.sbin/fstyp/fstyp.h
index 4474ffe..ca778ba 100644
--- a/usr.sbin/fstyp/fstyp.h
+++ b/usr.sbin/fstyp/fstyp.h
@@ -36,11 +36,16 @@
void *read_buf(FILE *fp, off_t off, size_t len);
char *checked_strdup(const char *s);
+void rtrim(char *label, size_t size);
int fstyp_cd9660(FILE *fp, char *label, size_t size);
int fstyp_ext2fs(FILE *fp, char *label, size_t size);
+int fstyp_geli(FILE *fp, char *label, size_t size);
int fstyp_msdosfs(FILE *fp, char *label, size_t size);
int fstyp_ntfs(FILE *fp, char *label, size_t size);
int fstyp_ufs(FILE *fp, char *label, size_t size);
+#ifdef HAVE_CDDL
+int fstyp_zfs(FILE *fp, char *label, size_t size);
+#endif
#endif /* !FSTYP_H */
diff --git a/usr.sbin/fstyp/geli.c b/usr.sbin/fstyp/geli.c
new file mode 100644
index 0000000..1c15ca6
--- /dev/null
+++ b/usr.sbin/fstyp/geli.c
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2015 Allan Jude <allanjude@FreeBSD.org>
+ * All rights reserved.
+ *
+ * This software was developed by Edward Tomasz Napierala under sponsorship
+ * from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/disk.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <geom/eli/g_eli.h>
+
+#include "fstyp.h"
+
+int
+fstyp_geli(FILE *fp, char *label __unused, size_t labelsize __unused)
+{
+ int error;
+ off_t mediasize;
+ u_int sectorsize;
+ struct g_eli_metadata md;
+ u_char *buf;
+
+ error = ioctl(fileno(fp), DIOCGMEDIASIZE, &mediasize);
+ if (error != 0)
+ return (1);
+ error = ioctl(fileno(fp), DIOCGSECTORSIZE, &sectorsize);
+ if (error != 0)
+ return (1);
+ buf = (u_char *)read_buf(fp, mediasize - sectorsize, sectorsize);
+ if (buf == NULL)
+ goto gelierr;
+ error = eli_metadata_decode(buf, &md);
+ if (error)
+ goto gelierr;
+
+ if (strncmp(md.md_magic, "GEOM::ELI", 9) == 0) {
+ free(buf);
+ return (0);
+ }
+
+gelierr:
+ free(buf);
+
+ return (1);
+}
diff --git a/usr.sbin/fstyp/msdosfs.c b/usr.sbin/fstyp/msdosfs.c
index b299243..3d86802 100644
--- a/usr.sbin/fstyp/msdosfs.c
+++ b/usr.sbin/fstyp/msdosfs.c
@@ -48,7 +48,6 @@ fstyp_msdosfs(FILE *fp, char *label, size_t size)
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
- uint32_t i;
sector0 = NULL;
sector = NULL;
@@ -161,14 +160,7 @@ fstyp_msdosfs(FILE *fp, char *label, size_t size)
}
endofchecks:
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ rtrim(label, size);
free(sector0);
free(sector);
diff --git a/usr.sbin/fstyp/zfs.c b/usr.sbin/fstyp/zfs.c
new file mode 100644
index 0000000..9d91db6
--- /dev/null
+++ b/usr.sbin/fstyp/zfs.c
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2015 Allan Jude <allanjude@FreeBSD.org>
+ * All rights reserved.
+ *
+ * This software was developed by Edward Tomasz Napierala under sponsorship
+ * from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <libnvpair.h>
+#include <sys/vdev_impl.h>
+
+#include "fstyp.h"
+
+int
+fstyp_zfs(FILE *fp, char *label, size_t labelsize)
+{
+ vdev_label_t *zpool_ptr = NULL;
+ vdev_label_t zpool_label;
+ char *buf = zpool_label.vl_vdev_phys.vp_nvlist;
+ char *zpool_name = NULL;
+ size_t buflen = sizeof (zpool_label.vl_vdev_phys.vp_nvlist);
+ nvlist_t *config = NULL;
+
+ zpool_ptr = (vdev_label_t *)read_buf(fp, 0, sizeof(zpool_label));
+ if (zpool_ptr == NULL)
+ return (1);
+ zpool_label = *zpool_ptr;
+ if (nvlist_unpack(buf, buflen, &config, 0) != 0)
+ goto zfserr;
+ if (nvlist_lookup_string(config, "name", &zpool_name) != 0)
+ goto zfserr;
+ strlcpy(label, zpool_name, labelsize);
+ nvlist_free(config);
+ free(zpool_ptr);
+ return (0);
+
+zfserr:
+ nvlist_free(config);
+ free(zpool_ptr);
+
+ return (1);
+}
diff --git a/usr.sbin/fwcontrol/Makefile.depend b/usr.sbin/fwcontrol/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/fwcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/getfmac/Makefile.depend b/usr.sbin/getfmac/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/getfmac/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/getpmac/Makefile.depend b/usr.sbin/getpmac/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/getpmac/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/gpioctl/Makefile.depend b/usr.sbin/gpioctl/Makefile.depend
new file mode 100644
index 0000000..712b56e
--- /dev/null
+++ b/usr.sbin/gpioctl/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgpio \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/gssd/Makefile.depend b/usr.sbin/gssd/Makefile.depend
new file mode 100644
index 0000000..63f755c
--- /dev/null
+++ b/usr.sbin/gssd/Makefile.depend
@@ -0,0 +1,44 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/gssapi \
+ include/rpc \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gssd.o: gssd.h
+gssd.po: gssd.h
+gssd_prot.o: gssd.h
+gssd_prot.po: gssd.h
+gssd_svc.o: gssd.h
+gssd_svc.o: gssd_svc.c
+gssd_svc.po: gssd.h
+gssd_svc.po: gssd_svc.c
+gssd_xdr.o: gssd.h
+gssd_xdr.o: gssd_xdr.c
+gssd_xdr.po: gssd.h
+gssd_xdr.po: gssd_xdr.c
+.endif
diff --git a/usr.sbin/gstat/Makefile.depend b/usr.sbin/gstat/Makefile.depend
new file mode 100644
index 0000000..c24e161
--- /dev/null
+++ b/usr.sbin/gstat/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libedit \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/i2c/Makefile.depend b/usr.sbin/i2c/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/i2c/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ifmcstat/Makefile.depend b/usr.sbin/ifmcstat/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/ifmcstat/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/inetd/Makefile.depend b/usr.sbin/inetd/Makefile.depend
new file mode 100644
index 0000000..cc94252
--- /dev/null
+++ b/usr.sbin/inetd/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libutil \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/iostat/Makefile.depend b/usr.sbin/iostat/Makefile.depend
new file mode 100644
index 0000000..bfcafb7
--- /dev/null
+++ b/usr.sbin/iostat/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ip6addrctl/Makefile.depend b/usr.sbin/ip6addrctl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/ip6addrctl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ipfwpcap/Makefile.depend b/usr.sbin/ipfwpcap/Makefile.depend
new file mode 100644
index 0000000..268320b
--- /dev/null
+++ b/usr.sbin/ipfwpcap/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/jail/Makefile.depend b/usr.sbin/jail/Makefile.depend
new file mode 100644
index 0000000..28c1ed0
--- /dev/null
+++ b/usr.sbin/jail/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/libutil \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+jaillex.o: jaillex.c
+jaillex.o: y.tab.h
+jaillex.po: jaillex.c
+jaillex.po: y.tab.h
+jailparse.o: jailparse.c
+jailparse.po: jailparse.c
+.endif
diff --git a/usr.sbin/jexec/Makefile.depend b/usr.sbin/jexec/Makefile.depend
new file mode 100644
index 0000000..b92a98a
--- /dev/null
+++ b/usr.sbin/jexec/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/jls/Makefile.depend b/usr.sbin/jls/Makefile.depend
new file mode 100644
index 0000000..4131fa7
--- /dev/null
+++ b/usr.sbin/jls/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kbdcontrol/Makefile.depend b/usr.sbin/kbdcontrol/Makefile.depend
new file mode 100644
index 0000000..523c8ae
--- /dev/null
+++ b/usr.sbin/kbdcontrol/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.po: lex.c
+.endif
diff --git a/usr.sbin/kbdmap/Makefile.depend b/usr.sbin/kbdmap/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/kbdmap/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/keyserv/Makefile.depend b/usr.sbin/keyserv/Makefile.depend
new file mode 100644
index 0000000..839d12b
--- /dev/null
+++ b/usr.sbin/keyserv/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crypt_server.o: crypt.h
+crypt_server.po: crypt.h
+crypt_svc.o: crypt.h
+crypt_svc.o: crypt_svc.c
+crypt_svc.po: crypt.h
+crypt_svc.po: crypt_svc.c
+.endif
diff --git a/usr.sbin/kgmon/Makefile.depend b/usr.sbin/kgmon/Makefile.depend
new file mode 100644
index 0000000..a1ac545
--- /dev/null
+++ b/usr.sbin/kgmon/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kgzip/Makefile.depend b/usr.sbin/kgzip/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.sbin/kgzip/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kldxref/Makefile.depend b/usr.sbin/kldxref/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/kldxref/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lastlogin/Makefile.depend b/usr.sbin/lastlogin/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/lastlogin/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lmcconfig/Makefile.depend b/usr.sbin/lmcconfig/Makefile.depend
new file mode 100644
index 0000000..92ae034
--- /dev/null
+++ b/usr.sbin/lmcconfig/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/chkprintcap/Makefile.depend b/usr.sbin/lpr/chkprintcap/Makefile.depend
new file mode 100644
index 0000000..5d7143d
--- /dev/null
+++ b/usr.sbin/lpr/chkprintcap/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/common_source/Makefile.depend b/usr.sbin/lpr/common_source/Makefile.depend
new file mode 100644
index 0000000..56ba329
--- /dev/null
+++ b/usr.sbin/lpr/common_source/Makefile.depend
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/Makefile.depend b/usr.sbin/lpr/filters.ru/Makefile.depend
new file mode 100644
index 0000000..3af2d7f
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/Makefile.depend
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend b/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend b/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters/Makefile.depend b/usr.sbin/lpr/filters/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/lpr/filters/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lp/Makefile.depend b/usr.sbin/lpr/lp/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/lpr/lp/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpc/Makefile.depend b/usr.sbin/lpr/lpc/Makefile.depend
new file mode 100644
index 0000000..69f631f
--- /dev/null
+++ b/usr.sbin/lpr/lpc/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpd/Makefile.depend b/usr.sbin/lpr/lpd/Makefile.depend
new file mode 100644
index 0000000..42a1eb5
--- /dev/null
+++ b/usr.sbin/lpr/lpd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpq/Makefile.depend b/usr.sbin/lpr/lpq/Makefile.depend
new file mode 100644
index 0000000..5d7143d
--- /dev/null
+++ b/usr.sbin/lpr/lpq/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpr/Makefile.depend b/usr.sbin/lpr/lpr/Makefile.depend
new file mode 100644
index 0000000..5d7143d
--- /dev/null
+++ b/usr.sbin/lpr/lpr/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lprm/Makefile.depend b/usr.sbin/lpr/lprm/Makefile.depend
new file mode 100644
index 0000000..5d7143d
--- /dev/null
+++ b/usr.sbin/lpr/lprm/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lptest/Makefile.depend b/usr.sbin/lpr/lptest/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.sbin/lpr/lptest/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/pac/Makefile.depend b/usr.sbin/lpr/pac/Makefile.depend
new file mode 100644
index 0000000..5d7143d
--- /dev/null
+++ b/usr.sbin/lpr/pac/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lptcontrol/Makefile.depend b/usr.sbin/lptcontrol/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.sbin/lptcontrol/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mailstats/Makefile.depend b/usr.sbin/mailstats/Makefile.depend
new file mode 100644
index 0000000..9bf3d52
--- /dev/null
+++ b/usr.sbin/mailstats/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mailstats.o: sm_os.h
+mailstats.po: sm_os.h
+.endif
diff --git a/usr.sbin/mailwrapper/Makefile.depend b/usr.sbin/mailwrapper/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/mailwrapper/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/makefs/Makefile.depend b/usr.sbin/makefs/Makefile.depend
new file mode 100644
index 0000000..51e7dfa
--- /dev/null
+++ b/usr.sbin/makefs/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetbsd \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/makemap/Makefile.depend b/usr.sbin/makemap/Makefile.depend
new file mode 100644
index 0000000..f159c6f
--- /dev/null
+++ b/usr.sbin/makemap/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+makemap.o: sm_os.h
+makemap.po: sm_os.h
+.endif
diff --git a/usr.sbin/manctl/Makefile.depend b/usr.sbin/manctl/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/manctl/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/memcontrol/Makefile.depend b/usr.sbin/memcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/memcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mergemaster/Makefile.depend b/usr.sbin/mergemaster/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/mergemaster/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mfiutil/Makefile.depend b/usr.sbin/mfiutil/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/mfiutil/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mixer/Makefile.depend b/usr.sbin/mixer/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/mixer/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mld6query/Makefile.depend b/usr.sbin/mld6query/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/mld6query/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mlxcontrol/Makefile.depend b/usr.sbin/mlxcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/mlxcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mount_smbfs/Makefile.depend b/usr.sbin/mount_smbfs/Makefile.depend
new file mode 100644
index 0000000..179190c
--- /dev/null
+++ b/usr.sbin/mount_smbfs/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mountd/Makefile.depend b/usr.sbin/mountd/Makefile.depend
new file mode 100644
index 0000000..0a49c9e
--- /dev/null
+++ b/usr.sbin/mountd/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/moused/Makefile.depend b/usr.sbin/moused/Makefile.depend
new file mode 100644
index 0000000..a79b1eb
--- /dev/null
+++ b/usr.sbin/moused/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mptable/Makefile.depend b/usr.sbin/mptable/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/mptable/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mptutil/Makefile.depend b/usr.sbin/mptutil/Makefile.depend
new file mode 100644
index 0000000..48a48dd
--- /dev/null
+++ b/usr.sbin/mptutil/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mtest/Makefile.depend b/usr.sbin/mtest/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/mtest/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mtree/Makefile.depend b/usr.sbin/mtree/Makefile.depend
new file mode 100644
index 0000000..064e492
--- /dev/null
+++ b/usr.sbin/mtree/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ndiscvt/Makefile.depend b/usr.sbin/ndiscvt/Makefile.depend
new file mode 100644
index 0000000..f55c806
--- /dev/null
+++ b/usr.sbin/ndiscvt/Makefile.depend
@@ -0,0 +1,26 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+inf-parse.o: inf-parse.c
+inf-parse.po: inf-parse.c
+inf-token.o: inf-token.c
+inf-token.o: y.tab.h
+inf-token.po: inf-token.c
+inf-token.po: y.tab.h
+.endif
diff --git a/usr.sbin/ndp/Makefile.depend b/usr.sbin/ndp/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/ndp/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/newsyslog/Makefile.depend b/usr.sbin/newsyslog/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/newsyslog/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfscbd/Makefile.depend b/usr.sbin/nfscbd/Makefile.depend
new file mode 100644
index 0000000..1061516
--- /dev/null
+++ b/usr.sbin/nfscbd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsd/Makefile.depend b/usr.sbin/nfsd/Makefile.depend
new file mode 100644
index 0000000..c0b7a14
--- /dev/null
+++ b/usr.sbin/nfsd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsdumpstate/Makefile.depend b/usr.sbin/nfsdumpstate/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/nfsdumpstate/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsrevoke/Makefile.depend b/usr.sbin/nfsrevoke/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/nfsrevoke/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsuserd/Makefile.depend b/usr.sbin/nfsuserd/Makefile.depend
new file mode 100644
index 0000000..1061516
--- /dev/null
+++ b/usr.sbin/nfsuserd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ngctl/Makefile.depend b/usr.sbin/ngctl/Makefile.depend
new file mode 100644
index 0000000..a0a9832
--- /dev/null
+++ b/usr.sbin/ngctl/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libnetgraph \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nghook/Makefile.depend b/usr.sbin/nghook/Makefile.depend
new file mode 100644
index 0000000..92ae034
--- /dev/null
+++ b/usr.sbin/nghook/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nmtree/Makefile.depend b/usr.sbin/nmtree/Makefile.depend
new file mode 100644
index 0000000..d8f68b0
--- /dev/null
+++ b/usr.sbin/nmtree/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ tools/c/sjg/work/FreeBSD/projects-bmake/src/lib/libnetbsd.host \
+ tools/legacy/usr/include.host \
+ tools/legacy/usr/lib.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nologin/Makefile.depend b/usr.sbin/nologin/Makefile.depend
new file mode 100644
index 0000000..9cb890b
--- /dev/null
+++ b/usr.sbin/nologin/Makefile.depend
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nscd/Makefile.depend b/usr.sbin/nscd/Makefile.depend
new file mode 100644
index 0000000..eec69a4
--- /dev/null
+++ b/usr.sbin/nscd/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/doc/Makefile.depend b/usr.sbin/ntp/doc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/ntp/doc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libntp/Makefile.depend b/usr.sbin/ntp/libntp/Makefile.depend
new file mode 100644
index 0000000..aa72b94
--- /dev/null
+++ b/usr.sbin/ntp/libntp/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libedit/edit/readline \
+ lib/msun \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/libntpevent/Makefile.depend b/usr.sbin/ntp/libntpevent/Makefile.depend
new file mode 100644
index 0000000..39fece6
--- /dev/null
+++ b/usr.sbin/ntp/libntpevent/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libopts/Makefile.depend b/usr.sbin/ntp/libopts/Makefile.depend
new file mode 100644
index 0000000..18be76b
--- /dev/null
+++ b/usr.sbin/ntp/libopts/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libparse/Makefile.depend b/usr.sbin/ntp/libparse/Makefile.depend
new file mode 100644
index 0000000..4bf31bd
--- /dev/null
+++ b/usr.sbin/ntp/libparse/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/msun \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/ntp-keygen/Makefile.depend b/usr.sbin/ntp/ntp-keygen/Makefile.depend
new file mode 100644
index 0000000..88a55c0
--- /dev/null
+++ b/usr.sbin/ntp/ntp-keygen/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/ntpd/Makefile.depend b/usr.sbin/ntp/ntpd/Makefile.depend
new file mode 100644
index 0000000..0fc69e4
--- /dev/null
+++ b/usr.sbin/ntp/ntpd/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+ usr.sbin/ntp/libparse \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpdate/Makefile.depend b/usr.sbin/ntp/ntpdate/Makefile.depend
new file mode 100644
index 0000000..31c07ab
--- /dev/null
+++ b/usr.sbin/ntp/ntpdate/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpdc/Makefile.depend b/usr.sbin/ntp/ntpdc/Makefile.depend
new file mode 100644
index 0000000..7531e73
--- /dev/null
+++ b/usr.sbin/ntp/ntpdc/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libthr \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpq/Makefile.depend b/usr.sbin/ntp/ntpq/Makefile.depend
new file mode 100644
index 0000000..7531e73
--- /dev/null
+++ b/usr.sbin/ntp/ntpq/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libthr \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntptime/Makefile.depend b/usr.sbin/ntp/ntptime/Makefile.depend
new file mode 100644
index 0000000..a231d4a
--- /dev/null
+++ b/usr.sbin/ntp/ntptime/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/sntp/Makefile.depend b/usr.sbin/ntp/sntp/Makefile.depend
new file mode 100644
index 0000000..9f44d40
--- /dev/null
+++ b/usr.sbin/ntp/sntp/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libntpevent \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ofwdump/Makefile.depend b/usr.sbin/ofwdump/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.sbin/ofwdump/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
index edf818c..6420e81 100644
--- a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
+++ b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
@@ -3,6 +3,5 @@
FILES= create-part.sh delete-part.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend-partmanager
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend-query/Makefile b/usr.sbin/pc-sysinstall/backend-query/Makefile
index c43b141..e5541b7 100644
--- a/usr.sbin/pc-sysinstall/backend-query/Makefile
+++ b/usr.sbin/pc-sysinstall/backend-query/Makefile
@@ -8,6 +8,5 @@ FILES= detect-laptop.sh detect-nics.sh detect-emulation.sh disk-info.sh \
xkeyboard-models.sh xkeyboard-variants.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend-query
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend-query/Makefile.depend b/usr.sbin/pc-sysinstall/backend-query/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend-query/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend/Makefile b/usr.sbin/pc-sysinstall/backend/Makefile
index 6165191..3a7703a 100644
--- a/usr.sbin/pc-sysinstall/backend/Makefile
+++ b/usr.sbin/pc-sysinstall/backend/Makefile
@@ -10,6 +10,5 @@ FILES= functions-bsdlabel.sh functions-cleanup.sh functions-disk.sh \
functions.sh parseconfig.sh startautoinstall.sh installimage.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend/Makefile.depend b/usr.sbin/pc-sysinstall/backend/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/conf/Makefile b/usr.sbin/pc-sysinstall/conf/Makefile
index 2232c17..5ccd78f 100644
--- a/usr.sbin/pc-sysinstall/conf/Makefile
+++ b/usr.sbin/pc-sysinstall/conf/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
FILESGROUPS= CONF LICENSE
CONF= exclude-from-upgrade pc-sysinstall.conf avail-langs
CONFDIR= ${SHAREDIR}/pc-sysinstall/conf
diff --git a/usr.sbin/pc-sysinstall/conf/Makefile.depend b/usr.sbin/pc-sysinstall/conf/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/conf/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/doc/Makefile b/usr.sbin/pc-sysinstall/doc/Makefile
index 0a4bf83..682415c 100644
--- a/usr.sbin/pc-sysinstall/doc/Makefile
+++ b/usr.sbin/pc-sysinstall/doc/Makefile
@@ -3,6 +3,5 @@
FILES= help-disk-list help-disk-size help-index help-start-autoinstall
FILESDIR=${SHAREDIR}/pc-sysinstall/doc
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/doc/Makefile.depend b/usr.sbin/pc-sysinstall/doc/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/doc/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/examples/Makefile b/usr.sbin/pc-sysinstall/examples/Makefile
index d24e5af..fb76fec 100644
--- a/usr.sbin/pc-sysinstall/examples/Makefile
+++ b/usr.sbin/pc-sysinstall/examples/Makefile
@@ -6,6 +6,5 @@ FILES= README pc-autoinstall.conf pcinstall.cfg.fbsd-netinstall \
pcinstall.cfg.zfs
FILESDIR=${SHAREDIR}/examples/pc-sysinstall
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/examples/Makefile.depend b/usr.sbin/pc-sysinstall/examples/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/examples/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend b/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pciconf/Makefile.depend b/usr.sbin/pciconf/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/pciconf/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/periodic/Makefile.depend b/usr.sbin/periodic/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/periodic/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pkg/Makefile.depend b/usr.sbin/pkg/Makefile.depend
new file mode 100644
index 0000000..98b04b08
--- /dev/null
+++ b/usr.sbin/pkg/Makefile.depend
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libfetch \
+ lib/liblzma \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libucl \
+ lib/libz \
+ lib/msun \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmcannotate/Makefile.depend b/usr.sbin/pmcannotate/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/pmcannotate/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmccontrol/Makefile.depend b/usr.sbin/pmccontrol/Makefile.depend
new file mode 100644
index 0000000..d29a358
--- /dev/null
+++ b/usr.sbin/pmccontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpmc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmcstat/Makefile.depend b/usr.sbin/pmcstat/Makefile.depend
new file mode 100644
index 0000000..a3f7225
--- /dev/null
+++ b/usr.sbin/pmcstat/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libpmc \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pnpinfo/Makefile.depend b/usr.sbin/pnpinfo/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.sbin/pnpinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/make_index/Makefile.depend b/usr.sbin/portsnap/make_index/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/portsnap/make_index/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/phttpget/Makefile.depend b/usr.sbin/portsnap/phttpget/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/portsnap/phttpget/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/portsnap/Makefile.depend b/usr.sbin/portsnap/portsnap/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/portsnap/portsnap/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/powerd/Makefile.depend b/usr.sbin/powerd/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/powerd/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ppp/Makefile.depend b/usr.sbin/ppp/Makefile.depend
new file mode 100644
index 0000000..250763c
--- /dev/null
+++ b/usr.sbin/ppp/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libnetgraph \
+ lib/libpam/libpam \
+ lib/libradius \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pppctl/Makefile.depend b/usr.sbin/pppctl/Makefile.depend
new file mode 100644
index 0000000..93d2803
--- /dev/null
+++ b/usr.sbin/pppctl/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/praliases/Makefile.depend b/usr.sbin/praliases/Makefile.depend
new file mode 100644
index 0000000..0cd5be8
--- /dev/null
+++ b/usr.sbin/praliases/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+praliases.o: sm_os.h
+praliases.po: sm_os.h
+.endif
diff --git a/usr.sbin/praudit/Makefile.depend b/usr.sbin/praudit/Makefile.depend
new file mode 100644
index 0000000..97143a8
--- /dev/null
+++ b/usr.sbin/praudit/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/procctl/Makefile.depend b/usr.sbin/procctl/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/procctl/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pstat/Makefile.depend b/usr.sbin/pstat/Makefile.depend
new file mode 100644
index 0000000..e01f8c7
--- /dev/null
+++ b/usr.sbin/pstat/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pw/Makefile.depend b/usr.sbin/pw/Makefile.depend
new file mode 100644
index 0000000..392fb60
--- /dev/null
+++ b/usr.sbin/pw/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pw/pw.8 b/usr.sbin/pw/pw.8
index 9074313..c29a8a9 100644
--- a/usr.sbin/pw/pw.8
+++ b/usr.sbin/pw/pw.8
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 3, 2015
+.Dd June 14, 2015
.Dt PW 8
.Os
.Sh NAME
@@ -278,7 +278,7 @@ flag may be used to override this behaviour.
As an exception to the general rule where options must follow the operation
type, the
.Fl V
-flag may be used on the command line before the operation keyword.
+flag must be used on the command line before the operation keyword.
.It Fl C Ar config
By default,
.Nm
diff --git a/usr.sbin/pwd_mkdb/Makefile.depend b/usr.sbin/pwd_mkdb/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/pwd_mkdb/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/quot/Makefile.depend b/usr.sbin/quot/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/quot/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/quotaon/Makefile.depend b/usr.sbin/quotaon/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/quotaon/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rarpd/Makefile.depend b/usr.sbin/rarpd/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/rarpd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/repquota/Makefile.depend b/usr.sbin/repquota/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/repquota/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rip6query/Makefile.depend b/usr.sbin/rip6query/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/rip6query/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rmt/Makefile.depend b/usr.sbin/rmt/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/rmt/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/route6d/Makefile.depend b/usr.sbin/route6d/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/route6d/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rpc.lockd/Makefile.depend b/usr.sbin/rpc.lockd/Makefile.depend
new file mode 100644
index 0000000..2e2391d
--- /dev/null
+++ b/usr.sbin/rpc.lockd/Makefile.depend
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+nlm_prot_svc.o: nlm_prot_svc.c
+nlm_prot_svc.po: nlm_prot_svc.c
+.endif
diff --git a/usr.sbin/rpc.statd/Makefile.depend b/usr.sbin/rpc.statd/Makefile.depend
new file mode 100644
index 0000000..a356b97
--- /dev/null
+++ b/usr.sbin/rpc.statd/Makefile.depend
@@ -0,0 +1,32 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+file.o: sm_inter.h
+file.po: sm_inter.h
+procs.o: sm_inter.h
+procs.po: sm_inter.h
+sm_inter_svc.o: sm_inter.h
+sm_inter_svc.o: sm_inter_svc.c
+sm_inter_svc.po: sm_inter.h
+sm_inter_svc.po: sm_inter_svc.c
+statd.o: sm_inter.h
+statd.po: sm_inter.h
+.endif
diff --git a/usr.sbin/rpc.umntall/Makefile.depend b/usr.sbin/rpc.umntall/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.sbin/rpc.umntall/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rpc.yppasswdd/Makefile.depend b/usr.sbin/rpc.yppasswdd/Makefile.depend
new file mode 100644
index 0000000..ffc93ca
--- /dev/null
+++ b/usr.sbin/rpc.yppasswdd/Makefile.depend
@@ -0,0 +1,48 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+yppasswd_private_svc.o: yppasswd_private.h
+yppasswd_private_svc.o: yppasswd_private_svc.c
+yppasswd_private_svc.po: yppasswd_private.h
+yppasswd_private_svc.po: yppasswd_private_svc.c
+yppasswd_private_xdr.o: yppasswd_private.h
+yppasswd_private_xdr.o: yppasswd_private_xdr.c
+yppasswd_private_xdr.po: yppasswd_private.h
+yppasswd_private_xdr.po: yppasswd_private_xdr.c
+yppasswd_svc.o: yppasswd.h
+yppasswd_svc.o: yppasswd_svc.c
+yppasswd_svc.po: yppasswd.h
+yppasswd_svc.po: yppasswd_svc.c
+yppasswdd_main.o: yppasswd.h
+yppasswdd_main.o: yppasswd_private.h
+yppasswdd_main.po: yppasswd.h
+yppasswdd_main.po: yppasswd_private.h
+yppasswdd_server.o: yppasswd.h
+yppasswdd_server.o: yppasswd_private.h
+yppasswdd_server.po: yppasswd.h
+yppasswdd_server.po: yppasswd_private.h
+.endif
diff --git a/usr.sbin/rpc.ypupdated/Makefile.depend b/usr.sbin/rpc.ypupdated/Makefile.depend
new file mode 100644
index 0000000..11b2940
--- /dev/null
+++ b/usr.sbin/rpc.ypupdated/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ypupdate_prot_svc.o: ypupdate_prot.h
+ypupdate_prot_svc.o: ypupdate_prot_svc.c
+ypupdate_prot_svc.po: ypupdate_prot.h
+ypupdate_prot_svc.po: ypupdate_prot_svc.c
+ypupdated_main.o: ypupdate_prot.h
+ypupdated_main.po: ypupdate_prot.h
+ypupdated_server.o: ypupdate_prot.h
+ypupdated_server.po: ypupdate_prot.h
+.endif
diff --git a/usr.sbin/rpc.ypxfrd/Makefile.depend b/usr.sbin/rpc.ypxfrd/Makefile.depend
new file mode 100644
index 0000000..08d54b2
--- /dev/null
+++ b/usr.sbin/rpc.ypxfrd/Makefile.depend
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ypxfrd_main.o: ypxfrd.h
+ypxfrd_main.po: ypxfrd.h
+ypxfrd_server.o: ypxfrd.h
+ypxfrd_server.po: ypxfrd.h
+ypxfrd_svc.o: ypxfrd.h
+ypxfrd_svc.o: ypxfrd_svc.c
+ypxfrd_svc.po: ypxfrd.h
+ypxfrd_svc.po: ypxfrd_svc.c
+.endif
diff --git a/usr.sbin/rpcbind/Makefile.depend b/usr.sbin/rpcbind/Makefile.depend
new file mode 100644
index 0000000..0944291
--- /dev/null
+++ b/usr.sbin/rpcbind/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rrenumd/Makefile.depend b/usr.sbin/rrenumd/Makefile.depend
new file mode 100644
index 0000000..13367d0
--- /dev/null
+++ b/usr.sbin/rrenumd/Makefile.depend
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/liby \
+ usr.bin/lex/lib \
+ usr.bin/yacc.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: y.tab.h
+lexer.po: lexer.c
+lexer.po: y.tab.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/rtadvctl/Makefile.depend b/usr.sbin/rtadvctl/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/rtadvctl/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtadvd/Makefile.depend b/usr.sbin/rtadvd/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/rtadvd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtprio/Makefile.depend b/usr.sbin/rtprio/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/rtprio/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtsold/Makefile.depend b/usr.sbin/rtsold/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/rtsold/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rwhod/Makefile.depend b/usr.sbin/rwhod/Makefile.depend
new file mode 100644
index 0000000..e77ca8d
--- /dev/null
+++ b/usr.sbin/rwhod/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sa/Makefile.depend b/usr.sbin/sa/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/sa/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sendmail/Makefile.depend b/usr.sbin/sendmail/Makefile.depend
new file mode 100644
index 0000000..a272438
--- /dev/null
+++ b/usr.sbin/sendmail/Makefile.depend
@@ -0,0 +1,106 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmutil \
+ lib/libutil \
+ lib/libwrap \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+alias.o: sm_os.h
+alias.po: sm_os.h
+arpadate.o: sm_os.h
+arpadate.po: sm_os.h
+bf.o: sm_os.h
+bf.po: sm_os.h
+collect.o: sm_os.h
+collect.po: sm_os.h
+conf.o: sm_os.h
+conf.po: sm_os.h
+control.o: sm_os.h
+control.po: sm_os.h
+convtime.o: sm_os.h
+convtime.po: sm_os.h
+daemon.o: sm_os.h
+daemon.po: sm_os.h
+deliver.o: sm_os.h
+deliver.po: sm_os.h
+domain.o: sm_os.h
+domain.po: sm_os.h
+envelope.o: sm_os.h
+envelope.po: sm_os.h
+err.o: sm_os.h
+err.po: sm_os.h
+headers.o: sm_os.h
+headers.po: sm_os.h
+macro.o: sm_os.h
+macro.po: sm_os.h
+main.o: sm_os.h
+main.po: sm_os.h
+map.o: sm_os.h
+map.po: sm_os.h
+mci.o: sm_os.h
+mci.po: sm_os.h
+milter.o: sm_os.h
+milter.po: sm_os.h
+mime.o: sm_os.h
+mime.po: sm_os.h
+parseaddr.o: sm_os.h
+parseaddr.po: sm_os.h
+queue.o: sm_os.h
+queue.po: sm_os.h
+ratectrl.o: sm_os.h
+ratectrl.po: sm_os.h
+readcf.o: sm_os.h
+readcf.po: sm_os.h
+recipient.o: sm_os.h
+recipient.po: sm_os.h
+sasl.o: sm_os.h
+sasl.po: sm_os.h
+savemail.o: sm_os.h
+savemail.po: sm_os.h
+sfsasl.o: sm_os.h
+sfsasl.po: sm_os.h
+shmticklib.o: sm_os.h
+shmticklib.po: sm_os.h
+sm_resolve.o: sm_os.h
+sm_resolve.po: sm_os.h
+srvrsmtp.o: sm_os.h
+srvrsmtp.po: sm_os.h
+stab.o: sm_os.h
+stab.po: sm_os.h
+stats.o: sm_os.h
+stats.po: sm_os.h
+sysexits.o: sm_os.h
+sysexits.po: sm_os.h
+timers.o: sm_os.h
+timers.po: sm_os.h
+tls.o: sm_os.h
+tls.po: sm_os.h
+trace.o: sm_os.h
+trace.po: sm_os.h
+udb.o: sm_os.h
+udb.po: sm_os.h
+usersmtp.o: sm_os.h
+usersmtp.po: sm_os.h
+util.o: sm_os.h
+util.po: sm_os.h
+version.o: sm_os.h
+version.po: sm_os.h
+.endif
diff --git a/usr.sbin/service/Makefile.depend b/usr.sbin/service/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/service/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/services_mkdb/Makefile.depend b/usr.sbin/services_mkdb/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/services_mkdb/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setfib/Makefile.depend b/usr.sbin/setfib/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/setfib/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setfmac/Makefile.depend b/usr.sbin/setfmac/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/setfmac/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setpmac/Makefile.depend b/usr.sbin/setpmac/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/setpmac/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sicontrol/Makefile.depend b/usr.sbin/sicontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/sicontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/smbmsg/Makefile.depend b/usr.sbin/smbmsg/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/smbmsg/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/snapinfo/Makefile.depend b/usr.sbin/snapinfo/Makefile.depend
new file mode 100644
index 0000000..99cf113
--- /dev/null
+++ b/usr.sbin/snapinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/spkrtest/Makefile.depend b/usr.sbin/spkrtest/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/spkrtest/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/spray/Makefile.depend b/usr.sbin/spray/Makefile.depend
new file mode 100644
index 0000000..c8383bd
--- /dev/null
+++ b/usr.sbin/spray/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/syslogd/Makefile.depend b/usr.sbin/syslogd/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/syslogd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/syslogd/syslogd.8 b/usr.sbin/syslogd/syslogd.8
index b2e8818..3074d08 100644
--- a/usr.sbin/syslogd/syslogd.8
+++ b/usr.sbin/syslogd/syslogd.8
@@ -28,7 +28,7 @@
.\" @(#)syslogd.8 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd March 3, 2015
+.Dd June 16, 2015
.Dt SYSLOGD 8
.Os
.Sh NAME
@@ -194,6 +194,8 @@ The default
.Ar service
is
.Ql syslog .
+This option can be specified multiple times to bind to
+multiple addresses and/or ports.
.It Fl C
Create log files that do not exist (permission is set to
.Li 0600 ) .
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index baa79c8..ff3e524 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -124,6 +124,15 @@ const char ctty[] = _PATH_CONSOLE;
#define MAXUNAMES 20 /* maximum number of user names */
/*
+ * List of hosts for binding.
+ */
+static STAILQ_HEAD(, host) hqueue;
+struct host {
+ char *name;
+ STAILQ_ENTRY(host) next;
+};
+
+/*
* Unix sockets.
* We have two default sockets, one with 666 permissions,
* and one for privileged programs.
@@ -275,7 +284,7 @@ static int Foreground = 0; /* Run in foreground, instead of daemonizing */
static int resolve = 1; /* resolve hostname */
static char LocalHostName[MAXHOSTNAMELEN]; /* our hostname */
static const char *LocalDomain; /* our local domain name */
-static int *finet; /* Internet datagram socket */
+static int *finet; /* Internet datagram sockets */
static int fklog = -1; /* /dev/klog */
static int Initialized; /* set when we have initialized ourselves */
static int MarkInterval = 20 * 60; /* interval between marks in seconds */
@@ -348,10 +357,10 @@ main(int argc, char *argv[])
struct sockaddr_storage frominet;
fd_set *fdsr = NULL;
char line[MAXLINE + 1];
- char *bindhostname;
const char *hname;
struct timeval tv, *tvp;
struct sigaction sact;
+ struct host *host;
struct funix *fx, *fx1;
sigset_t mask;
pid_t ppid = 1, spid;
@@ -360,7 +369,8 @@ main(int argc, char *argv[])
if (madvise(NULL, 0, MADV_PROTECT) != 0)
dprintf("madvise() failed: %s\n", strerror(errno));
- bindhostname = NULL;
+ STAILQ_INIT(&hqueue);
+
while ((ch = getopt(argc, argv, "468Aa:b:cCdf:Fkl:m:nNop:P:sS:Tuv"))
!= -1)
switch (ch) {
@@ -383,8 +393,13 @@ main(int argc, char *argv[])
usage();
break;
case 'b':
- bindhostname = optarg;
+ {
+ if ((host = malloc(sizeof(struct host))) == NULL)
+ err(1, "malloc failed");
+ host->name = optarg;
+ STAILQ_INSERT_TAIL(&hqueue, host, next);
break;
+ }
case 'c':
no_compress++;
break;
@@ -433,7 +448,7 @@ main(int argc, char *argv[])
if (strlen(name) >= sizeof(sunx.sun_path))
errx(1, "%s path too long, exiting", name);
if ((fx = malloc(sizeof(struct funix))) == NULL)
- errx(1, "malloc failed");
+ err(1, "malloc failed");
fx->s = -1;
fx->name = name;
fx->mode = mode;
@@ -555,8 +570,27 @@ main(int argc, char *argv[])
}
increase_rcvbuf(fx->s);
}
- if (SecureMode <= 1)
- finet = socksetup(family, bindhostname);
+ if (SecureMode <= 1) {
+ if (STAILQ_EMPTY(&hqueue))
+ finet = socksetup(family, NULL);
+ STAILQ_FOREACH(host, &hqueue, next) {
+ int *finet0, total;
+ finet0 = socksetup(family, host->name);
+ if (finet0 && !finet) {
+ finet = finet0;
+ } else if (finet0 && finet) {
+ total = *finet0 + *finet + 1;
+ finet = realloc(finet, total * sizeof(int));
+ if (finet == NULL)
+ err(1, "realloc failed");
+ for (i = 1; i <= *finet0; i++) {
+ finet[(*finet)+i] = finet0[i];
+ }
+ *finet = total - 1;
+ free(finet0);
+ }
+ }
+ }
if (finet) {
if (SecureMode) {
@@ -1569,6 +1603,24 @@ init(int signo)
}
/*
+ * Load / reload timezone data (in case it changed).
+ *
+ * Just calling tzset() again does not work, the timezone code
+ * caches the result. However, by setting the TZ variable, one
+ * can defeat the caching and have the timezone code really
+ * reload the timezone data. Respect any initial setting of
+ * TZ, in case the system is configured specially.
+ */
+ dprintf("loading timezone data via tzset()\n");
+ if (getenv("TZ")) {
+ tzset();
+ } else {
+ setenv("TZ", ":/etc/localtime", 1);
+ tzset();
+ unsetenv("TZ");
+ }
+
+ /*
* Close all open log files.
*/
Initialized = 0;
@@ -2730,6 +2782,7 @@ socksetup(int af, char *bindhostname)
}
(*socks)++;
+ dprintf("socksetup: new socket fd is %d\n", *s);
s++;
}
diff --git a/usr.sbin/tcpdchk/Makefile.depend b/usr.sbin/tcpdchk/Makefile.depend
new file mode 100644
index 0000000..e314de5
--- /dev/null
+++ b/usr.sbin/tcpdchk/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdmatch/Makefile.depend b/usr.sbin/tcpdmatch/Makefile.depend
new file mode 100644
index 0000000..e314de5
--- /dev/null
+++ b/usr.sbin/tcpdmatch/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdrop/Makefile.depend b/usr.sbin/tcpdrop/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/tcpdrop/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdump/tcpdump/Makefile.depend b/usr.sbin/tcpdump/tcpdump/Makefile.depend
new file mode 100644
index 0000000..481ce6b
--- /dev/null
+++ b/usr.sbin/tcpdump/tcpdump/Makefile.depend
@@ -0,0 +1,27 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libnv \
+ lib/libpcap \
+ secure/lib/libcrypto \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/timed/timed/Makefile.depend b/usr.sbin/timed/timed/Makefile.depend
new file mode 100644
index 0000000..c0e7169
--- /dev/null
+++ b/usr.sbin/timed/timed/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/timed/timedc/Makefile.depend b/usr.sbin/timed/timedc/Makefile.depend
new file mode 100644
index 0000000..e77ca8d
--- /dev/null
+++ b/usr.sbin/timed/timedc/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/traceroute/Makefile.depend b/usr.sbin/traceroute/Makefile.depend
new file mode 100644
index 0000000..60e14c2
--- /dev/null
+++ b/usr.sbin/traceroute/Makefile.depend
@@ -0,0 +1,22 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/traceroute6/Makefile.depend b/usr.sbin/traceroute6/Makefile.depend
new file mode 100644
index 0000000..27cbf26
--- /dev/null
+++ b/usr.sbin/traceroute6/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/trpt/Makefile.depend b/usr.sbin/trpt/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/trpt/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tzsetup/Makefile.depend b/usr.sbin/tzsetup/Makefile.depend
new file mode 100644
index 0000000..5e97e25
--- /dev/null
+++ b/usr.sbin/tzsetup/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/uathload/Makefile.depend b/usr.sbin/uathload/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/uathload/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ugidfw/Makefile.depend b/usr.sbin/ugidfw/Makefile.depend
new file mode 100644
index 0000000..24a1de9
--- /dev/null
+++ b/usr.sbin/ugidfw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libugidfw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/uhsoctl/Makefile.depend b/usr.sbin/uhsoctl/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/uhsoctl/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/usbconfig/Makefile.depend b/usr.sbin/usbconfig/Makefile.depend
new file mode 100644
index 0000000..3ddb39c
--- /dev/null
+++ b/usr.sbin/usbconfig/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/usbdump/Makefile.depend b/usr.sbin/usbdump/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/usbdump/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/utx/Makefile.depend b/usr.sbin/utx/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/utx/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/vidcontrol/Makefile.depend b/usr.sbin/vidcontrol/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/vidcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/vipw/Makefile.depend b/usr.sbin/vipw/Makefile.depend
new file mode 100644
index 0000000..58f9a33
--- /dev/null
+++ b/usr.sbin/vipw/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wake/Makefile.depend b/usr.sbin/wake/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/wake/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/watch/Makefile.depend b/usr.sbin/watch/Makefile.depend
new file mode 100644
index 0000000..59bc828
--- /dev/null
+++ b/usr.sbin/watch/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/watchdogd/Makefile.depend b/usr.sbin/watchdogd/Makefile.depend
new file mode 100644
index 0000000..a79b1eb
--- /dev/null
+++ b/usr.sbin/watchdogd/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wlandebug/Makefile.depend b/usr.sbin/wlandebug/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/wlandebug/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wlconfig/Makefile.depend b/usr.sbin/wlconfig/Makefile.depend
new file mode 100644
index 0000000..f52ca95
--- /dev/null
+++ b/usr.sbin/wlconfig/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/hostapd/Makefile.depend b/usr.sbin/wpa/hostapd/Makefile.depend
new file mode 100644
index 0000000..8d486ac
--- /dev/null
+++ b/usr.sbin/wpa/hostapd/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/hostapd_cli/Makefile.depend b/usr.sbin/wpa/hostapd_cli/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/wpa/hostapd_cli/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/ndis_events/Makefile.depend b/usr.sbin/wpa/ndis_events/Makefile.depend
new file mode 100644
index 0000000..54c1f6f
--- /dev/null
+++ b/usr.sbin/wpa/ndis_events/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_cli/Makefile.depend b/usr.sbin/wpa/wpa_cli/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/wpa/wpa_cli/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_passphrase/Makefile.depend b/usr.sbin/wpa/wpa_passphrase/Makefile.depend
new file mode 100644
index 0000000..7de116d
--- /dev/null
+++ b/usr.sbin/wpa/wpa_passphrase/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_supplicant/Makefile.depend b/usr.sbin/wpa/wpa_supplicant/Makefile.depend
new file mode 100644
index 0000000..8d486ac
--- /dev/null
+++ b/usr.sbin/wpa/wpa_supplicant/Makefile.depend
@@ -0,0 +1,23 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yp_mkdb/Makefile.depend b/usr.sbin/yp_mkdb/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.sbin/yp_mkdb/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ypbind/Makefile.depend b/usr.sbin/ypbind/Makefile.depend
new file mode 100644
index 0000000..c0b7a14
--- /dev/null
+++ b/usr.sbin/ypbind/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yppoll/Makefile.depend b/usr.sbin/yppoll/Makefile.depend
new file mode 100644
index 0000000..ddd5dbd
--- /dev/null
+++ b/usr.sbin/yppoll/Makefile.depend
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yppush/Makefile.depend b/usr.sbin/yppush/Makefile.depend
new file mode 100644
index 0000000..3d736ab
--- /dev/null
+++ b/usr.sbin/yppush/Makefile.depend
@@ -0,0 +1,28 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+yppush_svc.o: yp.h
+yppush_svc.o: yppush_svc.c
+yppush_svc.po: yp.h
+yppush_svc.po: yppush_svc.c
+.endif
diff --git a/usr.sbin/ypserv/Makefile.depend b/usr.sbin/ypserv/Makefile.depend
new file mode 100644
index 0000000..5283d7e
--- /dev/null
+++ b/usr.sbin/ypserv/Makefile.depend
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_main.o: yp.h
+yp_main.po: yp.h
+yp_server.o: yp.h
+yp_server.po: yp.h
+yp_svc.o: yp.h
+yp_svc.o: yp_svc.c
+yp_svc.po: yp.h
+yp_svc.po: yp_svc.c
+ypxfr_clnt.o: yp.h
+ypxfr_clnt.o: ypxfr_clnt.c
+ypxfr_clnt.po: yp.h
+ypxfr_clnt.po: ypxfr_clnt.c
+.endif
diff --git a/usr.sbin/ypset/Makefile.depend b/usr.sbin/ypset/Makefile.depend
new file mode 100644
index 0000000..c0b7a14
--- /dev/null
+++ b/usr.sbin/ypset/Makefile.depend
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zic/zdump/Makefile.depend b/usr.sbin/zic/zdump/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/zic/zdump/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zic/zic/Makefile.depend b/usr.sbin/zic/zic/Makefile.depend
new file mode 100644
index 0000000..3646e2e
--- /dev/null
+++ b/usr.sbin/zic/zic/Makefile.depend
@@ -0,0 +1,18 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zzz/Makefile.depend b/usr.sbin/zzz/Makefile.depend
new file mode 100644
index 0000000..f80275d
--- /dev/null
+++ b/usr.sbin/zzz/Makefile.depend
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
OpenPOWER on IntegriCloud