Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[modules] allow use of ptrauth module from no_undeclared_includes system modules #88432

Merged
merged 1 commit into from
Apr 13, 2024

Conversation

ian-twilightcoder
Copy link
Contributor

No description provided.

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:modules C++20 modules and Clang Header Modules labels Apr 11, 2024
@llvmbot
Copy link
Member

llvmbot commented Apr 11, 2024

@llvm/pr-subscribers-clang-modules

@llvm/pr-subscribers-clang

Author: Ian Anderson (ian-twilightcoder)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/88432.diff

5 Files Affected:

  • (modified) clang/lib/Basic/Module.cpp (+4)
  • (added) clang/test/Modules/Inputs/ptrauth-include-from-darwin/module.modulemap (+8)
  • (added) clang/test/Modules/Inputs/ptrauth-include-from-darwin/ptrauth.h (+1)
  • (added) clang/test/Modules/Inputs/ptrauth-include-from-darwin/stddef.h (+1)
  • (added) clang/test/Modules/ptrauth-include-from-darwin.m (+6)
diff --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp
index 256365d66bb907..bb212cde878826 100644
--- a/clang/lib/Basic/Module.cpp
+++ b/clang/lib/Basic/Module.cpp
@@ -305,6 +305,10 @@ bool Module::directlyUses(const Module *Requested) {
   if (Requested->fullModuleNameIs({"_Builtin_stddef", "max_align_t"}) ||
       Requested->fullModuleNameIs({"_Builtin_stddef_wint_t"}))
     return true;
+  // Darwin is allowed is to use our builtin 'ptrauth.h' and its accompanying
+  // module.
+  if (!Requested->Parent && Requested->Name == "ptrauth")
+    return true;
 
   if (NoUndeclaredIncludes)
     UndeclaredUses.insert(Requested);
diff --git a/clang/test/Modules/Inputs/ptrauth-include-from-darwin/module.modulemap b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/module.modulemap
new file mode 100644
index 00000000000000..741b9bb1efc54d
--- /dev/null
+++ b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/module.modulemap
@@ -0,0 +1,8 @@
+module libc [no_undeclared_includes] {
+  module stddef { header "stddef.h" export * }
+}
+
+module ptrauth {
+  header "ptrauth.h"
+  export *
+}
diff --git a/clang/test/Modules/Inputs/ptrauth-include-from-darwin/ptrauth.h b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/ptrauth.h
new file mode 100644
index 00000000000000..c8620b64b2ceef
--- /dev/null
+++ b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/ptrauth.h
@@ -0,0 +1 @@
+void foo();
diff --git a/clang/test/Modules/Inputs/ptrauth-include-from-darwin/stddef.h b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/stddef.h
new file mode 100644
index 00000000000000..777a524fc67110
--- /dev/null
+++ b/clang/test/Modules/Inputs/ptrauth-include-from-darwin/stddef.h
@@ -0,0 +1 @@
+@import ptrauth;
diff --git a/clang/test/Modules/ptrauth-include-from-darwin.m b/clang/test/Modules/ptrauth-include-from-darwin.m
new file mode 100644
index 00000000000000..72b0c36e7cb7d3
--- /dev/null
+++ b/clang/test/Modules/ptrauth-include-from-darwin.m
@@ -0,0 +1,6 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs/ptrauth-include-from-darwin %s -verify
+// expected-no-diagnostics
+
+@import libc;
+void bar() { foo(); }

@ian-twilightcoder
Copy link
Contributor Author

Upstream from Apple, followup for #65996. Allows Apple's Darwin module to include ptrauth.h without declaring a use.

@ian-twilightcoder ian-twilightcoder changed the title allow use of ptrauth module from no_undeclared_includes system modules [modules] allow use of ptrauth module from no_undeclared_includes system modules Apr 12, 2024
@ian-twilightcoder ian-twilightcoder merged commit 4138367 into llvm:main Apr 13, 2024
4 checks passed
@ian-twilightcoder ian-twilightcoder deleted the ptrauth branch April 13, 2024 05:36
bazuzi pushed a commit to bazuzi/llvm-project that referenced this pull request Apr 15, 2024
…tem modules (llvm#88432)

Co-authored-by: Alex Lorenz <arphaman@gmail.com>
krispymb pushed a commit to swiftlang/llvm-project that referenced this pull request Apr 23, 2024
…tem modules (llvm#88432)

Co-authored-by: Alex Lorenz <arphaman@gmail.com>
(cherry picked from commit 4138367)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:modules C++20 modules and Clang Header Modules clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants