[PowerPC, Mach-O] PPCMachObjectWriter.cpp, at long last

David Fang fang at csl.cornell.edu
Thu Jul 25 11:27:52 PDT 2013


Rafael,

Testing .s->.o via llvm-mc would be ideal, but the PPCAsmParser doesn't 
support darwin syntax yet.
I've revised the test commands and added a comment:

[hello-reloc.ll]
...
; 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: 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
; RUN-XFAIL: diff -u %t2 %t4 || diff -u %t3 %t5

The RUN-XFAIL doesn't actually run, it's just a comment.
The diff first compares object files, and if that fails, the second diff 
will also fail and show the differences from macho-dump.

Would this be acceptable for now?

Fang

> OK, now that I see that this is adding the entire PPCMachObjectWriter
> I think it should be tested with llvm-mc. Even a hack like using a .s
> file with "linux" syntax would be better than depending on llc
> -filetype=obj.
>
> In the past uses llc -filetype=obj stayed around longer than intended
> and were fairly brittle.
>
> On 25 July 2013 00:05, David Fang <fang at csl.cornell.edu> wrote:
>> Hi,
>>         Attached is a patch from my powerpc-darwin8 branch
>> [https://github.com/fangism/llvm/tree/powerpc-darwin8] that I've been
>> maintaining and merging from trunk for months.  This contains the first cut
>> of the relocation entry implementation for mach-o/PPC, which is missing on
>> trunk.
>>
>> The patch addresses the feature requested here:
>> http://llvm.org/bugs/show_bug.cgi?id=14636
>>
>> 1. This patch was extracted piecewise from my powerpc-darwin8 branch.  I can
>> only compile the branch and not master/trunk because of other
>> compiler-workarounds that are needed, but excluded from this patch.
>> It's *possible* I may have made a cut/paste/merge error.
>> I could use a volunteer or two to actually test-compile and run this on
>> svn-trunk.  Running the new test CodeGen/PowerPC/hello-reloc.ll with
>> llvm-lit would be great feedback, and shouldn't require a Darwin machine,
>> just have Targets=PPC.
>>
>> 2. I've tested PIC objects on small hello-world sized programs such as the
>> test that is included.  The executables run correctly.
>>
>> 3. I have compared the object files and their dumps against system-assembled
>> (GNU as) object files.  (See bug report above for details.)
>>
>> 4. Style comments are welcome, though effort to conform on this was minimal.
>> I plan to follow through on feedback.
>>
>> I understand this may take many iterations, but the ball has to get rolling
>> some time.
>>
>> Let the comments begin.
>>
>> Fang
>>
>> --
>> David Fang
>> http://www.csl.cornell.edu/~fang/
>>
>> _______________________________________________
>> 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/




More information about the llvm-commits mailing list