[llvm-commits] [PATCH]: sketch of PPC32 ELF writer

Roman Divacky rdivacky at freebsd.org
Mon Aug 1 11:53:07 PDT 2011


Looks fine to do what? :)

One more thing, PPCLinuxMCAsmInfo() does not set PPC to be BigEndian.
OK to commit this?

pes ~rdivacky/llvm# svn diff lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
Index: lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
===================================================================
--- lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp    (revision 136618)
+++ lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp    (working copy)
@@ -58,5 +58,6 @@
   Data64bitsDirective = is64Bit ? "\t.quad\t" : 0;
   HasLCOMMDirective = true;
   AssemblerDialect = 0;           // Old-Style mnemonics.
+  IsLittleEndian = false;
 }
 

With this I am able to debug vim and floats work again (with the ELF writer
patches).

On Mon, Aug 01, 2011 at 11:22:26AM -0700, Evan Cheng wrote:
> Looks fine to me. Thanks.
> 
> Evan
> On Aug 1, 2011, at 11:19 AM, Roman Divacky wrote:
> 
> > Hi,
> > 
> > the attached two patches sketch out PPC32 ELF writer.
> > 
> > 1) powerpc-mc-md.patch
> > 
> >        This defines some PPC relocation types and introduces
> >        PPCELFObjectWriter and ELFPPCAsmBackend. Including ApplyFixup()
> >        implementation.
> > 
> >        I think this patch is basically committable.
> > 
> > 2) powerpc-mc.patch
> > 
> >        This implements PPCELFObjectWriter class including quite wrong
> >        GetRelocType(). There's a hack in RecordRelocation where
> >        fixup_ppc_ha16/fixup_ppc_lo16 offset needs to be adjusted by two.
> >        I don't know how to do this properly.
> > 
> >        I think this needs more work on the GetRelocType() and the fixup
> >        hack.
> > 
> > With these two patches applied I am able to compile a running hello world on
> > FreeBSD using clang -integrated-as. It can compile non-running vim. I used
> > to be able to compile -g version of vim and it went quite far before it
> > crashed. Debug compilation is not possibly anymore, I suspect some endian
> > issue (gdb says: Dwarf Error: wrong version in compilation unit header (is
> > 512, should be 2))
> > 
> > What should I do with these patches? The first one seems committable (and
> > touches only PowerPC code), the second should be ok to commit without the +2
> > hack and with the GetRelocType() just asserting.
> > 
> > I don't have any tests for this nor I think I'll do any more significant work.
> > 
> > Comments? 
> > 
> > roman
> > <powerpc-mc-md.patch><powerpc-mc.patch>_______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list