dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.97k stars 4.66k forks source link

Audit use of compilation constants in libraries #39174

Open am11 opened 4 years ago

am11 commented 4 years ago

Under src/libraries, these are the lists of unique constants:

defined in project files (71)
* ALLOW_PARTIALLY_TRUSTED_CALLERS * ActivatorUtilities_In_DependencyInjection * BUILDING_INBOX_LIBRARY * CAS_OBSOLETIONS * CODEDOM * DEBUG * DRAWING_NAMESPACE * ENABLECOMBINDER * ENABLE_HTTP_HANDLER * ES_BUILD_STANDALONE * EVENTSOURCE_ACTIVITY_SUPPORT * EVENTSOURCE_ENUMERATE_SUPPORT * FEATURE_COMPILE * FEATURE_COMPILED_XSL * FEATURE_DLG_INVOKE * FEATURE_DSA_HASHDATA * FEATURE_ECDH_DERIVEFROM * FEATURE_ECPARAMETERS * FEATURE_FAST_CREATE * FEATURE_INTERPRET * FEATURE_MANAGED_ETW * FEATURE_REGISTRY * FEATURE_SERIALIZATION * FEATURE_SYSTEM_EVENTS * FEATURE_TRACING * FEATURE_UTF8STRING * FEATURE_WINDOWS_SYSTEM_COLORS * FEATURE_XML_XPATH_ID * FLAVOR_WHIDBEY * FUNCTIONAL_TESTS * HAVE_THUMBPRINT_OVERLOADS * HTTP3 * HTTP_DLL * IL_EMIT * INTERNAL_ASYMMETRIC_IMPLEMENTATIONS * INTERNAL_NULLABLE_ATTRIBUTES * LATEBINDING * MAKE_ABW_PUBLIC * MS_IO_REDIST * NETSTANDARD * NOSPAN * NO_EVENTCOMMANDEXECUTED_SUPPORT * NO_EVENTSOURCE_COMPLEX_TYPE_SUPPORT * PAPI_AD * PAPI_REGSAM * PRODUCT * REGISTRY_ASSEMBLY * RESOURCES_EXTENSIONS * ReflectionOnly * SAVE_ASSEMBLIES * SERIAL_PORTS * SYSNETHTTP_NO_OPENSSL * SYSNETSECURITY_NO_OPENSSL * SYSTEM_NET_PRIMITIVES_DLL * SYSTEM_NET_SOCKETS_DLL * TARGETS_BROWSER * TARGET_WINDOWS * TESTING_CNG_IMPLEMENTATION * TRACE * TargetsWindows * USE_CTX_CACHE * USE_INTERNAL_ACCESSIBILITY * USE_INTERNAL_CONCURRENT_COLLECTIONS * USE_INTERNAL_THREADING * USE_MDT_EVENTSOURCE * Unix * W3C_DEFAULT_ID_FORMAT * WINHTTPHANDLER_DLL * WINHTTPHANDLER_TEST * XMLSERIALIZERGENERATORTESTS * netcoreapp
used in C# / VB code (196)
* ALLOW_PARTIALLY_TRUSTED_CALLERS * ARCH_arm * ASSERT_VERBOSE * ActivatorUtilities_In_DependencyInjection * BIGENDIAN * BINDING_LOG * BUILDING_INBOX_LIBRARY * CAP_PointerType * CAP_TypeOfPointer * CAS_OBSOLETIONS * CBOR_PROPERTY_TESTS * CHECK_ACCURATE_ENSURE * CHECK_ATTRIBUTE_ORDER * CODEDOM * CORECLR * CORERT * DCR27419 * DEBUG * DEBUGRESOURCES * DEBUG_CLIPPING * DEBUG_FORCE_ZIP64 * DEBUG_HANDLE * DISABLE_MATCH_OPTIMIZATION * DISABLE_SWITCH * DontUse * EERANGE * ENABLECOMBINDER * ENABLEDATABINDING * ENABLEDYNAMICPROGRAMMING * ENABLE_HTTP_HANDLER * ENTITY_ENCODE_HIGH_ASCII_CHARS * ES_BUILD_AGAINST_DOTNET_V35 * ES_BUILD_PCL * ES_BUILD_STANDALONE * ES_SESSION_INFO * EVENTSOURCE_ACTIVITY_SUPPORT * EVENTSOURCE_ENUMERATE_SUPPORT * EVENTSOURCE_GENERICS * EVENT_SOURCE_LEGACY_NAMESPACE_SUPPORT * EXPANDRANGE * FALSE * FASTLOOP * FEATURE_ADVANCED_MANAGED_ETW_CHANNELS * FEATURE_COMPILE * FEATURE_COMPILED_XSL * FEATURE_COMPILE_TO_METHODBUILDER * FEATURE_COMPONENT_COLLECTION * FEATURE_DEFAULT_INTERFACES * FEATURE_DLG_INVOKE * FEATURE_DSA_HASHDATA * FEATURE_DYNAMIC_DELEGATE * FEATURE_ECDH_DERIVEFROM * FEATURE_ECPARAMETERS * FEATURE_EVENTSOURCE_XPLAT * FEATURE_FAST_CREATE * FEATURE_INTERNAL_REFLECTIONCONTEXT * FEATURE_INTERPRET * FEATURE_MAKE_RUN_METHODS * FEATURE_MANAGED_ETW * FEATURE_MANAGED_ETW_CHANNELS * FEATURE_PDB_GENERATOR * FEATURE_PERFTRACING * FEATURE_REGISTRY * FEATURE_SERIALIZATION * FEATURE_SKIP_INTERFACE * FEATURE_SYSTEM_EVENTS * FEATURE_THREAD_ABORT * FEATURE_TRACING * FEATURE_UTF8STRING * FEATURE_WINDOWS_SYSTEM_COLORS * FEATURE_XML_XPATH_ID * FINALIZATION_WATCH * FINDUPA_PARTICLE * FUNCTIONAL_TESTS * GDI_FINALIZATION_WATCH * GENERICITY_LOG * GETTYPEFROMHANDLEUNSAFE * HAS_CUSTOM_BLOCKS * HAVE_STORE_ISOPEN * HAVE_THUMBPRINT_OVERLOADS * HIDE_XSL * HTTP3 * IL_EMIT * INTERNAL_ASYMMETRIC_IMPLEMENTATIONS * INTERNAL_NULLABLE_ATTRIBUTES * KESTREL * LATEBINDING * M3 * MAKE_ABW_PUBLIC * MONO * MS * MS_IO_REDIST * MTNAMETABLE * NAVREADER_SUPPORTSLINEINFO * NET45 * NET451 * NET452 * NET46 * NET461 * NET462 * NET47 * NET471 * NET472 * NETCOREAPP * NETCOREAPP2_0 * NETCOREAPP2_1 * NETCOREAPP3_0 * NETFRAMEWORK * NETSTANDARD * NETSTANDARD1_0 * NETSTANDARD1_1 * NETSTANDARD1_3 * NETSTANDARD1_6 * NETSTANDARD2_0 * NETSTANDARD2_1 * NEVER * NO * NOPARSE * NO_ASYNC_LOCAL * NO_DSA_AVAILABLE * NO_EPHEMERALKEYSET_AVAILABLE * NO_EVENTSOURCE_COMPLEX_TYPE_SUPPORT * NO_FEATURE_STATIC_DELEGATE * NotUsed * OLDWRITER * OPTIMIZED_MEASUREMENTDC * OUT * PAPI_AD * PAPI_REGSAM * PBTCOMPILER * PERF * PHONE * PRIYAL * PRODUCT * PrintDebug * QIL_TRACE_NODE_CREATION * REGISTRY_ASSEMBLY * RELEASE * RESOURCES_EXTENSIONS * ReflectionOnly * SAVE_ASSEMBLIES * SERIAL_PORTS * SOCKETASYNCCONTEXT_TRACE * SPLAY_MTNAMETABLE * STATS * SUPPORT_SURROGATE * SUPPORT_WK_USER_OBJS * SYSNETSECURITY_NO_OPENSSL * SYSTEM_HASHCODE_TESTVECTORS * SYSTEM_NET_PRIMITIVES_DLL * SYSTEM_NET_SOCKETS_DLL * SYSTEM_PRIVATE_CORELIB * SchemaTypeImport * StopMaskOptimisation * StressTest * TARGETS_BROWSER * TARGET_32BIT * TARGET_64BIT * TARGET_AMD64 * TARGET_ARM * TARGET_ARM64 * TARGET_BROWSER * TARGET_IOS * TARGET_OSX * TARGET_TVOS * TARGET_UNIX * TARGET_WINDOWS * TEMP_HACK_FOR_SCHEMA_INFO * TESTHOOK * TESTING_CNG_IMPLEMENTATION * TEST_WINRT * TRACK_HDC * TRUST_COMPILE_STATE * TargetsWindows * USE_CTX_CACHE * USE_INTERNAL_ACCESSIBILITY * USE_INTERNAL_CONCURRENT_COLLECTIONS * USE_INTERNAL_THREADING * USE_MDT_EVENTSOURCE * USE_REFEMIT * Unix * VerifyIndex * VerifyPath * VerifySort * W3C_DEFAULT_ID_FORMAT * WIN32 * WINHTTPHANDLER_DLL * WINHTTPHANDLER_TEST * XMLCHARTYPE_GEN_RESOURCE * XMLSERIALIZERGENERATORTESTS * XSLT2 * _LOGGING * c1 * false * not_used * true

There is a room to cleanup or fix the dead code. Some of these constants are not defined since the initial port. Some are defined but unused. Some of them can be merged as they differ by casing or spelling (TargetsWindows vs. TARGET_WINDOWS). Some usages can probably be replaced by others, like #if VerifyXX to #if DEBUG.

danmoseley commented 4 years ago

Earlier discussion here https://github.com/dotnet/runtime/issues/7280 https://github.com/dotnet/runtime/issues/7213

There is a tool that I used that can safely remove code within particular defines (or remove define and retain code). If you plan to do this I will find a link to it.

am11 commented 4 years ago

Thanks, such a tool will certainly help. I think main work is to make decision what actions to take. If a constant is not (explicitly or implicitly) defined anywhere, should we just delete the code (in a spirit that git has the history in case we ever need to revive)? Certain places may still require manual intervention (especially those which deal with consolidating windows and unix targets).

joperezr commented 4 years ago

If a constant is not (explicitly or implicitly) defined anywhere, should we just delete the code

I believe so we should do this basically to clean dead code and if we need we can always bring stuff back. @danmosemsft can you share a bit more here of the effort you went through last time you did this? Specifically, it would be good to know if there was a lot of manual intervention required as @am11 calls out above.

ViktorHofer commented 2 years ago

@am11 is it easy for you to update the data from the top post? I would like to clean the platform and framework defines up.

am11 commented 2 years ago

@ViktorHofer, I can find in the scope of src/libraries only as done in the top post, let me know if it is needed after this. Here is the sorted+deduplicated list from full repo to get a better view of variety of naming patterns used for preprocessor constants.

Note that the first four items of "defined constants list" are using equal sign and commas. I didn't curate the list to highlight the potential issue.

defined constants list (172)
* $(DefineConstants),DEBUG,TRACE * $(DefineConstants),LATEBINDING=True * $(DefineConstants),TARGET_WINDOWS=True * $(DefineConstants),TRACE * _65535 * _65536 * ALLOW_PARTIALLY_TRUSTED_CALLERS * ANDROID_USE_BUFFER * ANSIBSTR * ASSEMBLY_V2 * BASELINE_INTRINSICS * BIGENDIAN * BSTR * BUILDING_INBOX_LIBRARY * BUILDING_SOURCE_GENERATOR * BUILDING_SOURCE_GENERATOR_TESTS * CCCONVERTER_TRACE * CI_TEST * CODEDOM * CORECLR * CORERT * CP_NO_ZEROMEMORY * CUSTOMMARSHALERS2 * DEBUG * DIAGNOSTICS_RUNTIME * DISABLE_UNMANAGED_PDB_SYMBOLS * DRAWING_NAMESPACE * ENABLECOMBINDER * ENABLE_HTTP_HANDLER * ES_BUILD_STANDALONE * FEATURE_64BIT_ALIGNMENT * FEATURE_ARRAYSTUB_AS_IL * FEATURE_BASICFREEZE * FEATURE_CER * FEATURE_COLLECTIBLE_ALC * FEATURE_COMINTEROP * FEATURE_COMINTEROP_APARTMENT_SUPPORT * FEATURE_COMWRAPPERS * FEATURE_EVENTSOURCE_XPLAT * FEATURE_FAST_CREATE * FEATURE_GC_STRESS * FEATURE_ICASTABLE * FEATURE_INSTANTIATINGSTUB_AS_IL * FEATURE_MANAGED_ETW * FEATURE_MANAGED_ETW_CHANNELS * FEATURE_MULTICASTSTUB_AS_IL * FEATURE_OBJCMARSHAL * FEATURE_PERFTRACING * FEATURE_PORTABLE_SHUFFLE_THUNKS * FEATURE_PROFAPI_ATTACH_DETACH * FEATURE_REGISTRY * FEATURE_STUBS_AS_IL * FEATURE_SYSTEM_EVENTS * FEATURE_TYPEEQUIVALENCE * FEATURE_WASM_PERFTRACING * FEATURE_WASM_THREADS * FEATURE_WIN32_REGISTRY * FEATURE_WINDOWS_SYSTEM_COLORS * FEATURE_XML_XPATH_ID * FLOAT32 * FLOAT64 * FUNCTIONAL_TESTS * GENERICS_FORCE_USG * GVM_RESOLUTION_TRACE * HAVE_THUMBPRINT_OVERLOADS * HTTP3 * HTTP_DLL * IL_EMIT * ILVERIFY * INPLACE_RUNTIME * INTERNAL_ASYMMETRIC_IMPLEMENTATIONS * LAUNCH_DEBUGGER * LIBRARYIMPORT_GENERATOR_TEST * LOCALLOC_DYNAMIC * LOCALLOC_LARGE * LOCALLOC_SMALL * _LOGGING * LOOP * LPSTR * LPTSTR * MAKE_ABW_PUBLIC * MEMORYMARSHAL_SUPPORT * MONO * MONO_FEATURE_SRE * NATIVE_CPP * NATIVEFORMAT_PUBLICWRITER * NESTED_HFA * net46 * NETCOREAPP * NETFX_45 * NETSTANDARD * NETWORKINFORMATION_TEST * NO_EVENTCOMMANDEXECUTED_SUPPORT * NO_NTAUTHENTICATION * NON_VEX_INTRINSICS * NO_SUPPRESS_GC_TRANSITION * OP_ADD * OP_AND * OP_DIV * OP_MOD * OP_MUL * OP_OR * OP_SHR * OP_SUB * OP_XOR * OS_ISBROWSER_SUPPORT * PRODUCT * PROFILING_SUPPORTED * READYTORUN * REFLECTION_FROM_USAGE * ReflectionOnly * REGEXGENERATOR * REGISTRY_ASSEMBLY * RESOURCE_KEYS * RESOURCES_EXTENSIONS * ROSLYN4_0_OR_GREATER * RUN_IN_CHROME * SERIAL_PORTS * SIMPLE_HFA * SINGLE_FILE_TEST_RUNNER * SOCKADDR_HAS_LENGTH * SYSNETHTTP_NO_OPENSSL * SYSNETSECURITY_NO_OPENSSL * SYSTEM_NET_PRIMITIVES_DLL * SYSTEM_NET_SOCKETS_DLL * SYSTEM_PRIVATE_CORELIB * TARGET_32BIT * TARGET_64BIT * TARGET_AMD64 * TARGET_ANDROID * TARGET_ARM * TARGET_ARM64 * TARGET_ARMV6 * TARGET_BROWSER * TARGET_FREEBSD * TARGET_ILLUMOS * TARGET_IOS * TARGET_LINUX * TARGET_LOONGARCH64 * TARGET_MACCATALYST * TARGET_MOBILE * TARGET_NETBSD * TARGET_OSX * TARGET_S390X * TARGETS_BROWSER * TARGET_SOLARIS * TargetsWindows * TARGET_TVOS * TARGET_UNIX * TARGET_WASM * TARGET_WINDOWS * TARGET_X86 * TEST_DEBUG_CONFIG_ALSO * TESTING_CNG_IMPLEMENTATION * TRACE * TRY * TYPE_LOADER_IMPLEMENTATION * TYPE_LOADER_TRACE * UNITTEST * Unix * USE_MDT_EVENTSOURCE * V2 * VEX_INTRINSICS * W3C_DEFAULT_ID_FORMAT * WIN32 * Windows * WINDOWS * WINHTTPHANDLER_TEST * XASSEM * XMLSERIALIZERGENERATORTESTS * XUNIT_PERF
used constants list: in cs, vb and fs files (307)
* _65531 * _65532 * _65533 * _65534 * _65535 * _65536 * ADD_STRUCT_CONSTRAINT * ALLOW_PARTIALLY_TRUSTED_CALLERS * ALWAYS_SUPPORT_EVENTSOURCE_LOG * ANSIBSTR * ARCH_arm * ASSEMBLY_V2 * ASSERT_VERBOSE * BASELINE_INTRINSICS * BIGENDIAN * BIT64 * BROWSER * BSTR * _BUG_MARSHALSTRUCTSEQ * BUILDING_INBOX_LIBRARY * BUILDING_SOURCE_GENERATOR * BUILDING_SOURCE_GENERATOR_TESTS * c1 * CALLDESCR_ARGREGS * CALLDESCR_FPARGREGS * CALLDESCR_FPARGREGSARERETURNREGS * CALLINGCONVENTION_CALLEE_POPS * CAP_PointerType * CAP_TypeOfPointer * CCCONVERTER_TRACE * CHECK_ACCURATE_ENSURE * CHECK_ATTRIBUTE_ORDER * CHECKINVARIANTS * CI_TEST * CODEDOM * CODEGEN_CPP * COM_ACTIVATOR_DEBUG * CORECLR * CORERT * CORRECT_CASE * CP_NO_ZEROMEMORY * CUSTOMMARSHALERS2 * DACTABLEGEN_DEBUG * _DEBUG * DEBUG * DEBUG_FORCE_ZIP64 * {define} * defined * DESKTOP * DIAGNOSTICS_RUNTIME * DISABLE_MATCH_OPTIMIZATION * DISABLE_SWITCH * DISABLE_UNMANAGED_PDB_SYMBOLS * DISPLAY_DEBUG_INFO * DontUse * ECMA_METADATA_SUPPORT * EERANGE * ENABLECOMBINDER * ENABLEDYNAMICPROGRAMMING * ENABLE_HTTP_HANDLER * ENABLE_REFLECTION_TRACE * ENABLE_WINRT * ENREGISTERED_PARAMTYPE_MAXSIZE * ENREGISTERED_RETURNTYPE_INTEGER_MAXSIZE * ENTITY_ENCODE_HIGH_ASCII_CHARS * ES_BUILD_STANDALONE * ES_SESSION_INFO * EVENTSOURCE_GENERICS * EVENT_SOURCE_LEGACY_NAMESPACE_SUPPORT * EXPANDRANGE * false * FALSE * FASTLOOP * FEATURE_64BIT_ALIGNMENT * FEATURE_ADVANCED_MANAGED_ETW_CHANNELS * FEATURE_ARRAYSTUB_AS_IL * FEATURE_CER * FEATURE_COMINTEROP * FEATURE_COMINTEROP_APARTMENT_SUPPORT * FEATURE_COMPILE_TO_METHODBUILDER * FEATURE_DUMP_DEBUGGING * FEATURE_EVENTSOURCE_XPLAT * FEATURE_FAST_CREATE * FEATURE_GC_STRESS * FEATURE_HFA * FEATURE_INTERPRETER * FEATURE_MAKE_RUN_METHODS * FEATURE_MANAGED_ETW * FEATURE_MANAGED_ETW_CHANNELS * FEATURE_MULTICASTSTUB_AS_IL * FEATURE_OBJCMARSHAL * FEATURE_PDB_GENERATOR * FEATURE_PERFTRACING * FEATURE_REGISTRY * FEATURE_THREAD_ABORT * FEATURE_TYPEEQUIVALENCE * FEATURE_UNIVERSAL_GENERICS * FEATURE_WASM_PERFTRACING * FEATURE_WASM_THREADS * FEATURE_WINDOWS_SYSTEM_COLORS * FEATURE_XML_XPATH_ID * FINALIZATION_WATCH * FINDUPA_PARTICLE * FLOAT64 * FORCE_AOT * FOUND * FULL_AOT_DESKTOP * FUNCTIONAL_TESTS * GDI_FINALIZATION_WATCH * GENERICS_FORCE_USG * GETTYPEFROMHANDLEUNSAFE * GVM_RESOLUTION_TRACE * HAS_CUSTOM_BLOCKS * HAVE_STORE_ISOPEN * HAVE_THUMBPRINT_OVERLOADS * HTTP3 * IL_EMIT * ILVERIFY * __IN_CRST_CPP * INPLACE_RUNTIME * INTERNAL_CONTRACTS * INTF_FOR_TASK * KESTREL * KILL1 * KILL2 * LAUNCH_DEBUGGER * LOCALLOC_LARGE * LOCALLOC_SMALL * _LOGGING * LONG64 * LOOP * LPSTR * LPTSTR * M3 * MAKE_ABW_PUBLIC * MATCHING_HARDWARE_VECTOR * MEMORYMARSHAL_SUPPORT * __MOBILE__ * MOBILE * MONO * __MonoCS__ * MONO_FEATURE_SRE * MS * MTNAMETABLE * MULTIMODULE_BUILD * NATIVEFORMAT_COMPRESSION * NATIVEFORMAT_PUBLICWRITER * NATIVE_IJW * NAVREADER_SUPPORTSLINEINFO * NESTED_HFA * NET * NET451 * NET48 * NET5_0_OR_GREATER * NET6_0_OR_GREATER * NET7_0_OR_GREATER * NETCOREAPP * NETCOREAPP2_0_OR_GREATER * NETCOREAPP2_2_OR_GREATER * NETCOREAPP3_0_OR_GREATER * NETCOREAPP3_1_OR_GREATER * NETCOREAPP_5_0_OR_GREATER * NETFRAMEWORK * NETFX_45 * NETSTANDARD * NETSTANDARD2_0 * NETSTANDARD2_1 * NETSTANDARD2_1_OR_GREATER * NETWORKINFORMATION_TEST * NEVER * NO_BITCODE * NoCCtor * NO_EPHEMERALKEYSET_AVAILABLE * NO_FEATURE_STATIC_DELEGATE * NO_NTAUTHENTICATION * NON_VEX_INTRINSICS * NOPARSE * NO_SUPPRESS_GC_TRANSITION * NOT_FIXED * not_used * NOT_YET * OP_ADD * OP_AND * OP_DIV * OP_MOD * OP_MUL * OP_OR * OP_SHR * OP_SUB * OPTIMIZED_MEASUREMENTDC * OPTIMIZED_MODE_WITHOUT_SCANNER * OP_XOR * OS_ISBROWSER_SUPPORT * OUT * PBTCOMPILER * PERF * PERFORMANCE_TESTS * PERMISSIVE * PHONE * PRIYAL * PRODUCT * PROFILING_SUPPORTED * QIL_TRACE_NODE_CREATION * READYTORUN * REFLECTION_FROM_USAGE * ReflectionOnly * REGEXGENERATOR * REGISTRY_ASSEMBLY * RELEASE * RESOURCE_KEYS * RESOURCES_EXTENSIONS * ROSLYN4_0_OR_GREATER * RUN_IN_CHROME * SAVE_ASSEMBLIES * SchemaTypeImport * SERIAL_PORTS * SIGN2048 * SINGLE_FILE_TEST_RUNNER * SOCKADDR_HAS_LENGTH * SOCKETASYNCCONTEXT_TRACE * SPLAY_MTNAMETABLE * STATS * StopMaskOptimisation * StressTest * SUPPORT_DYNAMIC_CODE * SUPPORT_JIT * SUPPORTS_NATIVE_METADATA_TYPE_LOADING * SUPPORTS_NATIVE_METADATA_TYPE_LOADING_AND_SUPPORTS_TOKEN_BASED_DISPATCH_CELLS * SUPPORTS_R2R_LOADING * SUPPORT_SURROGATE * SUPPORT_WK_USER_OBJS * SYSNETSECURITY_NO_OPENSSL * SYSTEM_HASHCODE_TESTVECTORS * SYSTEM_NET_PRIMITIVES_DLL * SYSTEM_NET_SOCKETS_DLL * SYSTEM_PRIVATE_CORELIB * TARGET_32BIT * TARGET_64BIT * TARGET_AMD64 * TARGET_ANDROID * TARGET_ARM * TARGET_ARM64 * TARGET_ARMV6 * TARGET_BROWSER * TARGET_FREEBSD * TARGET_ILLUMOS * TARGET_IOS * TARGET_IPHONE_SIMULATOR * TARGET_LINUX * TARGET_LOONGARCH64 * TARGET_MACCATALYST * TARGET_NETBSD * TARGET_OS_IPHONE * TARGET_OSX * TARGET_S390X * TARGETS_BROWSER * TARGET_SOLARIS * TargetsWindows * TARGET_TVOS * TARGET_UNIX * TARGET_WASM * TARGET_WATCHOS * TARGET_WINDOWS * TARGET_X86 * TEMP_HACK_FOR_SCHEMA_INFO * TEST_DEBUG_CONFIG_ALSO * TESTHOOK * TESTING_CNG_IMPLEMENTATION * TEST_WINRT * TRACEIT * TRACING * TRACK_HDC * true * TRUST_COMPILE_STATE * TRY * TYPE_LOADER_IMPLEMENTATION * TYPE_LOADER_TRACE * UNDEFINE_OTHER_METHOD * UNITTEST * UNIVERSAL_GENERICS * Unix * UNIXAMD64 * UNIX_AMD64_ABI * USC * USE_INSTRUMENTATION * USE_MDT_EVENTSOURCE * USE_RANDOM_SEED * USE_REDIRECT * USE_STRUCT * V2 * VERBOSE * VerifyIndex * VerifyPath * VerifySort * VEX_INTRINSICS * W3C_DEFAULT_ID_FORMAT * WACKYDEBUG * WIN32 * WIN_8_P * Windows * WINDOWS * WINHTTPHANDLER_TEST * WITH_MEMBERS * WITH_STOP * XASSEM * XMLSERIALIZERGENERATORTESTS * XSLT2

We can perform (indexed) search on repo for each item individually like this: