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>
|
2009-12-30 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
PR 10931
|
PR 10931
|
||||||
|
@ -192,6 +192,7 @@ Layout::Layout(int number_of_input_files, Script_options* script_options)
|
|||||||
debug_info_(NULL),
|
debug_info_(NULL),
|
||||||
group_signatures_(),
|
group_signatures_(),
|
||||||
output_file_size_(-1),
|
output_file_size_(-1),
|
||||||
|
have_added_input_section_(false),
|
||||||
sections_are_attached_(false),
|
sections_are_attached_(false),
|
||||||
input_requires_executable_stack_(false),
|
input_requires_executable_stack_(false),
|
||||||
input_with_gnu_stack_note_(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,
|
*off = os->add_input_section(object, shndx, name, shdr, reloc_shndx,
|
||||||
this->script_options_->saw_sections_clause());
|
this->script_options_->saw_sections_clause());
|
||||||
|
this->have_added_input_section_ = true;
|
||||||
|
|
||||||
return os;
|
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();
|
bool saw_sections_clause = this->script_options_->saw_sections_clause();
|
||||||
*off = os->add_input_section(object, shndx, name, shdr, reloc_shndx,
|
*off = os->add_input_section(object, shndx, name, shdr, reloc_shndx,
|
||||||
saw_sections_clause);
|
saw_sections_clause);
|
||||||
|
this->have_added_input_section_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return os;
|
return os;
|
||||||
|
@ -433,6 +433,11 @@ class Layout
|
|||||||
is_linkonce(const char* name)
|
is_linkonce(const char* name)
|
||||||
{ return strncmp(name, ".gnu.linkonce", sizeof(".gnu.linkonce") - 1) == 0; }
|
{ 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.
|
// Return true if a section is a debugging section.
|
||||||
static inline bool
|
static inline bool
|
||||||
is_debug_info_section(const char* name)
|
is_debug_info_section(const char* name)
|
||||||
@ -990,6 +995,8 @@ class Layout
|
|||||||
Group_signatures group_signatures_;
|
Group_signatures group_signatures_;
|
||||||
// The size of the output file.
|
// The size of the output file.
|
||||||
off_t output_file_size_;
|
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.
|
// Whether we have attached the sections to the segments.
|
||||||
bool sections_are_attached_;
|
bool sections_are_attached_;
|
||||||
// Whether we have seen an object file marked to require an
|
// 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,
|
&lex,
|
||||||
input_file->will_search_for());
|
input_file->will_search_for());
|
||||||
|
|
||||||
|
bool old_saw_sections_clause =
|
||||||
|
layout->script_options()->saw_sections_clause();
|
||||||
|
|
||||||
if (yyparse(&closure) != 0)
|
if (yyparse(&closure) != 0)
|
||||||
{
|
{
|
||||||
if (closure.found_incompatible_target())
|
if (closure.found_incompatible_target())
|
||||||
@ -1411,6 +1414,12 @@ read_input_script(Workqueue* workqueue, Symbol_table* symtab, Layout* layout,
|
|||||||
return false;
|
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())
|
if (!closure.saw_inputs())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user