Replace fuzzer::FuzzerDriver's INTERFACE marking with new LLVMRunFuzzerDriver.

This adds a new extern "C" function that serves the same purpose. This removes the need for external users to depend on internal headers in order to use this feature. It also standardizes the interface in a way that other fuzzing engines will be able to match.

Patch By: IanPudney

Reviewed By: kcc

Differential Revision: https://reviews.llvm.org/D84561

GitOrigin-RevId: 34ddf0b2b040918a6c946f589eeaf1d4fef95e7a
diff --git a/FuzzerDriver.cpp b/FuzzerDriver.cpp
index 00a33a4..8339697 100644
--- a/FuzzerDriver.cpp
+++ b/FuzzerDriver.cpp
@@ -858,6 +858,12 @@
   exit(0);  // Don't let F destroy itself.
 }
 
+extern "C" ATTRIBUTE_INTERFACE int
+LLVMFuzzerRunDriver(int *argc, char ***argv,
+                    int (*UserCb)(const uint8_t *Data, size_t Size)) {
+  return FuzzerDriver(argc, argv, UserCb);
+}
+
 // Storage for global ExternalFunctions object.
 ExternalFunctions *EF = nullptr;