summaryrefslogtreecommitdiff
path: root/gold/layout.h
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2014-09-23 23:18:19 -0700
committerCary Coutant <ccoutant@google.com>2014-09-23 23:20:57 -0700
commit635aa30e3ae9735e362cfd1cda2be9f7b65b32a2 (patch)
tree928d596357248c244e46007b15b558bcc386f16f /gold/layout.h
parentf4ebacfac0581274ead4c3ab43c316c6174790b3 (diff)
downloadbinutils-gdb-635aa30e3ae9735e362cfd1cda2be9f7b65b32a2.tar.gz
Fix race condition causing assert in Eh_frame_hdr::do_sized_write().
2014-09-23 Taiju Tsuiki <tzik@google.com> Cary Coutant <ccoutant@google.com> gold/ * gold.cc (queue_final_tasks): Add Write_sections_task as a blocker on input_sections_blocker. * layout.cc (Write_sections_task::locks): Unblock input_sections_blocker_. * layout.h (Write_sections_task::Write_sections_task): Add input_sections_blocker. * testsuite/Makefile.am (exception_x86_64_bnd_test): Add gcctestdir/ld to DEPENDENCIES. * testsuite/Makefile.in: Regenerate.
Diffstat (limited to 'gold/layout.h')
-rw-r--r--gold/layout.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gold/layout.h b/gold/layout.h
index 7c0113cdf70..032f5f332db 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -1454,9 +1454,11 @@ class Write_sections_task : public Task
public:
Write_sections_task(const Layout* layout, Output_file* of,
Task_token* output_sections_blocker,
+ Task_token* input_sections_blocker,
Task_token* final_blocker)
: layout_(layout), of_(of),
output_sections_blocker_(output_sections_blocker),
+ input_sections_blocker_(input_sections_blocker),
final_blocker_(final_blocker)
{ }
@@ -1481,6 +1483,7 @@ class Write_sections_task : public Task
const Layout* layout_;
Output_file* of_;
Task_token* output_sections_blocker_;
+ Task_token* input_sections_blocker_;
Task_token* final_blocker_;
};