diff options
| author | Mark Johnston <markjdb@gmail.com> | 2019-03-06 20:32:44 -0500 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-03-07 19:46:55 +0100 |
| commit | c08c1cd05c3c8e0cf6b24a0425f058c6555b82cc (patch) | |
| tree | 5398f4d613b6ba2d95b614e35a3c00d3b259657c /pkg/csource | |
| parent | 2eb2cd93e0d0050ff52de919bf7620da680b16cc (diff) | |
pkg/csource: sort sys/types.h to the top on FreeBSD
sys/types.h is a special header that is required by many other system
headers on FreeBSD.
Diffstat (limited to 'pkg/csource')
| -rw-r--r-- | pkg/csource/common.go | 4 | ||||
| -rw-r--r-- | pkg/csource/csource.go | 7 | ||||
| -rw-r--r-- | pkg/csource/options.go | 4 |
3 files changed, 11 insertions, 4 deletions
diff --git a/pkg/csource/common.go b/pkg/csource/common.go index a39d714e0..56d6a6de7 100644 --- a/pkg/csource/common.go +++ b/pkg/csource/common.go @@ -17,7 +17,9 @@ import ( ) const ( - linux = "linux" + linux = "linux" + freebsd = "freebsd" + openbsd = "openbsd" sandboxNone = "none" sandboxSetuid = "setuid" diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go index 26834dd3f..d58c361ee 100644 --- a/pkg/csource/csource.go +++ b/pkg/csource/csource.go @@ -445,19 +445,24 @@ func (ctx *context) hoistIncludes(result []byte) []byte { } result = includeRe.ReplaceAll(result, nil) // Certain linux and bsd headers are broken and go to the bottom. - var sorted, sortedBottom []string + var sorted, sortedBottom, sortedTop []string for include := range includes { if strings.Contains(include, "<linux/") { sortedBottom = append(sortedBottom, include) } else if strings.Contains(include, "<netinet/if_ether.h>") { sortedBottom = append(sortedBottom, include) + } else if ctx.target.OS == freebsd && strings.Contains(include, "<sys/types.h>") { + sortedTop = append(sortedTop, include) } else { sorted = append(sorted, include) } } + sort.Strings(sortedTop) sort.Strings(sorted) sort.Strings(sortedBottom) newResult := append([]byte{}, result[:includesStart]...) + newResult = append(newResult, strings.Join(sortedTop, "")...) + newResult = append(newResult, '\n') newResult = append(newResult, strings.Join(sorted, "")...) newResult = append(newResult, '\n') newResult = append(newResult, strings.Join(sortedBottom, "")...) diff --git a/pkg/csource/options.go b/pkg/csource/options.go index d82ff28bd..d5b396164 100644 --- a/pkg/csource/options.go +++ b/pkg/csource/options.go @@ -102,7 +102,7 @@ func (opts Options) checkLinuxOnly(OS string) error { if OS == linux { return nil } - if opts.EnableTun && !(OS == "openbsd" || OS == "freebsd") { + if opts.EnableTun && !(OS == openbsd || OS == freebsd) { return fmt.Errorf("EnableTun is not supported on %v", OS) } if opts.EnableNetDev { @@ -118,7 +118,7 @@ func (opts Options) checkLinuxOnly(OS string) error { return fmt.Errorf("EnableBinfmtMisc is not supported on %v", OS) } if opts.Sandbox == sandboxNamespace || - (opts.Sandbox == sandboxSetuid && !(OS == "openbsd" || OS == "freebsd")) || + (opts.Sandbox == sandboxSetuid && !(OS == openbsd || OS == freebsd)) || opts.Sandbox == sandboxAndroidUntrustedApp { return fmt.Errorf("Sandbox=%v is not supported on %v", opts.Sandbox, OS) } |
