Gitweb links:

...log 
http://git.netsurf-browser.org/toolchains.git/shortlog/22154acc24e6ca34f953c4e7b63b4e5527805086
...commit 
http://git.netsurf-browser.org/toolchains.git/commit/22154acc24e6ca34f953c4e7b63b4e5527805086
...tree 
http://git.netsurf-browser.org/toolchains.git/tree/22154acc24e6ca34f953c4e7b63b4e5527805086

The branch, master has been updated
       via  22154acc24e6ca34f953c4e7b63b4e5527805086 (commit)
       via  d1cf1d78f301da6dc6ffd5b79867556ea5f15dd6 (commit)
       via  c3bff19a559b50cc88b4d27146222193bc11a2b1 (commit)
       via  72cb8bef5540cc97e369c0e5754af35add9e776d (commit)
       via  0498d005a489508a2dbd181d4cf145b2224a61de (commit)
      from  2c28cd73e55b80b358ec008d07ff0cae310e96d6 (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 -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 arm-unknown-riscos/Makefile                        |    4 +-
 arm-unknown-riscos/fetchsrc                        |    2 +-
 .../recipes/patches/gcc4/binutils-download.p       |    4 +-
 .../recipes/patches/gcc4/cloog-ppl-download.p      |    2 +-
 .../recipes/patches/gcc4/gmp-download.p            |    4 +-
 arm-unknown-riscos/recipes/patches/gcc4/no-scm.p   |   11 +
 .../recipes/patches/gcc4/posix-extended-locale.p   | 1352 ++++++++++++++++++++
 .../recipes/patches/gcc4/ppl-download.p            |    4 +-
 .../recipes/patches/gcc4/ppl-version.p             |  175 ---
 .../recipes/patches/gcc4/unixlib-ldrex-strex.p     |  304 -----
 m5475-atari-mint/fetchsrc                          |    2 +-
 m68k-atari-mint/fetchsrc                           |    2 +-
 sdk/recipes/patches/openssl/crypto.ctype.c.p       |   11 -
 13 files changed, 1375 insertions(+), 502 deletions(-)
 create mode 100644 arm-unknown-riscos/recipes/patches/gcc4/no-scm.p
 create mode 100644 
arm-unknown-riscos/recipes/patches/gcc4/posix-extended-locale.p
 delete mode 100644 arm-unknown-riscos/recipes/patches/gcc4/ppl-version.p
 delete mode 100644 
arm-unknown-riscos/recipes/patches/gcc4/unixlib-ldrex-strex.p
 delete mode 100644 sdk/recipes/patches/openssl/crypto.ctype.c.p

diff --git a/arm-unknown-riscos/Makefile b/arm-unknown-riscos/Makefile
index 64516de..017dcd9 100644
--- a/arm-unknown-riscos/Makefile
+++ b/arm-unknown-riscos/Makefile
@@ -1,5 +1,5 @@
 # Use a tested trunk version of GCCSDK
-UPSTREAM_GCCSDK_VERSION := release_4_7_4_v2
+UPSTREAM_GCCSDK_VERSION := release_4_7_4_v6
 UPSTREAM_GCCSDK_TARBALL := gcc4$(UPSTREAM_GCCSDK_VERSION).tar.gz
 UPSTREAM_GCCSDK_URI := 
svn://svn.riscos.info/gccsdk/tags/$(UPSTREAM_GCCSDK_VERSION)
 
@@ -26,7 +26,7 @@ UPSTREAM_SQUEEZE_URI := 
git://git.netsurf-browser.org/squeeze.git
 # Infozip
 UPSTREAM_INFOZIP_VERSION := 30
 UPSTREAM_INFOZIP_TARBALL := zip$(UPSTREAM_INFOZIP_VERSION).tar.gz
-UPSTREAM_INFOZIP_URI := 
http://downloads.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/$(UPSTREAM_INFOZIP_TARBALL)
+UPSTREAM_INFOZIP_URI := 
https://downloads.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/$(UPSTREAM_INFOZIP_TARBALL)
 
 TOP := $(CURDIR)
 RECIPES := $(TOP)/recipes
diff --git a/arm-unknown-riscos/fetchsrc b/arm-unknown-riscos/fetchsrc
index e71d85f..92ae5bf 100755
--- a/arm-unknown-riscos/fetchsrc
+++ b/arm-unknown-riscos/fetchsrc
@@ -4,7 +4,7 @@
 
 # Usage fetchsrc <target> <source> <upstream> <output>
 
-NSSRV="http://ci.netsurf-browser.org/toolchain/";
+NSSRV="https://ci.netsurf-browser.org/toolchain/";
 
 wget -q -O ${4} ${NSSRV}/${1}/${2}
 if [ $? -ne 0 ];then
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/binutils-download.p 
b/arm-unknown-riscos/recipes/patches/gcc4/binutils-download.p
index 54720f5..3f2f110 100644
--- a/arm-unknown-riscos/recipes/patches/gcc4/binutils-download.p
+++ b/arm-unknown-riscos/recipes/patches/gcc4/binutils-download.p
@@ -4,9 +4,9 @@
  # Download binutils source:
  $(SRCORIGDIR)/binutils-$(BINUTILS_VERSION).tar.bz2:
        -mkdir -p $(SRCORIGDIR)
--      cd $(SRCORIGDIR) && wget -c 
http://ftpmirror.gnu.org/binutils/binutils-$(BINUTILS_VERSION).tar.bz2
+-      cd $(SRCORIGDIR) && wget -c 
https://ftpmirror.gnu.org/binutils/binutils-$(BINUTILS_VERSION).tar.bz2
 -      touch $@
-+      wget -O $@ -c 
http://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/binutils-$(BINUTILS_VERSION).tar.bz2
++      wget -O $@ -c 
https://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/binutils-$(BINUTILS_VERSION).tar.bz2
  
  ifeq "$(GCC_USE_SCM)" "yes"
  # Checkout gcc source:
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/cloog-ppl-download.p 
b/arm-unknown-riscos/recipes/patches/gcc4/cloog-ppl-download.p
index 194ef7f..6f91911 100644
--- a/arm-unknown-riscos/recipes/patches/gcc4/cloog-ppl-download.p
+++ b/arm-unknown-riscos/recipes/patches/gcc4/cloog-ppl-download.p
@@ -6,7 +6,7 @@
        -mkdir -p $(SRCORIGDIR)
 -      cd $(SRCORIGDIR) && wget -c 
ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-ppl-$(CLOOG_VERSION).tar.gz
 -      touch $@
-+      wget -O $@ -c 
http://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/cloog-ppl-$(CLOOG_VERSION).tar.gz
++      wget -O $@ -c 
https://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/cloog-ppl-$(CLOOG_VERSION).tar.gz
  
  # Download newlib source:
  $(SRCORIGDIR)/newlib-$(NEWLIB_VERSION).tar.gz:
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/gmp-download.p 
b/arm-unknown-riscos/recipes/patches/gcc4/gmp-download.p
index 0bfd4ec..4f99d57 100644
--- a/arm-unknown-riscos/recipes/patches/gcc4/gmp-download.p
+++ b/arm-unknown-riscos/recipes/patches/gcc4/gmp-download.p
@@ -4,8 +4,8 @@
  # Download mpc source:
  $(SRCORIGDIR)/mpc-$(MPC_VERSION).tar.gz:
        -mkdir -p $(SRCORIGDIR)
--      cd $(SRCORIGDIR) && wget -c 
http://www.multiprecision.org/mpc/download/mpc-$(MPC_VERSION).tar.gz
-+      cd $(SRCORIGDIR) && wget -c 
http://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/mpc-$(MPC_VERSION).tar.gz
+-      cd $(SRCORIGDIR) && wget -c 
https://ftpmirror.gnu.org/mpc/mpc-$(MPC_VERSION).tar.gz
++      cd $(SRCORIGDIR) && wget -c 
https://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/mpc-$(MPC_VERSION).tar.gz
        touch $@
  
  # Download mpfr source:
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/no-scm.p 
b/arm-unknown-riscos/recipes/patches/gcc4/no-scm.p
new file mode 100644
index 0000000..5e12120
--- /dev/null
+++ b/arm-unknown-riscos/recipes/patches/gcc4/no-scm.p
@@ -0,0 +1,11 @@
+--- gcc4/Makefile       (old)
++++ gcc4/Makefile       (new)
+@@ -36,7 +36,7 @@
+ AUTOMAKE_FOR_GCC_VERSION=1.11.1
+ LIBTOOL_FOR_GCC_VERSION=2.4.2
+ GCC_VERSION=$(GCCSDK_SUPPORTED_GCC_RELEASE)
+-GCC_USE_SCM=yes
++GCC_USE_SCM=no
+ GCC_SCM_PATH=branches/gcc-4_7-branch
+ NEWLIB_VERSION=1.19.0
+ NEWLIB_USE_SCM=no
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/posix-extended-locale.p 
b/arm-unknown-riscos/recipes/patches/gcc4/posix-extended-locale.p
new file mode 100644
index 0000000..f378a7e
--- /dev/null
+++ b/arm-unknown-riscos/recipes/patches/gcc4/posix-extended-locale.p
@@ -0,0 +1,1352 @@
+Index: gcc4/recipe/files/gcc/libunixlib/Makefile.am
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/Makefile.am       (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/Makefile.am       (working copy)
+@@ -587,7 +587,7 @@
+       locale/setlocale.c \
+       locale/strcoll.c \
+       locale/strxfrm.c \
+-      locale/territory.c
++      locale/newlocale.c
+ endif
+ locale_src += \
+       locale/iconv.c
+@@ -1312,6 +1312,7 @@
+       bits/in.h \
+       bits/libc-lock.h \
+       bits/locale.h \
++      bits/locale_t.h \
+       bits/mathcalls.h \
+       bits/mathdef.h \
+       bits/mathinline.h \
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/ctypetable.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/ctypetable.c        (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/ctypetable.c        (working copy)
+@@ -10,36 +10,35 @@
+ #include <internal/os.h>
+ #include <internal/unix.h>
+ 
+-/* Note the offset 1 and depth 257 instead of 0 and 256: ISO C says we must
+-   support EOF.  */
+-static unsigned char ctype[257];
+-const unsigned char * const __ctype = &ctype[1];
++/* Global containing current locale settings. */
++struct _locale __locale_global;
++/* Offset 1 as the first entry is reserved for EOF.  */
++const unsigned char * const __ctype = &__locale_global.ctype[1];
++const short * const __ctype_upper = &__locale_global.ctype_upper[1];
++const short * const __ctype_lower = &__locale_global.ctype_lower[1];
+ 
+-static short ctype_upper[257];
+-const short * const __ctype_upper = &ctype_upper[1];
+-
+-static short ctype_lower[257];
+-const short * const __ctype_lower = &ctype_lower[1];
+-
+ void
+-__build_ctype_tables (int territory)
++__build_ctype_tables (locale_t locobj, int territory)
+ {
+   PTHREAD_UNSAFE
+ 
+   if (territory == -2)
+     {
+-      /* Initialise the array. This is only done by __unixinit().  */
++      /* Initialise the array. This is only done by __unixinit()/newlocale(). 
 */
+       territory = -1;
+-      for (int x = 0; x <= LC_ALL; x++)
+-        __locale_territory[x] = -1;
++      for (int x = 0; x < LC_ALL; x++)
++        locobj->locale_territory[x] = -1;
++      __localeconv_lconv_init(&locobj->lc);
++      locobj->lc_needs_refresh = 1;
+     }
+ 
+   /* Initialise ctype_upper/ctype_lower tables.  */
+   for (int x = 0; x < 257; x++)
+     {
+-      /* In the C/POSIX locate, tolower(top bit set char)
++      /* In the C/POSIX locale, tolower(top bit set char)
+        should return the character unchanged.  */
+-      ctype_lower[x] = ctype_upper[x] = x - 1;
++      locobj->ctype_lower[x] = locobj->ctype_upper[x] = x - 1;
++      locobj->ctype[x] = 0;
+     }
+ 
+   int regs[10];
+@@ -61,7 +60,7 @@
+         for (int offset = 1; bits; bits = bits >> 1, offset += 1)
+           {
+             if (bits & 1)
+-              ctype[pos + offset] |= 1 << code;
++              locobj->ctype[pos + offset] |= 1 << code;
+           }
+         pos += 32;
+       }
+@@ -80,7 +79,7 @@
+   int y = (territory == -1) ? 128 : 256;
+   for (int x = 1; x <= y; x++)
+     {
+-      ctype_lower[x] = (short)*p++;
+-      ctype_upper[x] = (short)*q++;
++      locobj->ctype_lower[x] = (short)*p++;
++      locobj->ctype_upper[x] = (short)*q++;
+     }
+ }
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isalnum.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isalnum.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isalnum.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isalnum) (int c)
+@@ -10,3 +11,8 @@
+   return isalnum (c);
+ }
+ 
++int
++isalnum_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & (___ctype_alpha | ___ctype_digit));
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isalpha.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isalpha.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isalpha.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isalpha) (int c)
+@@ -10,3 +11,8 @@
+   return isalpha (c);
+ }
+ 
++int
++isalpha_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_alpha);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isascii.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isascii.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isascii.c   (working copy)
+@@ -10,3 +10,9 @@
+   return isascii (c);
+ }
+ 
++int
++isascii_l (int c, locale_t locobj)
++{
++  (void) locobj;
++  return isascii (c);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isblank.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isblank.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isblank.c   (working copy)
+@@ -9,3 +9,10 @@
+ {
+   return isblank (c);
+ }
++
++int
++isblank_l (int c, locale_t locobj)
++{
++  (void) locobj;
++  return isblank (c);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/iscntrl.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/iscntrl.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/iscntrl.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (iscntrl) (int c)
+@@ -10,3 +11,8 @@
+   return iscntrl (c);
+ }
+ 
++int
++iscntrl_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_ctrl);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isdigit.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isdigit.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isdigit.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isdigit) (int c)
+@@ -10,3 +11,8 @@
+   return isdigit (c);
+ }
+ 
++int
++isdigit_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_digit);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isgraph.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isgraph.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isgraph.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isgraph) (int c)
+@@ -10,3 +11,8 @@
+   return isgraph (c);
+ }
+ 
++int
++isgraph_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ~(___ctype_white | ___ctype_ctrl));
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/islower.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/islower.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/islower.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (islower) (int c)
+@@ -10,3 +11,8 @@
+   return islower (c);
+ }
+ 
++int
++islower_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_lower);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isprint.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isprint.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isprint.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isprint) (int c)
+@@ -10,3 +11,10 @@
+   return isprint (c);
+ }
+ 
++int
++isprint_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] &
++          (___ctype_upper | ___ctype_lower | ___ctype_digit | ___ctype_punc |
++           ___ctype_white)) && !((&locobj->ctype[1])[c] & ___ctype_ctrl);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/ispunct.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/ispunct.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/ispunct.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (ispunct) (int c)
+@@ -10,3 +11,8 @@
+   return ispunct (c);
+ }
+ 
++int
++ispunct_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_punc);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isspace.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isspace.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isspace.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isspace) (int c)
+@@ -10,3 +11,8 @@
+   return isspace (c);
+ }
+ 
++int
++isspace_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_white);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isupper.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isupper.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isupper.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isupper) (int c)
+@@ -10,3 +11,8 @@
+   return isupper (c);
+ }
+ 
++int
++isupper_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_upper);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/isxdigit.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/isxdigit.c  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/isxdigit.c  (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (isxdigit) (int c)
+@@ -10,3 +11,8 @@
+   return isxdigit (c);
+ }
+ 
++int
++isxdigit_l (int c, locale_t locobj)
++{
++  return ((&locobj->ctype[1])[c] & ___ctype_xdigit);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/toascii.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/toascii.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/toascii.c   (working copy)
+@@ -10,3 +10,9 @@
+   return toascii (c);
+ }
+ 
++int
++toascii_l (int c, locale_t locobj)
++{
++  (void) locobj;
++  return toascii (c);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/tolower.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/tolower.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/tolower.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (tolower) (int c)
+@@ -10,3 +11,8 @@
+   return tolower (c);
+ }
+ 
++int
++tolower_l (int c, locale_t locobj)
++{
++  return (&locobj->ctype_lower[1])[c];
++}
+Index: gcc4/recipe/files/gcc/libunixlib/ctype/toupper.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/ctype/toupper.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/ctype/toupper.c   (working copy)
+@@ -3,6 +3,7 @@
+  */
+ 
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ (toupper) (int c)
+@@ -10,3 +11,8 @@
+   return toupper (c);
+ }
+ 
++int
++toupper_l (int c, locale_t locobj)
++{
++  return (&locobj->ctype_upper[1])[c];
++}
+Index: gcc4/recipe/files/gcc/libunixlib/incl-local/locale.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/incl-local/locale.h       (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/incl-local/locale.h       (working copy)
+@@ -13,15 +13,36 @@
+ 
+ #ifndef __TARGET_SCL__
+ 
+-/* Territory number for each locale.  C locale is -1.  */
+-extern int __locale_territory[LC_ALL + 1];
++struct _locale {
++  /* Map from locale category to territory number. C locale is -1. */
++  int locale_territory[LC_ALL];
+ 
+-/* Set to 1 is setlocale has been called since the last call to
+-   localeconv. localeconv uses this flag to cache the lconv structure.  */
+-extern int __setlocale_called;
++  /* Character type LUTs: EOF + one entry per character
++   *
++   * EOF is defined as -1, so character entries start at offset 1.
++   */
++  short ctype_upper[257];
++  short ctype_lower[257];
++  unsigned char ctype[257];
+ 
+-extern void __build_ctype_tables (int __territory) __THROW;
++  /* Set to 1 if the locale information has changed since the last time
++   * the lconv structure was updated. */
++  int lc_needs_refresh;
++  /* Numeric formatting information for locale */
++  struct lconv lc;
++};
+ 
++extern struct _locale __locale_global;
++
++extern void __build_ctype_tables (locale_t locobj, int __territory) __THROW;
++
++extern char *__setlocale_l (locale_t locobj, int __category,
++                            const char *__locale) __THROW;
++
++void __localeconv_lconv_init (struct lconv *lc);
++void __localeconv_lconv_fini (struct lconv *lc);
++void __localeconv_l (locale_t locobj);
++
+ #endif
+ 
+ __END_DECLS
+Index: gcc4/recipe/files/gcc/libunixlib/include/bits/locale_t.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/include/bits/locale_t.h    (nonexistent)
++++ gcc4/recipe/files/gcc/libunixlib/include/bits/locale_t.h    (working copy)
+@@ -0,0 +1,10 @@
++/*
++ * Copyright (c) 2022 UnixLib Developers
++ */
++
++#ifndef _BITS_LOCALE_T_H_
++#define _BITS_LOCALE_T_H_
++
++typedef struct _locale *locale_t;
++
++#endif
+Index: gcc4/recipe/files/gcc/libunixlib/include/ctype.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/include/ctype.h   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/include/ctype.h   (working copy)
+@@ -51,6 +51,48 @@
+ extern int isblank (int __c) __THROW;
+ 
+ #ifndef __TARGET_SCL__
++#  ifdef __USE_XOPEN2K8
++#    include <bits/locale_t.h>
++
++/* c is alphabetic or numeric.  */
++extern int isalnum_l (int __c, locale_t locobj) __THROW;
++
++/* c is alphabetic.  */
++extern int isalpha_l (int __c, locale_t locobj) __THROW;
++
++/* c is a control character.  */
++extern int iscntrl_l (int __c, locale_t locobj) __THROW;
++
++/* c is a decimal digit.  */
++extern int isdigit_l (int __c, locale_t locobj) __THROW;
++
++/* c is any printable character other than a space. */
++extern int isgraph_l (int __c, locale_t locobj) __THROW;
++
++/* c is a lower-case letter.  */
++extern int islower_l (int __c, locale_t locobj) __THROW;
++
++/* c is an upper-case letter.  */
++extern int isupper_l (int __c, locale_t locobj) __THROW;
++
++/* c is a printable character.  */
++extern int isprint_l (int __c, locale_t locobj) __THROW;
++
++/* c is a printable character other than a space or a
++   alphanumeric character.  */
++extern int ispunct_l (int __c, locale_t locobj) __THROW;
++
++/* c is a white space character e.g. space, newline, tab, linefeed,
++   return, vertical tab.  */
++extern int isspace_l (int __c, locale_t locobj) __THROW;
++
++/* c is a hex digit.  */
++extern int isxdigit_l (int __c, locale_t locobj) __THROW;
++
++/* c is tab or space.  */
++extern int isblank_l (int __c, locale_t locobj) __THROW;
++#  endif
++
+ /* Characteristics. */
+ extern const unsigned char * const __ctype;
+ /* Lower case table.  */
+@@ -108,6 +150,10 @@
+ extern int toupper (int __c) __THROW;
+ #ifndef __TARGET_SCL__
+ #  define toupper(c) ((int) __ctype_upper[(int) (c)])
++
++#  ifdef __USE_XOPEN2K8
++extern int toupper_l (int __c, locale_t locobj) __THROW;
++#  endif
+ #endif
+ 
+ /* Convert c to lower case.  */
+@@ -114,6 +160,10 @@
+ extern int tolower (int __c) __THROW;
+ #ifndef __TARGET_SCL__
+ #  define tolower(c) ((int) __ctype_lower[(int) (c)])
++
++#  ifdef __USE_XOPEN2K8
++extern int tolower_l (int __c, locale_t locobj) __THROW;
++#  endif
+ #endif
+ 
+ #ifndef __TARGET_SCL__
+@@ -135,6 +185,11 @@
+ /* Is c an ASCII character.  */
+ extern int isascii (int __c) __THROW;
+ #    define isascii(c) ((unsigned)(c) <= 0x7f)
++
++#    ifdef __USE_XOPEN2K8
++extern int toascii_l (int __c, locale_t locobj) __THROW;
++extern int isascii_l (int __c, locale_t locobj) __THROW;
++#    endif
+ #  endif
+ #endif
+ 
+Index: gcc4/recipe/files/gcc/libunixlib/include/locale.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/include/locale.h  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/include/locale.h  (working copy)
+@@ -33,16 +33,16 @@
+ /* Entire locale.  */
+ #  define LC_ALL 6
+ 
+-#define LC_COLLATE_MASK (1L << 1)
+-#define LC_CTYPE_MASK (1L << 2)
+-#define LC_MESSAGES_MASK (1L << 3)
+-#define LC_MONETARY_MASK (1L << 4)
+-#define LC_NUMERIC_MASK (1L << 5)
+-#define LC_TIME_MASK (1L << 6)
+-#define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | 
LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK)
++#  ifdef __USE_XOPEN2K8
++#    define LC_COLLATE_MASK (1L << 0)
++#    define LC_CTYPE_MASK (1L << 1)
++#    define LC_MESSAGES_MASK (1L << 2)
++#    define LC_MONETARY_MASK (1L << 3)
++#    define LC_NUMERIC_MASK (1L << 4)
++#    define LC_TIME_MASK (1L << 5)
++#    define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | 
LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK)
++#  endif
+ 
+-typedef struct _locale *locale_t;
+-
+ #else
+ /* String collation (functions 'strcoll' and 'strxfrm').  */
+ #  define LC_COLLATE 1
+@@ -121,6 +121,9 @@
+ extern struct lconv *localeconv (void) __THROW;
+ 
+ #ifndef __TARGET_SCL__
++#  ifdef __USE_XOPEN2K8
++#    include <bits/locale_t.h>
++
+ extern locale_t uselocale(locale_t newloc);
+ 
+ extern void freelocale(locale_t locobj);
+@@ -127,7 +130,8 @@
+ 
+ extern locale_t newlocale(int category_mask, const char *locale,
+                           locale_t base);
+-# define LC_GLOBAL_LOCALE        ((locale_t) -1L)
++#    define LC_GLOBAL_LOCALE        ((locale_t) -1L)
++#  endif
+ #endif
+ 
+ __END_NAMESPACE_STD
+Index: gcc4/recipe/files/gcc/libunixlib/include/string.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/include/string.h  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/include/string.h  (working copy)
+@@ -281,6 +281,17 @@
+ /* Compare no more than N chars of S1 and S2, ignoring case.  */
+ extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
+      __THROW __attribute_pure__ __nonnull ((1, 2)) __wur;
++
++#  ifdef __USE_XOPEN2K8
++#    include <bits/locale_t.h>
++
++extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
++     __THROW __attribute_pure__ __nonnull ((1, 2, 3));
++
++extern int strncasecmp_l (const char *__s1, const char *__s2,
++                          size_t __n, locale_t __loc)
++     __THROW __attribute_pure__ __nonnull ((1, 2, 4));
++#  endif
+ #endif /* Use BSD.  */
+ 
+ #if defined __USE_XOPEN2K || defined __USE_MISC
+Index: gcc4/recipe/files/gcc/libunixlib/include/strings.h
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/include/strings.h (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/include/strings.h (working copy)
+@@ -37,7 +37,17 @@
+ /* Compare n chars of S1 and S2, ignoring case.  */
+ extern int strncasecmp (const char *__s1, const char *__s2, size_t __n);
+ 
++#  ifdef __USE_XOPEN2K8
++#    include <bits/locale_t.h>
+ 
++extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
++     __THROW __attribute_pure__ __nonnull ((1, 2, 3));
++
++extern int strncasecmp_l (const char *__s1, const char *__s2,
++                          size_t __n, locale_t __loc)
++     __THROW __attribute_pure__ __nonnull ((1, 2, 4));
++#  endif
++
+ /* Return the position of the first bit set in I, or 0 if none are set.
+    The least-significant bit is position 1, the most-significant 32.  */
+ extern int ffs (int __i);
+Index: gcc4/recipe/files/gcc/libunixlib/locale/localeconv.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/localeconv.c       (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/localeconv.c       (working copy)
+@@ -14,8 +14,6 @@
+ 
+ /* #define DEBUG */
+ 
+-int __setlocale_called = 1;
+-
+ static int
+ read_symbol (int reason_code, int territory)
+ {
+@@ -71,26 +69,44 @@
+   *grouping = new_grouping;
+ }
+ 
+-static struct lconv lc = { NULL, NULL, NULL, NULL, NULL,
+-                         NULL, NULL, NULL, NULL, NULL,
+-                         CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX,
+-                         CHAR_MAX, CHAR_MAX, CHAR_MAX, CHAR_MAX };
++void
++__localeconv_lconv_init (struct lconv *lc)
++{
++  memset(lc, 0, sizeof(*lc));
++  lc->int_frac_digits = lc->frac_digits = lc->p_cs_precedes =
++  lc->p_sep_by_space = lc->n_cs_precedes = lc->n_sep_by_space =
++  lc->p_sign_posn = lc->n_sign_posn = CHAR_MAX;
++}
+ 
+-/* Defined by POSIX as not threadsafe */
+-struct lconv *
+-localeconv (void)
++void
++__localeconv_lconv_fini (struct lconv *lc)
+ {
++  free(lc->decimal_point);
++  free(lc->thousands_sep);
++  free(lc->grouping);
++  free(lc->int_curr_symbol);
++  free(lc->currency_symbol);
++  free(lc->mon_decimal_point);
++  free(lc->mon_thousands_sep);
++  free(lc->mon_grouping);
++  free(lc->positive_sign);
++  free(lc->negative_sign);
++}
++
++void
++__localeconv_l (locale_t locobj)
++{
+   int numeric, monetary;
+ 
+   /* If setlocale has not been called since the last call to
+      localeconv, then the lconv structure will be the same.  */
+-  if (!__setlocale_called)
+-    return &lc;
++  if (!locobj->lc_needs_refresh)
++    return;
+ 
+-  __setlocale_called = 0;
++  locobj->lc_needs_refresh = 0;
+ 
+-  numeric = __locale_territory[LC_NUMERIC];
+-  monetary = __locale_territory[LC_MONETARY];
++  numeric = locobj->locale_territory[LC_NUMERIC];
++  monetary = locobj->locale_territory[LC_MONETARY];
+ 
+   /* See the PRMs regarding SWI Territory_ReadSymbols for the
+      meanings of the following numbers.  */
+@@ -97,71 +113,80 @@
+   if (numeric == -1)
+     {
+       /* We're using the 'C' locale.  */
+-      free (lc.decimal_point);
+-      lc.decimal_point = strdup (".");
+-      free (lc.thousands_sep);
+-      lc.thousands_sep = strdup ("");
+-      free (lc.grouping);
+-      lc.grouping = strdup ("");
++      free (locobj->lc.decimal_point);
++      locobj->lc.decimal_point = strdup (".");
++      free (locobj->lc.thousands_sep);
++      locobj->lc.thousands_sep = strdup ("");
++      free (locobj->lc.grouping);
++      locobj->lc.grouping = strdup ("");
+     }
+   else
+     {
+-      free (lc.decimal_point);
+-      lc.decimal_point = strdup ((char *) read_symbol (0, numeric));
+-      free (lc.thousands_sep);
+-      lc.thousands_sep = strdup ((char *) read_symbol (1, numeric));
+-      read_byte_list (2, &lc.grouping, numeric);
++      free (locobj->lc.decimal_point);
++      locobj->lc.decimal_point = strdup ((char *) read_symbol (0, numeric));
++      free (locobj->lc.thousands_sep);
++      locobj->lc.thousands_sep = strdup ((char *) read_symbol (1, numeric));
++      read_byte_list (2, &locobj->lc.grouping, numeric);
+     }
+   if (monetary == -1)
+     {
+       /* We using the 'C' locale.  Empty strings and CHAR_MAX means
+        that these fields are unspecified.  */
+-      free (lc.mon_decimal_point);
+-      lc.mon_decimal_point = strdup ("");
+-      free (lc.mon_thousands_sep);
+-      lc.mon_thousands_sep = strdup ("");
+-      free (lc.mon_grouping);
+-      lc.mon_grouping = strdup ("");
+-      lc.int_frac_digits = CHAR_MAX;
+-      lc.frac_digits = CHAR_MAX;
+-      free (lc.currency_symbol);
+-      lc.currency_symbol = strdup ("");
+-      free (lc.int_curr_symbol);
+-      lc.int_curr_symbol = strdup ("");
+-      lc.p_cs_precedes = CHAR_MAX;
+-      lc.n_cs_precedes = CHAR_MAX;
+-      lc.p_sep_by_space = CHAR_MAX;
+-      lc.n_sep_by_space = CHAR_MAX;
+-      free (lc.positive_sign);
+-      lc.positive_sign = strdup ("");
+-      free (lc.negative_sign);
+-      lc.negative_sign = strdup ("");
+-      lc.p_sign_posn = CHAR_MAX;
+-      lc.n_sign_posn = CHAR_MAX;
++      free (locobj->lc.mon_decimal_point);
++      locobj->lc.mon_decimal_point = strdup ("");
++      free (locobj->lc.mon_thousands_sep);
++      locobj->lc.mon_thousands_sep = strdup ("");
++      free (locobj->lc.mon_grouping);
++      locobj->lc.mon_grouping = strdup ("");
++      locobj->lc.int_frac_digits = CHAR_MAX;
++      locobj->lc.frac_digits = CHAR_MAX;
++      free (locobj->lc.currency_symbol);
++      locobj->lc.currency_symbol = strdup ("");
++      free (locobj->lc.int_curr_symbol);
++      locobj->lc.int_curr_symbol = strdup ("");
++      locobj->lc.p_cs_precedes = CHAR_MAX;
++      locobj->lc.n_cs_precedes = CHAR_MAX;
++      locobj->lc.p_sep_by_space = CHAR_MAX;
++      locobj->lc.n_sep_by_space = CHAR_MAX;
++      free (locobj->lc.positive_sign);
++      locobj->lc.positive_sign = strdup ("");
++      free (locobj->lc.negative_sign);
++      locobj->lc.negative_sign = strdup ("");
++      locobj->lc.p_sign_posn = CHAR_MAX;
++      locobj->lc.n_sign_posn = CHAR_MAX;
+     }
+   else
+     {
+-      free (lc.int_curr_symbol);
+-      lc.int_curr_symbol = strdup ((char *)read_symbol (3, monetary));
+-      free (lc.currency_symbol);
+-      lc.currency_symbol = strdup ((char *)read_symbol (4, monetary));
+-      free (lc.mon_decimal_point);
+-      lc.mon_decimal_point = strdup ((char *)read_symbol (5, monetary));
+-      free (lc.mon_thousands_sep);
+-      lc.mon_thousands_sep = strdup ((char *)read_symbol (6, monetary));
+-      read_byte_list (7, &lc.mon_grouping, monetary);
+-      free (lc.positive_sign);
+-      lc.positive_sign = strdup ((char *)read_symbol (8, monetary));
+-      free (lc.negative_sign);
+-      lc.negative_sign = strdup ((char *)read_symbol (9, monetary));
+-      lc.int_frac_digits = (char)read_symbol (10, monetary);
+-      lc.frac_digits = (char)read_symbol (11, monetary);
+-      lc.p_cs_precedes = (char)read_symbol (12, monetary);
+-      lc.p_sep_by_space = (char)read_symbol (13, monetary);
+-      lc.n_cs_precedes = (char)read_symbol (14, monetary);
+-      lc.n_sep_by_space = (char)read_symbol (15, monetary);
+-      lc.p_sign_posn = (char)read_symbol (16, monetary);
+-      lc.n_sign_posn = (char)read_symbol (17, monetary);
++      free (locobj->lc.int_curr_symbol);
++      locobj->lc.int_curr_symbol = strdup ((char *)read_symbol (3, monetary));
++      free (locobj->lc.currency_symbol);
++      locobj->lc.currency_symbol = strdup ((char *)read_symbol (4, monetary));
++      free (locobj->lc.mon_decimal_point);
++      locobj->lc.mon_decimal_point = strdup ((char *)read_symbol (5, 
monetary));
++      free (locobj->lc.mon_thousands_sep);
++      locobj->lc.mon_thousands_sep = strdup ((char *)read_symbol (6, 
monetary));
++      read_byte_list (7, &locobj->lc.mon_grouping, monetary);
++      free (locobj->lc.positive_sign);
++      locobj->lc.positive_sign = strdup ((char *)read_symbol (8, monetary));
++      free (locobj->lc.negative_sign);
++      locobj->lc.negative_sign = strdup ((char *)read_symbol (9, monetary));
++      locobj->lc.int_frac_digits = (char)read_symbol (10, monetary);
++      locobj->lc.frac_digits = (char)read_symbol (11, monetary);
++      locobj->lc.p_cs_precedes = (char)read_symbol (12, monetary);
++      locobj->lc.p_sep_by_space = (char)read_symbol (13, monetary);
++      locobj->lc.n_cs_precedes = (char)read_symbol (14, monetary);
++      locobj->lc.n_sep_by_space = (char)read_symbol (15, monetary);
++      locobj->lc.p_sign_posn = (char)read_symbol (16, monetary);
++      locobj->lc.n_sign_posn = (char)read_symbol (17, monetary);
+     }
+-  return &lc;
++  return;
+ }
++
++/* Defined by POSIX as not threadsafe */
++struct lconv *
++localeconv (void)
++{
++  __localeconv_l (&__locale_global);
++
++  return &__locale_global.lc;
++}
+Index: gcc4/recipe/files/gcc/libunixlib/locale/newlocale.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/newlocale.c        (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/newlocale.c        (working copy)
+@@ -1,15 +1,15 @@
+ /* Copyright (c) 2019 UnixLib Developers
+  */
+ 
++#include <ctype.h>
+ #include <stdlib.h>
+ #include <locale.h>
+ #include <stdio.h>
++#include <string.h>
+ #include <errno.h>
++
++#include <internal/unix.h>
+ 
+-struct _locale {
+-  struct lconv lc;
+-};
+-
+ /* This is supposed to be per-thread.  */
+ static locale_t current_locale;
+ 
+@@ -27,20 +27,71 @@
+ 
+ void freelocale(locale_t locobj)
+ {
+-  if (locobj)
++  if (locobj) {
++    __localeconv_lconv_fini(&locobj->lc);
+     free(locobj);
++  }
+ }
+ 
+ locale_t newlocale(int category_mask, const char *locale,
+                           locale_t base)
+ {
+-  locale_t loc = (locale_t)malloc(sizeof(*loc));
+-  if (!loc) {
+-    __set_errno (ENOMEM);
++  struct _locale tmp;
++
++  PTHREAD_UNSAFE
++
++  if ((category_mask & ~LC_ALL_MASK) || locale == NULL) {
++    __set_errno (EINVAL);
+     return 0;
+   }
+ 
+-  loc->lc = *localeconv();
++  /* The locale provided will be verified by __setlocale_l() */
+ 
+-  return loc;
++  /* Prepare the temporary locale we will modify */
++  if (base != 0 && base != LC_GLOBAL_LOCALE) {
++    memcpy(&tmp, base, sizeof(tmp));
++  } else {
++    if (base == LC_GLOBAL_LOCALE) {
++      /* Undefined: be helpful to client */
++      memcpy(&tmp, &__locale_global, sizeof(tmp));
++    } else {
++      /* Initialise to C locale */
++      __build_ctype_tables(&tmp, -2);
++    }
++  }
++
++  /* Now, apply the requested locale to each of the categories in the mask */
++  if (category_mask == LC_ALL_MASK) {
++    /* Special-case LC_ALL to handle the encoded locale string */
++    if (__setlocale_l(&tmp, LC_ALL, locale) == NULL) {
++      return 0;
++    }
++  } else {
++    int category = 0, mask = category_mask;
++    while (mask != 0) {
++      if (mask & 1) {
++        if (__setlocale_l(&tmp, category, locale) == NULL) {
++          return 0;
++        }
++      }
++      category++;
++      mask >>= 1;
++    }
++  }
++
++  /* Allocate the result, if necessary */
++  if (base == 0 || base == LC_GLOBAL_LOCALE) {
++    base = (locale_t)malloc(sizeof(*base));
++    if (!base) {
++      __set_errno (ENOMEM);
++      return 0;
++    }
++  }
++  /* Fill it in */
++  memcpy(base, &tmp, sizeof(tmp));
++
++  /* Mark the lconv data stale */
++  base->lc_needs_refresh = 1;
++
++  return base;
+ }
+Index: gcc4/recipe/files/gcc/libunixlib/locale/setlocale.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/setlocale.c        (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/setlocale.c        (working copy)
+@@ -195,7 +195,7 @@
+ }
+ 
+ static void
+-do_lc_all (char *buffer, int size)
++do_lc_all (locale_t locobj, char *buffer, int size)
+ {
+   char temp[64];
+   int category, same = 1;
+@@ -204,13 +204,13 @@
+      setlocale to set all locales.  If all locales are
+      the same, then we can produce a very short string.  */
+   for (category = 1; category < LC_ALL; ++category)
+-    if (__locale_territory[0] != __locale_territory[category])
++    if (locobj->locale_territory[0] != locobj->locale_territory[category])
+       same = 0;
+ 
+   if (same)
+     {
+       /* All locales are set to the same territory.  */
+-      territory_name (__locale_territory[0], buffer, size);
++      territory_name (locobj->locale_territory[0], buffer, size);
+     }
+   else
+     {
+@@ -218,7 +218,7 @@
+          LC_CATEGORY=country;LC_CATEGORY=country; ...  */
+       for (category = 0; category < LC_ALL; ++category)
+       {
+-        territory_name (__locale_territory[category], temp, sizeof (temp));
++        territory_name (locobj->locale_territory[category], temp, sizeof 
(temp));
+         buffer = stpcpy (buffer, locale_names[category]);
+         *buffer++ = '=';
+         buffer = stpcpy (buffer, temp);
+@@ -230,15 +230,13 @@
+ }
+ 
+ char *
+-setlocale (int category, const char *locale)
++__setlocale_l (locale_t locobj, int category, const char *locale)
+ {
+   int new_territory, changed;
+   static char old_locale[256];
+ 
+-  PTHREAD_UNSAFE
+-
+   /* This tells localeconv to re-read data for the lconv structure.  */
+-  __setlocale_called = 1;
++  locobj->lc_needs_refresh = 1;
+ 
+   if (locale == NULL)
+     {
+@@ -247,11 +245,11 @@
+       {
+         /* The locale string is specially encoded for LC_ALL so we
+            could restore all locales at any time.  */
+-        do_lc_all (old_locale, sizeof (old_locale));
++        do_lc_all (locobj, old_locale, sizeof (old_locale));
+         return old_locale;
+       }
+ 
+-      territory_name (__locale_territory[category], old_locale, sizeof 
(old_locale));
++      territory_name (locobj->locale_territory[category], old_locale, sizeof 
(old_locale));
+       return old_locale;
+     }
+ 
+@@ -270,7 +268,7 @@
+       /* Encode the locale string, as we will be returning this
+        later.  Remember, setlocale returns the locale settings
+        that are about to be changed.  */
+-      do_lc_all (old_locale, sizeof (old_locale));
++      do_lc_all (locobj, old_locale, sizeof (old_locale));
+ 
+       /* Check for an encoded (composite) name.  Simply looking for
+        a semi-colon will verify this.  */
+@@ -332,11 +330,11 @@
+ 
+         /* We now know all locales exist, so set them.  */
+         for (category = 0; category < LC_ALL; ++category)
+-          __locale_territory[category] = territory_number 
(newnames[category]);
++          locobj->locale_territory[category] = territory_number 
(newnames[category]);
+ 
+         /* Re-build the character type tables according to the new
+            locale settings.  */
+-        __build_ctype_tables (__locale_territory[LC_CTYPE]);
++        __build_ctype_tables (locobj, locobj->locale_territory[LC_CTYPE]);
+         return old_locale;
+       }
+     }
+@@ -359,9 +357,9 @@
+       /* Change the locale for all categories. old_locale was created
+        when we previously checked for a composite string.  */
+       for (category = 0; category < LC_ALL; ++category)
+-      if (__locale_territory[category] != new_territory)
++      if (locobj->locale_territory[category] != new_territory)
+         {
+-          __locale_territory[category] = new_territory;
++          locobj->locale_territory[category] = new_territory;
+           changed = 1;
+         }
+     }
+@@ -368,12 +366,12 @@
+   else
+     {
+       /* Change the locale for just one category.  */
+-      territory_name (__locale_territory[category],
++      territory_name (locobj->locale_territory[category],
+                     old_locale, sizeof (old_locale));
+ 
+-      if (__locale_territory[category] != new_territory)
++      if (locobj->locale_territory[category] != new_territory)
+       {
+-        __locale_territory[category] = new_territory;
++        locobj->locale_territory[category] = new_territory;
+         changed = 1;
+       }
+     }
+@@ -384,7 +382,16 @@
+      is changing.  The GNU Java compiler is known to repeatedly call
+      setlocale.  */
+   if (changed && (category == LC_ALL || category == LC_CTYPE))
+-    __build_ctype_tables (new_territory);
++    __build_ctype_tables (locobj, new_territory);
+ 
+   return old_locale;
+ }
++
++char *
++setlocale (int category, const char *locale)
++{
++
++  PTHREAD_UNSAFE
++
++  return __setlocale_l(&__locale_global, category, locale);
++}
+Index: gcc4/recipe/files/gcc/libunixlib/locale/strcoll.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/strcoll.c  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/strcoll.c  (working copy)
+@@ -13,7 +13,7 @@
+ {
+   int regs[10];
+ 
+-  regs[0] = __locale_territory[LC_COLLATE];
++  regs[0] = __locale_global.locale_territory[LC_COLLATE];
+   regs[1] = (int)s1;
+   regs[2] = (int)s2;
+   regs[3] = 0;
+Index: gcc4/recipe/files/gcc/libunixlib/locale/strxfrm.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/strxfrm.c  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/strxfrm.c  (working copy)
+@@ -13,7 +13,7 @@
+ {
+   int regs[10];
+ 
+-  regs[0] = __locale_territory[LC_COLLATE];
++  regs[0] = __locale_global.locale_territory[LC_COLLATE];
+   regs[1] = (int)to;
+   regs[2] = (int)from;
+   regs[3] = size;
+Index: gcc4/recipe/files/gcc/libunixlib/locale/territory.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/locale/territory.c        (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/locale/territory.c        (nonexistent)
+@@ -1,10 +0,0 @@
+-/* __locale_territory
+- * Copyright (c) 2000-2006 UnixLib Developers
+- */
+-
+-#include <locale.h>
+-
+-/* Global used for all calls to the Territory module. These variable
+-   contain the territory number as set by setlocale. A value of
+-   -1 means use the C locale.  */
+-int __locale_territory[LC_ALL + 1];
+Index: gcc4/recipe/files/gcc/libunixlib/string/stricmp.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/string/stricmp.c  (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/string/stricmp.c  (working copy)
+@@ -4,6 +4,7 @@
+ #include <string.h>
+ #include <strings.h>
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ stricmp (const char *s1, const char *s2)
+@@ -26,3 +27,24 @@
+   return result;
+ }
+ strong_alias (stricmp, strcasecmp)
++
++int
++strcasecmp_l (const char *s1, const char *s2, locale_t locobj)
++{
++  const unsigned char *p1 = (const unsigned char *) s1;
++  const unsigned char *p2 = (const unsigned char *) s2;
++  int result = 0;
++
++  if (p1 == p2)
++    return result;
++
++  while (! result)
++    {
++      result = tolower_l (*p1, locobj) - tolower_l (*p2, locobj);
++      if (*p1++ == '\0')
++      break;
++      p2 ++;
++    }
++
++  return result;
++}
+Index: gcc4/recipe/files/gcc/libunixlib/string/strnicmp.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/string/strnicmp.c (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/string/strnicmp.c (working copy)
+@@ -5,6 +5,7 @@
+ #include <string.h>
+ #include <strings.h>
+ #include <ctype.h>
++#include <locale.h>
+ 
+ int
+ strnicmp (const char *s1, const char *s2, size_t n)
+@@ -26,3 +27,22 @@
+ }
+ strong_alias (strnicmp, strncasecmp)
+ 
++int
++strncasecmp_l (const char *s1, const char *s2, size_t n, locale_t locobj)
++{
++  int i, j;
++
++  if (!n)
++    return 0;
++
++  do
++    {
++      i = *s1++, j = *s2++;
++      i = tolower_l (i, locobj);
++      j = tolower_l (j, locobj);
++    }
++  while (i && i == j && --n);
++
++  return i - j;
++}
++
+Index: gcc4/recipe/files/gcc/libunixlib/time/broken.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/broken.c     (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/broken.c     (working copy)
+@@ -49,7 +49,7 @@
+ #ifdef __TARGET_SCL__
+                                            -1,
+ #else
+-                                           __locale_territory[LC_TIME],
++                                           
__locale_global.locale_territory[LC_TIME],
+ #endif
+                                            riscos_time, ordinals);
+ }
+Index: gcc4/recipe/files/gcc/libunixlib/time/gmtime_r.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/gmtime_r.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/gmtime_r.c   (working copy)
+@@ -46,7 +46,7 @@
+ #ifdef __TARGET_SCL__
+                                                    -1,
+ #else
+-                                                   
__locale_territory[LC_TIME],
++                                                   
__locale_global.locale_territory[LC_TIME],
+ #endif
+                                                    riscos_time, ordinals)) != 
NULL)
+     {
+Index: gcc4/recipe/files/gcc/libunixlib/time/localtime_r.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/localtime_r.c        (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/localtime_r.c        (working copy)
+@@ -28,7 +28,7 @@
+ #ifdef __TARGET_SCL__
+                                                 -1,
+ #else
+-                                                __locale_territory[LC_TIME],
++                                                
__locale_global.locale_territory[LC_TIME],
+ #endif
+                                                 riscos_time, ordinals)) != 
NULL)
+     {
+Index: gcc4/recipe/files/gcc/libunixlib/time/mktime.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/mktime.c     (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/mktime.c     (working copy)
+@@ -23,7 +23,7 @@
+ #ifdef __TARGET_SCL__
+                                                    -1,
+ #else
+-                                                   
__locale_territory[LC_TIME],
++                                                   
__locale_global.locale_territory[LC_TIME],
+ #endif
+                                                    riscos_time,
+                                                    ordinals)) != NULL)
+Index: gcc4/recipe/files/gcc/libunixlib/time/stdtime.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/stdtime.c    (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/stdtime.c    (working copy)
+@@ -48,7 +48,7 @@
+ #ifdef __TARGET_SCL__
+                                              -1,
+ #else
+-                                             __locale_territory[LC_TIME],
++                                             
__locale_global.locale_territory[LC_TIME],
+ #endif
+                                              riscos_time,
+                                              result,
+Index: gcc4/recipe/files/gcc/libunixlib/time/strftime.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/strftime.c   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/strftime.c   (working copy)
+@@ -353,7 +353,7 @@
+   int regs[10];
+   char buffer[64];
+ 
+-  regs[0] = __locale_territory[LC_TIME];
++  regs[0] = __locale_global.locale_territory[LC_TIME];
+   regs[1] = (int)timep;
+   regs[2] = (int)buffer;
+   regs[3] = sizeof (buffer) - 1;
+@@ -368,7 +368,7 @@
+   int regs[10];
+   char buffer[64];
+ 
+-  regs[0] = __locale_territory[LC_TIME];
++  regs[0] = __locale_global.locale_territory[LC_TIME];
+   regs[1] = (int)timep;
+   regs[2] = (int)buffer;
+   regs[3] = sizeof (buffer) - 1;
+Index: gcc4/recipe/files/gcc/libunixlib/time/tzset.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/time/tzset.c      (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/time/tzset.c      (working copy)
+@@ -36,7 +36,7 @@
+   /* Get timezone information for current territory.  */
+   _kernel_swi_regs regs;
+ #ifndef __TARGET_SCL__
+-  regs.r[0] = __locale_territory[LC_TIME];
++  regs.r[0] = __locale_global.locale_territory[LC_TIME];
+ #else
+   regs.r[0] = -1; /* Current territory.  */
+ #endif
+Index: gcc4/recipe/files/gcc/libunixlib/unix/unix.c
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/unix/unix.c       (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/unix/unix.c       (working copy)
+@@ -191,7 +191,7 @@
+   __pthread_prog_init ();
+   __unixlib_signal_initialise (__u);
+   /* Initialise ctype tables to the C locale.  */
+-  __build_ctype_tables (-2);
++  __build_ctype_tables (&__locale_global, -2);
+   /* Define and initialise the Unix I/O.  */
+   initialise_unix_io ();
+   __stdioinit ();
+Index: gcc4/recipe/files/gcc/libunixlib/vscript
+===================================================================
+--- gcc4/recipe/files/gcc/libunixlib/vscript   (revision 7698)
++++ gcc4/recipe/files/gcc/libunixlib/vscript   (working copy)
+@@ -58,6 +58,9 @@
+      __init_des_r;
+      __init_des;
+      __invalidate;
++     __locale_global;
++     __localeconv_lconv_init;
++     __localeconv_lconv_fini;
+      malloc_trim;
+      malloc_trim_unlocked;
+      malloc_unlocked;
+@@ -80,6 +83,7 @@
+      __res_vinit;
+      __runtime_features;
+      __setup_signalhandler_stack;
++     __setlocale_l;
+      __sdirinit;
+      __sfixinit;
+      __sfixfind;
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/ppl-download.p 
b/arm-unknown-riscos/recipes/patches/gcc4/ppl-download.p
index 7eb77c3..128e9eb 100644
--- a/arm-unknown-riscos/recipes/patches/gcc4/ppl-download.p
+++ b/arm-unknown-riscos/recipes/patches/gcc4/ppl-download.p
@@ -19,9 +19,9 @@
 -$(SRCORIGDIR)/ppl-$(PPL_VERSION).tar.gz:
 +$(SRCORIGDIR)/ppl-$(PPL_VERSION).tar.xz:
        -mkdir -p $(SRCORIGDIR)
--      cd $(SRCORIGDIR) && wget -c 
http://www.cs.unipr.it/ppl/download/ftp/releases/$(PPL_VERSION)/ppl-$(PPL_VERSION).tar.gz
+-      cd $(SRCORIGDIR) && wget -c 
https://www.bugseng.com/external/ppl/download/ftp/releases/$(PPL_VERSION)/ppl-$(PPL_VERSION).tar.gz
 -      touch $@
-+      wget -O $@ -c 
http://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/ppl-$(PPL_VERSION).tar.xz
++      wget -O $@ -c 
https://ci.netsurf-browser.org/toolchain/arm-unknown-riscos/ppl-$(PPL_VERSION).tar.xz
  
  # Download CLooG source:
  $(SRCORIGDIR)/cloog-ppl-$(CLOOG_VERSION).tar.gz:
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/ppl-version.p 
b/arm-unknown-riscos/recipes/patches/gcc4/ppl-version.p
deleted file mode 100644
index 7631c68..0000000
--- a/arm-unknown-riscos/recipes/patches/gcc4/ppl-version.p
+++ /dev/null
@@ -1,175 +0,0 @@
-Index: gcc4/Makefile
-===================================================================
---- gcc4/Makefile      (revision 7156)
-+++ gcc4/Makefile      (working copy)
-@@ -45,7 +45,7 @@
- MPFR_VERSION=3.0.1
- MPC_VERSION=0.8.2
- GCC_USE_PPL_CLOOG=yes
--PPL_VERSION=0.11.2
-+PPL_VERSION=1.2
- CLOOG_VERSION=0.15.11
- GCC_USE_LTO=yes
- 
-@@ -182,8 +182,8 @@
- RONATIVE_MPFR_CONFIG_ARGS := --disable-shared 
--with-gmp=$(PREFIX_RONATIVEGCC_LIBS) --host=$(TARGET) 
--prefix=$(PREFIX_RONATIVEGCC_LIBS)
- 
- # Configure arguments PPL:
--CROSS_PPL_CONFIG_ARGS := --disable-shared --disable-watchdog --with-gnu-ld 
--with-gmp-prefix=$(PREFIX_CROSSGCC_LIBS) --prefix=$(PREFIX_CROSSGCC_LIBS)
--RONATIVE_PPL_CONFIG_ARGS := --disable-shared --disable-watchdog --with-gnu-ld 
--with-gmp-prefix=$(PREFIX_RONATIVEGCC_LIBS) --host=$(TARGET) 
--prefix=$(PREFIX_RONATIVEGCC_LIBS)
-+CROSS_PPL_CONFIG_ARGS := --disable-shared --disable-watchdog --with-gnu-ld 
--with-gmp=$(PREFIX_CROSSGCC_LIBS) --prefix=$(PREFIX_CROSSGCC_LIBS)
-+RONATIVE_PPL_CONFIG_ARGS := --disable-shared --disable-watchdog --with-gnu-ld 
--with-gmp=$(PREFIX_RONATIVEGCC_LIBS) --host=$(TARGET) 
--prefix=$(PREFIX_RONATIVEGCC_LIBS)
- 
- # Configure arguments CLooG:
- CROSS_CLOOG_CONFIG_ARGS := --disable-shared 
--with-gmp=$(PREFIX_CROSSGCC_LIBS) --with-bits=gmp 
--with-ppl=$(PREFIX_CROSSGCC_LIBS) --with-host-libstdcxx='-lstdc++' 
--prefix=$(PREFIX_CROSSGCC_LIBS)
-Index: gcc4/recipe/patches/cloog/configure.in.p
-===================================================================
---- gcc4/recipe/patches/cloog/configure.in.p   (revision 7156)
-+++ gcc4/recipe/patches/cloog/configure.in.p   (working copy)
-@@ -1,5 +1,5 @@
----- configure.in.orig 2013-05-01 16:15:33.235945936 +0200
--+++ configure.in      2013-05-01 16:15:15.484169106 +0200
-+--- configure.in.orig 2017-04-23 11:55:00.956204411 +0100
-++++ configure.in      2017-04-23 11:50:39.385519538 +0100
- @@ -41,7 +41,7 @@ dnl ************************************
-  AC_PREREQ(2.13)
-  AC_INIT(source/cloog.c)
-@@ -9,7 +9,13 @@
-  dnl Every other copy of the package version number gets its value from here.
-  AM_INIT_AUTOMAKE(cloog, 0.15)
-  AC_CONFIG_HEADER(include/cloog/cloog-config.h)
--@@ -343,7 +343,7 @@ if test "x$with_ppl" != "x" -a "x$with_p
-+@@ -338,12 +338,12 @@ if test "x$with_ppl" != "x" -a "x$with_p
-+ 
-+      AC_MSG_CHECKING([for version 0.10 (or later revision) of PPL])
-+      AC_TRY_COMPILE([#include "ppl_c.h"],[
-+-     #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
-++     #if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 10
-+      choke me
-       #endif
-       ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR(Can't find correct version of 
PPL.) ])
-  
-Index: gcc4/recipe/patches/gcc/configure.ac.p
-===================================================================
---- gcc4/recipe/patches/gcc/configure.ac.p     (revision 7156)
-+++ gcc4/recipe/patches/gcc/configure.ac.p     (working copy)
-@@ -1,6 +1,6 @@
- Index: configure.ac
- ===================================================================
----- configure.ac      (revision 197339)
-+--- configure.ac      (revision 247077)
- +++ configure.ac      (working copy)
- @@ -152,6 +152,7 @@
-  # Note that libiberty is not a target library.
-@@ -34,6 +34,15 @@
-  
-    if test "$enable_ppl_version_check" != no; then
-      saved_CFLAGS="$CFLAGS"
-+@@ -1577,7 +1586,7 @@
-+     CFLAGS="$CFLAGS $pplinc $gmpinc"
-+     AC_MSG_CHECKING([for version 0.11 (revision 0 or later) of PPL])
-+     AC_TRY_COMPILE([#include "ppl_c.h"],[
-+-    #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
-++    #if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11
-+     choke me
-+     #endif
-+     ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; 
with_ppl=no ])
- @@ -2895,6 +2904,10 @@
-     ;;
-    esac
-Index: gcc4/recipe/patches/ppl/src.Congruence_System.defs.hh.p
-===================================================================
---- gcc4/recipe/patches/ppl/src.Congruence_System.defs.hh.p    (revision 7156)
-+++ gcc4/recipe/patches/ppl/src.Congruence_System.defs.hh.p    (nonexistent)
-@@ -1,19 +0,0 @@
----- src/Congruence_System.defs.hh.orig        2015-03-01 19:57:52.887328139 
+0100
--+++ src/Congruence_System.defs.hh     2015-03-01 19:57:12.315328259 +0100
--@@ -33,6 +33,7 @@ site: http://www.cs.unipr.it/ppl/ . */
-- #include "Grid.types.hh"
-- #include "Grid_Certificate.types.hh"
-- #include <iosfwd>
--+#include <cstddef>
-- 
-- namespace Parma_Polyhedra_Library {
-- 
--@@ -235,7 +236,7 @@ public:
--   class const_iterator
--     : public std::iterator<std::forward_iterator_tag,
--                         Congruence,
---                        ptrdiff_t,
--+                        std::ptrdiff_t,
--                         const Congruence*,
--                         const Congruence&> {
--   public:
-Index: gcc4/recipe/patches/ppl/src.Constraint_System.defs.hh.p
-===================================================================
---- gcc4/recipe/patches/ppl/src.Constraint_System.defs.hh.p    (revision 7156)
-+++ gcc4/recipe/patches/ppl/src.Constraint_System.defs.hh.p    (nonexistent)
-@@ -1,19 +0,0 @@
----- src/Constraint_System.defs.hh.orig        2015-03-01 19:58:03.831328106 
+0100
--+++ src/Constraint_System.defs.hh     2015-03-01 19:57:12.315328259 +0100
--@@ -33,6 +33,7 @@ site: http://www.cs.unipr.it/ppl/ . */
-- #include "Congruence_System.types.hh"
-- #include <iterator>
-- #include <iosfwd>
--+#include <cstddef>
-- 
-- namespace Parma_Polyhedra_Library {
-- 
--@@ -204,7 +205,7 @@ public:
--   class const_iterator
--     : public std::iterator<std::forward_iterator_tag,
--                         Constraint,
---                        ptrdiff_t,
--+                        std::ptrdiff_t,
--                         const Constraint*,
--                         const Constraint&> {
--   public:
-Index: gcc4/recipe/patches/ppl/src.Generator_System.defs.hh.p
-===================================================================
---- gcc4/recipe/patches/ppl/src.Generator_System.defs.hh.p     (revision 7156)
-+++ gcc4/recipe/patches/ppl/src.Generator_System.defs.hh.p     (nonexistent)
-@@ -1,19 +0,0 @@
----- src/Generator_System.defs.hh.orig 2015-03-01 19:58:13.511328077 +0100
--+++ src/Generator_System.defs.hh      2015-03-01 19:57:12.319328259 +0100
--@@ -33,6 +33,7 @@ site: http://www.cs.unipr.it/ppl/ . */
-- #include "Polyhedron.types.hh"
-- #include "Poly_Con_Relation.defs.hh"
-- #include <iosfwd>
--+#include <cstddef>
-- 
-- namespace Parma_Polyhedra_Library {
-- 
--@@ -250,7 +251,7 @@ public:
--   class const_iterator
--     : public std::iterator<std::forward_iterator_tag,
--                         Generator,
---                        ptrdiff_t,
--+                        std::ptrdiff_t,
--                         const Generator*,
--                         const Generator&> {
--   public:
-Index: gcc4/recipe/patches/ppl/src.Grid_Generator_System.defs.hh.p
-===================================================================
---- gcc4/recipe/patches/ppl/src.Grid_Generator_System.defs.hh.p        
(revision 7156)
-+++ gcc4/recipe/patches/ppl/src.Grid_Generator_System.defs.hh.p        
(nonexistent)
-@@ -1,19 +0,0 @@
----- src/Grid_Generator_System.defs.hh.orig    2015-03-01 19:57:31.127328203 
+0100
--+++ src/Grid_Generator_System.defs.hh 2015-03-01 19:57:12.315328259 +0100
--@@ -30,6 +30,7 @@ site: http://www.cs.unipr.it/ppl/ . */
-- #include "Variables_Set.types.hh"
-- #include "Grid.types.hh"
-- #include <iosfwd>
--+#include <cstddef>
-- 
-- namespace Parma_Polyhedra_Library {
-- 
--@@ -267,7 +268,7 @@ public:
--   class const_iterator
--     : public std::iterator<std::forward_iterator_tag,
--                         Grid_Generator,
---                        ptrdiff_t,
--+                        std::ptrdiff_t,
--                         const Grid_Generator*,
--                         const Grid_Generator&>,
--       private Generator_System::const_iterator {
diff --git a/arm-unknown-riscos/recipes/patches/gcc4/unixlib-ldrex-strex.p 
b/arm-unknown-riscos/recipes/patches/gcc4/unixlib-ldrex-strex.p
deleted file mode 100644
index 045a0b8..0000000
--- a/arm-unknown-riscos/recipes/patches/gcc4/unixlib-ldrex-strex.p
+++ /dev/null
@@ -1,304 +0,0 @@
-Backport r7043 from upstream: partially replaces use of SWP with LDREX/STREX
-on systems where SWP is no longer available. This fix is incomplete, 
-but sufficient for our purposes.
-
-Fri Mar 11 14:51:54 GMT  2016  Lee Noar  <[email protected]>
-
-        * sys/_cpucaps.s: New file. Provide functions to probe the
-        OS for details of the CPU (currently SWP, LDREX/STREX
-        availability).
-        * Makefile.am: Add above file.
-        * include/unixlib/local.h: Add declarations for user facing
-        functions provided above.
-        * incl-local/internal/asm_dec.s(__ul_global): Add entry to
-        record CPU flags.
-        * incl-local/internal/unix.h: Likewise.
-        * pthread/_ints.s(__pthread_disable_ints,__pthread_protect_unsafe):
-        Use CPU flags to determine whether to use the SWP instruction or
-        LRDEX/STREX.
-        * sys/_syslib.s(__main): Add call to __probe_cpu_caps.
-        (__unixlib_fatal): Use CPU flags to determine whether to use the
-        SWP instruction or LRDEX/STREX.
-
-
-Index: gcc4/recipe/files/gcc/libunixlib/pthread/_ints.s
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/pthread/_ints.s   (revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/pthread/_ints.s   (revision 7043)
-@@ -2,7 +2,7 @@
- @ disable_ints can be called multiple times, provided enable_ints is
- @ subsequently called an equal number of times
- @ Written by Martin Piper and Alex Waugh
--@ Copyright (c) 2002-2008 UnixLib Developers
-+@ Copyright (c) 2002-2016 UnixLib Developers
- 
- #include "internal/asm_dec.s"
- 
-@@ -20,15 +20,26 @@
-  PICEQ "LDR   a2, [a2, #0]"
-  PICEQ "LDR   a2, [a2, #__GOTT_INDEX__]"      @ a2 = GOT ptr
- 
--      LDR     a1, .L0                 @=__ul_global
-+      LDR     a1, .L0                         @ =__ul_global
-  PICEQ "LDR   a1, [a2, a1]"
-+      LDR     a4, [a1, #GBL_CPU_FLAGS]
-       ADD     a1, a1, #GBL_PTH_WORKSEMAPHORE
-+      TST     a4, #__CPUCAP_HAVE_SWP
-+      @ From this point onwards we will not be interrupted by the callback
-+      BEQ     0f
-+
-       MOV     a3, #1
-       SWP     a2, a3, [a1]
--      @ From this point onwards we will not be interrupted by the callback
-       ADD     a2, a2, #1
-       STR     a2, [a1]
-       MOV     pc, lr
-+0:
-+      LDREX   a2, [a1]
-+      ADD     a2, a2, #1
-+      STREX   a3, a2, [a1]
-+      TEQ     a3, #1
-+      BEQ     0b
-+      MOV     pc, lr
- .L0:
-       WORD    __ul_global
-       DECLARE_FUNCTION __pthread_disable_ints
-@@ -78,18 +89,32 @@
-  PICEQ "LDR   a1, [a1, #0]"
-  PICEQ "LDR   a1, [a1, #__GOTT_INDEX__]"      @ a1 = GOT ptr
- 
--      LDR     a4, .L2                 @=__ul_global
-+      LDR     a4, .L2                         @ =__ul_global
-  PICEQ "LDR   a4, [a1, a4]"
-+      LDR     a2, [a4, #GBL_CPU_FLAGS]
-       ADD     a1, a4, #GBL_PTH_WORKSEMAPHORE
-+      TST     a2, #__CPUCAP_HAVE_SWP
-+      @ From this point onwards we cannot be interrupted by the callback
-+      BEQ     0f
-+
-       MOV     a2, #1
-       SWP     a3, a2, [a1]
--      @ From this point onwards we cannot be interrupted by the callback
-       CMP     a3, #0
--      STRNE   a3, [a1, #0]    @ Restore original value
-+      BEQ     1f
-+      STR     a3, [a1, #0]    @ Restore original value
-       @ Return, as if ints are disabled on entry to the
-       @ calling function then they should not be reenabled
-       @ until the calling function has returned
-+      MOV     pc, lr
-+0:
-+      LDREX   a3, [a1]
-+      MOV     ip, #1
-+      STREX   a2, ip, [a1]
-+      TEQ     a2, #1
-+      BEQ     0b
-+      TEQ     a3, #0
-       MOVNE   pc, lr
-+1:
- 
- #if __UNIXLIB_PARANOID
-       LDR     a3, [a4, #GBL_PTH_RETURN_ADDRESS]
-Index: gcc4/recipe/files/gcc/libunixlib/include/unixlib/local.h
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/include/unixlib/local.h   (revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/include/unixlib/local.h   (revision 7043)
-@@ -133,6 +133,16 @@
-    socket.  Is -1 when socket handle is not valid.  */
- extern int __get_ro_socket (int __sockfd);
- 
-+/* Return 1 if the SWP instruction is available, otherwise 0.  */
-+extern unsigned int __cpucap_have_swp (void);
-+
-+/* Return 1 if the LDREX/STREX instructions are available, otherwise 0.  */
-+extern unsigned int __cpucap_have_rex (void);
-+
-+/* Return 1 if the LDREX/STREX instructions that operate on bytes, half-words
-+   and double words are available, otherwise 0.  */
-+extern unsigned int __cpucap_have_rexbhd (void);
-+
- __END_DECLS
- 
- #endif
-       * incl-local/internal/asm_dec.s(XSOM_DeregisterClient): Add
-Index: gcc4/recipe/files/gcc/libunixlib/Makefile.am
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/Makefile.am       (revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/Makefile.am       (revision 7043)
-@@ -1027,6 +1027,7 @@
-       sys/sigsetjmp.c \
-       sys/stackalloc.c \
-       sys/vfork.c \
-+      sys/_cpucaps.s \
-       sys/_getcpuarch.s \
-       sys/_jmp.s \
-       sys/_mman.s \
-Index: gcc4/recipe/files/gcc/libunixlib/incl-local/internal/asm_dec.s
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/incl-local/internal/asm_dec.s     
(revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/incl-local/internal/asm_dec.s     
(revision 7043)
-@@ -269,8 +269,10 @@
- .set  GBL_FLS_LBSTM_ON_RD, 108        @ = __ul_global.fls_lbstm_on_rd
- .set  GBL_PTH_CALLEVERY_RMA, 112      @ = __ul_global.pthread_callevery_rma
- 
-+.set  GBL_CPU_FLAGS, 116              @ = __ul_global.cpu_flags
-+
- #if !defined(__SOFTFP__) && defined(__VFP_FP__)
--.set  GBL_VFP_REGCOUNT, 116           @ = __ul_global.vfp_regcount
-+.set  GBL_VFP_REGCOUNT, 120           @ = __ul_global.vfp_regcount
- #endif
- 
-       @ Entries in the __ul_memory table.  Must be kept in sync with
-@@ -322,3 +324,7 @@
- .set  CRT1_LIB_FINI, 32       @ Ptr to function to finalise shared libraries
-                               @ at program exit - can be NULL.
- #endif
-+
-+#define __CPUCAP_HAVE_SWP    0x1
-+#define __CPUCAP_HAVE_REX    0x2
-+#define __CPUCAP_HAVE_REXBHD 0x4
-Index: gcc4/recipe/files/gcc/libunixlib/incl-local/internal/unix.h
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/incl-local/internal/unix.h        
(revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/incl-local/internal/unix.h        
(revision 7043)
-@@ -197,6 +197,8 @@
-     the life of the program. This block is passed to the call_every handler in
-     r12.  */
- 
-+  unsigned int cpu_flags; /* Flags indicating the capabilities of the CPU.  */
-+
- #if !defined(__SOFTFP__) && defined(__VFP_FP__)
-   int vfp_regcount; /* Number of doubleword registers we should request for
-     VFP contexts */
-Index: gcc4/recipe/files/gcc/libunixlib/sys/_cpucaps.s
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/sys/_cpucaps.s    (revision 0)
-+++ gcc4/recipe/files/gcc/libunixlib/sys/_cpucaps.s    (revision 7043)
-@@ -0,0 +1,91 @@
-+@ Determine the capabilities of the CPU and allow callers to enquire
-+@ what they are.
-+@ Copyright (c) 2016 UnixLib Developers.
-+@ Written by Lee Noar.
-+
-+#include "internal/asm_dec.s"
-+
-+      .text
-+
-+@ Determine what the CPU capabilities are, and record them.
-+@ Called early on during program initialisation in _syslib.s.
-+      .global __probe_cpu_caps
-+      NAME    __probe_cpu_caps
-+__probe_cpu_caps:
-+      MOV     r0, #0
-+      SWI     XOS_PlatformFeatures
-+      MOVVS   r0, #0
-+
-+      MOV     r2, #0
-+      @ The OS flag is set to 1 to indicate _no_ SWP instruction available 
(for
-+      @ backwards compatibility). We reverse it here and set our flag to 1 to
-+      @ indicate that SWP _is_ available.
-+      TST     r0, #1<<11                      @ SWP{B} not available
-+      ORREQ   r2, r2, #__CPUCAP_HAVE_SWP
-+      TST     r0, #1<<12                      @ LDREX/STREX available
-+      ORRNE   r2, r2, #__CPUCAP_HAVE_REX
-+      TST     r0, #1<<13                      @ LDREX/STREX{B/H/D} available
-+      ORRNE   r2, r2, #__CPUCAP_HAVE_REXBHD
-+
-+ PICEQ "LDR   r0, =__GOTT_BASE__"
-+ PICEQ "LDR   r0, [r0, #0]"
-+ PICEQ "LDR   r0, [r0, #__GOTT_INDEX__]"      @ r0 = GOT ptr
-+      LDR     r1, .L0                         @ =__ul_global
-+ PICEQ "LDR   r1, [r0, r1]"
-+      STR     r2, [r1, #GBL_CPU_FLAGS]
-+
-+      MOV     pc, lr
-+.L0:
-+      WORD    __ul_global
-+      DECLARE_FUNCTION __probe_cpu_caps
-+
-+      .global __cpucap_have_swp
-+      NAME    __cpucap_have_swp
-+__cpucap_have_swp:
-+ PICEQ "LDR   r0, =__GOTT_BASE__"
-+ PICEQ "LDR   r0, [r0, #0]"
-+ PICEQ "LDR   r0, [r0, #__GOTT_INDEX__]"      @ r0 = GOT ptr
-+      LDR     r1, .L0                         @ =__ul_global
-+ PICEQ "LDR   r1, [r0, r1]"
-+      LDR     r0, [r1, #GBL_CPU_FLAGS]
-+      TST     r0, #__CPUCAP_HAVE_SWP
-+      MOVEQ   r0, #0
-+      MOVNE   r0, #1
-+
-+      MOV     pc, lr
-+      DECLARE_FUNCTION __cpucap_have_swp
-+
-+@ Return 1 if LDREX/STREX instructions are available on the CPU, otherwise 0.
-+      .global __cpucap_have_rex
-+      NAME    __cpucap_have_rex
-+__cpucap_have_rex:
-+ PICEQ "LDR   r0, =__GOTT_BASE__"
-+ PICEQ "LDR   r0, [r0, #0]"
-+ PICEQ "LDR   r0, [r0, #__GOTT_INDEX__]"      @ r0 = GOT ptr
-+      LDR     r1, .L0                         @ =__ul_global
-+ PICEQ "LDR   r1, [r0, r1]"
-+      LDR     r0, [r1, #GBL_CPU_FLAGS]
-+      TST     r0, #__CPUCAP_HAVE_REX
-+      MOVEQ   r0, #0
-+      MOVNE   r0, #1
-+
-+      MOV     pc, lr
-+      DECLARE_FUNCTION __cpucap_have_rex
-+
-+@ Return 1 if LDREX/STREX instructions that work on non-32 bit data sizes
-+@ are available on the CPU, otherwise 0.
-+      .global __cpucap_have_rexbhd
-+      NAME    __cpucap_have_rexbhd
-+__cpucap_have_rexbhd:
-+ PICEQ "LDR   r0, =__GOTT_BASE__"
-+ PICEQ "LDR   r0, [r0, #0]"
-+ PICEQ "LDR   r0, [r0, #__GOTT_INDEX__]"      @ r0 = GOT ptr
-+      LDR     r1, .L0                         @ =__ul_global
-+ PICEQ "LDR   r1, [r0, r1]"
-+      LDR     r0, [r1, #GBL_CPU_FLAGS]
-+      TST     r0, #__CPUCAP_HAVE_REXBHD
-+      MOVEQ   r0, #0
-+      MOVNE   r0, #1
-+
-+      MOV     pc, lr
-+      DECLARE_FUNCTION __cpucap_have_rexbhd
-Index: gcc4/recipe/files/gcc/libunixlib/sys/_syslib.s
-===================================================================
---- gcc4/recipe/files/gcc/libunixlib/sys/_syslib.s     (revision 7042)
-+++ gcc4/recipe/files/gcc/libunixlib/sys/_syslib.s     (revision 7043)
-@@ -255,6 +255,8 @@
-       BCC     __exit_with_error_num
- unknown_cpu_arch:
- 
-+      BL      __probe_cpu_caps
-+
-       @ Use of DAs explicitly overridden if __dynamic_no_da is declared
-       MOV     lr, #-1
-       STR     lr, [ip, #GBL_DYNAMIC_NUM]
-@@ -1286,9 +1288,21 @@
-       @ error handling.  As last resort to avoid an infinite loop
-       @ we go for a straight OS_Exit scenario.  Anything better we
-       @ can do ?
-+      ADD     a3, a4, #GBL_PANIC_MODE
-+      LDR     a2, [a4, #GBL_CPU_FLAGS]
-+      TST     a2, #__CPUCAP_HAVE_SWP
-+      BEQ     0f
-+
-       MOV     a2, #1
--      ADD     a3, a4, #GBL_PANIC_MODE
-       SWP     a2, a2, [a3]
-+      B       1f
-+0:
-+      LDREX   a2, [a3]
-+      MOV     ip, #1
-+      STREX   lr, ip, [a3]
-+      TEQ     lr, #1
-+      BEQ     0b
-+1:
-       TEQ     a2, #0
-       BEQ     __unixlib_fatal_cont1
- 
diff --git a/m5475-atari-mint/fetchsrc b/m5475-atari-mint/fetchsrc
index bbe8f6b..9396a4e 100755
--- a/m5475-atari-mint/fetchsrc
+++ b/m5475-atari-mint/fetchsrc
@@ -4,7 +4,7 @@
 
 # Usage fetchsrc <target> <source> <upstream> <output>
 
-NSSRV="http://ci.netsurf-browser.org/toolchain/";
+NSSRV="https://ci.netsurf-browser.org/toolchain/";
 
 wget -q -O ${4} ${NSSRV}/${1}/${2}
 if [ $? -ne 0 ];then
diff --git a/m68k-atari-mint/fetchsrc b/m68k-atari-mint/fetchsrc
index e71d85f..92ae5bf 100755
--- a/m68k-atari-mint/fetchsrc
+++ b/m68k-atari-mint/fetchsrc
@@ -4,7 +4,7 @@
 
 # Usage fetchsrc <target> <source> <upstream> <output>
 
-NSSRV="http://ci.netsurf-browser.org/toolchain/";
+NSSRV="https://ci.netsurf-browser.org/toolchain/";
 
 wget -q -O ${4} ${NSSRV}/${1}/${2}
 if [ $? -ne 0 ];then
diff --git a/sdk/recipes/patches/openssl/crypto.ctype.c.p 
b/sdk/recipes/patches/openssl/crypto.ctype.c.p
deleted file mode 100644
index e0ecc21..0000000
--- a/sdk/recipes/patches/openssl/crypto.ctype.c.p
+++ /dev/null
@@ -1,11 +0,0 @@
---- crypto/ctype.c.orig 2022-05-27 00:00:00.000000000 +0000
---- crypto/ctype.c      2022-05-27 00:00:00.000000000 +0000
-@@ -295,7 +295,7 @@
- /* str[n]casecmp_l is defined in POSIX 2008-01. Value is taken accordingly
-  * 
https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html */
- 
--#if (defined OPENSSL_SYS_WINDOWS) || (defined(_POSIX_C_SOURCE) && 
_POSIX_C_SOURCE >= 200809L)
-+#if (defined OPENSSL_SYS_WINDOWS) || (defined(_POSIX_C_SOURCE) && 
_POSIX_C_SOURCE >= 200809L && !defined(OPENSSL_SYS_RISCOS))
- 
- # if defined OPENSSL_SYS_WINDOWS
- # define locale_t _locale_t


-- 
Cross-compilation toolchains and environments
_______________________________________________
netsurf-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to