[Zucchini] Create elf disassembler.

Creates Disassembler that recognises and parses ELF format. For now, it only supports Intel architeture. Support for Arm will be added in follow-up CLs.

Change-Id: Ibdcf113b573f22844b6a1611c5ff6df46829b9b3
Reviewed-on: https://chromium-review.googlesource.com/1136841
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Greg Thompson <grt@chromium.org>
Reviewed-by: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582233}
NOKEYCHECK=True
GitOrigin-RevId: 3c64e078fea9f23e44939c25ca02cf05b72b2c40
diff --git a/disassembler.h b/disassembler.h
index 4f528ed..ab1dafb 100644
--- a/disassembler.h
+++ b/disassembler.h
@@ -17,6 +17,12 @@
 
 namespace zucchini {
 
+// A vacuous ReferenceReader that produces no references.
+class EmptyReferenceReader : public ReferenceReader {
+ public:
+  base::Optional<Reference> GetNext() override;
+};
+
 // Disassembler needs to be declared before ReferenceGroup because the latter
 // contains member pointers based on the former, and we use a compiler flag,
 // -fcomplete-member-pointers, which enforces that member pointer base types are