Text file src/cmd/go/testdata/script/cgo_bad_directives.txt

     1  [!cgo] skip
     2  [short] skip
     3  
     4  cp x.go.txt x.go
     5  
     6  # Only allow //go:cgo_ldflag .* in cgo-generated code
     7  [compiler:gc] cp x_gc.go.txt x.go
     8  [compiler:gc] ! go build x
     9  [compiler:gc] stderr '//go:cgo_ldflag .* only allowed in cgo-generated code'
    10  
    11  # Ignore _* files
    12  rm x.go
    13  ! go build .
    14  stderr 'no Go files'
    15  cp cgo_yy.go.txt _cgo_yy.go
    16  ! go build .
    17  stderr 'no Go files' #_* files are ignored...
    18  
    19  [compiler:gc] ! go build _cgo_yy.go # ... but if forced, the comment is rejected
    20  # Actually, today there is a separate issue that _ files named
    21  # on the command line are ignored. Once that is fixed,
    22  # we want to see the cgo_ldflag error.
    23  [compiler:gc] stderr '//go:cgo_ldflag only allowed in cgo-generated code|no Go files'
    24  
    25  rm _cgo_yy.go
    26  
    27  # Reject #cgo CFLAGS: -fplugin=foo.so
    28  cp x.go.txt x.go
    29  cp y_fplugin.go.txt y.go
    30  ! go build x
    31  stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so'
    32  
    33  # Reject #cgo CFLAGS: -lbar -fplugin=foo.so
    34  cp y_lbar_fplugin.go.txt y.go
    35  ! go build x
    36  stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so'
    37  
    38  # Reject #cgo pkg-config: -foo
    39  cp y_pkgconfig_dash_foo.txt y.go
    40  ! go build x
    41  stderr 'invalid pkg-config package name: -foo'
    42  
    43  # Reject #cgo pkg-config: @foo
    44  cp y_pkgconfig_at_foo.txt y.go
    45  ! go build x
    46  stderr 'invalid pkg-config package name: @foo'
    47  
    48  # Reject #cgo pkg-config: --log-file=/tmp/log
    49  cp y_pkgconfig_log_file.txt y.go
    50  ! go build x
    51  stderr 'invalid flag in pkg-config: --log-file=/tmp/log'
    52  
    53  # Reject #cgo CFLAGS: @foo
    54  cp y_cflags_at_foo.txt y.go
    55  ! go build x
    56  stderr 'invalid flag in #cgo CFLAGS: @foo'
    57  
    58  # Reject #cgo CFLAGS: -D
    59  cp y_cflags_dash_d.txt y.go
    60  ! go build x
    61  stderr 'invalid flag in #cgo CFLAGS: -D without argument'
    62  
    63  # Note that -I @foo is allowed because we rewrite it into -I /path/to/src/@foo
    64  # before the check is applied. There's no such rewrite for -D.
    65  
    66  # Reject #cgo CFLAGS: -D @foo
    67  cp y_cflags_dash_d_space_at_foo.txt y.go
    68  ! go build x
    69  stderr 'invalid flag in #cgo CFLAGS: -D @foo'
    70  
    71  # Reject #cgo CFLAGS -D@foo
    72  cp y_cflags_dash_d_at_foo.txt y.go
    73  ! go build x
    74  stderr 'invalid flag in #cgo CFLAGS: -D@foo'
    75  
    76  # Check for CFLAGS in commands
    77  env CGO_CFLAGS=-D@foo
    78  cp y_no_cflags.txt y.go
    79  go build -n x
    80  stderr '-D@foo'
    81  
    82  -- go.mod --
    83  module x
    84  
    85  go 1.16
    86  -- x_gc.go.txt --
    87  package x
    88  
    89  //go:cgo_ldflag "-fplugin=foo.so"
    90  
    91  import "C"
    92  -- cgo_yy.go.txt --
    93  package x
    94  
    95  //go:cgo_ldflag "-fplugin=foo.so"
    96  
    97  import "C"
    98  -- x.go.txt --
    99  package x
   100  -- y_fplugin.go.txt --
   101  package x
   102  // #cgo CFLAGS: -fplugin=foo.so
   103  import "C"
   104  -- y_lbar_fplugin.go.txt --
   105  package x
   106  // #cgo CFLAGS: -Ibar -fplugin=foo.so
   107  import "C"
   108  -- y_pkgconfig_dash_foo.txt --
   109  package x
   110  // #cgo pkg-config: -foo
   111  import "C"
   112  -- y_pkgconfig_at_foo.txt --
   113  package x
   114  // #cgo pkg-config: @foo
   115  import "C"
   116  -- y_pkgconfig_log_file.txt --
   117  package x
   118  // #cgo pkg-config: --log-file=/tmp/log
   119  import "C"
   120  -- y_cflags_at_foo.txt --
   121  package x
   122  // #cgo CFLAGS: @foo
   123  import "C"
   124  -- y_cflags_dash_d.txt --
   125  package x
   126  // #cgo CFLAGS: -D
   127  import "C"
   128  -- y_cflags_dash_d_space_at_foo.txt --
   129  package x
   130  // #cgo CFLAGS: -D @foo
   131  import "C"
   132  -- y_cflags_dash_d_at_foo.txt --
   133  package x
   134  // #cgo CFLAGS: -D@foo
   135  import "C"
   136  -- y_no_cflags.txt --
   137  package x
   138  import "C"
   139  

View as plain text