[PATCH] D37915: [llvm-objcopy] Add support for dynamic relocations
    James Henderson via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Sep 18 07:02:37 PDT 2017
    
    
  
jhenderson added a comment.
I definitely agree with your TODO comment. Could we simply add a function a bit like "finalize" but for late initialization to the SectionBase interface, and implemented/overridden in the various sub-classes as required? It would, I think, just need to take the list of sections, or the Object itself as an argument. That should be another change anyway.
As for the whole code-duplication situation, I think it may be possible to derive from a templated base class like so:
  class RelocationSectionBase <typename SymtabType>: public SectionBase
  {
     SymtabType Symbols;
     void setSymTab(SymtabType * SymTab) { Symbols = SymTab; }
     //other shared code here, e.g. finalize, setSection etc
  }
  
  class RelocationSection : public RelocationSectionBase<SymbolTableSection>
  {
    // Stuff specific to static relocation sections, e.g. addRelocation, writeSection
  }
  
  class DynamicRelocationSection : public RelocationSectionBase<DynamicSymbolTableSection>
  {
    // Stuff specific to dynamic relocation sections, e.g. writeSection (which would probably just be a copy of Section's writeSection)
  }
I believe this would avoid any additional casting, though without actually trying to implement it, I'm not certain.
Repository:
  rL LLVM
https://reviews.llvm.org/D37915
    
    
More information about the llvm-commits
mailing list