diff options
author | Ian Lance Taylor <iant@google.com> | 2008-02-07 04:35:41 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2008-02-07 04:35:41 +0000 |
commit | 5fe2a0f55b19713f5cfb423687ce51291c62d8d8 (patch) | |
tree | d869434a9e4785e9de6b537dd5920c84255d5242 /gold | |
parent | 88dd47ac00ee5a932bca9abbd2245c429dfd8f5b (diff) | |
download | gdb-5fe2a0f55b19713f5cfb423687ce51291c62d8d8.zip gdb-5fe2a0f55b19713f5cfb423687ce51291c62d8d8.tar.gz gdb-5fe2a0f55b19713f5cfb423687ce51291c62d8d8.tar.bz2 |
Even when stripping all symbols, we need to write out the dynamic
symbol table.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/gold.cc | 17 | ||||
-rw-r--r-- | gold/symtab.cc | 8 |
2 files changed, 13 insertions, 12 deletions
diff --git a/gold/gold.cc b/gold/gold.cc index 4b52b57..f067557 100644 --- a/gold/gold.cc +++ b/gold/gold.cc @@ -307,16 +307,13 @@ queue_final_tasks(const General_options& options, Task_token* final_blocker = new Task_token(true); // Queue a task to write out the symbol table. - if (!options.strip_all()) - { - final_blocker->add_blocker(); - workqueue->queue(new Write_symbols_task(symtab, - input_objects, - layout->sympool(), - layout->dynpool(), - of, - final_blocker)); - } + final_blocker->add_blocker(); + workqueue->queue(new Write_symbols_task(symtab, + input_objects, + layout->sympool(), + layout->dynpool(), + of, + final_blocker)); // Queue a task to write out the output sections. output_sections_blocker->add_blocker(); diff --git a/gold/symtab.cc b/gold/symtab.cc index 85761fd..54ead06 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -1827,14 +1827,18 @@ Symbol_table::sized_write_globals(const Input_objects* input_objects, const unsigned int output_count = this->output_count_; const section_size_type oview_size = output_count * sym_size; const unsigned int first_global_index = this->first_global_index_; - unsigned char* const psyms = of->get_output_view(this->offset_, oview_size); + unsigned char* psyms; + if (this->offset_ == 0 || output_count == 0) + psyms = NULL; + else + psyms = of->get_output_view(this->offset_, oview_size); const unsigned int dynamic_count = this->dynamic_count_; const section_size_type dynamic_size = dynamic_count * sym_size; const unsigned int first_dynamic_global_index = this->first_dynamic_global_index_; unsigned char* dynamic_view; - if (this->dynamic_offset_ == 0) + if (this->dynamic_offset_ == 0 || dynamic_count == 0) dynamic_view = NULL; else dynamic_view = of->get_output_view(this->dynamic_offset_, dynamic_size); |