gold patch committed: PR 10893: More predefined symbols

View: New views
1 Messages — Rating Filter:   Alert me  

gold patch committed: PR 10893: More predefined symbols

by Ian Lance Taylor-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

PR 10893 is about some symbols which GNU ld defines by default but
gold does not.  This patch fixes the problem.  Besides the ones
pointed out in the PR, I added __stack, since it is in the default GNU
ld ELF linker script.  Committed to mainline and 2.20 branch.

Ian


2009-11-03  Ian Lance Taylor  <iant@...>

        PR 10893
        * defstd.cc (in_section): Add entries for __rel_iplt_start,
        __rel_iplt_end, __rela_iplt_start, __rela_iplt_end, and __stack.



Index: defstd.cc
===================================================================
RCS file: /cvs/src/src/gold/defstd.cc,v
retrieving revision 1.6
diff -p -u -r1.6 defstd.cc
--- defstd.cc 4 Feb 2008 05:41:39 -0000 1.6
+++ defstd.cc 3 Nov 2009 15:40:13 -0000
@@ -107,7 +107,67 @@ const Define_symbol_in_section in_sectio
     0, // nonvis
     true, // offset_is_from_end
     true // only_if_ref
-  }
+  },
+  {
+    "__rel_iplt_start", // name
+    ".rel.iplt", // output_section
+    0, // value
+    0, // size
+    elfcpp::STT_NOTYPE, // type
+    elfcpp::STB_GLOBAL, // binding
+    elfcpp::STV_HIDDEN, // visibility
+    0, // nonvis
+    false, // offset_is_from_end
+    true // only_if_ref
+  },
+  {
+    "__rel_iplt_end", // name
+    ".rel.iplt", // output_section
+    0, // value
+    0, // size
+    elfcpp::STT_NOTYPE, // type
+    elfcpp::STB_GLOBAL, // binding
+    elfcpp::STV_HIDDEN, // visibility
+    0, // nonvis
+    true, // offset_is_from_end
+    true // only_if_ref
+  },
+  {
+    "__rela_iplt_start", // name
+    ".rela.iplt", // output_section
+    0, // value
+    0, // size
+    elfcpp::STT_NOTYPE, // type
+    elfcpp::STB_GLOBAL, // binding
+    elfcpp::STV_HIDDEN, // visibility
+    0, // nonvis
+    false, // offset_is_from_end
+    true // only_if_ref
+  },
+  {
+    "__rela_iplt_end", // name
+    ".rela.iplt", // output_section
+    0, // value
+    0, // size
+    elfcpp::STT_NOTYPE, // type
+    elfcpp::STB_GLOBAL, // binding
+    elfcpp::STV_HIDDEN, // visibility
+    0, // nonvis
+    true, // offset_is_from_end
+    true // only_if_ref
+  },
+  {
+    "__stack", // name
+    ".stack", // output_section
+    0, // value
+    0, // size
+    elfcpp::STT_NOTYPE, // type
+    elfcpp::STB_GLOBAL, // binding
+    elfcpp::STV_DEFAULT, // visibility
+    0, // nonvis
+    false, // offset_is_from_end
+    true // only_if_ref
+  },
 };
 
 const int in_section_count = sizeof in_section / sizeof in_section[0];