diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2013-04-19 16:01:52 +0200 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2013-04-26 10:00:32 +0200 |
commit | 9d68ba4fc2b2f862bfb9619f74e082c88ab68604 (patch) | |
tree | e3e3d77d84dbf5d46f5640ddbd3be1392d156f66 | |
parent | 87ccfd07de099ec1c95e67b72aa18e2effb77b58 (diff) | |
download | meta-openembedded-9d68ba4fc2b2f862bfb9619f74e082c88ab68604.tar.gz |
llvm2.9: try to fix thumb build and disable it after failure
* khem: could you check what I'm doing wrong? This is out of my league..
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r-- | meta-oe/recipes-core/llvm/llvm2.9/0019-issue6065.patch | 35 | ||||
-rw-r--r-- | meta-oe/recipes-core/llvm/llvm2.9_2.9.bb | 9 |
2 files changed, 44 insertions, 0 deletions
diff --git a/meta-oe/recipes-core/llvm/llvm2.9/0019-issue6065.patch b/meta-oe/recipes-core/llvm/llvm2.9/0019-issue6065.patch new file mode 100644 index 000000000..aff3d1d06 --- /dev/null +++ b/meta-oe/recipes-core/llvm/llvm2.9/0019-issue6065.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | --- llvm-2.9.orig/lib/Target/ARM/ARMJITInfo.cpp 2013-04-19 14:49:28.063566919 +0200 | ||
2 | +++ llvm-2.9/lib/Target/ARM/ARMJITInfo.cpp 2013-04-19 15:24:31.065435029 +0200 | ||
3 | @@ -59,7 +59,17 @@ | ||
4 | // for the real target function right now. We have to act as if this | ||
5 | // whole compilation callback doesn't exist as far as the caller is | ||
6 | // concerned, so we can't just preserve the callee saved regs. | ||
7 | + // stmdb introduced in http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp?diff_format=h&r1=57911&r2=57910&pathrev=57911 | ||
8 | + // but fails on armv4t | ||
9 | + // | {standard input}: Assembler messages: | ||
10 | + // | {standard input}:22: Error: selected processor does not support Thumb mode `stmdb sp!,{r0,r1,r2,r3,lr}' | ||
11 | + // | {standard input}:31: Error: lo register required -- `ldmia sp!,{r0,r1,r2,r3,lr}' | ||
12 | + // | {standard input}:32: Error: lo register required -- `ldr pc,[sp],#4' | ||
13 | +#ifndef __thumb__ | ||
14 | "stmdb sp!, {r0, r1, r2, r3, lr}\n" | ||
15 | +#else | ||
16 | + "push {r0, r1, r2, r3, lr}\n" | ||
17 | +#endif | ||
18 | #if (defined(__VFP_FP__) && !defined(__SOFTFP__)) | ||
19 | "fstmfdd sp!, {d0, d1, d2, d3, d4, d5, d6, d7}\n" | ||
20 | #endif | ||
21 | @@ -99,8 +109,14 @@ | ||
22 | // The above twiddling of the saved return addresses allows us to | ||
23 | // deallocate everything, including the LR the stub saved, with two | ||
24 | // updating load instructions. | ||
25 | +#ifndef __thumb__ | ||
26 | "ldmia sp!, {r0, r1, r2, r3, lr}\n" | ||
27 | "ldr pc, [sp], #4\n" | ||
28 | +#else | ||
29 | + // thumb dont allow lr and pc to be poped in the same instruction. | ||
30 | + "pop {r0, r1, r2, r3, lr}\n" | ||
31 | + "pop {pc}\n" | ||
32 | +#endif | ||
33 | ); | ||
34 | #else // Not an ARM host | ||
35 | void ARMCompilationCallback() { | ||
diff --git a/meta-oe/recipes-core/llvm/llvm2.9_2.9.bb b/meta-oe/recipes-core/llvm/llvm2.9_2.9.bb index d5b8c0149..dc7f873bd 100644 --- a/meta-oe/recipes-core/llvm/llvm2.9_2.9.bb +++ b/meta-oe/recipes-core/llvm/llvm2.9_2.9.bb | |||
@@ -4,6 +4,15 @@ PR = "${INC_PR}.0" | |||
4 | 4 | ||
5 | SRC_URI += "file://0035-gcc-4.7.patch" | 5 | SRC_URI += "file://0035-gcc-4.7.patch" |
6 | 6 | ||
7 | # 0019-issue6065.patch is still needed but a bit modified, because it was resolved by | ||
8 | # http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp?r1=120304&r2=124694&pathrev=124694 | ||
9 | # http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp?diff_format=h&r1=57911&r2=57910&pathrev=57911 | ||
10 | # and still it fails with | ||
11 | # {standard input}:31: Error: invalid register list to push/pop instruction -- `pop {r0,r1,r2,r3,lr}' | ||
12 | # make[2]: *** [lib/Target/ARM/CMakeFiles/LLVMARMCodeGen.dir/ARMJITInfo.cpp.o] Error 1 | ||
13 | # SRC_URI += "file://0019-issue6065.patch" | ||
14 | ARM_INSTRUCTION_SET = "arm" | ||
15 | |||
7 | SRC_URI_append_libc-uclibc = " file://arm_fenv_uclibc.patch " | 16 | SRC_URI_append_libc-uclibc = " file://arm_fenv_uclibc.patch " |
8 | 17 | ||
9 | PARALLEL_MAKE_virtclass-native = "" | 18 | PARALLEL_MAKE_virtclass-native = "" |