Change fix to ensure that we return a valid license info.
diff --git a/rules/gather_licenses_info.bzl b/rules/gather_licenses_info.bzl
index 64f9a43..518d5ff 100644
--- a/rules/gather_licenses_info.bzl
+++ b/rules/gather_licenses_info.bzl
@@ -30,9 +30,9 @@
     The is to make str(label) compatible between bazel 5.x and 6.x
     """
     s = str(label)
-    if s.startswith("@//"):
+    if s.startswith('@//'):
         return s[1:]
-    elif s.startswith("@@//"):
+    elif s.startswith('@@//'):
         return s[2:]
     return s
 
@@ -150,7 +150,7 @@
     licenses_files = []
     for dep in deps:
         if TransitiveLicensesInfo in dep:
-            transitive_licenses_info = dep[TransitiveLicensesInfo]
+            transitive_licenses_info = dep[TransitiveLicensesInfo]            
             lic_info, _ = licenses_info_to_json(transitive_licenses_info)
             licenses_json.extend(lic_info)
             for info in transitive_licenses_info.licenses.to_list():
@@ -253,7 +253,6 @@
                 label = _strip_null_repo(license.label),
                 used_by = ",\n          ".join(sorted(['"%s"' % x for x in used_by[str(license.label)]])),
             ))
-
             # Additionally return all File references so that other rules invoking
             # this method can load license text file contents from external repos
             # using runfiles
@@ -267,12 +266,8 @@
             licenses = ",\n          ".join(sorted(['"%s"' % _strip_null_repo(x) for x in dep_licenses])),
         ))
 
-    top_level_target = ""
-    if hasattr(licenses_info, "target_under_license"):
-        top_level_target = licenses_info.target_under_license
-
     return [main_template.format(
-        top_level_target = _strip_null_repo(top_level_target),
+        top_level_target = _strip_null_repo(licenses_info.target_under_license),
         dependencies = ",".join(all_deps),
         licenses = ",".join(all_licenses),
     )], all_license_text_files
diff --git a/rules/licenses_core.bzl b/rules/licenses_core.bzl
index fff3b82..921cb06 100644
--- a/rules/licenses_core.bzl
+++ b/rules/licenses_core.bzl
@@ -151,7 +151,12 @@
     # fully resolved. If exec is in the bin_dir path, then the current
     # configuration is probably cfg = exec.
     if "-exec-" in ctx.bin_dir.path:
-        return [provider_factory(deps = depset(), licenses = depset(), traces = [])]
+        return [provider_factory(
+            target_under_license = target.label,
+            deps = depset(),
+            licenses = depset(),
+            traces = [],
+        )]
 
     # Now gather transitive collection of providers from the targets
     # this target depends upon.
@@ -164,7 +169,12 @@
     _get_transitive_metadata(ctx, trans_licenses, trans_other_metadata, trans_package_info, trans_deps, traces, provider_factory, filter_func)
 
     if not licenses and not trans_licenses:
-        return [provider_factory(deps = depset(), licenses = depset(), traces = [])]
+        return [provider_factory(
+            target_under_license = target.label,
+            deps = depset(),
+            licenses = depset(),
+            traces = [],
+        )]
 
     # If this is the target, start the sequence of traces.
     if ctx.attr._trace[TraceInfo].trace and ctx.attr._trace[TraceInfo].trace in str(ctx.label):