diff options
Diffstat (limited to 'clang/test/Modules')
7 files changed, 64 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/AppKit.h b/clang/test/Modules/Inputs/outofdate-rebuild/AppKit.h new file mode 100644 index 00000000000..e357918fd45 --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/AppKit.h @@ -0,0 +1,3 @@ +// AppKit +#import "CoreVideo.h" // CoreVideo +struct B { int i; }; diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/Cocoa.h b/clang/test/Modules/Inputs/outofdate-rebuild/Cocoa.h new file mode 100644 index 00000000000..d6311405f4e --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/Cocoa.h @@ -0,0 +1,5 @@ +// Cocoa +#import "Foundation.h" +#import "AppKit.h" + +struct A { int i; }; diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/CoreText.h b/clang/test/Modules/Inputs/outofdate-rebuild/CoreText.h new file mode 100644 index 00000000000..7ff0e23af1b --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/CoreText.h @@ -0,0 +1 @@ +struct C { int i; }; diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/CoreVideo.h b/clang/test/Modules/Inputs/outofdate-rebuild/CoreVideo.h new file mode 100644 index 00000000000..bd249dcbb74 --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/CoreVideo.h @@ -0,0 +1,3 @@ +// CoreVideo +#import "Foundation.h" // Foundation +struct E { int i; }; diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/Foundation.h b/clang/test/Modules/Inputs/outofdate-rebuild/Foundation.h new file mode 100644 index 00000000000..b2d053ad057 --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/Foundation.h @@ -0,0 +1,3 @@ +// Foundation +#import "CoreText.h" +struct D { int i; }; diff --git a/clang/test/Modules/Inputs/outofdate-rebuild/module.modulemap b/clang/test/Modules/Inputs/outofdate-rebuild/module.modulemap new file mode 100644 index 00000000000..71c99e81966 --- /dev/null +++ b/clang/test/Modules/Inputs/outofdate-rebuild/module.modulemap @@ -0,0 +1,19 @@ +module Cocoa { + header "Cocoa.h" +} + +module AppKit { + header "AppKit.h" +} + +module CoreText { + header "CoreText.h" +} + +module Foundation { + header "Foundation.h" +} + +module CoreVideo { + header "CoreVideo.h" +} diff --git a/clang/test/Modules/modules-cache-path-canonicalization.m b/clang/test/Modules/modules-cache-path-canonicalization.m new file mode 100644 index 00000000000..7cc74600c2f --- /dev/null +++ b/clang/test/Modules/modules-cache-path-canonicalization.m @@ -0,0 +1,30 @@ +// RUN: rm -rf %t/cache %T/rel + +// This testcase reproduces a use-after-free after looking up a PCM in +// a non-canonical modules-cache-path. +// +// Prime the module cache (note the '.' in the path). +// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/./cache \ +// RUN: -fmodules -fimplicit-module-maps -I %S/Inputs/outofdate-rebuild \ +// RUN: %s -fsyntax-only +// +// Force a module to be rebuilt by creating a conflict. +// RUN: echo "@import CoreText;" > %t.m +// RUN: %clang_cc1 -DMISMATCH -Werror -fdisable-module-hash \ +// RUN: -fmodules-cache-path=%t/./cache -fmodules -fimplicit-module-maps \ +// RUN: -I %S/Inputs/outofdate-rebuild %t.m -fsyntax-only +// +// Rebuild. +// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/./cache \ +// RUN: -fmodules -fimplicit-module-maps -I %S/Inputs/outofdate-rebuild \ +// RUN: %s -fsyntax-only + + +// Unrelated to the above: Check that a relative path is resolved correctly. +// +// RUN: %clang_cc1 -working-directory %T/rel -fmodules-cache-path=./cache \ +// RUN: -fmodules -fimplicit-module-maps -I %S/Inputs/outofdate-rebuild \ +// RUN: -fdisable-module-hash %t.m -fsyntax-only -Rmodule-build 2>&1 \ +// RUN: | FileCheck %s +// CHECK: /rel/cache/CoreText.pcm +@import Cocoa; |