diff options
author | Ian Lance Taylor <iant@google.com> | 2006-11-29 17:56:40 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2006-11-29 17:56:40 +0000 |
commit | a3ad94edd406b9abc26493761764d4034dda69fa (patch) | |
tree | 96485e8bba91a4aa51f34b0d3738ef3e7ddcbac3 /gold/gold.cc | |
parent | e1da3f5b9645750e966e471ff0db480d6450dcb7 (diff) | |
download | gdb-a3ad94edd406b9abc26493761764d4034dda69fa.zip gdb-a3ad94edd406b9abc26493761764d4034dda69fa.tar.gz gdb-a3ad94edd406b9abc26493761764d4034dda69fa.tar.bz2 |
Hash tables, dynamic section, i386 PLT, gold_assert.
Diffstat (limited to 'gold/gold.cc')
-rw-r--r-- | gold/gold.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gold/gold.cc b/gold/gold.cc index 3073b18..7c8ed8f 100644 --- a/gold/gold.cc +++ b/gold/gold.cc @@ -52,10 +52,14 @@ gold_nomem() gold_exit(false); } +// Handle an unreachable case. + void -gold_unreachable() +do_gold_unreachable(const char* filename, int lineno, const char* function) { - abort(); + fprintf(stderr, "%s: internal error in %s, at %s:%d\n", + program_name, function, filename, lineno); + gold_exit(false); } // This class arranges to run the functions done in the middle of the @@ -136,6 +140,10 @@ queue_middle_tasks(const General_options& options, Layout* layout, Workqueue* workqueue) { + // Define some sections and symbols needed for a dynamic link. This + // handles some cases we want to see before we read the relocs. + layout->create_initial_dynamic_sections(input_objects, symtab); + // Predefine standard symbols. This should be fast, so we don't // bother to create a task for it. define_standard_symbols(symtab, layout, input_objects->target()); @@ -215,7 +223,9 @@ queue_final_tasks(const General_options& options, // Queue a task to write out everything else. final_blocker->add_blocker(); - workqueue->queue(new Write_data_task(layout, of, final_blocker)); + workqueue->queue(new Write_data_task(layout, symtab, + input_objects->target(), + of, final_blocker)); // Queue a task to close the output file. This will be blocked by // FINAL_BLOCKER. |