Gitweb links:
...log
http://git.netsurf-browser.org/toolchains.git/shortlog/6cdc74a08eda519b86...
...commit
http://git.netsurf-browser.org/toolchains.git/commit/6cdc74a08eda519b862d...
...tree
http://git.netsurf-browser.org/toolchains.git/tree/6cdc74a08eda519b862d93...
The branch, jmb/arm-riscos-gnueabihf has been updated
via 6cdc74a08eda519b862d93ad3cc549a0c055849e (commit)
from 1853c8c1efc7fd269c853793e79b092160fe4bdd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/toolchains.git/commit/?id=6cdc74a08eda519b...
commit 6cdc74a08eda519b862d93ad3cc549a0c055849e
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
Fix __standard_time()
Territory_ConvertDateAndTime modifies r0-r3. Previously, UnixLib
was only telling the compiler that r0 and r1 were modified. This
resulted in the register allocator assuming that the value of r2
on exit was the same as it was on entry and thus returning a
completely garbage value as the result of __standard_time().
Resolve this by telling the compiler the full facts.
diff --git a/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
b/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
new file mode 100644
index 0000000..fcdc7f3
--- /dev/null
+++ b/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
@@ -0,0 +1,26 @@
+Index: libunixlib/time/stdtime.c
+===================================================================
+--- libunixlib/time/stdtime.c (revision 7698)
++++ libunixlib/time/stdtime.c (working copy)
+@@ -23,9 +23,11 @@
+ register const char *str __asm ("r4") = __str;
+ register const _kernel_oserror *err __asm ("r0");
+ register char *term __asm ("r1");
++ register size_t left __asm ("r2");
++ register const char *ostr __asm ("r3");
+ __asm__ volatile ("SWI\t%[SWI_Territory_ConvertDateAndTime]\n\t"
+ "MOVVC\tr0, #0\n\t"
+- : "=r" (err), "=r" (term)
++ : "=r" (err), "=r" (term), "=r" (left),
"=r" (ostr)
+ : "r" (territory), "r" (ro_time), "r" (buf),
"r" (size), "r" (str),
+ [SWI_Territory_ConvertDateAndTime] "i" (Territory_ConvertDateAndTime |
(1<<17))
+ : "r14", "cc", "memory");
+@@ -48,7 +50,7 @@
+ #ifdef __TARGET_SCL__
+ -1,
+ #else
+- __locale_territory[LC_TIME],
++ __locale_global.locale_territory[LC_TIME],
+ #endif
+ riscos_time,
+ result,
-----------------------------------------------------------------------
Summary of changes:
.../recipes/patches/gccsdk/unixlib-stdtime.p | 26 ++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
diff --git a/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
b/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
new file mode 100644
index 0000000..fcdc7f3
--- /dev/null
+++ b/arm-riscos-gnueabihf/recipes/patches/gccsdk/unixlib-stdtime.p
@@ -0,0 +1,26 @@
+Index: libunixlib/time/stdtime.c
+===================================================================
+--- libunixlib/time/stdtime.c (revision 7698)
++++ libunixlib/time/stdtime.c (working copy)
+@@ -23,9 +23,11 @@
+ register const char *str __asm ("r4") = __str;
+ register const _kernel_oserror *err __asm ("r0");
+ register char *term __asm ("r1");
++ register size_t left __asm ("r2");
++ register const char *ostr __asm ("r3");
+ __asm__ volatile ("SWI\t%[SWI_Territory_ConvertDateAndTime]\n\t"
+ "MOVVC\tr0, #0\n\t"
+- : "=r" (err), "=r" (term)
++ : "=r" (err), "=r" (term), "=r" (left),
"=r" (ostr)
+ : "r" (territory), "r" (ro_time), "r" (buf),
"r" (size), "r" (str),
+ [SWI_Territory_ConvertDateAndTime] "i" (Territory_ConvertDateAndTime |
(1<<17))
+ : "r14", "cc", "memory");
+@@ -48,7 +50,7 @@
+ #ifdef __TARGET_SCL__
+ -1,
+ #else
+- __locale_territory[LC_TIME],
++ __locale_global.locale_territory[LC_TIME],
+ #endif
+ riscos_time,
+ result,
--
Cross-compilation toolchains and environments