This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] gold: provide __ehdr_start magic symbol

This makes gold define __ehdr_start, consistent with the change that just
went into BFD ld.

Ok for trunk?


2012-06-22  Roland McGrath  <>

	* (finalize): Define __ehdr_start symbol if applicable.

diff --git a/gold/ b/gold/
index 154be88..ad667ab 100644
--- a/gold/
+++ b/gold/
@@ -2509,6 +2509,16 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
   while (target->may_relax()
 	 && target->relax(pass, input_objects, symtab, this, task));
+  // If there is a load segment that contains the file and program headers,
+  // provide a symbol __ehdr_start pointing there.
+  // A program can use this to examine itself robustly.
+  if (load_seg != NULL)
+    symtab->define_in_output_segment("__ehdr_start", NULL,
+				     Symbol_table::PREDEFINED, load_seg, 0, 0,
+				     elfcpp::STT_NOTYPE, elfcpp::STB_GLOBAL,
+				     elfcpp::STV_DEFAULT, 0,
+				     Symbol::SEGMENT_START, true);
   // Set the file offsets of all the non-data sections we've seen so
   // far which don't have to wait for the input sections.  We need
   // this in order to finalize local symbols in non-allocated

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]