[PATCH] D11267: LLD: Add AMDGPU ELF ReaderWriter

Simon Atanasyan simon at atanasyan.com
Sun Aug 2 03:48:53 PDT 2015


atanasyan added a reviewer: ruiu.
atanasyan added a comment.

I added some notes and included Rui Ueyama to the reviewers list.


================
Comment at: lib/ReaderWriter/ELF/AMDGPU/AMDGPUExecutableWriter.cpp:18-33
@@ +17,17 @@
+
+void AMDGPUExecutableWriter::createImplicitFiles(
+    std::vector<std::unique_ptr<File>> &Result) {
+  // ExecutableWriter::createImplicitFiles() adds C runtime symbols that we
+  // don't need, so we use the OutputELFWriter implementation instead.
+  OutputELFWriter<ELF64LE>::createImplicitFiles(Result);
+}
+
+void AMDGPUExecutableWriter::finalizeDefaultAtomValues() {
+
+  // ExecutableWriter::finalizeDefaultAtomValues() assumes the presence of
+  // C runtime symbols.  However, since we skip the call to
+  // ExecutableWriter::createImplicitFiles(), these symbols are never added
+  // and ExectuableWriter::finalizeDefaultAtomValues() will crash if we call
+  // it.
+  OutputELFWriter<ELF64LE>::finalizeDefaultAtomValues();
+}
----------------
These methods do nothing now. I suggest to remove them from this commit and add later if necessary.

================
Comment at: lib/ReaderWriter/ELF/AMDGPU/AMDGPULinkingContext.h:23
@@ +22,3 @@
+public:
+  int getMachineType() const override { return llvm::ELF::EM_AMDGPU; }
+  AMDGPULinkingContext(llvm::Triple triple);
----------------
Usually we put constructors in the beginning of the class declarations. Other methods go after that.

================
Comment at: lib/ReaderWriter/ELF/AMDGPU/AMDGPULinkingContext.h:31
@@ +30,3 @@
+
+void setAMDGPUELFHeader(ELFHeader<ELF32LE> &elfHeader);
+void setAMDGPUELFHeader(ELFHeader<ELF64LE> &elfHeader);
----------------
Do you really need this function declaration? Below in the `AMDGPULinkingContext.cpp` you define `void setAMDGPUELFHeader(ELFHeader<ELF64LE> &elfHeader)` only.


http://reviews.llvm.org/D11267







More information about the llvm-commits mailing list