mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
PR 10979
* script.cc (read_input_script): If we see a new SECTIONS clause, and we have added an input section, give an error. * layout.h (class Layout): Add have_added_input_section function. Add have_added_input_section_ field. * layout.cc (Layout::Layout): Initialize have_added_input_section_. (Layout::layout): Set have_added_input_section_. (Layout::layout_eh_frame): Likewise.
This commit is contained in:
parent
fc59c57250
commit
d7bb574500
@ -1,3 +1,15 @@
|
||||
2009-12-30 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR 10979
|
||||
* script.cc (read_input_script): If we see a new SECTIONS clause,
|
||||
and we have added an input section, give an error.
|
||||
* layout.h (class Layout): Add have_added_input_section function.
|
||||
Add have_added_input_section_ field.
|
||||
* layout.cc (Layout::Layout): Initialize
|
||||
have_added_input_section_.
|
||||
(Layout::layout): Set have_added_input_section_.
|
||||
(Layout::layout_eh_frame): Likewise.
|
||||
|
||||
2009-12-30 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR 10931
|
||||
|
@ -192,6 +192,7 @@ Layout::Layout(int number_of_input_files, Script_options* script_options)
|
||||
debug_info_(NULL),
|
||||
group_signatures_(),
|
||||
output_file_size_(-1),
|
||||
have_added_input_section_(false),
|
||||
sections_are_attached_(false),
|
||||
input_requires_executable_stack_(false),
|
||||
input_with_gnu_stack_note_(false),
|
||||
@ -610,6 +611,7 @@ Layout::layout(Sized_relobj<size, big_endian>* object, unsigned int shndx,
|
||||
|
||||
*off = os->add_input_section(object, shndx, name, shdr, reloc_shndx,
|
||||
this->script_options_->saw_sections_clause());
|
||||
this->have_added_input_section_ = true;
|
||||
|
||||
return os;
|
||||
}
|
||||
@ -818,6 +820,7 @@ Layout::layout_eh_frame(Sized_relobj<size, big_endian>* object,
|
||||
bool saw_sections_clause = this->script_options_->saw_sections_clause();
|
||||
*off = os->add_input_section(object, shndx, name, shdr, reloc_shndx,
|
||||
saw_sections_clause);
|
||||
this->have_added_input_section_ = true;
|
||||
}
|
||||
|
||||
return os;
|
||||
|
@ -433,6 +433,11 @@ class Layout
|
||||
is_linkonce(const char* name)
|
||||
{ return strncmp(name, ".gnu.linkonce", sizeof(".gnu.linkonce") - 1) == 0; }
|
||||
|
||||
// Whether we have added an input section.
|
||||
bool
|
||||
have_added_input_section() const
|
||||
{ return this->have_added_input_section_; }
|
||||
|
||||
// Return true if a section is a debugging section.
|
||||
static inline bool
|
||||
is_debug_info_section(const char* name)
|
||||
@ -990,6 +995,8 @@ class Layout
|
||||
Group_signatures group_signatures_;
|
||||
// The size of the output file.
|
||||
off_t output_file_size_;
|
||||
// Whether we have added an input section to an output section.
|
||||
bool have_added_input_section_;
|
||||
// Whether we have attached the sections to the segments.
|
||||
bool sections_are_attached_;
|
||||
// Whether we have seen an object file marked to require an
|
||||
|
@ -1398,6 +1398,9 @@ read_input_script(Workqueue* workqueue, Symbol_table* symtab, Layout* layout,
|
||||
&lex,
|
||||
input_file->will_search_for());
|
||||
|
||||
bool old_saw_sections_clause =
|
||||
layout->script_options()->saw_sections_clause();
|
||||
|
||||
if (yyparse(&closure) != 0)
|
||||
{
|
||||
if (closure.found_incompatible_target())
|
||||
@ -1411,6 +1414,12 @@ read_input_script(Workqueue* workqueue, Symbol_table* symtab, Layout* layout,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!old_saw_sections_clause
|
||||
&& layout->script_options()->saw_sections_clause()
|
||||
&& layout->have_added_input_section())
|
||||
gold_error(_("%s: SECTIONS seen after other input files; try -T/--script"),
|
||||
input_file->filename().c_str());
|
||||
|
||||
if (!closure.saw_inputs())
|
||||
return true;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user