X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2Fdefstd.cc;h=a7fdd93369fc35990401cd9503bbec07c3f740ab;hb=73b9be8b5301c4ac056e10c38a47414867ee892a;hp=1e2431fd475dd998b997cba87e5b5ffc0f138534;hpb=04df9a5751b3c08c227a36f5023da378cfee4628;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/defstd.cc b/gold/defstd.cc index 1e2431fd47..a7fdd93369 100644 --- a/gold/defstd.cc +++ b/gold/defstd.cc @@ -1,8 +1,29 @@ // defstd.cc -- define standard symbols for gold. +// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + #include "gold.h" #include "symtab.h" +#include "layout.h" #include "defstd.h" // This is a simple file which defines the standard symbols like @@ -86,7 +107,19 @@ const Define_symbol_in_section in_section[] = 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]; @@ -107,6 +140,20 @@ const Define_symbol_in_segment in_segment[] = Symbol::SEGMENT_START, // offset_from_base true // only_if_ref }, + { + "__ehdr_start", // name + elfcpp::PT_LOAD, // segment_type + elfcpp::PF(0), // segment_flags_set + elfcpp::PF(0), // segment_flags_clear + 0, // value + 0, // size + elfcpp::STT_NOTYPE, // type + elfcpp::STB_GLOBAL, // binding + elfcpp::STV_HIDDEN, // visibility + 0, // nonvis + Symbol::SEGMENT_START, // offset_from_base + true // only_if_ref + }, { "etext", // name elfcpp::PT_LOAD, // segment_type @@ -217,7 +264,7 @@ const Define_symbol_in_segment in_segment[] = elfcpp::STV_DEFAULT, // visibility 0, // nonvis Symbol::SEGMENT_END, // offset_from_base - false // only_if_ref + true // only_if_ref } }; @@ -229,11 +276,13 @@ namespace gold { void -define_standard_symbols(Symbol_table* symtab, const Layout* layout, - Target* target) +define_standard_symbols(Symbol_table* symtab, const Layout* layout) { - symtab->define_symbols(layout, target, in_section_count, in_section); - symtab->define_symbols(layout, target, in_segment_count, in_segment); + bool saw_sections_clause = layout->script_options()->saw_sections_clause(); + symtab->define_symbols(layout, in_section_count, in_section, + saw_sections_clause); + symtab->define_symbols(layout, in_segment_count, in_segment, + saw_sections_clause); } } // End namespace gold.