forked from OSchip/llvm-project
91 lines
3.9 KiB
YAML
91 lines
3.9 KiB
YAML
# RUN: yaml2obj %s -o %t1.o
|
|
|
|
# RUN: wasm-ld --no-entry --features=foo,bar,baz -o - %t1.o | obj2yaml | FileCheck %s --check-prefix SPECIFIED
|
|
|
|
# RUN: not wasm-ld --no-entry --features=bar,baz,quux -o /dev/null %t1.o 2>&1 | FileCheck %s --check-prefix UNSPECIFIED
|
|
|
|
# RUN: wasm-ld --no-entry --no-check-features --features=bar,baz,quux -o - %t1.o | obj2yaml | FileCheck %s --check-prefix UNSPECIFIED-NOCHECK
|
|
|
|
# RUN: yaml2obj %S/Inputs/require-feature-foo.yaml -o %t.required.o
|
|
# RUN: wasm-ld --no-entry -o - %t1.o %t.required.o | obj2yaml | FileCheck %s --check-prefix REQUIRED
|
|
|
|
# RUN: yaml2obj %S/Inputs/disallow-feature-foo.yaml -o %t.disallowed.o
|
|
# RUN: not wasm-ld --no-entry -o /dev/null %t1.o %t.disallowed.o 2>&1 | FileCheck %s --check-prefix DISALLOWED
|
|
|
|
# RUN: wasm-ld --no-entry --no-check-features -o - %t1.o %t.disallowed.o | obj2yaml | FileCheck %s --check-prefix DISALLOWED-NOCHECK
|
|
|
|
# RUN: yaml2obj %S/Inputs/no-feature-foo.yaml -o %t.none.o
|
|
# RUN: not wasm-ld --no-entry -o /dev/null %t1.o %t.none.o 2>&1 | FileCheck %s --check-prefix NONE
|
|
|
|
# RUN: wasm-ld --no-entry --no-check-features -o - %t1.o %t.none.o | obj2yaml | FileCheck %s --check-prefix NONE-NOCHECK
|
|
|
|
# Check that the following combinations of feature linkage policies
|
|
# give the expected results:
|
|
#
|
|
# REQUIRED x REQUIRED => USED
|
|
# REQUIRED x DISALLOWED => Error
|
|
# REQUIRED x NONE => Error
|
|
|
|
--- !WASM
|
|
FileHeader:
|
|
Version: 0x00000001
|
|
Sections:
|
|
- Type: CUSTOM
|
|
Name: linking
|
|
Version: 2
|
|
- Type: CUSTOM
|
|
Name: target_features
|
|
Features:
|
|
- Prefix: REQUIRED
|
|
Name: "foo"
|
|
...
|
|
|
|
# SPECIFIED: - Type: CUSTOM
|
|
# SPECIFIED: Name: target_features
|
|
# SPECIFIED-NEXT: Features:
|
|
# SPECIFIED-NEXT: - Prefix: USED
|
|
# SPECIFIED-NEXT: Name: bar
|
|
# SPECIFIED-NEXT: - Prefix: USED
|
|
# SPECIFIED-NEXT: Name: baz
|
|
# SPECIFIED-NEXT: - Prefix: USED
|
|
# SPECIFIED-NEXT: Name: foo
|
|
# SPECIFIED-NEXT: ...
|
|
|
|
# UNSPECIFIED: Target feature 'foo' used by {{.*}}target-feature-required.yaml.tmp1.o is not allowed.{{$}}
|
|
|
|
# UNSPECIFIED-NOCHECK: - Type: CUSTOM
|
|
# UNSPECIFIED-NOCHECK: Name: target_features
|
|
# UNSPECIFIED-NOCHECK-NEXT: Features:
|
|
# UNSPECIFIED-NOCHECK-NEXT: - Prefix: USED
|
|
# UNSPECIFIED-NOCHECK-NEXT: Name: bar
|
|
# UNSPECIFIED-NOCHECK-NEXT: - Prefix: USED
|
|
# UNSPECIFIED-NOCHECK-NEXT: Name: baz
|
|
# UNSPECIFIED-NOCHECK-NEXT: - Prefix: USED
|
|
# UNSPECIFIED-NOCHECK-NEXT: Name: quux
|
|
# UNSPECIFIED-NOCHECK-NEXT: ...
|
|
|
|
# REQUIRED: - Type: CUSTOM
|
|
# REQUIRED: Name: target_features
|
|
# REQUIRED-NEXT: Features:
|
|
# REQUIRED-NEXT: - Prefix: USED
|
|
# REQUIRED-NEXT: Name: foo
|
|
# REQUIRED-NEXT: ...
|
|
|
|
# DISALLOWED: Target feature 'foo' used in {{.*}}target-feature-required.yaml.tmp1.o is disallowed by {{.*}}target-feature-required.yaml.tmp.disallowed.o. Use --no-check-features to suppress.{{$}}
|
|
|
|
# DISALLOWED-NOCHECK: - Type: CUSTOM
|
|
# DISALLOWED-NOCHECK: Name: target_features
|
|
# DISALLOWED-NOCHECK-NEXT: Features:
|
|
# DISALLOWED-NOCHECK-NEXT: - Prefix: USED
|
|
# DISALLOWED-NOCHECK-NEXT: Name: foo
|
|
# DISALLOWED-NOCHECK-NEXT: ...
|
|
|
|
# NONE: Missing target feature 'foo' in {{.*}}target-feature-required.yaml.tmp.none.o, required by {{.*}}target-feature-required.yaml.tmp1.o. Use --no-check-features to suppress.{{$}}
|
|
|
|
# NONE-NOCHECK: - Type: CUSTOM
|
|
# NONE-NOCHECK: Name: target_features
|
|
# NONE-NOCHECK-NEXT: Features:
|
|
# NONE-NOCHECK-NEXT: - Prefix: USED
|
|
# NONE-NOCHECK-NEXT: Name: foo
|
|
# NONE-NOCHECK-NEXT: ...
|