]> Cypherpunks repositories - gostls13.git/commitdiff
build: make nacl pass
authorRuss Cox <rsc@golang.org>
Tue, 20 May 2014 16:10:19 +0000 (12:10 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 20 May 2014 16:10:19 +0000 (12:10 -0400)
Add nacl.bash, the NaCl version of all.bash.
It's a separate script because it builds a variant of package syscall
with a large zip file embedded in it, containing all the input files
needed for tests.

Disable various tests new since the last round, mostly the ones using os/exec.

Fixes #7945.

LGTM=dave
R=golang-codereviews, remyoudompheng, dave, bradfitz
CC=golang-codereviews
https://golang.org/cl/100590044

33 files changed:
misc/nacl/mkzip.go [new file with mode: 0644]
misc/nacl/testdata/bin/placeholder [new file with mode: 0644]
misc/nacl/testdata/empty [new file with mode: 0644]
misc/nacl/testdata/group [new file with mode: 0644]
misc/nacl/testdata/hosts [new file with mode: 0644]
misc/nacl/testdata/mime.types [new file with mode: 0644]
misc/nacl/testzip.proto [new file with mode: 0644]
src/all.bash
src/cmd/addr2line/addr2line_test.go
src/cmd/nm/nm_test.go
src/cmd/objdump/objdump_test.go
src/cmd/pack/pack_test.go
src/make.bash
src/nacltest.bash [new file with mode: 0644]
src/pkg/crypto/x509/x509_test.go
src/pkg/net/http/cgi/matryoshka_test.go
src/pkg/net/packetconn_test.go
src/pkg/net/protoconn_test.go
src/pkg/net/server_test.go
src/pkg/net/timeout_test.go
src/pkg/net/unix_test.go
src/pkg/os/exec/exec_test.go
src/pkg/os/os_test.go
src/pkg/os/path_test.go
src/pkg/path/filepath/match_test.go
src/pkg/path/filepath/path_test.go
src/pkg/runtime/asm_amd64p32.s
src/pkg/runtime/crash_test.go
src/pkg/runtime/pprof/pprof_test.go
src/pkg/runtime/runtime_test.go
src/run.bash
test/gc2.go
test/nosplit.go

diff --git a/misc/nacl/mkzip.go b/misc/nacl/mkzip.go
new file mode 100644 (file)
index 0000000..7b2de7d
--- /dev/null
@@ -0,0 +1,220 @@
+// Copyright 2014 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Mkzip creates a zip file from a 'proto' file describing the contents.
+//
+// The proto file is inspired by the Plan 9 mkfs prototype file format.
+// It describes a file tree, one directory per line, with leading tab
+// indentation marking the tree structure. Each line contains a leading
+// name field giving the name of the file to copy into the zip file,
+// and then a sequence of optional key=value attributes to control
+// the copy. The only known attribute is src=foo, meaning copy the
+// actual data for the file (or directory) from an alternate location.
+package main
+
+import (
+       "archive/zip"
+       "bufio"
+       "flag"
+       "fmt"
+       "io"
+       "io/ioutil"
+       "log"
+       "os"
+       "path"
+       "path/filepath"
+       "strings"
+)
+
+func usage() {
+       fmt.Fprintf(os.Stderr, "usage: mkzip [-r root] src.proto out.zip\n")
+       os.Exit(2)
+}
+
+func sysfatal(format string, args ...interface{}) {
+       fmt.Fprintf(os.Stderr, "mkzip: %s\n", fmt.Sprintf(format, args...))
+       os.Exit(2)
+}
+
+var (
+       root      = flag.String("r", ".", "interpret source paths relative to this directory")
+       gopackage = flag.String("p", "", "write Go source file in this package")
+)
+
+type stack struct {
+       name  string
+       src   string
+       depth int
+}
+
+func main() {
+       log.SetFlags(0)
+       flag.Usage = usage
+       flag.Parse()
+
+       args := flag.Args()
+       if len(args) != 2 {
+               usage()
+       }
+
+       rf, err := os.Open(args[0])
+       if err != nil {
+               sysfatal("%v", err)
+       }
+       r := bufio.NewScanner(rf)
+
+       zf, err := os.Create(args[1])
+       if err != nil {
+               sysfatal("%v", err)
+       }
+
+       var w io.Writer = zf
+       if *gopackage != "" {
+               fmt.Fprintf(zf, "package %s\n\nfunc init() {\n\tunzip(\"", *gopackage)
+               gw := &goWriter{b: bufio.NewWriter(w)}
+               defer func() {
+                       if err := gw.Close(); err != nil {
+                               sysfatal("finishing Go output: %v", err)
+                       }
+               }()
+               w = gw
+       }
+       z := zip.NewWriter(w)
+
+       lineno := 0
+
+       addfile := func(info os.FileInfo, dst string, src string) {
+               zh, err := zip.FileInfoHeader(info)
+               if err != nil {
+                       sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
+               }
+               zh.Name = dst
+               zh.Method = zip.Deflate
+               if info.IsDir() && !strings.HasSuffix(dst, "/") {
+                       zh.Name += "/"
+               }
+               w, err := z.CreateHeader(zh)
+               if err != nil {
+                       sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
+               }
+               if info.IsDir() {
+                       return
+               }
+               r, err := os.Open(src)
+               if err != nil {
+                       sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
+               }
+               defer r.Close()
+               if _, err := io.Copy(w, r); err != nil {
+                       sysfatal("%s:%d: %s: %v", args[0], lineno, src, err)
+               }
+       }
+
+       var stk []stack
+
+       for r.Scan() {
+               line := r.Text()
+               lineno++
+               s := strings.TrimLeft(line, "\t")
+               prefix, line := line[:len(line)-len(s)], s
+               if i := strings.Index(line, "#"); i >= 0 {
+                       line = line[:i]
+               }
+               f := strings.Fields(line)
+               if len(f) == 0 {
+                       continue
+               }
+               if strings.HasPrefix(line, " ") {
+                       sysfatal("%s:%d: must use tabs for indentation", args[0], lineno)
+               }
+               depth := len(prefix)
+               for len(stk) > 0 && depth <= stk[len(stk)-1].depth {
+                       stk = stk[:len(stk)-1]
+               }
+               parent := ""
+               psrc := *root
+               if len(stk) > 0 {
+                       parent = stk[len(stk)-1].name
+                       psrc = stk[len(stk)-1].src
+               }
+               if strings.Contains(f[0], "/") {
+                       sysfatal("%s:%d: destination name cannot contain slash", args[0], lineno)
+               }
+               name := path.Join(parent, f[0])
+               src := filepath.Join(psrc, f[0])
+               for _, attr := range f[1:] {
+                       i := strings.Index(attr, "=")
+                       if i < 0 {
+                               sysfatal("%s:%d: malformed attribute %q", args[0], lineno, attr)
+                       }
+                       key, val := attr[:i], attr[i+1:]
+                       switch key {
+                       case "src":
+                               src = val
+                       default:
+                               sysfatal("%s:%d: unknown attribute %q", args[0], lineno, attr)
+                       }
+               }
+
+               stk = append(stk, stack{name: name, src: src, depth: depth})
+
+               if f[0] == "*" || f[0] == "+" {
+                       if f[0] == "*" {
+                               dir, err := ioutil.ReadDir(psrc)
+                               if err != nil {
+                                       sysfatal("%s:%d: %v", args[0], lineno, err)
+                               }
+                               for _, d := range dir {
+                                       addfile(d, path.Join(parent, d.Name()), filepath.Join(psrc, d.Name()))
+                               }
+                       } else {
+                               err := filepath.Walk(psrc, func(src string, info os.FileInfo, err error) error {
+                                       if err != nil {
+                                               return err
+                                       }
+                                       if src == psrc {
+                                               return nil
+                                       }
+                                       if psrc == "." {
+                                               psrc = ""
+                                       }
+                                       name := path.Join(parent, filepath.ToSlash(src[len(psrc):]))
+                                       addfile(info, name, src)
+                                       return nil
+                               })
+                               if err != nil {
+                                       sysfatal("%s:%d: %v", args[0], lineno, err)
+                               }
+                       }
+                       continue
+               }
+
+               fi, err := os.Stat(src)
+               if err != nil {
+                       sysfatal("%s:%d: %v", args[0], lineno, err)
+               }
+               addfile(fi, name, src)
+       }
+
+       if err := z.Close(); err != nil {
+               sysfatal("finishing zip file: %v", err)
+       }
+}
+
+type goWriter struct {
+       b *bufio.Writer
+}
+
+func (w *goWriter) Write(b []byte) (int, error) {
+       for _, c := range b {
+               fmt.Fprintf(w.b, "\\x%02x", c)
+       }
+       return len(b), nil
+}
+
+func (w *goWriter) Close() error {
+       fmt.Fprintf(w.b, "\")\n}\n")
+       w.b.Flush()
+       return nil
+}
diff --git a/misc/nacl/testdata/bin/placeholder b/misc/nacl/testdata/bin/placeholder
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/misc/nacl/testdata/empty b/misc/nacl/testdata/empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/misc/nacl/testdata/group b/misc/nacl/testdata/group
new file mode 100644 (file)
index 0000000..eb7f9a3
--- /dev/null
@@ -0,0 +1,8 @@
+nobody:*:-2:
+nogroup:*:-1:
+wheel:*:0:root
+daemon:*:1:root
+kmem:*:2:root
+sys:*:3:root
+tty:*:4:root
+operator:*:5:root
diff --git a/misc/nacl/testdata/hosts b/misc/nacl/testdata/hosts
new file mode 100644 (file)
index 0000000..75721cd
--- /dev/null
@@ -0,0 +1 @@
+127.0.0.1 localhost
diff --git a/misc/nacl/testdata/mime.types b/misc/nacl/testdata/mime.types
new file mode 100644 (file)
index 0000000..2c41bd2
--- /dev/null
@@ -0,0 +1,1596 @@
+# This file maps Internet media types to unique file extension(s).
+# Although created for httpd, this file is used by many software systems
+# and has been placed in the public domain for unlimited redisribution.
+#
+# The table below contains both registered and (common) unregistered types.
+# A type that has no unique extension can be ignored -- they are listed
+# here to guide configurations toward known types and to make it easier to
+# identify "new" types.  File extensions are also commonly used to indicate
+# content languages and encodings, so choose them carefully.
+#
+# Internet media types should be registered as described in RFC 4288.
+# The registry is at <http://www.iana.org/assignments/media-types/>.
+#
+# MIME type (lowercased)                       Extensions
+# ============================================ ==========
+# application/1d-interleaved-parityfec
+# application/3gpp-ims+xml
+# application/activemessage
+application/andrew-inset                       ez
+# application/applefile
+application/applixware                         aw
+application/atom+xml                           atom
+application/atomcat+xml                                atomcat
+# application/atomicmail
+application/atomsvc+xml                                atomsvc
+# application/auth-policy+xml
+# application/batch-smtp
+# application/beep+xml
+# application/calendar+xml
+# application/cals-1840
+# application/ccmp+xml
+application/ccxml+xml                          ccxml
+application/cdmi-capability                    cdmia
+application/cdmi-container                     cdmic
+application/cdmi-domain                                cdmid
+application/cdmi-object                                cdmio
+application/cdmi-queue                         cdmiq
+# application/cea-2018+xml
+# application/cellml+xml
+# application/cfw
+# application/cnrp+xml
+# application/commonground
+# application/conference-info+xml
+# application/cpl+xml
+# application/csta+xml
+# application/cstadata+xml
+application/cu-seeme                           cu
+# application/cybercash
+application/davmount+xml                       davmount
+# application/dca-rft
+# application/dec-dx
+# application/dialog-info+xml
+# application/dicom
+# application/dns
+application/docbook+xml                                dbk
+# application/dskpp+xml
+application/dssc+der                           dssc
+application/dssc+xml                           xdssc
+# application/dvcs
+application/ecmascript                         ecma
+# application/edi-consent
+# application/edi-x12
+# application/edifact
+application/emma+xml                           emma
+# application/epp+xml
+application/epub+zip                           epub
+# application/eshop
+# application/example
+application/exi                                        exi
+# application/fastinfoset
+# application/fastsoap
+# application/fits
+application/font-tdpfr                         pfr
+# application/framework-attributes+xml
+application/gml+xml                            gml
+application/gpx+xml                            gpx
+application/gxf                                        gxf
+# application/h224
+# application/held+xml
+# application/http
+application/hyperstudio                                stk
+# application/ibe-key-request+xml
+# application/ibe-pkg-reply+xml
+# application/ibe-pp-data
+# application/iges
+# application/im-iscomposing+xml
+# application/index
+# application/index.cmd
+# application/index.obj
+# application/index.response
+# application/index.vnd
+application/inkml+xml                          ink inkml
+# application/iotp
+application/ipfix                              ipfix
+# application/ipp
+# application/isup
+application/java-archive                       jar
+application/java-serialized-object             ser
+application/java-vm                            class
+application/javascript                         js
+application/json                               json
+application/jsonml+json                                jsonml
+# application/kpml-request+xml
+# application/kpml-response+xml
+application/lost+xml                           lostxml
+application/mac-binhex40                       hqx
+application/mac-compactpro                     cpt
+# application/macwriteii
+application/mads+xml                           mads
+application/marc                               mrc
+application/marcxml+xml                                mrcx
+application/mathematica                                ma nb mb
+# application/mathml-content+xml
+# application/mathml-presentation+xml
+application/mathml+xml                         mathml
+# application/mbms-associated-procedure-description+xml
+# application/mbms-deregister+xml
+# application/mbms-envelope+xml
+# application/mbms-msk+xml
+# application/mbms-msk-response+xml
+# application/mbms-protection-description+xml
+# application/mbms-reception-report+xml
+# application/mbms-register+xml
+# application/mbms-register-response+xml
+# application/mbms-user-service-description+xml
+application/mbox                               mbox
+# application/media_control+xml
+application/mediaservercontrol+xml             mscml
+application/metalink+xml                       metalink
+application/metalink4+xml                      meta4
+application/mets+xml                           mets
+# application/mikey
+application/mods+xml                           mods
+# application/moss-keys
+# application/moss-signature
+# application/mosskey-data
+# application/mosskey-request
+application/mp21                               m21 mp21
+application/mp4                                        mp4s
+# application/mpeg4-generic
+# application/mpeg4-iod
+# application/mpeg4-iod-xmt
+# application/msc-ivr+xml
+# application/msc-mixer+xml
+application/msword                             doc dot
+application/mxf                                        mxf
+# application/nasdata
+# application/news-checkgroups
+# application/news-groupinfo
+# application/news-transmission
+# application/nss
+# application/ocsp-request
+# application/ocsp-response
+application/octet-stream       bin dms lrf mar so dist distz pkg bpk dump elc deploy mobipocket-ebook
+application/oda                                        oda
+application/oebps-package+xml                  opf
+application/ogg                                        ogx
+application/omdoc+xml                          omdoc
+application/onenote                            onetoc onetoc2 onetmp onepkg
+application/oxps                               oxps
+# application/parityfec
+application/patch-ops-error+xml                        xer
+application/pdf                                        pdf
+application/pgp-encrypted                      pgp
+# application/pgp-keys
+application/pgp-signature                      asc sig
+application/pics-rules                         prf
+# application/pidf+xml
+# application/pidf-diff+xml
+application/pkcs10                             p10
+application/pkcs7-mime                         p7m p7c
+application/pkcs7-signature                    p7s
+application/pkcs8                              p8
+application/pkix-attr-cert                     ac
+application/pkix-cert                          cer
+application/pkix-crl                           crl
+application/pkix-pkipath                       pkipath
+application/pkixcmp                            pki
+application/pls+xml                            pls
+# application/poc-settings+xml
+application/postscript                         ai eps ps
+# application/prs.alvestrand.titrax-sheet
+application/prs.cww                            cww
+# application/prs.nprend
+# application/prs.plucker
+# application/prs.rdf-xml-crypt
+# application/prs.xsf+xml
+application/pskc+xml                           pskcxml
+# application/qsig
+application/rdf+xml                            rdf
+application/reginfo+xml                                rif
+application/relax-ng-compact-syntax            rnc
+# application/remote-printing
+application/resource-lists+xml                 rl
+application/resource-lists-diff+xml            rld
+# application/riscos
+# application/rlmi+xml
+application/rls-services+xml                   rs
+application/rpki-ghostbusters                  gbr
+application/rpki-manifest                      mft
+application/rpki-roa                           roa
+# application/rpki-updown
+application/rsd+xml                            rsd
+application/rss+xml                            rss
+application/rtf                                        rtf
+# application/rtx
+# application/samlassertion+xml
+# application/samlmetadata+xml
+application/sbml+xml                           sbml
+application/scvp-cv-request                    scq
+application/scvp-cv-response                   scs
+application/scvp-vp-request                    spq
+application/scvp-vp-response                   spp
+application/sdp                                        sdp
+# application/set-payment
+application/set-payment-initiation             setpay
+# application/set-registration
+application/set-registration-initiation                setreg
+# application/sgml
+# application/sgml-open-catalog
+application/shf+xml                            shf
+# application/sieve
+# application/simple-filter+xml
+# application/simple-message-summary
+# application/simplesymbolcontainer
+# application/slate
+# application/smil
+application/smil+xml                           smi smil
+# application/soap+fastinfoset
+# application/soap+xml
+application/sparql-query                       rq
+application/sparql-results+xml                 srx
+# application/spirits-event+xml
+application/srgs                               gram
+application/srgs+xml                           grxml
+application/sru+xml                            sru
+application/ssdl+xml                           ssdl
+application/ssml+xml                           ssml
+# application/tamp-apex-update
+# application/tamp-apex-update-confirm
+# application/tamp-community-update
+# application/tamp-community-update-confirm
+# application/tamp-error
+# application/tamp-sequence-adjust
+# application/tamp-sequence-adjust-confirm
+# application/tamp-status-query
+# application/tamp-status-response
+# application/tamp-update
+# application/tamp-update-confirm
+application/tei+xml                            tei teicorpus
+application/thraud+xml                         tfi
+# application/timestamp-query
+# application/timestamp-reply
+application/timestamped-data                   tsd
+# application/tve-trigger
+# application/ulpfec
+# application/vcard+xml
+# application/vemmi
+# application/vividence.scriptfile
+# application/vnd.3gpp.bsf+xml
+application/vnd.3gpp.pic-bw-large              plb
+application/vnd.3gpp.pic-bw-small              psb
+application/vnd.3gpp.pic-bw-var                        pvb
+# application/vnd.3gpp.sms
+# application/vnd.3gpp2.bcmcsinfo+xml
+# application/vnd.3gpp2.sms
+application/vnd.3gpp2.tcap                     tcap
+application/vnd.3m.post-it-notes               pwn
+application/vnd.accpac.simply.aso              aso
+application/vnd.accpac.simply.imp              imp
+application/vnd.acucobol                       acu
+application/vnd.acucorp                                atc acutc
+application/vnd.adobe.air-application-installer-package+zip    air
+application/vnd.adobe.formscentral.fcdt                fcdt
+application/vnd.adobe.fxp                      fxp fxpl
+# application/vnd.adobe.partial-upload
+application/vnd.adobe.xdp+xml                  xdp
+application/vnd.adobe.xfdf                     xfdf
+# application/vnd.aether.imp
+# application/vnd.ah-barcode
+application/vnd.ahead.space                    ahead
+application/vnd.airzip.filesecure.azf          azf
+application/vnd.airzip.filesecure.azs          azs
+application/vnd.amazon.ebook                   azw
+application/vnd.americandynamics.acc           acc
+application/vnd.amiga.ami                      ami
+# application/vnd.amundsen.maze+xml
+application/vnd.android.package-archive                apk
+application/vnd.anser-web-certificate-issue-initiation cii
+application/vnd.anser-web-funds-transfer-initiation    fti
+application/vnd.antix.game-component           atx
+application/vnd.apple.installer+xml            mpkg
+application/vnd.apple.mpegurl                  m3u8
+# application/vnd.arastra.swi
+application/vnd.aristanetworks.swi             swi
+application/vnd.astraea-software.iota          iota
+application/vnd.audiograph                     aep
+# application/vnd.autopackage
+# application/vnd.avistar+xml
+application/vnd.blueice.multipass              mpm
+# application/vnd.bluetooth.ep.oob
+application/vnd.bmi                            bmi
+application/vnd.businessobjects                        rep
+# application/vnd.cab-jscript
+# application/vnd.canon-cpdl
+# application/vnd.canon-lips
+# application/vnd.cendio.thinlinc.clientconf
+application/vnd.chemdraw+xml                   cdxml
+application/vnd.chipnuts.karaoke-mmd           mmd
+application/vnd.cinderella                     cdy
+# application/vnd.cirpack.isdn-ext
+application/vnd.claymore                       cla
+application/vnd.cloanto.rp9                    rp9
+application/vnd.clonk.c4group                  c4g c4d c4f c4p c4u
+application/vnd.cluetrust.cartomobile-config           c11amc
+application/vnd.cluetrust.cartomobile-config-pkg       c11amz
+# application/vnd.collection+json
+# application/vnd.commerce-battelle
+application/vnd.commonspace                    csp
+application/vnd.contact.cmsg                   cdbcmsg
+application/vnd.cosmocaller                    cmc
+application/vnd.crick.clicker                  clkx
+application/vnd.crick.clicker.keyboard         clkk
+application/vnd.crick.clicker.palette          clkp
+application/vnd.crick.clicker.template         clkt
+application/vnd.crick.clicker.wordbank         clkw
+application/vnd.criticaltools.wbs+xml          wbs
+application/vnd.ctc-posml                      pml
+# application/vnd.ctct.ws+xml
+# application/vnd.cups-pdf
+# application/vnd.cups-postscript
+application/vnd.cups-ppd                       ppd
+# application/vnd.cups-raster
+# application/vnd.cups-raw
+# application/vnd.curl
+application/vnd.curl.car                       car
+application/vnd.curl.pcurl                     pcurl
+# application/vnd.cybank
+application/vnd.dart                           dart
+application/vnd.data-vision.rdz                        rdz
+application/vnd.dece.data                      uvf uvvf uvd uvvd
+application/vnd.dece.ttml+xml                  uvt uvvt
+application/vnd.dece.unspecified               uvx uvvx
+application/vnd.dece.zip                       uvz uvvz
+application/vnd.denovo.fcselayout-link         fe_launch
+# application/vnd.dir-bi.plate-dl-nosuffix
+application/vnd.dna                            dna
+application/vnd.dolby.mlp                      mlp
+# application/vnd.dolby.mobile.1
+# application/vnd.dolby.mobile.2
+application/vnd.dpgraph                                dpg
+application/vnd.dreamfactory                   dfac
+application/vnd.ds-keypoint                    kpxx
+application/vnd.dvb.ait                                ait
+# application/vnd.dvb.dvbj
+# application/vnd.dvb.esgcontainer
+# application/vnd.dvb.ipdcdftnotifaccess
+# application/vnd.dvb.ipdcesgaccess
+# application/vnd.dvb.ipdcesgaccess2
+# application/vnd.dvb.ipdcesgpdd
+# application/vnd.dvb.ipdcroaming
+# application/vnd.dvb.iptv.alfec-base
+# application/vnd.dvb.iptv.alfec-enhancement
+# application/vnd.dvb.notif-aggregate-root+xml
+# application/vnd.dvb.notif-container+xml
+# application/vnd.dvb.notif-generic+xml
+# application/vnd.dvb.notif-ia-msglist+xml
+# application/vnd.dvb.notif-ia-registration-request+xml
+# application/vnd.dvb.notif-ia-registration-response+xml
+# application/vnd.dvb.notif-init+xml
+# application/vnd.dvb.pfr
+application/vnd.dvb.service                    svc
+# application/vnd.dxr
+application/vnd.dynageo                                geo
+# application/vnd.easykaraoke.cdgdownload
+# application/vnd.ecdis-update
+application/vnd.ecowin.chart                   mag
+# application/vnd.ecowin.filerequest
+# application/vnd.ecowin.fileupdate
+# application/vnd.ecowin.series
+# application/vnd.ecowin.seriesrequest
+# application/vnd.ecowin.seriesupdate
+# application/vnd.emclient.accessrequest+xml
+application/vnd.enliven                                nml
+# application/vnd.eprints.data+xml
+application/vnd.epson.esf                      esf
+application/vnd.epson.msf                      msf
+application/vnd.epson.quickanime               qam
+application/vnd.epson.salt                     slt
+application/vnd.epson.ssf                      ssf
+# application/vnd.ericsson.quickcall
+application/vnd.eszigno3+xml                   es3 et3
+# application/vnd.etsi.aoc+xml
+# application/vnd.etsi.cug+xml
+# application/vnd.etsi.iptvcommand+xml
+# application/vnd.etsi.iptvdiscovery+xml
+# application/vnd.etsi.iptvprofile+xml
+# application/vnd.etsi.iptvsad-bc+xml
+# application/vnd.etsi.iptvsad-cod+xml
+# application/vnd.etsi.iptvsad-npvr+xml
+# application/vnd.etsi.iptvservice+xml
+# application/vnd.etsi.iptvsync+xml
+# application/vnd.etsi.iptvueprofile+xml
+# application/vnd.etsi.mcid+xml
+# application/vnd.etsi.overload-control-policy-dataset+xml
+# application/vnd.etsi.sci+xml
+# application/vnd.etsi.simservs+xml
+# application/vnd.etsi.tsl+xml
+# application/vnd.etsi.tsl.der
+# application/vnd.eudora.data
+application/vnd.ezpix-album                    ez2
+application/vnd.ezpix-package                  ez3
+# application/vnd.f-secure.mobile
+application/vnd.fdf                            fdf
+application/vnd.fdsn.mseed                     mseed
+application/vnd.fdsn.seed                      seed dataless
+# application/vnd.ffsns
+# application/vnd.fints
+application/vnd.flographit                     gph
+application/vnd.fluxtime.clip                  ftc
+# application/vnd.font-fontforge-sfd
+application/vnd.framemaker                     fm frame maker book
+application/vnd.frogans.fnc                    fnc
+application/vnd.frogans.ltf                    ltf
+application/vnd.fsc.weblaunch                  fsc
+application/vnd.fujitsu.oasys                  oas
+application/vnd.fujitsu.oasys2                 oa2
+application/vnd.fujitsu.oasys3                 oa3
+application/vnd.fujitsu.oasysgp                        fg5
+application/vnd.fujitsu.oasysprs               bh2
+# application/vnd.fujixerox.art-ex
+# application/vnd.fujixerox.art4
+# application/vnd.fujixerox.hbpl
+application/vnd.fujixerox.ddd                  ddd
+application/vnd.fujixerox.docuworks            xdw
+application/vnd.fujixerox.docuworks.binder     xbd
+# application/vnd.fut-misnet
+application/vnd.fuzzysheet                     fzs
+application/vnd.genomatix.tuxedo               txd
+# application/vnd.geocube+xml
+application/vnd.geogebra.file                  ggb
+application/vnd.geogebra.tool                  ggt
+application/vnd.geometry-explorer              gex gre
+application/vnd.geonext                                gxt
+application/vnd.geoplan                                g2w
+application/vnd.geospace                       g3w
+# application/vnd.globalplatform.card-content-mgt
+# application/vnd.globalplatform.card-content-mgt-response
+application/vnd.gmx                            gmx
+application/vnd.google-earth.kml+xml           kml
+application/vnd.google-earth.kmz               kmz
+application/vnd.grafeq                         gqf gqs
+# application/vnd.gridmp
+application/vnd.groove-account                 gac
+application/vnd.groove-help                    ghf
+application/vnd.groove-identity-message                gim
+application/vnd.groove-injector                        grv
+application/vnd.groove-tool-message            gtm
+application/vnd.groove-tool-template           tpl
+application/vnd.groove-vcard                   vcg
+# application/vnd.hal+json
+application/vnd.hal+xml                                hal
+application/vnd.handheld-entertainment+xml     zmm
+application/vnd.hbci                           hbci
+# application/vnd.hcl-bireports
+application/vnd.hhe.lesson-player              les
+application/vnd.hp-hpgl                                hpgl
+application/vnd.hp-hpid                                hpid
+application/vnd.hp-hps                         hps
+application/vnd.hp-jlyt                                jlt
+application/vnd.hp-pcl                         pcl
+application/vnd.hp-pclxl                       pclxl
+# application/vnd.httphone
+application/vnd.hydrostatix.sof-data           sfd-hdstx
+# application/vnd.hzn-3d-crossword
+# application/vnd.ibm.afplinedata
+# application/vnd.ibm.electronic-media
+application/vnd.ibm.minipay                    mpy
+application/vnd.ibm.modcap                     afp listafp list3820
+application/vnd.ibm.rights-management          irm
+application/vnd.ibm.secure-container           sc
+application/vnd.iccprofile                     icc icm
+application/vnd.igloader                       igl
+application/vnd.immervision-ivp                        ivp
+application/vnd.immervision-ivu                        ivu
+# application/vnd.informedcontrol.rms+xml
+# application/vnd.informix-visionary
+# application/vnd.infotech.project
+# application/vnd.infotech.project+xml
+# application/vnd.innopath.wamp.notification
+application/vnd.insors.igm                     igm
+application/vnd.intercon.formnet               xpw xpx
+application/vnd.intergeo                       i2g
+# application/vnd.intertrust.digibox
+# application/vnd.intertrust.nncp
+application/vnd.intu.qbo                       qbo
+application/vnd.intu.qfx                       qfx
+# application/vnd.iptc.g2.conceptitem+xml
+# application/vnd.iptc.g2.knowledgeitem+xml
+# application/vnd.iptc.g2.newsitem+xml
+# application/vnd.iptc.g2.newsmessage+xml
+# application/vnd.iptc.g2.packageitem+xml
+# application/vnd.iptc.g2.planningitem+xml
+application/vnd.ipunplugged.rcprofile          rcprofile
+application/vnd.irepository.package+xml                irp
+application/vnd.is-xpr                         xpr
+application/vnd.isac.fcs                       fcs
+application/vnd.jam                            jam
+# application/vnd.japannet-directory-service
+# application/vnd.japannet-jpnstore-wakeup
+# application/vnd.japannet-payment-wakeup
+# application/vnd.japannet-registration
+# application/vnd.japannet-registration-wakeup
+# application/vnd.japannet-setstore-wakeup
+# application/vnd.japannet-verification
+# application/vnd.japannet-verification-wakeup
+application/vnd.jcp.javame.midlet-rms          rms
+application/vnd.jisp                           jisp
+application/vnd.joost.joda-archive             joda
+application/vnd.kahootz                                ktz ktr
+application/vnd.kde.karbon                     karbon
+application/vnd.kde.kchart                     chrt
+application/vnd.kde.kformula                   kfo
+application/vnd.kde.kivio                      flw
+application/vnd.kde.kontour                    kon
+application/vnd.kde.kpresenter                 kpr kpt
+application/vnd.kde.kspread                    ksp
+application/vnd.kde.kword                      kwd kwt
+application/vnd.kenameaapp                     htke
+application/vnd.kidspiration                   kia
+application/vnd.kinar                          kne knp
+application/vnd.koan                           skp skd skt skm
+application/vnd.kodak-descriptor               sse
+application/vnd.las.las+xml                    lasxml
+# application/vnd.liberty-request+xml
+application/vnd.llamagraphics.life-balance.desktop     lbd
+application/vnd.llamagraphics.life-balance.exchange+xml        lbe
+application/vnd.lotus-1-2-3                    123
+application/vnd.lotus-approach                 apr
+application/vnd.lotus-freelance                        pre
+application/vnd.lotus-notes                    nsf
+application/vnd.lotus-organizer                        org
+application/vnd.lotus-screencam                        scm
+application/vnd.lotus-wordpro                  lwp
+application/vnd.macports.portpkg               portpkg
+# application/vnd.marlin.drm.actiontoken+xml
+# application/vnd.marlin.drm.conftoken+xml
+# application/vnd.marlin.drm.license+xml
+# application/vnd.marlin.drm.mdcf
+application/vnd.mcd                            mcd
+application/vnd.medcalcdata                    mc1
+application/vnd.mediastation.cdkey             cdkey
+# application/vnd.meridian-slingshot
+application/vnd.mfer                           mwf
+application/vnd.mfmp                           mfm
+application/vnd.micrografx.flo                 flo
+application/vnd.micrografx.igx                 igx
+application/vnd.mif                            mif
+# application/vnd.minisoft-hp3000-save
+# application/vnd.mitsubishi.misty-guard.trustweb
+application/vnd.mobius.daf                     daf
+application/vnd.mobius.dis                     dis
+application/vnd.mobius.mbk                     mbk
+application/vnd.mobius.mqy                     mqy
+application/vnd.mobius.msl                     msl
+application/vnd.mobius.plc                     plc
+application/vnd.mobius.txf                     txf
+application/vnd.mophun.application             mpn
+application/vnd.mophun.certificate             mpc
+# application/vnd.motorola.flexsuite
+# application/vnd.motorola.flexsuite.adsi
+# application/vnd.motorola.flexsuite.fis
+# application/vnd.motorola.flexsuite.gotap
+# application/vnd.motorola.flexsuite.kmr
+# application/vnd.motorola.flexsuite.ttc
+# application/vnd.motorola.flexsuite.wem
+# application/vnd.motorola.iprm
+application/vnd.mozilla.xul+xml                        xul
+application/vnd.ms-artgalry                    cil
+# application/vnd.ms-asf
+application/vnd.ms-cab-compressed              cab
+# application/vnd.ms-color.iccprofile
+application/vnd.ms-excel                       xls xlm xla xlc xlt xlw
+application/vnd.ms-excel.addin.macroenabled.12         xlam
+application/vnd.ms-excel.sheet.binary.macroenabled.12  xlsb
+application/vnd.ms-excel.sheet.macroenabled.12         xlsm
+application/vnd.ms-excel.template.macroenabled.12      xltm
+application/vnd.ms-fontobject                  eot
+application/vnd.ms-htmlhelp                    chm
+application/vnd.ms-ims                         ims
+application/vnd.ms-lrm                         lrm
+# application/vnd.ms-office.activex+xml
+application/vnd.ms-officetheme                 thmx
+# application/vnd.ms-opentype
+# application/vnd.ms-package.obfuscated-opentype
+application/vnd.ms-pki.seccat                  cat
+application/vnd.ms-pki.stl                     stl
+# application/vnd.ms-playready.initiator+xml
+application/vnd.ms-powerpoint                  ppt pps pot
+application/vnd.ms-powerpoint.addin.macroenabled.12            ppam
+application/vnd.ms-powerpoint.presentation.macroenabled.12     pptm
+application/vnd.ms-powerpoint.slide.macroenabled.12            sldm
+application/vnd.ms-powerpoint.slideshow.macroenabled.12                ppsm
+application/vnd.ms-powerpoint.template.macroenabled.12         potm
+# application/vnd.ms-printing.printticket+xml
+application/vnd.ms-project                     mpp mpt
+# application/vnd.ms-tnef
+# application/vnd.ms-wmdrm.lic-chlg-req
+# application/vnd.ms-wmdrm.lic-resp
+# application/vnd.ms-wmdrm.meter-chlg-req
+# application/vnd.ms-wmdrm.meter-resp
+application/vnd.ms-word.document.macroenabled.12       docm
+application/vnd.ms-word.template.macroenabled.12       dotm
+application/vnd.ms-works                       wps wks wcm wdb
+application/vnd.ms-wpl                         wpl
+application/vnd.ms-xpsdocument                 xps
+application/vnd.mseq                           mseq
+# application/vnd.msign
+# application/vnd.multiad.creator
+# application/vnd.multiad.creator.cif
+# application/vnd.music-niff
+application/vnd.musician                       mus
+application/vnd.muvee.style                    msty
+application/vnd.mynfc                          taglet
+# application/vnd.ncd.control
+# application/vnd.ncd.reference
+# application/vnd.nervana
+# application/vnd.netfpx
+application/vnd.neurolanguage.nlu              nlu
+application/vnd.nitf                           ntf nitf
+application/vnd.noblenet-directory             nnd
+application/vnd.noblenet-sealer                        nns
+application/vnd.noblenet-web                   nnw
+# application/vnd.nokia.catalogs
+# application/vnd.nokia.conml+wbxml
+# application/vnd.nokia.conml+xml
+# application/vnd.nokia.isds-radio-presets
+# application/vnd.nokia.iptv.config+xml
+# application/vnd.nokia.landmark+wbxml
+# application/vnd.nokia.landmark+xml
+# application/vnd.nokia.landmarkcollection+xml
+# application/vnd.nokia.n-gage.ac+xml
+application/vnd.nokia.n-gage.data              ngdat
+application/vnd.nokia.n-gage.symbian.install   n-gage
+# application/vnd.nokia.ncd
+# application/vnd.nokia.pcd+wbxml
+# application/vnd.nokia.pcd+xml
+application/vnd.nokia.radio-preset             rpst
+application/vnd.nokia.radio-presets            rpss
+application/vnd.novadigm.edm                   edm
+application/vnd.novadigm.edx                   edx
+application/vnd.novadigm.ext                   ext
+# application/vnd.ntt-local.file-transfer
+# application/vnd.ntt-local.sip-ta_remote
+# application/vnd.ntt-local.sip-ta_tcp_stream
+application/vnd.oasis.opendocument.chart               odc
+application/vnd.oasis.opendocument.chart-template      otc
+application/vnd.oasis.opendocument.database            odb
+application/vnd.oasis.opendocument.formula             odf
+application/vnd.oasis.opendocument.formula-template    odft
+application/vnd.oasis.opendocument.graphics            odg
+application/vnd.oasis.opendocument.graphics-template   otg
+application/vnd.oasis.opendocument.image               odi
+application/vnd.oasis.opendocument.image-template      oti
+application/vnd.oasis.opendocument.presentation                odp
+application/vnd.oasis.opendocument.presentation-template       otp
+application/vnd.oasis.opendocument.spreadsheet         ods
+application/vnd.oasis.opendocument.spreadsheet-template        ots
+application/vnd.oasis.opendocument.text                        odt
+application/vnd.oasis.opendocument.text-master         odm
+application/vnd.oasis.opendocument.text-template       ott
+application/vnd.oasis.opendocument.text-web            oth
+# application/vnd.obn
+# application/vnd.oftn.l10n+json
+# application/vnd.oipf.contentaccessdownload+xml
+# application/vnd.oipf.contentaccessstreaming+xml
+# application/vnd.oipf.cspg-hexbinary
+# application/vnd.oipf.dae.svg+xml
+# application/vnd.oipf.dae.xhtml+xml
+# application/vnd.oipf.mippvcontrolmessage+xml
+# application/vnd.oipf.pae.gem
+# application/vnd.oipf.spdiscovery+xml
+# application/vnd.oipf.spdlist+xml
+# application/vnd.oipf.ueprofile+xml
+# application/vnd.oipf.userprofile+xml
+application/vnd.olpc-sugar                     xo
+# application/vnd.oma-scws-config
+# application/vnd.oma-scws-http-request
+# application/vnd.oma-scws-http-response
+# application/vnd.oma.bcast.associated-procedure-parameter+xml
+# application/vnd.oma.bcast.drm-trigger+xml
+# application/vnd.oma.bcast.imd+xml
+# application/vnd.oma.bcast.ltkm
+# application/vnd.oma.bcast.notification+xml
+# application/vnd.oma.bcast.provisioningtrigger
+# application/vnd.oma.bcast.sgboot
+# application/vnd.oma.bcast.sgdd+xml
+# application/vnd.oma.bcast.sgdu
+# application/vnd.oma.bcast.simple-symbol-container
+# application/vnd.oma.bcast.smartcard-trigger+xml
+# application/vnd.oma.bcast.sprov+xml
+# application/vnd.oma.bcast.stkm
+# application/vnd.oma.cab-address-book+xml
+# application/vnd.oma.cab-feature-handler+xml
+# application/vnd.oma.cab-pcc+xml
+# application/vnd.oma.cab-user-prefs+xml
+# application/vnd.oma.dcd
+# application/vnd.oma.dcdc
+application/vnd.oma.dd2+xml                    dd2
+# application/vnd.oma.drm.risd+xml
+# application/vnd.oma.group-usage-list+xml
+# application/vnd.oma.pal+xml
+# application/vnd.oma.poc.detailed-progress-report+xml
+# application/vnd.oma.poc.final-report+xml
+# application/vnd.oma.poc.groups+xml
+# application/vnd.oma.poc.invocation-descriptor+xml
+# application/vnd.oma.poc.optimized-progress-report+xml
+# application/vnd.oma.push
+# application/vnd.oma.scidm.messages+xml
+# application/vnd.oma.xcap-directory+xml
+# application/vnd.omads-email+xml
+# application/vnd.omads-file+xml
+# application/vnd.omads-folder+xml
+# application/vnd.omaloc-supl-init
+application/vnd.openofficeorg.extension                oxt
+# application/vnd.openxmlformats-officedocument.custom-properties+xml
+# application/vnd.openxmlformats-officedocument.customxmlproperties+xml
+# application/vnd.openxmlformats-officedocument.drawing+xml
+# application/vnd.openxmlformats-officedocument.drawingml.chart+xml
+# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml
+# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml
+# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml
+# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml
+# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml
+# application/vnd.openxmlformats-officedocument.extended-properties+xml
+# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml
+# application/vnd.openxmlformats-officedocument.presentationml.comments+xml
+# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml
+# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml
+# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml
+application/vnd.openxmlformats-officedocument.presentationml.presentation      pptx
+# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml
+# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml
+application/vnd.openxmlformats-officedocument.presentationml.slide     sldx
+# application/vnd.openxmlformats-officedocument.presentationml.slide+xml
+# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml
+# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml
+application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
+# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml
+# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml
+# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml
+# application/vnd.openxmlformats-officedocument.presentationml.tags+xml
+application/vnd.openxmlformats-officedocument.presentationml.template  potx
+# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml
+# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet      xlsx
+# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml
+application/vnd.openxmlformats-officedocument.spreadsheetml.template   xltx
+# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml
+# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml
+# application/vnd.openxmlformats-officedocument.theme+xml
+# application/vnd.openxmlformats-officedocument.themeoverride+xml
+# application/vnd.openxmlformats-officedocument.vmldrawing
+# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.document        docx
+# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml
+application/vnd.openxmlformats-officedocument.wordprocessingml.template        dotx
+# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml
+# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml
+# application/vnd.openxmlformats-package.core-properties+xml
+# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml
+# application/vnd.openxmlformats-package.relationships+xml
+# application/vnd.quobject-quoxdocument
+# application/vnd.osa.netdeploy
+application/vnd.osgeo.mapguide.package         mgp
+# application/vnd.osgi.bundle
+application/vnd.osgi.dp                                dp
+application/vnd.osgi.subsystem                 esa
+# application/vnd.otps.ct-kip+xml
+application/vnd.palm                           pdb pqa oprc
+# application/vnd.paos.xml
+application/vnd.pawaafile                      paw
+application/vnd.pg.format                      str
+application/vnd.pg.osasli                      ei6
+# application/vnd.piaccess.application-licence
+application/vnd.picsel                         efif
+application/vnd.pmi.widget                     wg
+# application/vnd.poc.group-advertisement+xml
+application/vnd.pocketlearn                    plf
+application/vnd.powerbuilder6                  pbd
+# application/vnd.powerbuilder6-s
+# application/vnd.powerbuilder7
+# application/vnd.powerbuilder7-s
+# application/vnd.powerbuilder75
+# application/vnd.powerbuilder75-s
+# application/vnd.preminet
+application/vnd.previewsystems.box             box
+application/vnd.proteus.magazine               mgz
+application/vnd.publishare-delta-tree          qps
+application/vnd.pvi.ptid1                      ptid
+# application/vnd.pwg-multiplexed
+# application/vnd.pwg-xhtml-print+xml
+# application/vnd.qualcomm.brew-app-res
+application/vnd.quark.quarkxpress              qxd qxt qwd qwt qxl qxb
+# application/vnd.radisys.moml+xml
+# application/vnd.radisys.msml+xml
+# application/vnd.radisys.msml-audit+xml
+# application/vnd.radisys.msml-audit-conf+xml
+# application/vnd.radisys.msml-audit-conn+xml
+# application/vnd.radisys.msml-audit-dialog+xml
+# application/vnd.radisys.msml-audit-stream+xml
+# application/vnd.radisys.msml-conf+xml
+# application/vnd.radisys.msml-dialog+xml
+# application/vnd.radisys.msml-dialog-base+xml
+# application/vnd.radisys.msml-dialog-fax-detect+xml
+# application/vnd.radisys.msml-dialog-fax-sendrecv+xml
+# application/vnd.radisys.msml-dialog-group+xml
+# application/vnd.radisys.msml-dialog-speech+xml
+# application/vnd.radisys.msml-dialog-transform+xml
+# application/vnd.rainstor.data
+# application/vnd.rapid
+application/vnd.realvnc.bed                    bed
+application/vnd.recordare.musicxml             mxl
+application/vnd.recordare.musicxml+xml         musicxml
+# application/vnd.renlearn.rlprint
+application/vnd.rig.cryptonote                 cryptonote
+application/vnd.rim.cod                                cod
+application/vnd.rn-realmedia                   rm
+application/vnd.rn-realmedia-vbr               rmvb
+application/vnd.route66.link66+xml             link66
+# application/vnd.rs-274x
+# application/vnd.ruckus.download
+# application/vnd.s3sms
+application/vnd.sailingtracker.track           st
+# application/vnd.sbm.cid
+# application/vnd.sbm.mid2
+# application/vnd.scribus
+# application/vnd.sealed.3df
+# application/vnd.sealed.csf
+# application/vnd.sealed.doc
+# application/vnd.sealed.eml
+# application/vnd.sealed.mht
+# application/vnd.sealed.net
+# application/vnd.sealed.ppt
+# application/vnd.sealed.tiff
+# application/vnd.sealed.xls
+# application/vnd.sealedmedia.softseal.html
+# application/vnd.sealedmedia.softseal.pdf
+application/vnd.seemail                                see
+application/vnd.sema                           sema
+application/vnd.semd                           semd
+application/vnd.semf                           semf
+application/vnd.shana.informed.formdata                ifm
+application/vnd.shana.informed.formtemplate    itp
+application/vnd.shana.informed.interchange     iif
+application/vnd.shana.informed.package         ipk
+application/vnd.simtech-mindmapper             twd twds
+application/vnd.smaf                           mmf
+# application/vnd.smart.notebook
+application/vnd.smart.teacher                  teacher
+# application/vnd.software602.filler.form+xml
+# application/vnd.software602.filler.form-xml-zip
+application/vnd.solent.sdkm+xml                        sdkm sdkd
+application/vnd.spotfire.dxp                   dxp
+application/vnd.spotfire.sfs                   sfs
+# application/vnd.sss-cod
+# application/vnd.sss-dtf
+# application/vnd.sss-ntf
+application/vnd.stardivision.calc              sdc
+application/vnd.stardivision.draw              sda
+application/vnd.stardivision.impress           sdd
+application/vnd.stardivision.math              smf
+application/vnd.stardivision.writer            sdw vor
+application/vnd.stardivision.writer-global     sgl
+application/vnd.stepmania.package              smzip
+application/vnd.stepmania.stepchart            sm
+# application/vnd.street-stream
+application/vnd.sun.xml.calc                   sxc
+application/vnd.sun.xml.calc.template          stc
+application/vnd.sun.xml.draw                   sxd
+application/vnd.sun.xml.draw.template          std
+application/vnd.sun.xml.impress                        sxi
+application/vnd.sun.xml.impress.template       sti
+application/vnd.sun.xml.math                   sxm
+application/vnd.sun.xml.writer                 sxw
+application/vnd.sun.xml.writer.global          sxg
+application/vnd.sun.xml.writer.template                stw
+# application/vnd.sun.wadl+xml
+application/vnd.sus-calendar                   sus susp
+application/vnd.svd                            svd
+# application/vnd.swiftview-ics
+application/vnd.symbian.install                        sis sisx
+application/vnd.syncml+xml                     xsm
+application/vnd.syncml.dm+wbxml                        bdm
+application/vnd.syncml.dm+xml                  xdm
+# application/vnd.syncml.dm.notification
+# application/vnd.syncml.ds.notification
+application/vnd.tao.intent-module-archive      tao
+application/vnd.tcpdump.pcap                   pcap cap dmp
+application/vnd.tmobile-livetv                 tmo
+application/vnd.trid.tpt                       tpt
+application/vnd.triscape.mxs                   mxs
+application/vnd.trueapp                                tra
+# application/vnd.truedoc
+# application/vnd.ubisoft.webplayer
+application/vnd.ufdl                           ufd ufdl
+application/vnd.uiq.theme                      utz
+application/vnd.umajin                         umj
+application/vnd.unity                          unityweb
+application/vnd.uoml+xml                       uoml
+# application/vnd.uplanet.alert
+# application/vnd.uplanet.alert-wbxml
+# application/vnd.uplanet.bearer-choice
+# application/vnd.uplanet.bearer-choice-wbxml
+# application/vnd.uplanet.cacheop
+# application/vnd.uplanet.cacheop-wbxml
+# application/vnd.uplanet.channel
+# application/vnd.uplanet.channel-wbxml
+# application/vnd.uplanet.list
+# application/vnd.uplanet.list-wbxml
+# application/vnd.uplanet.listcmd
+# application/vnd.uplanet.listcmd-wbxml
+# application/vnd.uplanet.signal
+application/vnd.vcx                            vcx
+# application/vnd.vd-study
+# application/vnd.vectorworks
+# application/vnd.verimatrix.vcas
+# application/vnd.vidsoft.vidconference
+application/vnd.visio                          vsd vst vss vsw
+application/vnd.visionary                      vis
+# application/vnd.vividence.scriptfile
+application/vnd.vsf                            vsf
+# application/vnd.wap.sic
+# application/vnd.wap.slc
+application/vnd.wap.wbxml                      wbxml
+application/vnd.wap.wmlc                       wmlc
+application/vnd.wap.wmlscriptc                 wmlsc
+application/vnd.webturbo                       wtb
+# application/vnd.wfa.wsc
+# application/vnd.wmc
+# application/vnd.wmf.bootstrap
+# application/vnd.wolfram.mathematica
+# application/vnd.wolfram.mathematica.package
+application/vnd.wolfram.player                 nbp
+application/vnd.wordperfect                    wpd
+application/vnd.wqd                            wqd
+# application/vnd.wrq-hp3000-labelled
+application/vnd.wt.stf                         stf
+# application/vnd.wv.csp+wbxml
+# application/vnd.wv.csp+xml
+# application/vnd.wv.ssp+xml
+application/vnd.xara                           xar
+application/vnd.xfdl                           xfdl
+# application/vnd.xfdl.webform
+# application/vnd.xmi+xml
+# application/vnd.xmpie.cpkg
+# application/vnd.xmpie.dpkg
+# application/vnd.xmpie.plan
+# application/vnd.xmpie.ppkg
+# application/vnd.xmpie.xlim
+application/vnd.yamaha.hv-dic                  hvd
+application/vnd.yamaha.hv-script               hvs
+application/vnd.yamaha.hv-voice                        hvp
+application/vnd.yamaha.openscoreformat                 osf
+application/vnd.yamaha.openscoreformat.osfpvg+xml      osfpvg
+# application/vnd.yamaha.remote-setup
+application/vnd.yamaha.smaf-audio              saf
+application/vnd.yamaha.smaf-phrase             spf
+# application/vnd.yamaha.through-ngn
+# application/vnd.yamaha.tunnel-udpencap
+application/vnd.yellowriver-custom-menu                cmp
+application/vnd.zul                            zir zirz
+application/vnd.zzazz.deck+xml                 zaz
+application/voicexml+xml                       vxml
+# application/vq-rtcpxr
+# application/watcherinfo+xml
+# application/whoispp-query
+# application/whoispp-response
+application/widget                             wgt
+application/winhlp                             hlp
+# application/wita
+# application/wordperfect5.1
+application/wsdl+xml                           wsdl
+application/wspolicy+xml                       wspolicy
+application/x-7z-compressed                    7z
+application/x-abiword                          abw
+application/x-ace-compressed                   ace
+# application/x-amf
+application/x-apple-diskimage                  dmg
+application/x-authorware-bin                   aab x32 u32 vox
+application/x-authorware-map                   aam
+application/x-authorware-seg                   aas
+application/x-bcpio                            bcpio
+application/x-bittorrent                       torrent
+application/x-blorb                            blb blorb
+application/x-bzip                             bz
+application/x-bzip2                            bz2 boz
+application/x-cbr                              cbr cba cbt cbz cb7
+application/x-cdlink                           vcd
+application/x-cfs-compressed                   cfs
+application/x-chat                             chat
+application/x-chess-pgn                                pgn
+application/x-conference                       nsc
+# application/x-compress
+application/x-cpio                             cpio
+application/x-csh                              csh
+application/x-debian-package                   deb udeb
+application/x-dgc-compressed                   dgc
+application/x-director                 dir dcr dxr cst cct cxt w3d fgd swa
+application/x-doom                             wad
+application/x-dtbncx+xml                       ncx
+application/x-dtbook+xml                       dtb
+application/x-dtbresource+xml                  res
+application/x-dvi                              dvi
+application/x-envoy                            evy
+application/x-eva                              eva
+application/x-font-bdf                         bdf
+# application/x-font-dos
+# application/x-font-framemaker
+application/x-font-ghostscript                 gsf
+# application/x-font-libgrx
+application/x-font-linux-psf                   psf
+application/x-font-otf                         otf
+application/x-font-pcf                         pcf
+application/x-font-snf                         snf
+# application/x-font-speedo
+# application/x-font-sunos-news
+application/x-font-ttf                         ttf ttc
+application/x-font-type1                       pfa pfb pfm afm
+application/x-font-woff                                woff
+# application/x-font-vfont
+application/x-freearc                          arc
+application/x-futuresplash                     spl
+application/x-gca-compressed                   gca
+application/x-glulx                            ulx
+application/x-gnumeric                         gnumeric
+application/x-gramps-xml                       gramps
+application/x-gtar                             gtar
+# application/x-gzip
+application/x-hdf                              hdf
+application/x-install-instructions             install
+application/x-iso9660-image                    iso
+application/x-java-jnlp-file                   jnlp
+application/x-latex                            latex
+application/x-lzh-compressed                   lzh lha
+application/x-mie                              mie
+application/x-mobipocket-ebook                 prc mobi
+application/x-mpegurl                          m3u8
+application/x-ms-application                   application
+application/x-ms-shortcut                      lnk
+application/x-ms-wmd                           wmd
+application/x-ms-wmz                           wmz
+application/x-ms-xbap                          xbap
+application/x-msaccess                         mdb
+application/x-msbinder                         obd
+application/x-mscardfile                       crd
+application/x-msclip                           clp
+application/x-msdownload                       exe dll com bat msi
+application/x-msmediaview                      mvb m13 m14
+application/x-msmetafile                       wmf wmz emf emz
+application/x-msmoney                          mny
+application/x-mspublisher                      pub
+application/x-msschedule                       scd
+application/x-msterminal                       trm
+application/x-mswrite                          wri
+application/x-netcdf                           nc cdf
+application/x-nzb                              nzb
+application/x-pkcs12                           p12 pfx
+application/x-pkcs7-certificates               p7b spc
+application/x-pkcs7-certreqresp                        p7r
+application/x-rar-compressed                   rar
+application/x-research-info-systems            ris
+application/x-sh                               sh
+application/x-shar                             shar
+application/x-shockwave-flash                  swf
+application/x-silverlight-app                  xap
+application/x-sql                              sql
+application/x-stuffit                          sit
+application/x-stuffitx                         sitx
+application/x-subrip                           srt
+application/x-sv4cpio                          sv4cpio
+application/x-sv4crc                           sv4crc
+application/x-t3vm-image                       t3
+application/x-tads                             gam
+application/x-tar                              tar
+application/x-tcl                              tcl
+application/x-tex                              tex
+application/x-tex-tfm                          tfm
+application/x-texinfo                          texinfo texi
+application/x-tgif                             obj
+application/x-ustar                            ustar
+application/x-wais-source                      src
+application/x-x509-ca-cert                     der crt
+application/x-xfig                             fig
+application/x-xliff+xml                                xlf
+application/x-xpinstall                                xpi
+application/x-xz                               xz
+application/x-zmachine                         z1 z2 z3 z4 z5 z6 z7 z8
+# application/x400-bp
+application/xaml+xml                           xaml
+# application/xcap-att+xml
+# application/xcap-caps+xml
+application/xcap-diff+xml                      xdf
+# application/xcap-el+xml
+# application/xcap-error+xml
+# application/xcap-ns+xml
+# application/xcon-conference-info-diff+xml
+# application/xcon-conference-info+xml
+application/xenc+xml                           xenc
+application/xhtml+xml                          xhtml xht
+# application/xhtml-voice+xml
+application/xml                                        xml xsl
+application/xml-dtd                            dtd
+# application/xml-external-parsed-entity
+# application/xmpp+xml
+application/xop+xml                            xop
+application/xproc+xml                          xpl
+application/xslt+xml                           xslt
+application/xspf+xml                           xspf
+application/xv+xml                             mxml xhvml xvml xvm
+application/yang                               yang
+application/yin+xml                            yin
+application/zip                                        zip
+# audio/1d-interleaved-parityfec
+# audio/32kadpcm
+# audio/3gpp
+# audio/3gpp2
+# audio/ac3
+audio/adpcm                                    adp
+# audio/amr
+# audio/amr-wb
+# audio/amr-wb+
+# audio/asc
+# audio/atrac-advanced-lossless
+# audio/atrac-x
+# audio/atrac3
+audio/basic                                    au snd
+# audio/bv16
+# audio/bv32
+# audio/clearmode
+# audio/cn
+# audio/dat12
+# audio/dls
+# audio/dsr-es201108
+# audio/dsr-es202050
+# audio/dsr-es202211
+# audio/dsr-es202212
+# audio/dv
+# audio/dvi4
+# audio/eac3
+# audio/evrc
+# audio/evrc-qcp
+# audio/evrc0
+# audio/evrc1
+# audio/evrcb
+# audio/evrcb0
+# audio/evrcb1
+# audio/evrcwb
+# audio/evrcwb0
+# audio/evrcwb1
+# audio/example
+# audio/fwdred
+# audio/g719
+# audio/g722
+# audio/g7221
+# audio/g723
+# audio/g726-16
+# audio/g726-24
+# audio/g726-32
+# audio/g726-40
+# audio/g728
+# audio/g729
+# audio/g7291
+# audio/g729d
+# audio/g729e
+# audio/gsm
+# audio/gsm-efr
+# audio/gsm-hr-08
+# audio/ilbc
+# audio/ip-mr_v2.5
+# audio/isac
+# audio/l16
+# audio/l20
+# audio/l24
+# audio/l8
+# audio/lpc
+audio/midi                                     mid midi kar rmi
+# audio/mobile-xmf
+audio/mp4                                      mp4a
+# audio/mp4a-latm
+audio/mp4a-latm                                        m4a m4p
+# audio/mpa
+# audio/mpa-robust
+audio/mpeg                                     mpga mp2 mp2a mp3 m2a m3a
+# audio/mpeg4-generic
+# audio/musepack
+audio/ogg                                      oga ogg spx
+# audio/opus
+# audio/parityfec
+# audio/pcma
+# audio/pcma-wb
+# audio/pcmu-wb
+# audio/pcmu
+# audio/prs.sid
+# audio/qcelp
+# audio/red
+# audio/rtp-enc-aescm128
+# audio/rtp-midi
+# audio/rtx
+audio/s3m                                      s3m
+audio/silk                                     sil
+# audio/smv
+# audio/smv0
+# audio/smv-qcp
+# audio/sp-midi
+# audio/speex
+# audio/t140c
+# audio/t38
+# audio/telephone-event
+# audio/tone
+# audio/uemclip
+# audio/ulpfec
+# audio/vdvi
+# audio/vmr-wb
+# audio/vnd.3gpp.iufp
+# audio/vnd.4sb
+# audio/vnd.audiokoz
+# audio/vnd.celp
+# audio/vnd.cisco.nse
+# audio/vnd.cmles.radio-events
+# audio/vnd.cns.anp1
+# audio/vnd.cns.inf1
+audio/vnd.dece.audio                           uva uvva
+audio/vnd.digital-winds                                eol
+# audio/vnd.dlna.adts
+# audio/vnd.dolby.heaac.1
+# audio/vnd.dolby.heaac.2
+# audio/vnd.dolby.mlp
+# audio/vnd.dolby.mps
+# audio/vnd.dolby.pl2
+# audio/vnd.dolby.pl2x
+# audio/vnd.dolby.pl2z
+# audio/vnd.dolby.pulse.1
+audio/vnd.dra                                  dra
+audio/vnd.dts                                  dts
+audio/vnd.dts.hd                               dtshd
+# audio/vnd.dvb.file
+# audio/vnd.everad.plj
+# audio/vnd.hns.audio
+audio/vnd.lucent.voice                         lvp
+audio/vnd.ms-playready.media.pya               pya
+# audio/vnd.nokia.mobile-xmf
+# audio/vnd.nortel.vbk
+audio/vnd.nuera.ecelp4800                      ecelp4800
+audio/vnd.nuera.ecelp7470                      ecelp7470
+audio/vnd.nuera.ecelp9600                      ecelp9600
+# audio/vnd.octel.sbc
+# audio/vnd.qcelp
+# audio/vnd.rhetorex.32kadpcm
+audio/vnd.rip                                  rip
+# audio/vnd.sealedmedia.softseal.mpeg
+# audio/vnd.vmx.cvsd
+# audio/vorbis
+# audio/vorbis-config
+audio/webm                                     weba
+audio/x-aac                                    aac
+audio/x-aiff                                   aif aiff aifc
+audio/x-caf                                    caf
+audio/x-flac                                   flac
+audio/x-matroska                               mka
+audio/x-mpegurl                                        m3u
+audio/x-ms-wax                                 wax
+audio/x-ms-wma                                 wma
+audio/x-pn-realaudio                           ram ra
+audio/x-pn-realaudio-plugin                    rmp
+# audio/x-tta
+audio/x-wav                                    wav
+audio/xm                                       xm
+chemical/x-cdx                                 cdx
+chemical/x-cif                                 cif
+chemical/x-cmdf                                        cmdf
+chemical/x-cml                                 cml
+chemical/x-csml                                        csml
+# chemical/x-pdb
+chemical/x-xyz                                 xyz
+image/bmp                                      bmp
+image/cgm                                      cgm
+# image/example
+# image/fits
+image/g3fax                                    g3
+image/gif                                      gif
+image/ief                                      ief
+# image/jp2
+image/jp2                                      jp2
+image/jpeg                                     jpeg jpg jpe
+# image/jpm
+# image/jpx
+image/ktx                                      ktx
+# image/naplps
+image/pict                                     pict pic pct
+image/png                                      png
+image/prs.btif                                 btif
+# image/prs.pti
+image/sgi                                      sgi
+image/svg+xml                                  svg svgz
+# image/t38
+image/tiff                                     tiff tif
+# image/tiff-fx
+image/vnd.adobe.photoshop                      psd
+# image/vnd.cns.inf2
+image/vnd.dece.graphic                         uvi uvvi uvg uvvg
+image/vnd.dvb.subtitle                         sub
+image/vnd.djvu                                 djvu djv
+image/vnd.dwg                                  dwg
+image/vnd.dxf                                  dxf
+image/vnd.fastbidsheet                         fbs
+image/vnd.fpx                                  fpx
+image/vnd.fst                                  fst
+image/vnd.fujixerox.edmics-mmr                 mmr
+image/vnd.fujixerox.edmics-rlc                 rlc
+# image/vnd.globalgraphics.pgb
+# image/vnd.microsoft.icon
+# image/vnd.mix
+image/vnd.ms-modi                              mdi
+image/vnd.ms-photo                             wdp
+image/vnd.net-fpx                              npx
+# image/vnd.radiance
+# image/vnd.sealed.png
+# image/vnd.sealedmedia.softseal.gif
+# image/vnd.sealedmedia.softseal.jpg
+# image/vnd.svf
+image/vnd.wap.wbmp                             wbmp
+image/vnd.xiff                                 xif
+image/webp                                     webp
+image/x-3ds                                    3ds
+image/x-cmu-raster                             ras
+image/x-cmx                                    cmx
+image/x-freehand                               fh fhc fh4 fh5 fh7
+image/x-icon                                   ico
+image/x-macpaint                               pntg pnt mac
+image/x-mrsid-image                            sid
+image/x-pcx                                    pcx
+image/x-pict                                   pic pct
+image/x-portable-anymap                                pnm
+image/x-portable-bitmap                                pbm
+image/x-portable-graymap                       pgm
+image/x-portable-pixmap                                ppm
+image/x-quicktime                              qtif qti
+image/x-rgb                                    rgb
+image/x-tga                                    tga
+image/x-xbitmap                                        xbm
+image/x-xpixmap                                        xpm
+image/x-xwindowdump                            xwd
+# message/cpim
+# message/delivery-status
+# message/disposition-notification
+# message/example
+# message/external-body
+# message/feedback-report
+# message/global
+# message/global-delivery-status
+# message/global-disposition-notification
+# message/global-headers
+# message/http
+# message/imdn+xml
+# message/news
+# message/partial
+message/rfc822                                 eml mime
+# message/s-http
+# message/sip
+# message/sipfrag
+# message/tracking-status
+# message/vnd.si.simp
+# model/example
+model/iges                                     igs iges
+model/mesh                                     msh mesh silo
+model/vnd.collada+xml                          dae
+model/vnd.dwf                                  dwf
+# model/vnd.flatland.3dml
+model/vnd.gdl                                  gdl
+# model/vnd.gs-gdl
+# model/vnd.gs.gdl
+model/vnd.gtw                                  gtw
+# model/vnd.moml+xml
+model/vnd.mts                                  mts
+# model/vnd.parasolid.transmit.binary
+# model/vnd.parasolid.transmit.text
+model/vnd.vtu                                  vtu
+model/vrml                                     wrl vrml
+model/x3d+binary                               x3db x3dbz
+model/x3d+vrml                                 x3dv x3dvz
+model/x3d+xml                                  x3d x3dz
+# multipart/alternative
+# multipart/appledouble
+# multipart/byteranges
+# multipart/digest
+# multipart/encrypted
+# multipart/example
+# multipart/form-data
+# multipart/header-set
+# multipart/mixed
+# multipart/parallel
+# multipart/related
+# multipart/report
+# multipart/signed
+# multipart/voice-message
+text/cache-manifest                            manifest
+# text/1d-interleaved-parityfec
+text/cache-manifest                            appcache
+text/calendar                                  ics ifb
+text/css                                       css
+text/csv                                       csv
+# text/directory
+# text/dns
+# text/ecmascript
+# text/enriched
+# text/example
+# text/fwdred
+text/html                                      html htm
+# text/javascript
+text/n3                                                n3
+# text/parityfec
+text/plain                                     txt text conf def list log in
+# text/prs.fallenstein.rst
+text/prs.lines.tag                             dsc
+# text/vnd.radisys.msml-basic-layout
+# text/red
+# text/rfc822-headers
+text/richtext                                  rtx
+# text/rtf
+# text/rtp-enc-aescm128
+# text/rtx
+text/sgml                                      sgml sgm
+# text/t140
+text/tab-separated-values                      tsv
+text/troff                                     t tr roff man me ms
+text/turtle                                    ttl
+# text/ulpfec
+text/uri-list                                  uri uris urls
+text/vcard                                     vcard
+# text/vnd.abc
+text/vnd.curl                                  curl
+text/vnd.curl.dcurl                            dcurl
+text/vnd.curl.scurl                            scurl
+text/vnd.curl.mcurl                            mcurl
+# text/vnd.dmclientscript
+text/vnd.dvb.subtitle                          sub
+# text/vnd.esmertec.theme-descriptor
+text/vnd.fly                                   fly
+text/vnd.fmi.flexstor                          flx
+text/vnd.graphviz                              gv
+text/vnd.in3d.3dml                             3dml
+text/vnd.in3d.spot                             spot
+# text/vnd.iptc.newsml
+# text/vnd.iptc.nitf
+# text/vnd.latex-z
+# text/vnd.motorola.reflex
+# text/vnd.ms-mediapackage
+# text/vnd.net2phone.commcenter.command
+# text/vnd.si.uricatalogue
+text/vnd.sun.j2me.app-descriptor               jad
+# text/vnd.trolltech.linguist
+# text/vnd.wap.si
+# text/vnd.wap.sl
+text/vnd.wap.wml                               wml
+text/vnd.wap.wmlscript                         wmls
+text/x-asm                                     s asm
+text/x-c                                       c cc cxx cpp h hh dic
+text/x-fortran                                 f for f77 f90
+text/x-java-source                             java
+text/x-opml                                    opml
+text/x-pascal                                  p pas
+text/x-nfo                                     nfo
+text/x-setext                                  etx
+text/x-sfv                                     sfv
+text/x-uuencode                                        uu
+text/x-vcalendar                               vcs
+text/x-vcard                                   vcf
+# text/xml
+# text/xml-external-parsed-entity
+# video/1d-interleaved-parityfec
+video/3gpp                                     3gp
+# video/3gpp-tt
+video/3gpp2                                    3g2
+# video/bmpeg
+# video/bt656
+# video/celb
+# video/dv
+# video/example
+video/h261                                     h261
+video/h263                                     h263
+# video/h263-1998
+# video/h263-2000
+video/h264                                     h264
+# video/h264-rcdo
+# video/h264-svc
+video/jpeg                                     jpgv
+# video/jpeg2000
+video/jpm                                      jpm jpgm
+video/mj2                                      mj2 mjp2
+# video/mp1s
+# video/mp2p
+# video/mp4v-es
+video/mp2t                                     ts
+video/mp4                                      mp4 mp4v mpg4 m4v
+video/mpeg                                     mpeg mpg mpe m1v m2v
+# video/mpeg4-generic
+# video/mpv
+# video/nv
+video/ogg                                      ogv
+# video/parityfec
+# video/pointer
+video/quicktime                                        qt mov
+# video/raw
+# video/rtp-enc-aescm128
+# video/rtx
+# video/smpte292m
+# video/ulpfec
+# video/vc1
+# video/vnd.cctv
+video/vnd.dece.hd                              uvh uvvh
+video/vnd.dece.mobile                          uvm uvvm
+# video/vnd.dece.mp4
+video/vnd.dece.pd                              uvp uvvp
+video/vnd.dece.sd                              uvs uvvs
+video/vnd.dece.video                           uvv uvvv
+# video/vnd.directv.mpeg
+# video/vnd.directv.mpeg-tts
+# video/vnd.dlna.mpeg-tts
+video/vnd.dvb.file                             dvb
+video/vnd.fvt                                  fvt
+# video/vnd.hns.video
+# video/vnd.iptvforum.1dparityfec-1010
+# video/vnd.iptvforum.1dparityfec-2005
+# video/vnd.iptvforum.2dparityfec-1010
+# video/vnd.iptvforum.2dparityfec-2005
+# video/vnd.iptvforum.ttsavc
+# video/vnd.iptvforum.ttsmpeg2
+# video/vnd.motorola.video
+# video/vnd.motorola.videop
+video/vnd.mpegurl                              mxu m4u
+video/vnd.ms-playready.media.pyv               pyv
+# video/vnd.nokia.interleaved-multimedia
+# video/vnd.nokia.videovoip
+# video/vnd.objectvideo
+# video/vnd.sealed.mpeg1
+# video/vnd.sealed.mpeg4
+# video/vnd.sealed.swf
+# video/vnd.sealedmedia.softseal.mov
+video/vnd.uvvu.mp4                             uvu uvvu
+video/vnd.vivo                                 viv
+video/x-dv                                     dv dif
+video/webm                                     webm
+video/x-f4v                                    f4v
+video/x-fli                                    fli
+video/x-flv                                    flv
+video/x-m4v                                    m4v
+video/x-matroska                               mkv mk3d mks
+video/x-mng                                    mng
+video/x-ms-asf                                 asf asx
+video/x-ms-vob                                 vob
+video/x-ms-wm                                  wm
+video/x-ms-wmv                                 wmv
+video/x-ms-wmx                                 wmx
+video/x-ms-wvx                                 wvx
+video/x-msvideo                                        avi
+video/x-sgi-movie                              movie
+video/x-smv                                    smv
+x-conference/x-cooltalk                                ice
diff --git a/misc/nacl/testzip.proto b/misc/nacl/testzip.proto
new file mode 100644 (file)
index 0000000..57c2e1b
--- /dev/null
@@ -0,0 +1,116 @@
+etc    src=/etc
+       mime.types      src=../misc/nacl/testdata/mime.types
+       resolv.conf     src=../misc/nacl/testdata/empty
+       group   src=../misc/nacl/testdata/group
+       passwd  src=../misc/nacl/testdata/empty
+       hosts   src=../misc/nacl/testdata/hosts
+       services
+usr    src=../misc/nacl/testdata
+       bin
+go     src=..
+       src
+               cmd
+                       gofmt
+                               testdata
+                                       +
+                       link
+                               testdata
+                                       +
+               pkg
+                       archive
+                               tar
+                                       testdata
+                                               +
+                               zip
+                                       testdata
+                                               +
+                       compress
+                               bzip2
+                                       testdata
+                                               +
+                               flate
+                               gzip
+                                       testdata
+                                               +
+                               lzw
+                               testdata
+                                       +
+                               zlib
+                       crypto
+                               rsa
+                                       testdata
+                                               +
+                               tls
+                                       testdata
+                                               +
+                       debug
+                               dwarf
+                                       testdata
+                                               +
+                               elf
+                                       testdata
+                                               +
+                               macho
+                                       testdata
+                                               +
+                               pe
+                                       testdata
+                                               +
+                               plan9obj
+                                       testdata
+                                               +
+                       go
+                               build
+                                       +
+                               doc
+                                       testdata
+                                               +
+                               format
+                                       +
+                               parser
+                                       +
+                               printer
+                                       +
+                       image
+                               testdata
+                                       +
+                               draw
+                               gif
+                               jpeg
+                               png
+                                       testdata
+                                               +
+                       io
+                               +
+                       mime
+                               testdata
+                                       +
+                               multipart
+                                       testdata
+                                               +
+                       net
+                               http
+                                       +
+                               testdata
+                                       +
+                       os
+                               +
+                       path
+                               filepath
+                                       +
+                       regexp
+                               testdata
+                                       +
+                       strconv
+                               testdata
+                                       +
+                       text
+                               template
+                                       testdata
+                                               +
+       lib
+               time
+                       zoneinfo.zip
+
+       test
+               +
index 488ca4679e3c58bb1d4c611e7706a5aebf7f579d..5d994d3d0dae97f070d4299a90443519d387ffd4 100755 (executable)
@@ -9,7 +9,7 @@ if [ ! -f make.bash ]; then
        exit 1
 fi
 OLDPATH="$PATH"
-. ./make.bash --no-banner
+. ./make.bash "$@" --no-banner
 bash run.bash --no-rebuild
 PATH="$OLDPATH"
 $GOTOOLDIR/dist banner  # print build info
index 1b7f8b5f54b0d7ade42806fba52d028725f9a2b2..b278d08ce2aded4c564b896f606bd3e42d378b5f 100644 (file)
@@ -92,6 +92,10 @@ func testAddr2Line(t *testing.T, exepath, addr string) {
 
 // This is line 93. The test depends on that.
 func TestAddr2Line(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        syms := loadSyms(t)
 
        tmpDir, err := ioutil.TempDir("", "TestAddr2Line")
index eab0732794f35b1586a0d7b670c2860b2e27813b..f4e47a42da0d3dcc03f1fe000d7d498488bbc036 100644 (file)
@@ -55,6 +55,10 @@ func checkSymbols(t *testing.T, nmoutput []byte) {
 }
 
 func TestNM(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        tmpDir, err := ioutil.TempDir("", "TestNM")
        if err != nil {
                t.Fatal("TempDir failed: ", err)
index 6ad74c87dcac91a54b913a444dd0cd76a2ed2fcb..354e5d407acfcd1212e1897f836c06332e948c38 100644 (file)
@@ -19,6 +19,10 @@ import (
 )
 
 func loadSyms(t *testing.T) map[string]string {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        cmd := exec.Command("go", "tool", "nm", os.Args[0])
        out, err := cmd.CombinedOutput()
        if err != nil {
@@ -40,6 +44,10 @@ func loadSyms(t *testing.T) map[string]string {
 }
 
 func runObjDump(t *testing.T, exe, startaddr, endaddr string) (path, lineno string) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        cmd := exec.Command(exe, os.Args[0], startaddr, endaddr)
        out, err := cmd.CombinedOutput()
        if err != nil {
@@ -67,7 +75,7 @@ func runObjDump(t *testing.T, exe, startaddr, endaddr string) (path, lineno stri
        return f[0], f[1]
 }
 
-func testObjDump(t *testing.T, exe, startaddr, endaddr string) {
+func testObjDump(t *testing.T, exe, startaddr, endaddr string, line int) {
        srcPath, srcLineNo := runObjDump(t, exe, startaddr, endaddr)
        fi1, err := os.Stat("objdump_test.go")
        if err != nil {
@@ -80,13 +88,13 @@ func testObjDump(t *testing.T, exe, startaddr, endaddr string) {
        if !os.SameFile(fi1, fi2) {
                t.Fatalf("objdump_test.go and %s are not same file", srcPath)
        }
-       if srcLineNo != "89" {
-               t.Fatalf("line number = %v; want 89", srcLineNo)
+       if srcLineNo != fmt.Sprint(line) {
+               t.Fatalf("line number = %v; want %d", srcLineNo, line)
        }
 }
 
-// This is line 88. The test depends on that.
 func TestObjDump(t *testing.T) {
+       _, _, line, _ := runtime.Caller(0)
        syms := loadSyms(t)
 
        tmp, exe := buildObjdump(t)
@@ -98,11 +106,15 @@ func TestObjDump(t *testing.T) {
                t.Fatalf("invalid start address %v: %v", startaddr, err)
        }
        endaddr := fmt.Sprintf("%x", addr+10)
-       testObjDump(t, exe, startaddr, endaddr)
-       testObjDump(t, exe, "0x"+startaddr, "0x"+endaddr)
+       testObjDump(t, exe, startaddr, endaddr, line-1)
+       testObjDump(t, exe, "0x"+startaddr, "0x"+endaddr, line-1)
 }
 
 func buildObjdump(t *testing.T) (tmp, exe string) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        tmp, err := ioutil.TempDir("", "TestObjDump")
        if err != nil {
                t.Fatal("TempDir failed: ", err)
index e634c86f767f2ace2a0214aaae07a21ec371cfdb..486242603a6a8df2a47576a00788cf8d84d1714b 100644 (file)
@@ -14,6 +14,7 @@ import (
        "os/exec"
        "path/filepath"
        "regexp"
+       "runtime"
        "testing"
        "time"
        "unicode/utf8"
@@ -185,6 +186,10 @@ func TestExtract(t *testing.T) {
 
 // Test that pack-created archives can be understood by the tools.
 func TestHello(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        dir := tmpDir(t)
        defer os.RemoveAll(dir)
        hello := filepath.Join(dir, "hello.go")
@@ -217,6 +222,10 @@ func TestHello(t *testing.T) {
 
 // Test that pack works with very long lines in PKGDEF.
 func TestLargeDefs(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        dir := tmpDir(t)
        defer os.RemoveAll(dir)
        large := filepath.Join(dir, "large.go")
index 0b130b668d1590cb93c0f5dd2d81e869541a55a8..d7b63ff093f0a37a4ad3d3f75c862c0000268f3c 100755 (executable)
@@ -153,6 +153,7 @@ echo "# Building compilers and Go bootstrap tool for host, $GOHOSTOS/$GOHOSTARCH
 buildall="-a"
 if [ "$1" = "--no-clean" ]; then
        buildall=""
+       shift
 fi
 ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap
 # Delay move of dist tool to now, because bootstrap may clear tool directory.
diff --git a/src/nacltest.bash b/src/nacltest.bash
new file mode 100644 (file)
index 0000000..e53f011
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+# Copyright 2014 The Go Authors.  All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# For testing Native Client on builders or locally.
+# Builds a test file system and embeds it into package syscall
+# in every generated binary.
+#
+# Assumes that sel_ldr binaries are in $PATH; see ../misc/nacl/README.
+
+set -e
+ulimit -c 0
+
+# Check GOARCH.
+naclGOARCH=${GOARCH:-386}
+case "$naclGOARCH" in
+amd64p32)
+       if ! which sel_ldr_x86_64 >/dev/null; then
+               echo 'cannot find sel_ldr_x86_64' 1>&2
+               exit 1
+       fi
+       ;;
+386)
+       if ! which sel_ldr_x86_32 >/dev/null; then
+               echo 'cannot find sel_ldr_x86_32' 1>&2
+               exit 1
+       fi
+       ;;
+*)
+       echo 'unsupported $GOARCH for nacl: '"$naclGOARCH" 1>&2
+       exit 1
+esac
+
+# Run host build to get toolchain for running zip generator.
+unset GOOS GOARCH
+if [ ! -f make.bash ]; then
+       echo 'nacl.bash must be run from $GOROOT/src' 1>&2
+       exit 1
+fi
+GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH ./make.bash
+
+# Build zip file embedded in package syscall.
+gobin=${GOBIN:-$(pwd)/../bin}
+rm -f pkg/syscall/fstest_nacl.go
+GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH $gobin/go run ../misc/nacl/mkzip.go -p syscall -r .. ../misc/nacl/testzip.proto pkg/syscall/fstest_nacl.go
+
+# Run standard build and tests.
+export PATH=$(pwd)/../misc/nacl:$PATH
+GOOS=nacl GOARCH=$naclGOARCH ./all.bash --no-clean
index ce9062c4b4b4f8f65c17390e85a1dc1bb6edfa75..2fd54c78f70c3fd1a943c08cc58850d4247461c8 100644 (file)
@@ -22,6 +22,7 @@ import (
        "net"
        "os/exec"
        "reflect"
+       "runtime"
        "testing"
        "time"
 )
@@ -727,6 +728,10 @@ func TestParsePEMCRL(t *testing.T) {
 }
 
 func TestImports(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        if err := exec.Command("go", "run", "x509_test_import.go").Run(); err != nil {
                t.Errorf("failed to run x509_test_import.go: %s", err)
        }
index 94f64671c1df495d61dd6a50ec993a266c019799..18c4803e71b55374881674429d8e49d4adef3a9b 100644 (file)
@@ -16,6 +16,7 @@ import (
        "net/http"
        "net/http/httptest"
        "os"
+       "runtime"
        "testing"
        "time"
 )
@@ -23,6 +24,10 @@ import (
 // This test is a CGI host (testing host.go) that runs its own binary
 // as a child process testing the other half of CGI (child.go).
 func TestHostingOurselves(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        h := &Handler{
                Path: os.Args[0],
                Root: "/test.go",
@@ -87,6 +92,10 @@ func (w *limitWriter) Write(p []byte) (n int, err error) {
 // If there's an error copying the child's output to the parent, test
 // that we kill the child.
 func TestKillChildAfterCopyError(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        defer func() { testHookStartProcess = nil }()
        proc := make(chan *os.Process, 1)
        testHookStartProcess = func(p *os.Process) {
@@ -130,6 +139,10 @@ func TestKillChildAfterCopyError(t *testing.T) {
 // Test that a child handler writing only headers works.
 // golang.org/issue/7196
 func TestChildOnlyHeaders(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        h := &Handler{
                Path: os.Args[0],
                Root: "/test.go",
index 51f94acd8cf6ea09321202ed4f50b4d2d28c032f..b6e4e76f93045a9d70847c1d551d53d89193491b 100644 (file)
@@ -40,7 +40,7 @@ func packetConnTestData(t *testing.T, net string, i int) ([]byte, func()) {
                return b, nil
        case "unixgram":
                switch runtime.GOOS {
-               case "plan9", "windows":
+               case "nacl", "plan9", "windows":
                        return nil, func() {
                                t.Logf("skipping %q test on %q", net, runtime.GOOS)
                        }
index 47ae0efde39a64e796e3f11cdafbe525c788a5b2..12856b6c311cf038a6988be5c5e8ea38787efd96 100644 (file)
@@ -236,7 +236,7 @@ func TestIPConnSpecificMethods(t *testing.T) {
 
 func TestUnixListenerSpecificMethods(t *testing.T) {
        switch runtime.GOOS {
-       case "plan9", "windows":
+       case "nacl", "plan9", "windows":
                t.Skipf("skipping test on %q", runtime.GOOS)
        }
 
@@ -278,7 +278,7 @@ func TestUnixListenerSpecificMethods(t *testing.T) {
 
 func TestUnixConnSpecificMethods(t *testing.T) {
        switch runtime.GOOS {
-       case "plan9", "windows":
+       case "nacl", "plan9", "windows":
                t.Skipf("skipping test on %q", runtime.GOOS)
        }
 
index 86ebfb3e9561b36442c55aa337b10923bcaa375c..6a2bb924329d37fd65653cb01bd7b9ef917e0502 100644 (file)
@@ -16,7 +16,7 @@ import (
 func skipServerTest(net, unixsotype, addr string, ipv6, ipv4map, linuxOnly bool) bool {
        switch runtime.GOOS {
        case "linux":
-       case "plan9", "windows":
+       case "nacl", "plan9", "windows":
                // "unix" sockets are not supported on Windows and Plan 9.
                if net == unixsotype {
                        return true
index 2c56947b6eddc9a5b2c33e9ee145e9f4ca689c2b..9ef0c4d15cc1f77fab13200f7dd241ae0ed20de3 100644 (file)
@@ -120,6 +120,9 @@ func TestReadTimeout(t *testing.T) {
                        t.Fatalf("Read: expected err %v, got %v", errClosing, err)
                }
        default:
+               if err == io.EOF && runtime.GOOS == "nacl" { // close enough; golang.org/issue/8044
+                       break
+               }
                if err != errClosing {
                        t.Fatalf("Read: expected err %v, got %v", errClosing, err)
                }
@@ -708,7 +711,7 @@ func TestProlongTimeout(t *testing.T) {
 
 func TestDeadlineRace(t *testing.T) {
        switch runtime.GOOS {
-       case "plan9":
+       case "nacl", "plan9":
                t.Skipf("skipping test on %q", runtime.GOOS)
        }
 
index 24b6bf9da7208bd8e81123ba9e1a421c7ddab0bb..05643ddf9aeae6dcdb1989f22a1c8b6d29b80cb8 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !plan9,!windows
+// +build !nacl,!plan9,!windows
 
 package net
 
index 7a95579f15dde771a5239a92397fb5151a53fa9c..6f77ac38aebd6571bb1e61737bbddc5ab0d5ec6b 100644 (file)
@@ -27,7 +27,10 @@ import (
        "time"
 )
 
-func helperCommand(s ...string) *exec.Cmd {
+func helperCommand(t *testing.T, s ...string) *exec.Cmd {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
        cs := []string{"-test.run=TestHelperProcess", "--"}
        cs = append(cs, s...)
        cmd := exec.Command(os.Args[0], cs...)
@@ -36,7 +39,7 @@ func helperCommand(s ...string) *exec.Cmd {
 }
 
 func TestEcho(t *testing.T) {
-       bs, err := helperCommand("echo", "foo bar", "baz").Output()
+       bs, err := helperCommand(t, "echo", "foo bar", "baz").Output()
        if err != nil {
                t.Errorf("echo: %v", err)
        }
@@ -75,7 +78,7 @@ func TestCommandRelativeName(t *testing.T) {
 func TestCatStdin(t *testing.T) {
        // Cat, testing stdin and stdout.
        input := "Input string\nLine 2"
-       p := helperCommand("cat")
+       p := helperCommand(t, "cat")
        p.Stdin = strings.NewReader(input)
        bs, err := p.Output()
        if err != nil {
@@ -89,7 +92,7 @@ func TestCatStdin(t *testing.T) {
 
 func TestCatGoodAndBadFile(t *testing.T) {
        // Testing combined output and error values.
-       bs, err := helperCommand("cat", "/bogus/file.foo", "exec_test.go").CombinedOutput()
+       bs, err := helperCommand(t, "cat", "/bogus/file.foo", "exec_test.go").CombinedOutput()
        if _, ok := err.(*exec.ExitError); !ok {
                t.Errorf("expected *exec.ExitError from cat combined; got %T: %v", err, err)
        }
@@ -117,7 +120,7 @@ func TestNoExistBinary(t *testing.T) {
 
 func TestExitStatus(t *testing.T) {
        // Test that exit values are returned correctly
-       cmd := helperCommand("exit", "42")
+       cmd := helperCommand(t, "exit", "42")
        err := cmd.Run()
        want := "exit status 42"
        switch runtime.GOOS {
@@ -140,7 +143,7 @@ func TestPipes(t *testing.T) {
                }
        }
        // Cat, testing stdin and stdout.
-       c := helperCommand("pipetest")
+       c := helperCommand(t, "pipetest")
        stdin, err := c.StdinPipe()
        check("StdinPipe", err)
        stdout, err := c.StdoutPipe()
@@ -193,7 +196,7 @@ func TestStdinClose(t *testing.T) {
                        t.Fatalf("%s: %v", what, err)
                }
        }
-       cmd := helperCommand("stdinClose")
+       cmd := helperCommand(t, "stdinClose")
        stdin, err := cmd.StdinPipe()
        check("StdinPipe", err)
        // Check that we can access methods of the underlying os.File.`
@@ -313,7 +316,7 @@ func TestExtraFilesFDShuffle(t *testing.T) {
        // Moving this test case around within the overall tests may
        // affect the FDs obtained and hence the checks to catch these cases.
        npipes := 2
-       c := helperCommand("extraFilesAndPipes", strconv.Itoa(npipes+1))
+       c := helperCommand(t, "extraFilesAndPipes", strconv.Itoa(npipes+1))
        rd, wr, _ := os.Pipe()
        defer rd.Close()
        if rd.Fd() != 3 {
@@ -440,7 +443,7 @@ func TestExtraFiles(t *testing.T) {
                t.Fatalf("Seek: %v", err)
        }
 
-       c := helperCommand("read3")
+       c := helperCommand(t, "read3")
        var stdout, stderr bytes.Buffer
        c.Stdout = &stdout
        c.Stderr = &stderr
@@ -483,10 +486,10 @@ func TestExtraFilesRace(t *testing.T) {
 
        for i := 0; i < 10; i++ {
                la := listen()
-               ca := helperCommand("describefiles")
+               ca := helperCommand(t, "describefiles")
                ca.ExtraFiles = []*os.File{listenerFile(la)}
                lb := listen()
-               cb := helperCommand("describefiles")
+               cb := helperCommand(t, "describefiles")
                cb.ExtraFiles = []*os.File{listenerFile(lb)}
                ares := make(chan string)
                bres := make(chan string)
index 6c2caa94aa93269c4da0691117308ad00e9884e9..16d5984e964881016b8449e542fcbf3262d9c26d 100644 (file)
@@ -496,10 +496,10 @@ func TestHardLink(t *testing.T) {
        }
 }
 
-func TestSymLink(t *testing.T) {
-       // Symlinks are not supported under windows or Plan 9.
-       if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
-               return
+func TestSymlink(t *testing.T) {
+       switch runtime.GOOS {
+       case "windows", "plan9", "nacl":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
        from, to := "symlinktestfrom", "symlinktestto"
        Remove(from) // Just in case.
@@ -559,9 +559,9 @@ func TestSymLink(t *testing.T) {
 }
 
 func TestLongSymlink(t *testing.T) {
-       // Symlinks are not supported under windows or Plan 9.
-       if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
-               return
+       switch runtime.GOOS {
+       case "windows", "plan9", "nacl":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
        s := "0123456789abcdef"
        // Long, but not too long: a common limit is 255.
@@ -630,6 +630,10 @@ func exec(t *testing.T, dir, cmd string, args []string, expect string) {
 }
 
 func TestStartProcess(t *testing.T) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        var dir, cmd string
        var args []string
        if runtime.GOOS == "windows" {
@@ -703,8 +707,10 @@ func TestFTruncate(t *testing.T) {
        checkSize(t, f, 1024)
        f.Truncate(0)
        checkSize(t, f, 0)
-       f.Write([]byte("surprise!"))
-       checkSize(t, f, 13+9) // wrote at offset past where hello, world was.
+       _, err := f.Write([]byte("surprise!"))
+       if err == nil {
+               checkSize(t, f, 13+9) // wrote at offset past where hello, world was.
+       }
 }
 
 func TestTruncate(t *testing.T) {
@@ -721,8 +727,10 @@ func TestTruncate(t *testing.T) {
        checkSize(t, f, 1024)
        Truncate(f.Name(), 0)
        checkSize(t, f, 0)
-       f.Write([]byte("surprise!"))
-       checkSize(t, f, 13+9) // wrote at offset past where hello, world was.
+       _, err := f.Write([]byte("surprise!"))
+       if err == nil {
+               checkSize(t, f, 13+9) // wrote at offset past where hello, world was.
+       }
 }
 
 // Use TempDir() to make sure we're on a local file system,
@@ -757,13 +765,13 @@ func TestChtimes(t *testing.T) {
        }
        postStat := st
 
-       /* Plan 9:
+       /* Plan 9, NaCl:
                Mtime is the time of the last change of content.  Similarly, atime is set whenever the
            contents are accessed; also, it is set whenever mtime is set.
        */
        pat := Atime(postStat)
        pmt := postStat.ModTime()
-       if !pat.Before(at) && runtime.GOOS != "plan9" {
+       if !pat.Before(at) && runtime.GOOS != "plan9" && runtime.GOOS != "nacl" {
                t.Errorf("AccessTime didn't go backwards; was=%d, after=%d", at, pat)
        }
 
@@ -965,8 +973,9 @@ func run(t *testing.T, cmd []string) string {
 func TestHostname(t *testing.T) {
        // There is no other way to fetch hostname on windows, but via winapi.
        // On Plan 9 it is can be taken from #c/sysname as Hostname() does.
-       if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
-               return
+       switch runtime.GOOS {
+       case "windows", "plan9", "nacl":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
 
        // Check internal Hostname() against the output of /bin/hostname.
@@ -1225,6 +1234,10 @@ func TestReadAtEOF(t *testing.T) {
 }
 
 func testKillProcess(t *testing.T, processKiller func(p *Process)) {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        dir, err := ioutil.TempDir("", "go-build")
        if err != nil {
                t.Fatalf("Failed to create temp directory: %v", err)
index 27abf59826f729469869df9a700fee8c3f13ce82..3af21cde9afbf15a2813a8c3d25a20201c592fbf 100644 (file)
@@ -167,8 +167,9 @@ func TestRemoveAll(t *testing.T) {
 }
 
 func TestMkdirAllWithSymlink(t *testing.T) {
-       if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
-               t.Skip("Skipping test: symlinks don't exist under Windows/Plan 9")
+       switch runtime.GOOS {
+       case "nacl", "plan9", "windows":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
 
        tmpDir, err := ioutil.TempDir("", "TestMkdirAllWithSymlink-")
index daec81532dd07af4260d78f320045be9c568809d..382692eaa435ebc35c557a42ad0b5e527e61f9bc 100644 (file)
@@ -167,11 +167,10 @@ var globSymlinkTests = []struct {
 
 func TestGlobSymlink(t *testing.T) {
        switch runtime.GOOS {
-       case "windows", "plan9":
-               // The tests below are Unix specific so we skip plan9, which does not
-               // support symlinks, and windows.
-               t.Skipf("skipping test on %v", runtime.GOOS)
+       case "nacl", "plan9", "windows":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
+
        tmpDir, err := ioutil.TempDir("", "globsymlink")
        if err != nil {
                t.Fatal("creating temp dir:", err)
index 1adc8cb072f781bc0d43973b8a1087f190dba2ed..819bd217cc8c77803823e71655b71b559452824b 100644 (file)
@@ -691,8 +691,9 @@ func simpleJoin(dir, path string) string {
 }
 
 func TestEvalSymlinks(t *testing.T) {
-       if runtime.GOOS == "plan9" {
-               t.Skip("Skipping test: symlinks don't exist under Plan 9")
+       switch runtime.GOOS {
+       case "nacl", "plan9":
+               t.Skipf("skipping on %s", runtime.GOOS)
        }
 
        tmpDir, err := ioutil.TempDir("", "evalsymlink")
index 775ffccf14fbd03e157071926f8c137110affa63..d47f122836e9fe0dfdc802387d719941ce717e36 100644 (file)
@@ -302,7 +302,7 @@ TEXT reflect·call(SB), NOSPLIT, $0-20
        JMP     AX
 
 #define CALLFN(NAME,MAXSIZE)                   \
-TEXT runtime·NAME(SB), WRAPPER, $MAXSIZE-12;          \
+TEXT runtime·NAME(SB), WRAPPER, $MAXSIZE-16;          \
        /* copy arguments to stack */           \
        MOVL    argptr+4(FP), SI;               \
        MOVL    argsize+8(FP), CX;              \
@@ -315,7 +315,11 @@ TEXT runtime·NAME(SB), WRAPPER, $MAXSIZE-12;              \
        /* copy return values back */           \
        MOVL    argptr+4(FP), DI;               \
        MOVL    argsize+8(FP), CX;              \
+       MOVL    retoffset+12(FP), BX;           \
        MOVL    SP, SI;                         \
+       ADDL    BX, DI;                         \
+       ADDL    BX, SI;                         \
+       SUBL    BX, CX;                         \
        REP;MOVSB;                              \
        RET
 
index dbcd9486de43712ca0d6b981526b964b264f15d3..b2e846a187a2f5e37f5914ef2d91735368c5e596 100644 (file)
@@ -9,6 +9,7 @@ import (
        "os"
        "os/exec"
        "path/filepath"
+       "runtime"
        "strings"
        "testing"
        "text/template"
@@ -31,6 +32,10 @@ func testEnv(cmd *exec.Cmd) *exec.Cmd {
 }
 
 func executeTest(t *testing.T, templ string, data interface{}) string {
+       if runtime.GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        checkStaleRuntime(t)
 
        st := template.Must(template.New("crashSource").Parse(templ))
index 91f53000ca8520b20fba2579bee04724adb72c79..aba538e75546a8357b36fd14d05d7e22cb128a0a 100644 (file)
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !nacl
+
 package pprof_test
 
 import (
index 62e59c78db692e93c4f0281e5a28d483a9446857..5a9f52fe0fd1a218737518ba9f5afd3aa083e114 100644 (file)
@@ -95,6 +95,10 @@ func BenchmarkDeferMany(b *testing.B) {
 // The value reported will include the padding between runtime.gogo and the
 // next function in memory. That's fine.
 func TestRuntimeGogoBytes(t *testing.T) {
+       if GOOS == "nacl" {
+               t.Skip("skipping on nacl")
+       }
+
        dir, err := ioutil.TempDir("", "go-build")
        if err != nil {
                t.Fatalf("failed to create temp directory: %v", err)
@@ -183,6 +187,10 @@ func TestSetPanicOnFault(t *testing.T) {
 }
 
 func testSetPanicOnFault(t *testing.T, addr uintptr) {
+       if GOOS == "nacl" {
+               t.Skip("nacl doesn't seem to fault on high addresses")
+       }
+
        defer func() {
                if err := recover(); err == nil {
                        t.Fatalf("did not find error in recover")
index 876b5d757d4a92240a45da8598217550e6787945..4706c2bc4fdd5e4d05e47594c503204b31ee9cb0 100755 (executable)
@@ -34,7 +34,7 @@ fi
 
 # allow all.bash to avoid double-build of everything
 rebuild=true
-if [ "$1" = "--no-rebuild" ]; then
+if [ "$1" == "--no-rebuild" ]; then
        shift
 else
        echo '# Building packages and commands.'
@@ -178,15 +178,18 @@ go run main.go || exit 1
 ./test.bash || exit 1
 ) || exit $?
 
+[ "$GOOS" == nacl ] ||
 (xcd ../doc/progs
 time ./run || exit 1
 ) || exit $?
 
+[ "$GOOS" == nacl ] ||
 [ "$GOARCH" == arm ] ||  # uses network, fails under QEMU
 (xcd ../doc/articles/wiki
 ./test.bash || exit 1
 ) || exit $?
 
+[ "$GOOS" == nacl ] ||
 (xcd ../doc/codewalk
 time ./run || exit 1
 ) || exit $?
@@ -196,6 +199,7 @@ echo '#' ../misc/goplay
 go build ../misc/goplay
 rm -f goplay
 
+[ "$GOOS" == nacl ] ||
 [ "$GOARCH" == arm ] ||
 (xcd ../test/bench/shootout
 time ./timing.sh -test || exit 1
@@ -210,12 +214,17 @@ go test ../test/bench/go1 || exit 1
 
 (xcd ../test
 unset GOMAXPROCS
-time go run run.go || exit 1
+GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build -o runtest run.go || exit 1
+time ./runtest || exit 1
+rm -f runtest
 ) || exit $?
 
+[ "$GOOS" == nacl ] ||
+(
 echo
 echo '# Checking API compatibility.'
-time go run $GOROOT/src/cmd/api/run.go
+time go run $GOROOT/src/cmd/api/run.go || exit 1
+) || exit $?
 
 echo
 echo ALL TESTS PASSED
index de52a4fbf2eacd4f5469972cf6d1605f75b1f119..561516b8bb7a6b0508d1bc15a5fe8790cd0eaa69 100644 (file)
@@ -1,5 +1,7 @@
 // run
 
+// +build !nacl
+
 // Copyright 2011 The Go Authors.  All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
@@ -36,7 +38,7 @@ func main() {
        }
 
        runtime.ReadMemStats(memstats)
-       obj := memstats.HeapObjects - st.HeapObjects
+       obj := int64(memstats.HeapObjects - st.HeapObjects)
        if obj > N/5 {
                fmt.Println("too many objects left:", obj)
                os.Exit(1)
index 20f4f9b6a96358bb0abdf31db3a92eb6adfc0665..35aa51017a287935bad68ebb67963458feb0f1af 100644 (file)
@@ -1,5 +1,7 @@
 // run
 
+// +build !nacl
+
 // Copyright 2014 The Go Authors.  All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
@@ -273,7 +275,6 @@ TestCases:
 
                ioutil.WriteFile(filepath.Join(dir, "asm.s"), buf.Bytes(), 0666)
 
-
                cmd := exec.Command("go", "build")
                cmd.Dir = dir
                output, err := cmd.CombinedOutput()