diff options
author | Eivind Uggedal <eivind@uggedal.com> | 2015-09-30 08:31:12 +0000 |
---|---|---|
committer | Eivind Uggedal <eivind@uggedal.com> | 2015-09-30 08:31:12 +0000 |
commit | d241a682bb4bff9b2247c8003e3f086ffb92cd6e (patch) | |
tree | 652696333c77c864936204de3dd32505f9d26b83 /community/go-bootstrap/fix-arm-hackery.patch | |
parent | 394aeb733e12eef9fc309fb8753c28d6095f4551 (diff) | |
download | aports-d241a682bb4bff9b2247c8003e3f086ffb92cd6e.tar.bz2 aports-d241a682bb4bff9b2247c8003e3f086ffb92cd6e.tar.xz |
community/go-bootstrap: moved from main
Diffstat (limited to 'community/go-bootstrap/fix-arm-hackery.patch')
-rw-r--r-- | community/go-bootstrap/fix-arm-hackery.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/community/go-bootstrap/fix-arm-hackery.patch b/community/go-bootstrap/fix-arm-hackery.patch new file mode 100644 index 0000000000..f5a447264c --- /dev/null +++ b/community/go-bootstrap/fix-arm-hackery.patch @@ -0,0 +1,98 @@ +--- go/src/cmd/dist/arm.c ++++ go.fixed/src/cmd/dist/arm.c +@@ -11,8 +11,8 @@ + return "6"; + } + #else +-static void useVFPv3(void); +-static void useVFPv1(void); ++void useVFPv3(void); ++void useVFPv1(void); + + char * + xgetgoarm(void) +@@ -26,46 +26,6 @@ + else if(xtryexecfunc(useVFPv1)) + return "6"; + return "5"; +-} +- +-static void +-useVFPv3(void) +-{ +- // try to run VFPv3-only "vmov.f64 d0, #112" instruction +- // we can't use that instruction directly, because we +- // might be compiling with a soft-float only toolchain. +- // +- // some newer toolchains are configured to use thumb +- // by default, so we need to do some mode changing magic +- // here. +- // We can use "bx pc; nop" here, but GNU as(1) insists +- // on warning us +- // "use of r15 in bx in ARM mode is not really useful" +- // so we workaround that by using "bx r0" +- __asm__ __volatile__ ("mov r0, pc"); +- __asm__ __volatile__ ("bx r0"); +- __asm__ __volatile__ (".word 0xeeb70b00"); // vmov.f64 d0, #112 +- __asm__ __volatile__ (".word 0xe12fff1e"); // bx lr +-} +- +-static void +-useVFPv1(void) +-{ +- // try to run "vmov.f64 d0, d0" instruction +- // we can't use that instruction directly, because we +- // might be compiling with a soft-float only toolchain +- // +- // some newer toolchains are configured to use thumb +- // by default, so we need to do some mode changing magic +- // here. +- // We can use "bx pc; nop" here, but GNU as(1) insists +- // on warning us +- // "use of r15 in bx in ARM mode is not really useful" +- // so we workaround that by using "bx r0" +- __asm__ __volatile__ ("mov r0, pc"); +- __asm__ __volatile__ ("bx r0"); +- __asm__ __volatile__ (".word 0xeeb00b40"); // vomv.f64 d0, d0 +- __asm__ __volatile__ (".word 0xe12fff1e"); // bx lr + } + + #endif +--- go/src/make.bash ++++ go.fixed/src/make.bash +@@ -129,7 +132,7 @@ + if [ -z "$CC" -a -z "$(type -t gcc)" -a -n "$(type -t clang)" ]; then + export CC=clang CXX=clang++ + fi +-${CC:-gcc} $mflag -O2 -Wall -Werror -o cmd/dist/dist -Icmd/dist "$DEFGOROOT" cmd/dist/*.c ++${CC:-gcc} $mflag -O2 -Wall -Werror -o cmd/dist/dist -Icmd/dist "$DEFGOROOT" cmd/dist/*.c cmd/dist/*.S + + # -e doesn't propagate out of eval, so check success by hand. + eval $(./cmd/dist/dist env -p || echo FAIL=true) +--- /dev/null 2014-12-09 07:52:31.203329541 -0200 ++++ go.fixed/src/cmd/dist/arm.S 2014-12-09 10:29:34.149969243 -0200 +@@ -0,0 +1,24 @@ ++#ifdef __ARMEL__ ++ ++.text ++ ++.global useVFPv3 ++.hidden useVFPv3 ++.type useVFPv3,%function ++useVFPv3: ++ mov r0, pc ++ bx r0 ++ .word 0xeeb70b00 // vmov.f64 d0, #112 ++ .word 0xe12fff1e // bx lr ++ ++ ++.global useVFPv1 ++.hidden useVFPv1 ++.type useVFPv1,%function ++useVFPv1: ++ mov r0, pc ++ bx r0 ++ .word 0xeeb00b40 // vomv.f64 d0, d0 ++ .word 0xe12fff1e // bx lr ++ ++#endif |