diff --git a/vndk/tools/header-checker/src/diff/abi_diff.cpp b/vndk/tools/header-checker/src/diff/abi_diff.cpp
index cfd559c..9fc86ba 100644
--- a/vndk/tools/header-checker/src/diff/abi_diff.cpp
+++ b/vndk/tools/header-checker/src/diff/abi_diff.cpp
@@ -333,14 +333,12 @@
       continue;
     }
 
-    // If an element (FunctionIR or GlobalVarIR) is missing from the new ABI
-    // dump but a corresponding ELF symbol (ElfFunctionIR or ElfObjectIR) can
-    // be found in the new ABI dump file, don't emit error on this element.
-    // This may happen when the standard reference target implements the
-    // function (or the global variable) in C/C++ and the target-under-test
-    // implements the function (or the global variable) in assembly.
+    // If this FunctionIR/GlobalVarIR is missing from the new ABI dump but a
+    // corresponding ElfFunctionIR/ElfObjectIR can be found in the new ABI dump,
+    // don't emit error on this element.
     const std::string &element_linker_set_key = element->GetLinkerSetKey();
-    if (new_elf_map &&
+    if (diff_policy_options_.allow_adding_removing_referenced_apis &&
+        new_elf_map &&
         new_elf_map->find(element_linker_set_key) != new_elf_map->end()) {
       continue;
     }
diff --git a/vndk/tools/header-checker/src/diff/header_abi_diff.cpp b/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
index 62476ec..c187bed 100644
--- a/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
+++ b/vndk/tools/header-checker/src/diff/header_abi_diff.cpp
@@ -93,6 +93,14 @@
                    " APIs."),
     llvm::cl::Optional, llvm::cl::cat(header_checker_category));
 
+static llvm::cl::opt<bool> allow_adding_removing_referenced_apis(
+    "allow-adding-removing-referenced-apis",
+    llvm::cl::desc("Do not return a non zero status on addition or removal of "
+                   "functions and variables that have corresponding symbols. "
+                   "This option ignores the functions built in runtime "
+                   "libraries and may not be declared in headers."),
+    llvm::cl::Optional, llvm::cl::cat(header_checker_category));
+
 static llvm::cl::opt<bool> consider_opaque_types_different(
     "consider-opaque-types-different",
     llvm::cl::desc("Consider opaque types with different names as different. "
@@ -185,6 +193,8 @@
       allow_unreferenced_elf_symbol_changes = value_bool;
     } else if (key == "allow_unreferenced_changes") {
       allow_unreferenced_changes = value_bool;
+    } else if (key == "allow_adding_removing_referenced_apis") {
+      allow_adding_removing_referenced_apis = value_bool;
     } else if (key == "consider_opaque_types_different") {
       consider_opaque_types_different = value_bool;
     }
@@ -244,7 +254,10 @@
   std::set<std::string> ignored_linker_set_keys_set(
       ignore_linker_set_keys.begin(), ignore_linker_set_keys.end());
 
-  DiffPolicyOptions diff_policy_options(consider_opaque_types_different);
+  const DiffPolicyOptions diff_policy_options{
+      .consider_opaque_types_different = consider_opaque_types_different,
+      .allow_adding_removing_referenced_apis =
+          allow_adding_removing_referenced_apis};
 
   HeaderAbiDiff judge(lib_name, arch, old_dump, new_dump, compatibility_report,
                       ignored_symbols, ignored_linker_set_keys_set,
diff --git a/vndk/tools/header-checker/src/linker/module_merger.cpp b/vndk/tools/header-checker/src/linker/module_merger.cpp
index 7cba816..517fbad 100644
--- a/vndk/tools/header-checker/src/linker/module_merger.cpp
+++ b/vndk/tools/header-checker/src/linker/module_merger.cpp
@@ -61,7 +61,9 @@
   // Initialize type comparator (which will compare the referenced types
   // recursively).
   std::set<std::string> type_cache;
-  repr::DiffPolicyOptions diff_policy_options(false);
+  const repr::DiffPolicyOptions diff_policy_options{
+      .consider_opaque_types_different = false,
+      .allow_adding_removing_referenced_apis = false};
   repr::AbiDiffHelper diff_helper(module_->type_graph_, addend.type_graph_,
                                   diff_policy_options, &type_cache, {}, nullptr);
 
diff --git a/vndk/tools/header-checker/src/repr/abi_diff_helpers.cpp b/vndk/tools/header-checker/src/repr/abi_diff_helpers.cpp
index c00d218..a90ea5d 100644
--- a/vndk/tools/header-checker/src/repr/abi_diff_helpers.cpp
+++ b/vndk/tools/header-checker/src/repr/abi_diff_helpers.cpp
@@ -327,7 +327,7 @@
   // b/253095767: In T, some dump files contain opaque types whose IDs end with
   // "#ODR:" and the source paths. This function removes the suffixes before
   // comparing the type IDs.
-  if (!diff_policy_options_.consider_opaque_types_different_ ||
+  if (!diff_policy_options_.consider_opaque_types_different ||
       ExtractMultiDefinitionTypeId(old_type_id) ==
           ExtractMultiDefinitionTypeId(new_type_id)) {
     return true;
diff --git a/vndk/tools/header-checker/src/repr/abi_diff_helpers.h b/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
index 5604358..79f6892 100644
--- a/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
+++ b/vndk/tools/header-checker/src/repr/abi_diff_helpers.h
@@ -85,10 +85,8 @@
 };
 
 struct DiffPolicyOptions {
-  DiffPolicyOptions(bool consider_opaque_types_different)
-      : consider_opaque_types_different_(consider_opaque_types_different) {}
-
-  bool consider_opaque_types_different_;
+  bool consider_opaque_types_different = false;
+  bool allow_adding_removing_referenced_apis = false;
 };
 
 class AbiDiffHelper {
diff --git a/vndk/tools/header-checker/tests/test.py b/vndk/tools/header-checker/tests/test.py
index 6af5433..c7ae008 100755
--- a/vndk/tools/header-checker/tests/test.py
+++ b/vndk/tools/header-checker/tests/test.py
@@ -213,7 +213,11 @@
     def test_libgolden_cpp_fabricated_function_ast_removed_diff(self):
         self.prepare_and_run_abi_diff_all_archs(
             "libgolden_cpp_add_function_sybmol_only",
-            "libgolden_cpp_add_function", 0, [], False, False)
+            "libgolden_cpp_add_function", 4, [], False, False)
+        self.prepare_and_run_abi_diff_all_archs(
+            "libgolden_cpp_add_function_sybmol_only",
+            "libgolden_cpp_add_function", 0,
+            ["-allow-adding-removing-referenced-apis"], False, False)
 
     def test_libgolden_cpp_change_function_access(self):
         self.prepare_and_run_abi_diff_all_archs(
