[PATCH] Don't look up a stub for an undefined symbol.

Eric Christopher echristo@gmail.com
Wed Jun 7 21:59:00 GMT 2017


Hi Cary, Han,

Here's a quick patch that:

a) Adds some gold_debug target debugging to look for mismatched cases
of having a stub and looking for a stub, and
b) Notices that we were trying to look up a stub to an undefined
symbol when we were explicitly not creating a stub for it earlier.

OK?

Thanks!

-eric

2017-06-07  Eric Christopher  <echristo@gmail.com>

        * aarch64.cc (maybe_apply_stub): Add debug logging for looking
        up stubs to undefined symbols and early return rather than
        fail to look them up.
(scan_reloc_for_stub): Add debug logging for no stub creation
        for undefined symbols.
-------------- next part --------------
diff --git a/gold/aarch64.cc b/gold/aarch64.cc
index c9bb6b730d..dd6a7ddab3 100644
--- a/gold/aarch64.cc
+++ b/gold/aarch64.cc
@@ -3746,8 +3746,13 @@ Target_aarch64<size, big_endian>::scan_reloc_for_stub(
 	  psymval = &symval;
 	}
       else if (gsym->is_undefined())
-	// There is no need to generate a stub symbol is undefined.
-	return;
+	{
+	  // There is no need to generate a stub symbol is undefined.
+          gold_debug(DEBUG_TARGET,
+                     "stub: not creating a stub for undefined symbol %s in file %s",
+                     gsym->name(), aarch64_relobj->name().c_str());
+          return;
+	}
     }
 
   // Get the symbol value.
@@ -5403,6 +5408,14 @@ maybe_apply_stub(unsigned int r_type,
   if (stub_type == ST_NONE)
     return false;
 
+  // We don't create stubs for undefined symbols so don't look for one.
+  if (gsym && gsym->is_undefined()) {
+    gold_debug(DEBUG_TARGET,
+               "stub: looking for a stub for undefined symbol: %s",
+               gsym->name());
+    return false;
+  }
+
   const The_aarch64_relobj* aarch64_relobj =
       static_cast<const The_aarch64_relobj*>(object);
   The_stub_table* stub_table = aarch64_relobj->stub_table(relinfo->data_shndx);


More information about the Binutils mailing list