[llvm] r200309 - Provide a stub Target Streamer implementation for PPC MachO

David Fang fang at csl.cornell.edu
Wed Jan 29 13:02:47 PST 2014


Hi,
 	The attached updated test 'hello-reloc.ll' exposes the crash that 
Iain was observing.  It just enables an llc test that emits an object file 
directly.
 	Rafael, when I submitted this test originally, you asked that 
the llc test be disabled, but this proves that it is critical to catching 
some breakages.  It builds an object, but doesn't try to execute it.  Ok 
to commit?

David

> Iain,
> 	I've merged the powerpc-darwin8 branch up to the revision *before* 
> this commit, and llvm-mc doesn't crash for me, using the 
> test/CodeGen/hello-reloc.s test case, which invokes llvm-mc, targets 
> powerpc-darwin, and includes a .machine directive.  Since you added the 
> PPC-darwin-asm-parser, .machine never crashed, it's just been ignored. I 
> would expect this test to trigger buildbot alarms if something were amiss on 
> bots with the PowerPC target.
> 	 Is some other way to tickle the problem, that I'm missing?
>
> David
>
>>  Can you added a testcase (with llvm-mc) showing that we don't crash
>>  with .machine and having a fixme on what should happen once it is
>>  implemented?
>>
>>  On 28 January 2014 06:03, Iain Sandoe <iain at codesourcery.com> wrote:
>> >  Author: iains
>> >  Date: Tue Jan 28 05:03:17 2014
>> >  New Revision: 200309
>> > 
>> >  URL: http://llvm.org/viewvc/llvm-project?rev=200309&view=rev
>> >  Log:
>> >  Provide a stub Target Streamer implementation for PPC MachO
>> > 
>> >  At present, this handles .tc (error) and needs to be expanded to deal 
>> >  properly with .machine
>> > 
>> > 
>> >  Modified:
>> >      llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
>> > 
>> >  Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
>> >  URL: 
>> >  http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp?rev=200309&r1=200308&r2=200309&view=diff
>> >  ==============================================================================
>> >  --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp 
>> >  (original)
>> >  +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp Tue 
>> >  Jan 28 05:03:17 2014
>>> @@ -139,6 +139,18 @@ public:
>> >       // limit the parser?
>> >     }
>> >  };
>> >  +
>> >  +class PPCTargetMachOStreamer : public PPCTargetStreamer {
>> >  +public:
>> >  +  PPCTargetMachOStreamer(MCStreamer &S) : PPCTargetStreamer(S) {}
>> >  +  virtual void emitTCEntry(const MCSymbol &S) {
>> >  +    llvm_unreachable("Unknown pseudo-op: .tc");
>> >  +  }
>> >  +  virtual void emitMachine(StringRef CPU) {
>> >  +    // FIXME: We should update the CPUType, CPUSubType in the Object 
>> >  file if
>> >  +    // the new values are different from the defaults.
>> >  +  }
>> >  +};
>> >   }
>> > 
>> >   // This is duplicated code. Refactor this.
>>> @@ -149,8 +161,11 @@ static MCStreamer *createMCStreamer(cons
>> >                                       const MCSubtargetInfo &STI,
>> >                                       bool RelaxAll,
>> >                                       bool NoExecStack) {
>> >  -  if (Triple(TT).isOSDarwin())
>> >  -    return createMachOStreamer(Ctx, MAB, OS, Emitter, RelaxAll);
>> >  +  if (Triple(TT).isOSDarwin()) {
>> >  +    MCStreamer *S = createMachOStreamer(Ctx, MAB, OS, Emitter, 
>> >  RelaxAll);
>> >  +    new PPCTargetMachOStreamer(*S);
>> >  +    return S;
>> >  +  }
>> > 
>> >     MCStreamer *S =
>> >         createELFStreamer(Ctx, MAB, OS, Emitter, RelaxAll, NoExecStack);
>> > 
>> > 
>>> _______________________________________________
>> >  llvm-commits mailing list
>> >  llvm-commits at cs.uiuc.edu
>> >  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> _______________________________________________
>>  llvm-commits mailing list
>>  llvm-commits at cs.uiuc.edu
>>  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>
>

-- 
David Fang
http://www.csl.cornell.edu/~fang/
-------------- next part --------------
diff --git a/test/CodeGen/PowerPC/hello-reloc.ll b/test/CodeGen/PowerPC/hello-reloc.ll
index 0fda921..4af6f1c 100644
--- a/test/CodeGen/PowerPC/hello-reloc.ll
+++ b/test/CodeGen/PowerPC/hello-reloc.ll
@@ -3,7 +3,7 @@
 ; which tests llvm-mc.
 
 ; RUN: llc -filetype=asm -relocation-model=pic -mcpu=g4 -mtriple=powerpc-apple-darwin8 %s -o - | tee %t1 | FileCheck -check-prefix=DARWIN-G4-ASM %s
-; RUN-WORKS-BUT-SKIPPING: llc -filetype=obj -relocation-model=pic -mcpu=g4 -mtriple=powerpc-apple-darwin8 %s -o - | tee %t2 | macho-dump | tee %t3 | FileCheck -check-prefix=DARWIN-G4-DUMP %s
+; RUN: llc -filetype=obj -relocation-model=pic -mcpu=g4 -mtriple=powerpc-apple-darwin8 %s -o - | tee %t2 | macho-dump | tee %t3 | FileCheck -check-prefix=DARWIN-G4-DUMP %s
 
 ; FIXME: validating .s->.o requires darwin asm syntax support in PPCAsmParser
 ; RUN-XFAIL: llvm-mc -relocation-model=pic -mcpu=g4 -triple=powerpc-apple-darwin8 %t1 -o - | tee %t4 | macho-dump | tee %t5 | FileCheck -check-prefix=DARWIN-G4-DUMP %s


More information about the llvm-commits mailing list