mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 03:24:41 +08:00
gold/
* layout.cc (finalize): Define __ehdr_start symbol if applicable.
This commit is contained in:
parent
b4a58790db
commit
eabc84f484
@ -1,3 +1,7 @@
|
||||
2012-06-22 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* layout.cc (finalize): Define __ehdr_start symbol if applicable.
|
||||
|
||||
2012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com>
|
||||
|
||||
* plugin.cc (Plugin::load): Handle position independent executables.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user