Sfoglia il codice sorgente

add linux version 8.3.0

yaxing.chen 5 anni fa
parent
commit
363dca2f35
100 ha cambiato i file con 2350 aggiunte e 265 eliminazioni
  1. 0 173
      IntelliSense.props
  2. 99 0
      README.md
  3. 1 0
      bin/libcrypt.so.1
  4. BIN
      bin/libcrypt.so.1.1.0
  5. BIN
      bin/libcrypto.so.1.0.0
  6. 1 0
      bin/libexpat.so.1
  7. BIN
      bin/libexpat.so.1.6.7
  8. BIN
      bin/libgcc_s.so.1
  9. 1 0
      bin/libgmp.so.10
  10. BIN
      bin/libgmp.so.10.3.2
  11. 1 0
      bin/libgpm.so.2
  12. BIN
      bin/libgpm.so.2.1.0
  13. 1 0
      bin/libiconv.so.2
  14. BIN
      bin/libiconv.so.2.6.0
  15. 1 0
      bin/liblzma.so.5
  16. BIN
      bin/liblzma.so.5.2.3
  17. 1 0
      bin/libmpfr.so.4
  18. BIN
      bin/libmpfr.so.4.1.6
  19. 1 0
      bin/libncurses.so.6
  20. BIN
      bin/libncurses.so.6.2
  21. BIN
      bin/libpython2.7.so.1.0
  22. BIN
      bin/libpython3.7m.so.1.0
  23. BIN
      bin/libssl.so.1.0.0
  24. 1 0
      bin/libz.so.1
  25. BIN
      bin/libz.so.1.2.8
  26. BIN
      bin/make.exe
  27. BIN
      bin/riscv64-unknown-elf-addr2line
  28. BIN
      bin/riscv64-unknown-elf-addr2line.exe
  29. BIN
      bin/riscv64-unknown-elf-ar
  30. BIN
      bin/riscv64-unknown-elf-ar.exe
  31. BIN
      bin/riscv64-unknown-elf-as
  32. BIN
      bin/riscv64-unknown-elf-as.exe
  33. BIN
      bin/riscv64-unknown-elf-c++
  34. BIN
      bin/riscv64-unknown-elf-c++.exe
  35. BIN
      bin/riscv64-unknown-elf-c++filt
  36. BIN
      bin/riscv64-unknown-elf-c++filt.exe
  37. BIN
      bin/riscv64-unknown-elf-cpp
  38. BIN
      bin/riscv64-unknown-elf-cpp.exe
  39. BIN
      bin/riscv64-unknown-elf-elfedit
  40. BIN
      bin/riscv64-unknown-elf-elfedit.exe
  41. BIN
      bin/riscv64-unknown-elf-g++
  42. BIN
      bin/riscv64-unknown-elf-g++.exe
  43. BIN
      bin/riscv64-unknown-elf-gcc
  44. BIN
      bin/riscv64-unknown-elf-gcc-10.1.0.exe
  45. BIN
      bin/riscv64-unknown-elf-gcc-8.3.0
  46. BIN
      bin/riscv64-unknown-elf-gcc-ar
  47. BIN
      bin/riscv64-unknown-elf-gcc-ar.exe
  48. BIN
      bin/riscv64-unknown-elf-gcc-nm
  49. BIN
      bin/riscv64-unknown-elf-gcc-nm.exe
  50. BIN
      bin/riscv64-unknown-elf-gcc-ranlib
  51. BIN
      bin/riscv64-unknown-elf-gcc-ranlib.exe
  52. BIN
      bin/riscv64-unknown-elf-gcc.exe
  53. BIN
      bin/riscv64-unknown-elf-gcov
  54. BIN
      bin/riscv64-unknown-elf-gcov-dump
  55. BIN
      bin/riscv64-unknown-elf-gcov-dump.exe
  56. BIN
      bin/riscv64-unknown-elf-gcov-tool
  57. BIN
      bin/riscv64-unknown-elf-gcov-tool.exe
  58. BIN
      bin/riscv64-unknown-elf-gcov.exe
  59. BIN
      bin/riscv64-unknown-elf-gdb
  60. 48 92
      bin/riscv64-unknown-elf-gdb-add-index
  61. 116 0
      bin/riscv64-unknown-elf-gdb-add-index-py
  62. 116 0
      bin/riscv64-unknown-elf-gdb-add-index-py3
  63. BIN
      bin/riscv64-unknown-elf-gdb-py
  64. BIN
      bin/riscv64-unknown-elf-gdb-py3
  65. BIN
      bin/riscv64-unknown-elf-gdb.exe
  66. BIN
      bin/riscv64-unknown-elf-gprof
  67. BIN
      bin/riscv64-unknown-elf-gprof.exe
  68. BIN
      bin/riscv64-unknown-elf-ld
  69. BIN
      bin/riscv64-unknown-elf-ld.bfd
  70. BIN
      bin/riscv64-unknown-elf-ld.bfd.exe
  71. BIN
      bin/riscv64-unknown-elf-ld.exe
  72. BIN
      bin/riscv64-unknown-elf-lto-dump.exe
  73. BIN
      bin/riscv64-unknown-elf-nm
  74. BIN
      bin/riscv64-unknown-elf-nm.exe
  75. BIN
      bin/riscv64-unknown-elf-objcopy
  76. BIN
      bin/riscv64-unknown-elf-objcopy.exe
  77. BIN
      bin/riscv64-unknown-elf-objdump
  78. BIN
      bin/riscv64-unknown-elf-objdump.exe
  79. BIN
      bin/riscv64-unknown-elf-ranlib
  80. BIN
      bin/riscv64-unknown-elf-ranlib.exe
  81. BIN
      bin/riscv64-unknown-elf-readelf
  82. BIN
      bin/riscv64-unknown-elf-readelf.exe
  83. BIN
      bin/riscv64-unknown-elf-run.exe
  84. BIN
      bin/riscv64-unknown-elf-size
  85. BIN
      bin/riscv64-unknown-elf-size.exe
  86. BIN
      bin/riscv64-unknown-elf-strings
  87. BIN
      bin/riscv64-unknown-elf-strings.exe
  88. BIN
      bin/riscv64-unknown-elf-strip
  89. BIN
      bin/riscv64-unknown-elf-strip.exe
  90. 112 0
      distro-info/CHANGELOG.md
  91. 10 0
      distro-info/patches/binutils-gdb-2.29.patch
  92. 10 0
      distro-info/patches/binutils-gdb-2.30.patch
  93. 181 0
      distro-info/patches/binutils-gdb-2.32.patch
  94. 680 0
      distro-info/patches/pyconfig-3.7.2.h
  95. 680 0
      distro-info/patches/pyconfig-3.7.6.h
  96. 11 0
      distro-info/patches/python-2.7.13.amd64.patch
  97. 11 0
      distro-info/patches/python-2.7.13.patch
  98. 67 0
      distro-info/patches/python3-config.sh
  99. 100 0
      distro-info/scripts/README-8.2.0-3.1.md
  100. 100 0
      distro-info/scripts/README-8.3.0-1.1.md

File diff suppressed because it is too large
+ 0 - 173
IntelliSense.props


+ 99 - 0
README.md

@@ -0,0 +1,99 @@
+# xPack GNU RISC-V Embedded GCC
+
+This is the **xPack** version of the
+**GNU RISC-V Embedded GCC** toolchain.
+
+For details, see
+[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-embed-gcc/) pages.
+
+## Easy install
+
+The **xPack RISC-V Embedded GCC** toolchain is also available as a
+binary [xPack](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-embed-gcc)
+and can be conveniently installed with [xpm](https://www.npmjs.com/package/xpm):
+
+```console
+$ xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@8.3.0-1.2.1
+```
+
+For more details on how to install the toolchain, please see
+[How to install the RISC-V toolchain?](http://xpack.github.io/toolchain/riscv-bone-embed-gcc/install/) page.
+
+## Compliance
+
+Starting with 8.2.0-2, the xPack GNU RISC-V Embedded GCC (formerly
+GNU MCU Eclipse RISC-V GCC) follows
+the official [SiFive releases](https://github.com/sifive/freedom-tools/releases),
+with as little differences as possible.
+
+This release is based on the
+[v2019.08.0](https://github.com/sifive/freedom-tools/releases/tag/v2019.08.0)
+release, and includes the SiFive extensions (like CLIC interrupts).
+
+The following commits (from [sifive/freedom-tools](https://github.com/sifive/freedom-tools/tree/master/src)) were used:
+
+- the [sifive/riscv-binutils-gdb](https://github.com/sifive/riscv-binutils-gdb)
+project, branch `sifive-binutils-2.32`, commit
+[03d23d5](https://github.com/sifive/riscv-binutils-gdb/tree/03d23d58701bdd425c613b0be2d458bcde46912b)
+from 2 September 2019
+- the [sifive/riscv-gcc](https://github.com/sifive/riscv-gcc) project,
+branch `sifive-gcc-8.3.0`, commit
+[e195042](https://github.com/sifive/riscv-gcc/tree/e195042babe2dc30d9fabb88d336d8c8679b3702)
+from from 7 Aug 2019
+- the [sifive/riscv-newlib](https://github.com/sifive/riscv-newlib) project, the `master` branch,
+commit [0d24a86](https://github.com/sifive/riscv-newlib/tree/0d24a86822a5ee73d6a6aa69e2a0118aa1e35204)
+from 9 July 2019
+
+GDB was upstreamed and does not require SiFive specific patches,
+so the current build uses
+`git://sourceware.org/git/binutils-gdb.git`, the `9b40759` commit from
+28 Feb 2019.
+
+## Changes
+
+Compared to the original SiFive version, the **same architecture and API**
+options are supported, and there are minimal functional changes
+
+- `libgloss` was removed from the list of libraires always linked to the
+  application, since it issues `ECALL`
+  instructions that fail in bare metal environments
+- `march=rv32imaf/mabi=ilp32f` was added to the list of multilibs
+
+## newlib-nano
+
+Support for **newlib-nano** is available using the
+`--specs=nano.specs` option. For better results, this option must be
+added to both compile and link time.
+
+## nosys.specs
+
+If no syscalls are needed, `--specs=nosys.specs` can be used at link
+time to provide empty implementations for the POSIX system calls.
+
+## Compile options
+
+The libraries are compiled with `-O2 -mcmodel=medany`. The nano version is
+compiled with `-Os -mcmodel=medany`.
+
+> Important: It is mandatory for the applications to be compiled with
+`-mcmodel=medany`, otherwise the link will fail.
+
+## Documentation
+
+The original PDF documentation is available in the `share/doc` folder.
+
+## Support
+
+For support, please read the
+[support](https://xpack.github.io/riscv-none-embed-gcc/support/) page.
+
+## More info
+
+For more info, please see the xPack project site:
+
+  http://xpack.github.io/riscv-none-embed-gcc
+
+
+Thank you for using open source software,
+
+Liviu Ionescu

+ 1 - 0
bin/libcrypt.so.1

@@ -0,0 +1 @@
+libcrypt.so.1.1.0

BIN
bin/libcrypt.so.1.1.0


BIN
bin/libcrypto.so.1.0.0


+ 1 - 0
bin/libexpat.so.1

@@ -0,0 +1 @@
+libexpat.so.1.6.7

BIN
bin/libexpat.so.1.6.7


BIN
bin/libgcc_s.so.1


+ 1 - 0
bin/libgmp.so.10

@@ -0,0 +1 @@
+libgmp.so.10.3.2

BIN
bin/libgmp.so.10.3.2


+ 1 - 0
bin/libgpm.so.2

@@ -0,0 +1 @@
+libgpm.so.2.1.0

BIN
bin/libgpm.so.2.1.0


+ 1 - 0
bin/libiconv.so.2

@@ -0,0 +1 @@
+libiconv.so.2.6.0

BIN
bin/libiconv.so.2.6.0


+ 1 - 0
bin/liblzma.so.5

@@ -0,0 +1 @@
+liblzma.so.5.2.3

BIN
bin/liblzma.so.5.2.3


+ 1 - 0
bin/libmpfr.so.4

@@ -0,0 +1 @@
+libmpfr.so.4.1.6

BIN
bin/libmpfr.so.4.1.6


+ 1 - 0
bin/libncurses.so.6

@@ -0,0 +1 @@
+libncurses.so.6.2

BIN
bin/libncurses.so.6.2


BIN
bin/libpython2.7.so.1.0


BIN
bin/libpython3.7m.so.1.0


BIN
bin/libssl.so.1.0.0


+ 1 - 0
bin/libz.so.1

@@ -0,0 +1 @@
+libz.so.1.2.8

BIN
bin/libz.so.1.2.8


BIN
bin/make.exe


BIN
bin/riscv64-unknown-elf-addr2line


BIN
bin/riscv64-unknown-elf-addr2line.exe


BIN
bin/riscv64-unknown-elf-ar


BIN
bin/riscv64-unknown-elf-ar.exe


BIN
bin/riscv64-unknown-elf-as


BIN
bin/riscv64-unknown-elf-as.exe


BIN
bin/riscv64-unknown-elf-c++


BIN
bin/riscv64-unknown-elf-c++.exe


BIN
bin/riscv64-unknown-elf-c++filt


BIN
bin/riscv64-unknown-elf-c++filt.exe


BIN
bin/riscv64-unknown-elf-cpp


BIN
bin/riscv64-unknown-elf-cpp.exe


BIN
bin/riscv64-unknown-elf-elfedit


BIN
bin/riscv64-unknown-elf-elfedit.exe


BIN
bin/riscv64-unknown-elf-g++


BIN
bin/riscv64-unknown-elf-g++.exe


BIN
bin/riscv64-unknown-elf-gcc


BIN
bin/riscv64-unknown-elf-gcc-10.1.0.exe


BIN
bin/riscv64-unknown-elf-gcc-8.3.0


BIN
bin/riscv64-unknown-elf-gcc-ar


BIN
bin/riscv64-unknown-elf-gcc-ar.exe


BIN
bin/riscv64-unknown-elf-gcc-nm


BIN
bin/riscv64-unknown-elf-gcc-nm.exe


BIN
bin/riscv64-unknown-elf-gcc-ranlib


BIN
bin/riscv64-unknown-elf-gcc-ranlib.exe


BIN
bin/riscv64-unknown-elf-gcc.exe


BIN
bin/riscv64-unknown-elf-gcov


BIN
bin/riscv64-unknown-elf-gcov-dump


BIN
bin/riscv64-unknown-elf-gcov-dump.exe


BIN
bin/riscv64-unknown-elf-gcov-tool


BIN
bin/riscv64-unknown-elf-gcov-tool.exe


BIN
bin/riscv64-unknown-elf-gcov.exe


BIN
bin/riscv64-unknown-elf-gdb


+ 48 - 92
bin/riscv64-unknown-elf-gdb-add-index

@@ -2,7 +2,7 @@
 
 # Add a .gdb_index section to a file.
 
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2019 Free Software Foundation, Inc.
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 3 of the License, or
@@ -20,7 +20,6 @@
 # If not, or you want others, pass the following in the environment
 GDB=${GDB:=gdb}
 OBJCOPY=${OBJCOPY:=objcopy}
-READELF=${READELF:=readelf}
 
 myname="${0##*/}"
 
@@ -44,44 +43,15 @@ fi
 
 dir="${file%/*}"
 test "$dir" = "$file" && dir="."
+index4="${file}.gdb-index"
+index5="${file}.debug_names"
+debugstr="${file}.debug_str"
+debugstrmerge="${file}.debug_str.merge"
+debugstrerr="${file}.debug_str.err"
 
-dwz_file=""
-if $READELF -S "$file" | grep -q " \.gnu_debugaltlink "; then
-    dwz_file=$($READELF --string-dump=.gnu_debugaltlink "$file" \
-		   | grep -A1  "'\.gnu_debugaltlink':" \
-		   | tail -n +2 \
-		   | sed 's/.*]//')
-    dwz_file=$(echo $dwz_file)
-    if $READELF -S "$dwz_file" | grep -E -q " \.(gdb_index|debug_names) "; then
-	# Already has an index, skip it.
-	dwz_file=""
-    fi
-fi
-
-set_files ()
-{
-    local file="$1"
-
-    index4="${file}.gdb-index"
-    index5="${file}.debug_names"
-    debugstr="${file}.debug_str"
-    debugstrmerge="${file}.debug_str.merge"
-    debugstrerr="${file}.debug_str.err"
-}
-
-tmp_files=
-for f in "$file" "$dwz_file"; do
-    if [ "$f" = "" ]; then
-	continue
-    fi
-    set_files "$f"
-    tmp_files="$tmp_files $index4 $index5 $debugstr $debugstrmerge $debugstrerr"
-done
-
-rm -f $tmp_files
-
+rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr
 # Ensure intermediate index file is removed when we exit.
-trap "rm -f $tmp_files" 0
+trap "rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr" 0
 
 $GDB --batch -nx -iex 'set auto-load no' \
     -ex "file $file" -ex "save gdb-index $dwarf5 $dir" || {
@@ -97,64 +67,50 @@ $GDB --batch -nx -iex 'set auto-load no' \
 # already stripped binary, it's a no-op.
 status=0
 
-handle_file ()
-{
-    local file
-    file="$1"
-
-    set_files "$file"
-
-    if test -f "$index4" -a -f "$index5"; then
-	echo "$myname: Both index types were created for $file" 1>&2
-	status=1
-    elif test -f "$index4" -o -f "$index5"; then
-	if test -f "$index4"; then
-	    index="$index4"
-	    section=".gdb_index"
-	else
-	    index="$index5"
-	    section=".debug_names"
+if test -f "$index4" -a -f "$index5"; then
+    echo "$myname: Both index types were created for $file" 1>&2
+    status=1
+elif test -f "$index4" -o -f "$index5"; then
+    if test -f "$index4"; then
+	index="$index4"
+	section=".gdb_index"
+    else
+	index="$index5"
+	section=".debug_names"
+    fi
+    debugstradd=false
+    debugstrupdate=false
+    if test -s "$debugstr"; then
+	if ! $OBJCOPY --dump-section .debug_str="$debugstrmerge" "$file" /dev/null \
+		 2>$debugstrerr; then
+	    cat >&2 $debugstrerr
+	    exit 1
 	fi
-	debugstradd=false
-	debugstrupdate=false
-	if test -s "$debugstr"; then
-	    if ! $OBJCOPY --dump-section .debug_str="$debugstrmerge" "$file" \
-		 /dev/null 2>$debugstrerr; then
-		cat >&2 $debugstrerr
-		exit 1
-	    fi
-	    if grep -q "can't dump section '.debug_str' - it does not exist" \
-		    $debugstrerr; then
-		debugstradd=true
-	    else
-		debugstrupdate=true
-		cat >&2 $debugstrerr
-	    fi
-	    cat "$debugstr" >>"$debugstrmerge"
+	if grep -q "can't dump section '.debug_str' - it does not exist" \
+		  $debugstrerr; then
+	    debugstradd=true
+	else
+	    debugstrupdate=true
+	    cat >&2 $debugstrerr
 	fi
-
-	$OBJCOPY --add-section $section="$index" \
-		 --set-section-flags $section=readonly \
-		 $(if $debugstradd; then \
-		       echo --add-section .debug_str="$debugstrmerge"; \
-		       echo --set-section-flags .debug_str=readonly; \
-		   fi; \
-		   if $debugstrupdate; then \
-		       echo --update-section .debug_str="$debugstrmerge"; \
-		   fi) \
-		 "$file" "$file"
-
-	status=$?
-    else
-	echo "$myname: No index was created for $file" 1>&2
-	echo "$myname: [Was there no debuginfo? Was there already an index?]" \
-	     1>&2
+	cat "$debugstr" >>"$debugstrmerge"
     fi
-}
 
-handle_file "$file"
-if [ "$dwz_file" != "" ]; then
-    handle_file "$dwz_file"
+    $OBJCOPY --add-section $section="$index" \
+	--set-section-flags $section=readonly \
+	$(if $debugstradd; then \
+	      echo --add-section .debug_str="$debugstrmerge"; \
+	      echo --set-section-flags .debug_str=readonly; \
+	  fi; \
+	  if $debugstrupdate; then \
+	      echo --update-section .debug_str="$debugstrmerge"; \
+	  fi) \
+	"$file" "$file"
+
+    status=$?
+else
+    echo "$myname: No index was created for $file" 1>&2
+    echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
 fi
 
 exit $status

+ 116 - 0
bin/riscv64-unknown-elf-gdb-add-index-py

@@ -0,0 +1,116 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010-2019 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This program assumes gdb and objcopy are in $PATH.
+# If not, or you want others, pass the following in the environment
+GDB=${GDB:=gdb}
+OBJCOPY=${OBJCOPY:=objcopy}
+
+myname="${0##*/}"
+
+dwarf5=""
+if [ "$1" = "-dwarf-5" ]; then
+    dwarf5="$1"
+    shift
+fi
+
+if test $# != 1; then
+    echo "usage: $myname [-dwarf-5] FILE" 1>&2
+    exit 1
+fi
+
+file="$1"
+
+if test ! -r "$file"; then
+    echo "$myname: unable to access: $file" 1>&2
+    exit 1
+fi
+
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+index4="${file}.gdb-index"
+index5="${file}.debug_names"
+debugstr="${file}.debug_str"
+debugstrmerge="${file}.debug_str.merge"
+debugstrerr="${file}.debug_str.err"
+
+rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr
+# Ensure intermediate index file is removed when we exit.
+trap "rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr" 0
+
+$GDB --batch -nx -iex 'set auto-load no' \
+    -ex "file $file" -ex "save gdb-index $dwarf5 $dir" || {
+    # Just in case.
+    status=$?
+    echo "$myname: gdb error generating index for $file" 1>&2
+    exit $status
+}
+
+# In some situations gdb can exit without creating an index.  This is
+# not an error.
+# E.g., if $file is stripped.  This behaviour is akin to stripping an
+# already stripped binary, it's a no-op.
+status=0
+
+if test -f "$index4" -a -f "$index5"; then
+    echo "$myname: Both index types were created for $file" 1>&2
+    status=1
+elif test -f "$index4" -o -f "$index5"; then
+    if test -f "$index4"; then
+	index="$index4"
+	section=".gdb_index"
+    else
+	index="$index5"
+	section=".debug_names"
+    fi
+    debugstradd=false
+    debugstrupdate=false
+    if test -s "$debugstr"; then
+	if ! $OBJCOPY --dump-section .debug_str="$debugstrmerge" "$file" /dev/null \
+		 2>$debugstrerr; then
+	    cat >&2 $debugstrerr
+	    exit 1
+	fi
+	if grep -q "can't dump section '.debug_str' - it does not exist" \
+		  $debugstrerr; then
+	    debugstradd=true
+	else
+	    debugstrupdate=true
+	    cat >&2 $debugstrerr
+	fi
+	cat "$debugstr" >>"$debugstrmerge"
+    fi
+
+    $OBJCOPY --add-section $section="$index" \
+	--set-section-flags $section=readonly \
+	$(if $debugstradd; then \
+	      echo --add-section .debug_str="$debugstrmerge"; \
+	      echo --set-section-flags .debug_str=readonly; \
+	  fi; \
+	  if $debugstrupdate; then \
+	      echo --update-section .debug_str="$debugstrmerge"; \
+	  fi) \
+	"$file" "$file"
+
+    status=$?
+else
+    echo "$myname: No index was created for $file" 1>&2
+    echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
+fi
+
+exit $status

+ 116 - 0
bin/riscv64-unknown-elf-gdb-add-index-py3

@@ -0,0 +1,116 @@
+#! /bin/sh
+
+# Add a .gdb_index section to a file.
+
+# Copyright (C) 2010-2019 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This program assumes gdb and objcopy are in $PATH.
+# If not, or you want others, pass the following in the environment
+GDB=${GDB:=gdb}
+OBJCOPY=${OBJCOPY:=objcopy}
+
+myname="${0##*/}"
+
+dwarf5=""
+if [ "$1" = "-dwarf-5" ]; then
+    dwarf5="$1"
+    shift
+fi
+
+if test $# != 1; then
+    echo "usage: $myname [-dwarf-5] FILE" 1>&2
+    exit 1
+fi
+
+file="$1"
+
+if test ! -r "$file"; then
+    echo "$myname: unable to access: $file" 1>&2
+    exit 1
+fi
+
+dir="${file%/*}"
+test "$dir" = "$file" && dir="."
+index4="${file}.gdb-index"
+index5="${file}.debug_names"
+debugstr="${file}.debug_str"
+debugstrmerge="${file}.debug_str.merge"
+debugstrerr="${file}.debug_str.err"
+
+rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr
+# Ensure intermediate index file is removed when we exit.
+trap "rm -f $index4 $index5 $debugstr $debugstrmerge $debugstrerr" 0
+
+$GDB --batch -nx -iex 'set auto-load no' \
+    -ex "file $file" -ex "save gdb-index $dwarf5 $dir" || {
+    # Just in case.
+    status=$?
+    echo "$myname: gdb error generating index for $file" 1>&2
+    exit $status
+}
+
+# In some situations gdb can exit without creating an index.  This is
+# not an error.
+# E.g., if $file is stripped.  This behaviour is akin to stripping an
+# already stripped binary, it's a no-op.
+status=0
+
+if test -f "$index4" -a -f "$index5"; then
+    echo "$myname: Both index types were created for $file" 1>&2
+    status=1
+elif test -f "$index4" -o -f "$index5"; then
+    if test -f "$index4"; then
+	index="$index4"
+	section=".gdb_index"
+    else
+	index="$index5"
+	section=".debug_names"
+    fi
+    debugstradd=false
+    debugstrupdate=false
+    if test -s "$debugstr"; then
+	if ! $OBJCOPY --dump-section .debug_str="$debugstrmerge" "$file" /dev/null \
+		 2>$debugstrerr; then
+	    cat >&2 $debugstrerr
+	    exit 1
+	fi
+	if grep -q "can't dump section '.debug_str' - it does not exist" \
+		  $debugstrerr; then
+	    debugstradd=true
+	else
+	    debugstrupdate=true
+	    cat >&2 $debugstrerr
+	fi
+	cat "$debugstr" >>"$debugstrmerge"
+    fi
+
+    $OBJCOPY --add-section $section="$index" \
+	--set-section-flags $section=readonly \
+	$(if $debugstradd; then \
+	      echo --add-section .debug_str="$debugstrmerge"; \
+	      echo --set-section-flags .debug_str=readonly; \
+	  fi; \
+	  if $debugstrupdate; then \
+	      echo --update-section .debug_str="$debugstrmerge"; \
+	  fi) \
+	"$file" "$file"
+
+    status=$?
+else
+    echo "$myname: No index was created for $file" 1>&2
+    echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
+fi
+
+exit $status

BIN
bin/riscv64-unknown-elf-gdb-py


BIN
bin/riscv64-unknown-elf-gdb-py3


BIN
bin/riscv64-unknown-elf-gdb.exe


BIN
bin/riscv64-unknown-elf-gprof


BIN
bin/riscv64-unknown-elf-gprof.exe


BIN
bin/riscv64-unknown-elf-ld


BIN
bin/riscv64-unknown-elf-ld.bfd


BIN
bin/riscv64-unknown-elf-ld.bfd.exe


BIN
bin/riscv64-unknown-elf-ld.exe


BIN
bin/riscv64-unknown-elf-lto-dump.exe


BIN
bin/riscv64-unknown-elf-nm


BIN
bin/riscv64-unknown-elf-nm.exe


BIN
bin/riscv64-unknown-elf-objcopy


BIN
bin/riscv64-unknown-elf-objcopy.exe


BIN
bin/riscv64-unknown-elf-objdump


BIN
bin/riscv64-unknown-elf-objdump.exe


BIN
bin/riscv64-unknown-elf-ranlib


BIN
bin/riscv64-unknown-elf-ranlib.exe


BIN
bin/riscv64-unknown-elf-readelf


BIN
bin/riscv64-unknown-elf-readelf.exe


BIN
bin/riscv64-unknown-elf-run.exe


BIN
bin/riscv64-unknown-elf-size


BIN
bin/riscv64-unknown-elf-size.exe


BIN
bin/riscv64-unknown-elf-strings


BIN
bin/riscv64-unknown-elf-strings.exe


BIN
bin/riscv64-unknown-elf-strip


BIN
bin/riscv64-unknown-elf-strip.exe


+ 112 - 0
distro-info/CHANGELOG.md

@@ -0,0 +1,112 @@
+
+## Change & release log
+
+Releases in reverse chronological order.
+
+### 2020-07-04
+
+- v8.3.0-1.2 released
+
+### 2019-11-01
+
+- v8.3.0-1.1.1 published on npmjs.com
+- v8.3.0-1.1 released
+
+### 2019-10-30
+
+- v8.3.0-1.1 prepared
+- update to follow SiFive 2019.08.0 release
+
+### 2019-07-31
+
+- v8.2.0-3.1.1 published on npmjs.com
+- v8.2.0-3.1 released
+- update to follow SiFive May 2019.05.0 release
+
+___
+
+## Historical GNU MCU Eclipse change log
+
+### 2019-05-22
+
+- v8.2.0-2.2 released
+- fix GDB build on macOS (use clang)
+- add compiler tests
+- add gdb set language tests
+
+### 2019-04-25
+
+- v8.2.0-2.1 released
+
+### 2019-04-17
+
+- prepare v8.2.0-2 (8.2.0-1 was skipped)
+- update to the latest SiFive commits
+  - `sifive-binutils-2.32`
+  - `sifive-gcc-8.2.0`
+  - `sifive-newlib-3.0.0`
+- for GDB use the FSF c8aa0bb (28 Feb 2019)
+- update for XBB v2.1; no need for static, libs are ok.
+- the defaults were changed to rv32imac/ilp32
+
+### 2018-10-19
+
+- v8.1.0-2-20181019 released
+
+### 2018-10-18
+
+- prepare v8.1.0-2-*
+- update to latest SiFive commits from the following branches:
+  - riscv-binutils-2.30
+  - riscv-gcc-8.1.0
+  - riscv-newlib-3.0.0
+- allow GDB to be built from a separate repo/commit
+
+### 2018-06-06
+
+- v7.2.0-4-20180606 released
+- add -mcmodel=medany, lost during updates
+
+### 2018-05-06
+
+- v7.2.0-3-20180506 released
+- update to latest SiFive commits from the following branches:
+  - riscv-binutils-2.29
+  - riscv-gcc-7.2.0
+  - riscv-newlib-2.5.0
+
+### 2018-05-04
+
+- update the build scripts to follow the ARM XBB structure
+
+### 2018-01-10
+
+- v7.2.0-2-20180110 released
+- update to latest SiFive commits from 2018-01-10
+- dismiss the `data-list-register-names` patch, no longer needed
+
+### 2017-11-09
+
+- v7.2.0-1-20171109 released
+- update to latest SiFive 2017-11-07 released, except newlib, where the
+reference was too old, and a recent commit was used
+- in GDB, the list of registers returned by `data-list-register-names`
+no longer include the 4096 CSRs
+- the tuple was renamed to `riscv-none-embed-`
+
+### 2017-09-12
+
+- v7.1.1-2-20170912 released
+- add multilib support for rv32imaf/ilp32f
+- remove mandatory link of libgloss
+
+### 2017-07-02
+
+- v7.1.1-1-20170702-0625 released
+
+### 2017-06-27
+
+- add support for `--specs=nano.specs`; this translates into a separate
+build for `newlib` with specific configuration options and a separate
+build of the C++ standard libraries with `-Os`.
+

+ 10 - 0
distro-info/patches/binutils-gdb-2.29.patch

@@ -0,0 +1,10 @@
+--- readline/Makefile.in	2015-07-26 16:07:10.000000000 +0000
++++ readline/Makefile-patched.in	2019-07-10 22:17:57.012131564 +0000
+@@ -222,6 +222,7 @@
+ ## so it doesn't depend on us installing it on the system.
+ 
+ install:
++install-strip:
+ 
+ #install:	$(INSTALL_TARGETS)
+ 

+ 10 - 0
distro-info/patches/binutils-gdb-2.30.patch

@@ -0,0 +1,10 @@
+--- readline/Makefile.in	2018-10-17 21:44:52.000000000 +0300
++++ readline/Makefile-patched.in	2019-04-13 23:47:54.000000000 +0300
+@@ -219,6 +219,7 @@
+ ## readline along with GDB. GDB links statically against readline,
+ ## so it doesn't depend on us installing it on the system.
+ 
++install-strip:
+ install:
+ 
+ #install:	$(INSTALL_TARGETS)

+ 181 - 0
distro-info/patches/binutils-gdb-2.32.patch

@@ -0,0 +1,181 @@
+--- readline/Makefile.in	2019-04-16 20:10:40.000000000 +0300
++++ readline/Makefile-patched.in	2019-04-16 20:20:11.000000000 +0300
+@@ -219,6 +219,7 @@
+ ## readline along with GDB. GDB links statically against readline,
+ ## so it doesn't depend on us installing it on the system.
+ 
++install-strip:
+ install:
+ 
+ #install:	$(INSTALL_TARGETS)
+--- gdb/configure	2020-06-14 20:40:38.430076716 +0300
++++ gdb/configure-patched	2020-06-14 20:40:29.175000000 +0300
+@@ -9039,7 +9039,7 @@
+     ac_res=-l$ac_lib
+     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+   fi
+-  if ac_fn_c_try_link "$LINENO"; then :
++  if ac_fn_c_try_run "$LINENO"; then :
+   ac_cv_search_tgetent=$ac_res
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+diff --git bfd/Makefile.am bfd/Makefile.am
+index a9191555..e0c24d5e 100644
+--- bfd/Makefile.am
++++ bfd/Makefile.am
+@@ -965,7 +965,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+ 	fi ;\
+ 	$(SED) -e "s,@bfd_version@,$$bfd_version," \
+ 	    -e "s,@bfd_version_string@,$$bfd_version_string," \
+-	    -e "s,@bfd_version_package@,$$bfd_version_package," \
++	    -e "s|@bfd_version_package@|$$bfd_version_package|" \
+ 	    -e "s,@report_bugs_to@,$$report_bugs_to," \
+ 	    < $(srcdir)/version.h > $@; \
+ 	echo "$${bfd_soversion}" > libtool-soversion
+diff --git bfd/Makefile.in bfd/Makefile.in
+index 896df520..8e184d3e 100644
+--- bfd/Makefile.in
++++ bfd/Makefile.in
+@@ -2080,7 +2080,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
+ 	fi ;\
+ 	$(SED) -e "s,@bfd_version@,$$bfd_version," \
+ 	    -e "s,@bfd_version_string@,$$bfd_version_string," \
+-	    -e "s,@bfd_version_package@,$$bfd_version_package," \
++	    -e "s|@bfd_version_package@|$$bfd_version_package|" \
+ 	    -e "s,@report_bugs_to@,$$report_bugs_to," \
+ 	    < $(srcdir)/version.h > $@; \
+ 	echo "$${bfd_soversion}" > libtool-soversion
+diff --git gdb/python/lib/gdb/__init__.py gdb/python/lib/gdb/__init__.py
+index af74df80..afe5b08f 100644
+--- gdb/python/lib/gdb/__init__.py
++++ gdb/python/lib/gdb/__init__.py
+@@ -106,6 +106,32 @@ def execute_unwinders(pending_frame):
+ 
+     return None
+ 
++def _execute_file(filepath):
++    """This function is used to replace Python 2's PyRun_SimpleFile.
++
++    Loads and executes the given file.
++
++    We could use the runpy module, but its documentation says:
++    "Furthermore, any functions and classes defined by the executed code are
++    not guaranteed to work correctly after a runpy function has returned."
++    """
++    globals = sys.modules['__main__'].__dict__
++    set_file = False
++    # Set file (if not set) so that the imported file can use it (e.g. to
++    # access file-relative paths). This matches what PyRun_SimpleFile does.
++    if not hasattr(globals, '__file__'):
++        globals['__file__'] = filepath
++        set_file = True
++    try:
++        with open(filepath, 'rb') as file:
++            # We pass globals also as locals to match what Python does
++            # in PyRun_SimpleFile.
++            compiled = compile(file.read(), filepath, 'exec')
++            exec(compiled, globals, globals)
++    finally:
++        if set_file:
++            del globals['__file__']
++
+ 
+ # Convenience variable to GDB's python directory
+ PYTHONDIR = os.path.dirname(os.path.dirname(__file__))
+diff --git gdb/python/python-config.py gdb/python/python-config.py
+index 3e60b86a..1e04f6cf 100644
+--- gdb/python/python-config.py
++++ gdb/python/python-config.py
+@@ -3,6 +3,7 @@
+ 
+ import sys
+ import os
++import platform
+ import getopt
+ from distutils import sysconfig
+ 
+@@ -45,16 +46,29 @@ def to_unix_path(path):
+ 
+ for opt in opt_flags:
+     if opt == '--prefix':
+-        print (to_unix_path(sysconfig.PREFIX))
++        prefix=os.environ.get('CONFIG_PYTHON_PREFIX')
++        if prefix and prefix.strip():
++            sys.stderr.write ("%s -> [%s]\n" % (opt, prefix.strip()))
++            print (prefix.strip())
++        else:
++            sys.stderr.write ("%s -> [%s]\n" % (opt, to_unix_path(sysconfig.PREFIX)))
++            print (to_unix_path(sysconfig.PREFIX))
+ 
+     elif opt == '--exec-prefix':
+-        print (to_unix_path(sysconfig.EXEC_PREFIX))
++        prefix=os.environ.get('CONFIG_PYTHON_PREFIX')
++        if prefix and prefix.strip():
++            sys.stderr.write ("%s -> [%s]\n" % (opt, prefix.strip()))
++            print (prefix.strip())
++        else:
++            sys.stderr.write ("%s -> [%s]\n" % (opt, to_unix_path(sysconfig.EXEC_PREFIX)))
++            print (to_unix_path(sysconfig.EXEC_PREFIX))
+ 
+     elif opt in ('--includes', '--cflags'):
+         flags = ['-I' + sysconfig.get_python_inc(),
+                  '-I' + sysconfig.get_python_inc(plat_specific=True)]
+         if opt == '--cflags':
+             flags.extend(getvar('CFLAGS').split())
++        sys.stderr.write ("%s -> [%s]\n" % (opt, to_unix_path(' '.join(flags))))
+         print (to_unix_path(' '.join(flags)))
+ 
+     elif opt in ('--libs', '--ldflags'):
+@@ -73,5 +87,7 @@ for opt in opt_flags:
+                     libs.insert(0, '-L' + sysconfig.PREFIX + '/libs')
+             if getvar('LINKFORSHARED') is not None:
+                 libs.extend(getvar('LINKFORSHARED').split())
+-        print (to_unix_path(' '.join(libs)))
++        tmp = to_unix_path(' '.join(libs))
++        sys.stderr.write ("%s -> [%s]\n" % (opt, tmp))
++        print (tmp)
+ 
+diff --git gdb/python/python.c gdb/python/python.c
+index c23db2c1..fe1da107 100644
+--- gdb/python/python.c
++++ gdb/python/python.c
+@@ -323,9 +323,8 @@ python_interactive_command (const char *arg, int from_tty)
+    A FILE * from one runtime does not necessarily operate correctly in
+    the other runtime.
+ 
+-   To work around this potential issue, we create on Windows hosts the
+-   FILE object using Python routines, thus making sure that it is
+-   compatible with the Python library.  */
++   To work around this potential issue, we run code in Python to load
++   the script.  */
+ 
+ static void
+ python_run_simple_file (FILE *file, const char *filename)
+@@ -339,15 +338,21 @@ python_run_simple_file (FILE *file, const char *filename)
+   /* Because we have a string for a filename, and are using Python to
+      open the file, we need to expand any tilde in the path first.  */
+   gdb::unique_xmalloc_ptr<char> full_path (tilde_expand (filename));
+-  gdbpy_ref<> python_file (PyFile_FromString (full_path.get (), (char *) "r"));
+-  if (python_file == NULL)
++
++  if (gdb_python_module == nullptr
++      || ! PyObject_HasAttrString (gdb_python_module, "_execute_file"))
++    error (_("Installation error: gdb._execute_file function is missing"));
++
++  gdbpy_ref<> return_value
++    (PyObject_CallMethod (gdb_python_module, "_execute_file", "s",
++                         full_path.get ()));
++  if (return_value == nullptr)
+     {
+-      gdbpy_print_stack ();
+-      error (_("Error while opening file: %s"), full_path.get ());
++      /* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
++         behavior of the non-Windows codepath.  */
++      PyErr_PrintEx(0);
+     }
+ 
+-  PyRun_SimpleFile (PyFile_AsFile (python_file.get ()), filename);
+-
+ #endif /* _WIN32 */
+ }
+ 

+ 680 - 0
distro-info/patches/pyconfig-3.7.2.h

@@ -0,0 +1,680 @@
+#ifndef Py_CONFIG_H
+#define Py_CONFIG_H
+
+/* pyconfig.h.  NOT Generated automatically by configure.
+
+This is a manually maintained version used for the Watcom,
+Borland and Microsoft Visual C++ compilers.  It is a
+standard part of the Python distribution.
+
+WINDOWS DEFINES:
+The code specific to Windows should be wrapped around one of
+the following #defines
+
+MS_WIN64 - Code specific to the MS Win64 API
+MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
+MS_WINDOWS - Code specific to Windows, but all versions.
+Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
+
+Also note that neither "_M_IX86" or "_MSC_VER" should be used for
+any purpose other than "Windows Intel x86 specific" and "Microsoft
+compiler specific".  Therefore, these should be very rare.
+
+
+NOTE: The following symbols are deprecated:
+NT, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT
+MS_CORE_DLL.
+
+WIN32 is still required for the locale module.
+
+*/
+
+/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
+#ifdef USE_DL_EXPORT
+#       define Py_BUILD_CORE
+#endif /* USE_DL_EXPORT */
+
+/* Visual Studio 2005 introduces deprecation warnings for
+   "insecure" and POSIX functions. The insecure functions should
+   be replaced by *_s versions (according to Microsoft); the
+   POSIX functions by _* versions (which, according to Microsoft,
+   would be ISO C conforming). Neither renaming is feasible, so
+   we just silence the warnings. */
+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+
+#define HAVE_IO_H
+#define HAVE_SYS_UTIME_H
+#define HAVE_TEMPNAM
+#define HAVE_TMPFILE
+#define HAVE_TMPNAM
+#define HAVE_CLOCK
+#define HAVE_STRERROR
+
+#include <io.h>
+
+#define HAVE_HYPOT
+#define HAVE_STRFTIME
+#define DONT_HAVE_SIG_ALARM
+#define DONT_HAVE_SIG_PAUSE
+#define LONG_BIT        32
+#define WORD_BIT 32
+
+#define MS_WIN32 /* only support win32 and greater. */
+#define MS_WINDOWS
+#ifndef PYTHONPATH
+#       define PYTHONPATH L".\\DLLs;.\\lib"
+#endif
+#define NT_THREADS
+#define WITH_THREAD
+#ifndef NETSCAPE_PI
+#define USE_SOCKET
+#endif
+
+
+/* Compiler specific defines */
+
+/* ------------------------------------------------------------------------*/
+/* Microsoft C defines _MSC_VER */
+#ifdef _MSC_VER
+
+/* We want COMPILER to expand to a string containing _MSC_VER's *value*.
+ * This is horridly tricky, because the stringization operator only works
+ * on macro arguments, and doesn't evaluate macros passed *as* arguments.
+ * Attempts simpler than the following appear doomed to produce "_MSC_VER"
+ * literally in the string.
+ */
+#define _Py_PASTE_VERSION(SUFFIX) \
+        ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]")
+/* e.g., this produces, after compile-time string catenation,
+ *      ("[MSC v.1200 32 bit (Intel)]")
+ *
+ * _Py_STRINGIZE(_MSC_VER) expands to
+ * _Py_STRINGIZE1((_MSC_VER)) expands to
+ * _Py_STRINGIZE2(_MSC_VER) but as this call is the result of token-pasting
+ *      it's scanned again for macros and so further expands to (under MSVC 6)
+ * _Py_STRINGIZE2(1200) which then expands to
+ * "1200"
+ */
+#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
+#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
+#define _Py_STRINGIZE2(X) #X
+
+/* MSVC defines _WINxx to differentiate the windows platform types
+
+   Note that for compatibility reasons _WIN32 is defined on Win32
+   *and* on Win64. For the same reasons, in Python, MS_WIN32 is
+   defined on Win32 *and* Win64. Win32 only code must therefore be
+   guarded as follows:
+        #if defined(MS_WIN32) && !defined(MS_WIN64)
+*/
+#ifdef _WIN64
+#define MS_WIN64
+#endif
+
+/* set the COMPILER */
+#ifdef MS_WIN64
+#if defined(_M_X64) || defined(_M_AMD64)
+#if defined(__INTEL_COMPILER)
+#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
+#else
+#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
+#endif /* __INTEL_COMPILER */
+#define PYD_PLATFORM_TAG "win_amd64"
+#else
+#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
+#endif
+#endif /* MS_WIN64 */
+
+/* set the version macros for the windows headers */
+/* Python 3.5+ requires Windows Vista or greater */
+#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */
+#define Py_NTDDI NTDDI_VISTA
+
+/* We only set these values when building Python - we don't want to force
+   these values on extensions, as that will affect the prototypes and
+   structures exposed in the Windows headers. Even when building Python, we
+   allow a single source file to override this - they may need access to
+   structures etc so it can optionally use new Windows features if it
+   determines at runtime they are available.
+*/
+#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN) || defined(Py_BUILD_CORE_MODULE)
+#ifndef NTDDI_VERSION
+#define NTDDI_VERSION Py_NTDDI
+#endif
+#ifndef WINVER
+#define WINVER Py_WINVER
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT Py_WINVER
+#endif
+#endif
+
+/* _W64 is not defined for VC6 or eVC4 */
+#ifndef _W64
+#define _W64
+#endif
+
+/* Define like size_t, omitting the "unsigned" */
+#ifdef MS_WIN64
+typedef __int64 ssize_t;
+#else
+typedef _W64 int ssize_t;
+#endif
+#define HAVE_SSIZE_T 1
+
+#if defined(MS_WIN32) && !defined(MS_WIN64)
+#if defined(_M_IX86)
+#if defined(__INTEL_COMPILER)
+#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
+#else
+#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)")
+#endif /* __INTEL_COMPILER */
+#define PYD_PLATFORM_TAG "win32"
+#elif defined(_M_ARM)
+#define COMPILER _Py_PASTE_VERSION("32 bit (Arm)")
+#define PYD_PLATFORM_TAG "win_arm"
+#else
+#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)")
+#endif
+#endif /* MS_WIN32 && !MS_WIN64 */
+
+typedef int pid_t;
+
+#include <float.h>
+#define Py_IS_NAN _isnan
+#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X))
+#define Py_IS_FINITE(X) _finite(X)
+#define copysign _copysign
+
+/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
+#if _MSC_VER >= 1400 && _MSC_VER < 1600
+#define HAVE_SXS 1
+#endif
+
+/* define some ANSI types that are not defined in earlier Win headers */
+#if _MSC_VER >= 1200
+/* This file only exists in VC 6.0 or higher */
+#include <basetsd.h>
+#endif
+
+#endif /* _MSC_VER */
+
+/* ------------------------------------------------------------------------*/
+/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */
+#if defined(__GNUC__) && defined(_WIN32)
+/* XXX These defines are likely incomplete, but should be easy to fix.
+   They should be complete enough to build extension modules. */
+/* Suggested by Rene Liebscher <R.Liebscher@gmx.de> to avoid a GCC 2.91.*
+   bug that requires structure imports.  More recent versions of the
+   compiler don't exhibit this bug.
+*/
+#if (__GNUC__==2) && (__GNUC_MINOR__<=91)
+#warning "Please use an up-to-date version of gcc! (>2.91 recommended)"
+#endif
+
+#define COMPILER "[gcc]"
+#define PY_LONG_LONG long long
+#define PY_LLONG_MIN LLONG_MIN
+#define PY_LLONG_MAX LLONG_MAX
+#define PY_ULLONG_MAX ULLONG_MAX
+#endif /* GNUC */
+
+/* ------------------------------------------------------------------------*/
+/* lcc-win32 defines __LCC__ */
+#if defined(__LCC__)
+/* XXX These defines are likely incomplete, but should be easy to fix.
+   They should be complete enough to build extension modules. */
+
+#define COMPILER "[lcc-win32]"
+typedef int pid_t;
+/* __declspec() is supported here too - do nothing to get the defaults */
+
+#endif /* LCC */
+
+/* ------------------------------------------------------------------------*/
+/* End of compilers - finish up */
+
+#ifndef NO_STDIO_H
+#       include <stdio.h>
+#endif
+
+/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
+#ifndef PY_LONG_LONG
+#       define PY_LONG_LONG __int64
+#       define PY_LLONG_MAX _I64_MAX
+#       define PY_LLONG_MIN _I64_MIN
+#       define PY_ULLONG_MAX _UI64_MAX
+#endif
+
+/* For Windows the Python core is in a DLL by default.  Test
+Py_NO_ENABLE_SHARED to find out.  Also support MS_NO_COREDLL for b/w compat */
+#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
+#       define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
+#       define MS_COREDLL       /* deprecated old symbol */
+#endif /* !MS_NO_COREDLL && ... */
+
+/*  All windows compilers that use this header support __declspec */
+#define HAVE_DECLSPEC_DLL
+
+/* For an MSVC DLL, we can nominate the .lib files used by extensions */
+#ifdef MS_COREDLL
+#       if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN)
+                /* not building the core - must be an ext */
+#               if defined(_MSC_VER)
+                        /* So MSVC users need not specify the .lib
+                        file in their Makefile (other compilers are
+                        generally taken care of by distutils.) */
+#                       if defined(_DEBUG)
+#                               pragma comment(lib,"python37_d.lib")
+#                       elif defined(Py_LIMITED_API)
+#                               pragma comment(lib,"python3.lib")
+#                       else
+#                               pragma comment(lib,"python37.lib")
+#                       endif /* _DEBUG */
+#               endif /* _MSC_VER */
+#       endif /* Py_BUILD_CORE */
+#endif /* MS_COREDLL */
+
+#if defined(MS_WIN64)
+/* maintain "win32" sys.platform for backward compatibility of Python code,
+   the Win64 API should be close enough to the Win32 API to make this
+   preferable */
+#       define PLATFORM "win32"
+#       define SIZEOF_VOID_P 8
+#       define SIZEOF_TIME_T 8
+#       define SIZEOF_OFF_T 4
+#       define SIZEOF_FPOS_T 8
+#       define SIZEOF_HKEY 8
+#       define SIZEOF_SIZE_T 8
+/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG,
+   sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t).
+   On Win64 the second condition is not true, but if fpos_t replaces off_t
+   then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64
+   should define this. */
+#       define HAVE_LARGEFILE_SUPPORT
+#elif defined(MS_WIN32)
+#       define PLATFORM "win32"
+#       define HAVE_LARGEFILE_SUPPORT
+#       define SIZEOF_VOID_P 4
+#       define SIZEOF_OFF_T 4
+#       define SIZEOF_FPOS_T 8
+#       define SIZEOF_HKEY 4
+#       define SIZEOF_SIZE_T 4
+        /* MS VS2005 changes time_t to a 64-bit type on all platforms */
+#       if defined(_MSC_VER) && _MSC_VER >= 1400
+#       define SIZEOF_TIME_T 8
+#       else
+#       define SIZEOF_TIME_T 4
+#       endif
+#endif
+
+#ifdef _DEBUG
+#       define Py_DEBUG
+#endif
+
+
+#ifdef MS_WIN32
+
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_FLOAT 4
+
+/* VC 7.1 has them and VC 6.0 does not.  VC 6.0 has a version number of 1200.
+   Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't
+   define these.
+   If some compiler does not provide them, modify the #if appropriately. */
+#if defined(_MSC_VER)
+#if _MSC_VER > 1300
+#define HAVE_UINTPTR_T 1
+#define HAVE_INTPTR_T 1
+#else
+/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */
+#define Py_LL(x) x##I64
+#endif  /* _MSC_VER > 1300  */
+#endif  /* _MSC_VER */
+
+#endif
+
+/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the
+   implementation of Python integers. */
+#define PY_UINT32_T uint32_t
+#define PY_UINT64_T uint64_t
+#define PY_INT32_T int32_t
+#define PY_INT64_T int64_t
+
+/* Fairly standard from here! */
+
+/* Define to 1 if you have the `copysign' function. */
+#define HAVE_COPYSIGN 1
+
+/* Define to 1 if you have the `round' function. */
+#if _MSC_VER >= 1800
+#define HAVE_ROUND 1
+#endif
+
+/* Define to 1 if you have the `isinf' macro. */
+#define HAVE_DECL_ISINF 1
+
+/* Define to 1 if you have the `isnan' function. */
+#define HAVE_DECL_ISNAN 1
+
+/* Define if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+/* #undef _ALL_SOURCE */
+#endif
+
+/* Define to empty if the keyword does not work.  */
+/* #define const  */
+
+/* Define to 1 if you have the <conio.h> header file. */
+#define HAVE_CONIO_H 1
+
+/* Define to 1 if you have the <direct.h> header file. */
+#define HAVE_DIRECT_H 1
+
+/* Define if you have dirent.h.  */
+/* #define DIRENT 1 */
+
+/* Define to the type of elements in the array set by `getgroups'.
+   Usually this is either `int' or `gid_t'.  */
+/* #undef GETGROUPS_T */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef gid_t */
+
+/* Define if your struct tm has tm_zone.  */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+   tzname.  */
+#define HAVE_TZNAME
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef mode_t */
+
+/* Define if you don't have dirent.h, but have ndir.h.  */
+/* #undef NDIR */
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef pid_t */
+
+/* Define if the system does not provide POSIX.1 features except
+   with this defined.  */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for stat and other things to work.  */
+/* #undef _POSIX_SOURCE */
+
+/* Define as the return type of signal handlers (int or void).  */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+/* #undef size_t */
+
+/* Define if you have the ANSI C header files.  */
+#define STDC_HEADERS 1
+
+/* Define if you don't have dirent.h, but have sys/dir.h.  */
+/* #undef SYSDIR */
+
+/* Define if you don't have dirent.h, but have sys/ndir.h.  */
+/* #undef SYSNDIR */
+
+/* Define if you can safely include both <sys/time.h> and <time.h>.  */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define if your <sys/time.h> declares struct tm.  */
+/* #define TM_IN_SYS_TIME 1 */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef uid_t */
+
+/* Define if the closedir function returns void instead of int.  */
+/* #undef VOID_CLOSEDIR */
+
+/* Define if getpgrp() must be called as getpgrp(0)
+   and (consequently) setpgrp() as setpgrp(0, 0). */
+/* #undef GETPGRP_HAVE_ARGS */
+
+/* Define this if your time.h defines altzone */
+/* #define HAVE_ALTZONE */
+
+/* Define if you have the putenv function.  */
+#define HAVE_PUTENV
+
+/* Define if your compiler supports function prototypes */
+#define HAVE_PROTOTYPES
+
+/* Define if  you can safely include both <sys/select.h> and <sys/time.h>
+   (which you can't on SCO ODT 3.0). */
+/* #undef SYS_SELECT_WITH_SYS_TIME */
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+/* Define if you want to compile in rudimentary thread support */
+/* #undef WITH_THREAD */
+
+/* Define if you want to use the GNU readline library */
+/* #define WITH_READLINE 1 */
+
+/* Use Python's own small-block memory-allocator. */
+#define WITH_PYMALLOC 1
+
+/* Define if you have clock.  */
+/* #define HAVE_CLOCK */
+
+/* Define when any dynamic module loading is enabled */
+#define HAVE_DYNAMIC_LOADING
+
+/* Define if you have ftime.  */
+#define HAVE_FTIME
+
+/* Define if you have getpeername.  */
+#define HAVE_GETPEERNAME
+
+/* Define if you have getpgrp.  */
+/* #undef HAVE_GETPGRP */
+
+/* Define if you have getpid.  */
+#define HAVE_GETPID
+
+/* Define if you have gettimeofday.  */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define if you have getwd.  */
+/* #undef HAVE_GETWD */
+
+/* Define if you have lstat.  */
+/* #undef HAVE_LSTAT */
+
+/* Define if you have the mktime function.  */
+#define HAVE_MKTIME
+
+/* Define if you have nice.  */
+/* #undef HAVE_NICE */
+
+/* Define if you have readlink.  */
+/* #undef HAVE_READLINK */
+
+/* Define if you have setpgid.  */
+/* #undef HAVE_SETPGID */
+
+/* Define if you have setpgrp.  */
+/* #undef HAVE_SETPGRP */
+
+/* Define if you have setsid.  */
+/* #undef HAVE_SETSID */
+
+/* Define if you have setvbuf.  */
+#define HAVE_SETVBUF
+
+/* Define if you have siginterrupt.  */
+/* #undef HAVE_SIGINTERRUPT */
+
+/* Define if you have symlink.  */
+/* #undef HAVE_SYMLINK */
+
+/* Define if you have tcgetpgrp.  */
+/* #undef HAVE_TCGETPGRP */
+
+/* Define if you have tcsetpgrp.  */
+/* #undef HAVE_TCSETPGRP */
+
+/* Define if you have times.  */
+/* #undef HAVE_TIMES */
+
+/* Define if you have uname.  */
+/* #undef HAVE_UNAME */
+
+/* Define if you have waitpid.  */
+/* #undef HAVE_WAITPID */
+
+/* Define to 1 if you have the `wcsftime' function. */
+#if defined(_MSC_VER) && _MSC_VER >= 1310
+#define HAVE_WCSFTIME 1
+#endif
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcsxfrm' function. */
+#define HAVE_WCSXFRM 1
+
+/* Define if the zlib library has inflateCopy */
+#define HAVE_ZLIB_COPY 1
+
+/* Define if you have the <dlfcn.h> header file.  */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define if you have the <fcntl.h> header file.  */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#define HAVE_PROCESS_H 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define if you have the <stdarg.h> prototypes.  */
+#define HAVE_STDARG_PROTOTYPES
+
+/* Define if you have the <stddef.h> header file.  */
+#define HAVE_STDDEF_H 1
+
+/* Define if you have the <sys/audioio.h> header file.  */
+/* #undef HAVE_SYS_AUDIOIO_H */
+
+/* Define if you have the <sys/param.h> header file.  */
+/* #define HAVE_SYS_PARAM_H 1 */
+
+/* Define if you have the <sys/select.h> header file.  */
+/* #define HAVE_SYS_SELECT_H 1 */
+
+/* Define to 1 if you have the <sys/stat.h> header file.  */
+#define HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/time.h> header file.  */
+/* #define HAVE_SYS_TIME_H 1 */
+
+/* Define if you have the <sys/times.h> header file.  */
+/* #define HAVE_SYS_TIMES_H 1 */
+
+/* Define to 1 if you have the <sys/types.h> header file.  */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if you have the <sys/un.h> header file.  */
+/* #define HAVE_SYS_UN_H 1 */
+
+/* Define if you have the <sys/utime.h> header file.  */
+/* #define HAVE_SYS_UTIME_H 1 */
+
+/* Define if you have the <sys/utsname.h> header file.  */
+/* #define HAVE_SYS_UTSNAME_H 1 */
+
+/* Define if you have the <unistd.h> header file.  */
+/* #define HAVE_UNISTD_H 1 */
+
+/* Define if you have the <utime.h> header file.  */
+/* #define HAVE_UTIME_H 1 */
+
+/* Define if the compiler provides a wchar.h header file. */
+#define HAVE_WCHAR_H 1
+
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 2
+
+/* The size of `_Bool', as computed by sizeof. */
+#define SIZEOF__BOOL 1
+
+/* The size of `pid_t', as computed by sizeof. */
+#define SIZEOF_PID_T SIZEOF_INT
+
+/* Define if you have the dl library (-ldl).  */
+/* #undef HAVE_LIBDL */
+
+/* Define if you have the mpc library (-lmpc).  */
+/* #undef HAVE_LIBMPC */
+
+/* Define if you have the nsl library (-lnsl).  */
+#define HAVE_LIBNSL 1
+
+/* Define if you have the seq library (-lseq).  */
+/* #undef HAVE_LIBSEQ */
+
+/* Define if you have the socket library (-lsocket).  */
+#define HAVE_LIBSOCKET 1
+
+/* Define if you have the sun library (-lsun).  */
+/* #undef HAVE_LIBSUN */
+
+/* Define if you have the termcap library (-ltermcap).  */
+/* #undef HAVE_LIBTERMCAP */
+
+/* Define if you have the termlib library (-ltermlib).  */
+/* #undef HAVE_LIBTERMLIB */
+
+/* Define if you have the thread library (-lthread).  */
+/* #undef HAVE_LIBTHREAD */
+
+/* WinSock does not use a bitmask in select, and uses
+   socket handles greater than FD_SETSIZE */
+#define Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the
+   least significant byte first */
+#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
+
+/* Define to 1 if you have the `erf' function. */
+#define HAVE_ERF 1
+
+/* Define to 1 if you have the `erfc' function. */
+#define HAVE_ERFC 1
+
+/* Define if you have the 'inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* framework name */
+#define _PYTHONFRAMEWORK ""
+
+/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
+#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1
+
+#endif /* !Py_CONFIG_H */

+ 680 - 0
distro-info/patches/pyconfig-3.7.6.h

@@ -0,0 +1,680 @@
+#ifndef Py_CONFIG_H
+#define Py_CONFIG_H
+
+/* pyconfig.h.  NOT Generated automatically by configure.
+
+This is a manually maintained version used for the Watcom,
+Borland and Microsoft Visual C++ compilers.  It is a
+standard part of the Python distribution.
+
+WINDOWS DEFINES:
+The code specific to Windows should be wrapped around one of
+the following #defines
+
+MS_WIN64 - Code specific to the MS Win64 API
+MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
+MS_WINDOWS - Code specific to Windows, but all versions.
+Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
+
+Also note that neither "_M_IX86" or "_MSC_VER" should be used for
+any purpose other than "Windows Intel x86 specific" and "Microsoft
+compiler specific".  Therefore, these should be very rare.
+
+
+NOTE: The following symbols are deprecated:
+NT, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT
+MS_CORE_DLL.
+
+WIN32 is still required for the locale module.
+
+*/
+
+/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
+#ifdef USE_DL_EXPORT
+#       define Py_BUILD_CORE
+#endif /* USE_DL_EXPORT */
+
+/* Visual Studio 2005 introduces deprecation warnings for
+   "insecure" and POSIX functions. The insecure functions should
+   be replaced by *_s versions (according to Microsoft); the
+   POSIX functions by _* versions (which, according to Microsoft,
+   would be ISO C conforming). Neither renaming is feasible, so
+   we just silence the warnings. */
+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+
+#define HAVE_IO_H
+#define HAVE_SYS_UTIME_H
+#define HAVE_TEMPNAM
+#define HAVE_TMPFILE
+#define HAVE_TMPNAM
+#define HAVE_CLOCK
+#define HAVE_STRERROR
+
+#include <io.h>
+
+#define HAVE_HYPOT
+#define HAVE_STRFTIME
+#define DONT_HAVE_SIG_ALARM
+#define DONT_HAVE_SIG_PAUSE
+#define LONG_BIT        32
+#define WORD_BIT 32
+
+#define MS_WIN32 /* only support win32 and greater. */
+#define MS_WINDOWS
+#ifndef PYTHONPATH
+#       define PYTHONPATH L".\\DLLs;.\\lib"
+#endif
+#define NT_THREADS
+#define WITH_THREAD
+#ifndef NETSCAPE_PI
+#define USE_SOCKET
+#endif
+
+
+/* Compiler specific defines */
+
+/* ------------------------------------------------------------------------*/
+/* Microsoft C defines _MSC_VER */
+#ifdef _MSC_VER
+
+/* We want COMPILER to expand to a string containing _MSC_VER's *value*.
+ * This is horridly tricky, because the stringization operator only works
+ * on macro arguments, and doesn't evaluate macros passed *as* arguments.
+ * Attempts simpler than the following appear doomed to produce "_MSC_VER"
+ * literally in the string.
+ */
+#define _Py_PASTE_VERSION(SUFFIX) \
+        ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]")
+/* e.g., this produces, after compile-time string catenation,
+ *      ("[MSC v.1200 32 bit (Intel)]")
+ *
+ * _Py_STRINGIZE(_MSC_VER) expands to
+ * _Py_STRINGIZE1((_MSC_VER)) expands to
+ * _Py_STRINGIZE2(_MSC_VER) but as this call is the result of token-pasting
+ *      it's scanned again for macros and so further expands to (under MSVC 6)
+ * _Py_STRINGIZE2(1200) which then expands to
+ * "1200"
+ */
+#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
+#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
+#define _Py_STRINGIZE2(X) #X
+
+/* MSVC defines _WINxx to differentiate the windows platform types
+
+   Note that for compatibility reasons _WIN32 is defined on Win32
+   *and* on Win64. For the same reasons, in Python, MS_WIN32 is
+   defined on Win32 *and* Win64. Win32 only code must therefore be
+   guarded as follows:
+        #if defined(MS_WIN32) && !defined(MS_WIN64)
+*/
+#ifdef _WIN64
+#define MS_WIN64
+#endif
+
+/* set the COMPILER */
+#ifdef MS_WIN64
+#if defined(_M_X64) || defined(_M_AMD64)
+#if defined(__INTEL_COMPILER)
+#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
+#else
+#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
+#endif /* __INTEL_COMPILER */
+#define PYD_PLATFORM_TAG "win_amd64"
+#else
+#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
+#endif
+#endif /* MS_WIN64 */
+
+/* set the version macros for the windows headers */
+/* Python 3.5+ requires Windows Vista or greater */
+#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */
+#define Py_NTDDI NTDDI_VISTA
+
+/* We only set these values when building Python - we don't want to force
+   these values on extensions, as that will affect the prototypes and
+   structures exposed in the Windows headers. Even when building Python, we
+   allow a single source file to override this - they may need access to
+   structures etc so it can optionally use new Windows features if it
+   determines at runtime they are available.
+*/
+#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN) || defined(Py_BUILD_CORE_MODULE)
+#ifndef NTDDI_VERSION
+#define NTDDI_VERSION Py_NTDDI
+#endif
+#ifndef WINVER
+#define WINVER Py_WINVER
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT Py_WINVER
+#endif
+#endif
+
+/* _W64 is not defined for VC6 or eVC4 */
+#ifndef _W64
+#define _W64
+#endif
+
+/* Define like size_t, omitting the "unsigned" */
+#ifdef MS_WIN64
+typedef __int64 ssize_t;
+#else
+typedef _W64 int ssize_t;
+#endif
+#define HAVE_SSIZE_T 1
+
+#if defined(MS_WIN32) && !defined(MS_WIN64)
+#if defined(_M_IX86)
+#if defined(__INTEL_COMPILER)
+#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]")
+#else
+#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)")
+#endif /* __INTEL_COMPILER */
+#define PYD_PLATFORM_TAG "win32"
+#elif defined(_M_ARM)
+#define COMPILER _Py_PASTE_VERSION("32 bit (ARM)")
+#define PYD_PLATFORM_TAG "win_arm"
+#else
+#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)")
+#endif
+#endif /* MS_WIN32 && !MS_WIN64 */
+
+typedef int pid_t;
+
+#include <float.h>
+#define Py_IS_NAN _isnan
+#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X))
+#define Py_IS_FINITE(X) _finite(X)
+#define copysign _copysign
+
+/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/
+#if _MSC_VER >= 1400 && _MSC_VER < 1600
+#define HAVE_SXS 1
+#endif
+
+/* define some ANSI types that are not defined in earlier Win headers */
+#if _MSC_VER >= 1200
+/* This file only exists in VC 6.0 or higher */
+#include <basetsd.h>
+#endif
+
+#endif /* _MSC_VER */
+
+/* ------------------------------------------------------------------------*/
+/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */
+#if defined(__GNUC__) && defined(_WIN32)
+/* XXX These defines are likely incomplete, but should be easy to fix.
+   They should be complete enough to build extension modules. */
+/* Suggested by Rene Liebscher <R.Liebscher@gmx.de> to avoid a GCC 2.91.*
+   bug that requires structure imports.  More recent versions of the
+   compiler don't exhibit this bug.
+*/
+#if (__GNUC__==2) && (__GNUC_MINOR__<=91)
+#warning "Please use an up-to-date version of gcc! (>2.91 recommended)"
+#endif
+
+#define COMPILER "[gcc]"
+#define PY_LONG_LONG long long
+#define PY_LLONG_MIN LLONG_MIN
+#define PY_LLONG_MAX LLONG_MAX
+#define PY_ULLONG_MAX ULLONG_MAX
+#endif /* GNUC */
+
+/* ------------------------------------------------------------------------*/
+/* lcc-win32 defines __LCC__ */
+#if defined(__LCC__)
+/* XXX These defines are likely incomplete, but should be easy to fix.
+   They should be complete enough to build extension modules. */
+
+#define COMPILER "[lcc-win32]"
+typedef int pid_t;
+/* __declspec() is supported here too - do nothing to get the defaults */
+
+#endif /* LCC */
+
+/* ------------------------------------------------------------------------*/
+/* End of compilers - finish up */
+
+#ifndef NO_STDIO_H
+#       include <stdio.h>
+#endif
+
+/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
+#ifndef PY_LONG_LONG
+#       define PY_LONG_LONG __int64
+#       define PY_LLONG_MAX _I64_MAX
+#       define PY_LLONG_MIN _I64_MIN
+#       define PY_ULLONG_MAX _UI64_MAX
+#endif
+
+/* For Windows the Python core is in a DLL by default.  Test
+Py_NO_ENABLE_SHARED to find out.  Also support MS_NO_COREDLL for b/w compat */
+#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
+#       define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
+#       define MS_COREDLL       /* deprecated old symbol */
+#endif /* !MS_NO_COREDLL && ... */
+
+/*  All windows compilers that use this header support __declspec */
+#define HAVE_DECLSPEC_DLL
+
+/* For an MSVC DLL, we can nominate the .lib files used by extensions */
+#ifdef MS_COREDLL
+#       if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN)
+                /* not building the core - must be an ext */
+#               if defined(_MSC_VER)
+                        /* So MSVC users need not specify the .lib
+                        file in their Makefile (other compilers are
+                        generally taken care of by distutils.) */
+#                       if defined(_DEBUG)
+#                               pragma comment(lib,"python37_d.lib")
+#                       elif defined(Py_LIMITED_API)
+#                               pragma comment(lib,"python3.lib")
+#                       else
+#                               pragma comment(lib,"python37.lib")
+#                       endif /* _DEBUG */
+#               endif /* _MSC_VER */
+#       endif /* Py_BUILD_CORE */
+#endif /* MS_COREDLL */
+
+#if defined(MS_WIN64)
+/* maintain "win32" sys.platform for backward compatibility of Python code,
+   the Win64 API should be close enough to the Win32 API to make this
+   preferable */
+#       define PLATFORM "win32"
+#       define SIZEOF_VOID_P 8
+#       define SIZEOF_TIME_T 8
+#       define SIZEOF_OFF_T 4
+#       define SIZEOF_FPOS_T 8
+#       define SIZEOF_HKEY 8
+#       define SIZEOF_SIZE_T 8
+/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff
+   sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t).
+   On Win64 the second condition is not true, but if fpos_t replaces off_t
+   then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64
+   should define this. */
+#       define HAVE_LARGEFILE_SUPPORT
+#elif defined(MS_WIN32)
+#       define PLATFORM "win32"
+#       define HAVE_LARGEFILE_SUPPORT
+#       define SIZEOF_VOID_P 4
+#       define SIZEOF_OFF_T 4
+#       define SIZEOF_FPOS_T 8
+#       define SIZEOF_HKEY 4
+#       define SIZEOF_SIZE_T 4
+        /* MS VS2005 changes time_t to a 64-bit type on all platforms */
+#       if defined(_MSC_VER) && _MSC_VER >= 1400
+#       define SIZEOF_TIME_T 8
+#       else
+#       define SIZEOF_TIME_T 4
+#       endif
+#endif
+
+#ifdef _DEBUG
+#       define Py_DEBUG
+#endif
+
+
+#ifdef MS_WIN32
+
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_FLOAT 4
+
+/* VC 7.1 has them and VC 6.0 does not.  VC 6.0 has a version number of 1200.
+   Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't
+   define these.
+   If some compiler does not provide them, modify the #if appropriately. */
+#if defined(_MSC_VER)
+#if _MSC_VER > 1300
+#define HAVE_UINTPTR_T 1
+#define HAVE_INTPTR_T 1
+#else
+/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */
+#define Py_LL(x) x##I64
+#endif  /* _MSC_VER > 1300  */
+#endif  /* _MSC_VER */
+
+#endif
+
+/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the
+   implementation of Python integers. */
+#define PY_UINT32_T uint32_t
+#define PY_UINT64_T uint64_t
+#define PY_INT32_T int32_t
+#define PY_INT64_T int64_t
+
+/* Fairly standard from here! */
+
+/* Define to 1 if you have the `copysign' function. */
+#define HAVE_COPYSIGN 1
+
+/* Define to 1 if you have the `round' function. */
+#if _MSC_VER >= 1800
+#define HAVE_ROUND 1
+#endif
+
+/* Define to 1 if you have the `isinf' macro. */
+#define HAVE_DECL_ISINF 1
+
+/* Define to 1 if you have the `isnan' function. */
+#define HAVE_DECL_ISNAN 1
+
+/* Define if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+/* #undef _ALL_SOURCE */
+#endif
+
+/* Define to empty if the keyword does not work.  */
+/* #define const  */
+
+/* Define to 1 if you have the <conio.h> header file. */
+#define HAVE_CONIO_H 1
+
+/* Define to 1 if you have the <direct.h> header file. */
+#define HAVE_DIRECT_H 1
+
+/* Define if you have dirent.h.  */
+/* #define DIRENT 1 */
+
+/* Define to the type of elements in the array set by `getgroups'.
+   Usually this is either `int' or `gid_t'.  */
+/* #undef GETGROUPS_T */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef gid_t */
+
+/* Define if your struct tm has tm_zone.  */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+   tzname.  */
+#define HAVE_TZNAME
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef mode_t */
+
+/* Define if you don't have dirent.h, but have ndir.h.  */
+/* #undef NDIR */
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef pid_t */
+
+/* Define if the system does not provide POSIX.1 features except
+   with this defined.  */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for stat and other things to work.  */
+/* #undef _POSIX_SOURCE */
+
+/* Define as the return type of signal handlers (int or void).  */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+/* #undef size_t */
+
+/* Define if you have the ANSI C header files.  */
+#define STDC_HEADERS 1
+
+/* Define if you don't have dirent.h, but have sys/dir.h.  */
+/* #undef SYSDIR */
+
+/* Define if you don't have dirent.h, but have sys/ndir.h.  */
+/* #undef SYSNDIR */
+
+/* Define if you can safely include both <sys/time.h> and <time.h>.  */
+/* #undef TIME_WITH_SYS_TIME */
+
+/* Define if your <sys/time.h> declares struct tm.  */
+/* #define TM_IN_SYS_TIME 1 */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef uid_t */
+
+/* Define if the closedir function returns void instead of int.  */
+/* #undef VOID_CLOSEDIR */
+
+/* Define if getpgrp() must be called as getpgrp(0)
+   and (consequently) setpgrp() as setpgrp(0, 0). */
+/* #undef GETPGRP_HAVE_ARGS */
+
+/* Define this if your time.h defines altzone */
+/* #define HAVE_ALTZONE */
+
+/* Define if you have the putenv function.  */
+#define HAVE_PUTENV
+
+/* Define if your compiler supports function prototypes */
+#define HAVE_PROTOTYPES
+
+/* Define if  you can safely include both <sys/select.h> and <sys/time.h>
+   (which you can't on SCO ODT 3.0). */
+/* #undef SYS_SELECT_WITH_SYS_TIME */
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+/* Define if you want to compile in rudimentary thread support */
+/* #undef WITH_THREAD */
+
+/* Define if you want to use the GNU readline library */
+/* #define WITH_READLINE 1 */
+
+/* Use Python's own small-block memory-allocator. */
+#define WITH_PYMALLOC 1
+
+/* Define if you have clock.  */
+/* #define HAVE_CLOCK */
+
+/* Define when any dynamic module loading is enabled */
+#define HAVE_DYNAMIC_LOADING
+
+/* Define if you have ftime.  */
+#define HAVE_FTIME
+
+/* Define if you have getpeername.  */
+#define HAVE_GETPEERNAME
+
+/* Define if you have getpgrp.  */
+/* #undef HAVE_GETPGRP */
+
+/* Define if you have getpid.  */
+#define HAVE_GETPID
+
+/* Define if you have gettimeofday.  */
+/* #undef HAVE_GETTIMEOFDAY */
+
+/* Define if you have getwd.  */
+/* #undef HAVE_GETWD */
+
+/* Define if you have lstat.  */
+/* #undef HAVE_LSTAT */
+
+/* Define if you have the mktime function.  */
+#define HAVE_MKTIME
+
+/* Define if you have nice.  */
+/* #undef HAVE_NICE */
+
+/* Define if you have readlink.  */
+/* #undef HAVE_READLINK */
+
+/* Define if you have setpgid.  */
+/* #undef HAVE_SETPGID */
+
+/* Define if you have setpgrp.  */
+/* #undef HAVE_SETPGRP */
+
+/* Define if you have setsid.  */
+/* #undef HAVE_SETSID */
+
+/* Define if you have setvbuf.  */
+#define HAVE_SETVBUF
+
+/* Define if you have siginterrupt.  */
+/* #undef HAVE_SIGINTERRUPT */
+
+/* Define if you have symlink.  */
+/* #undef HAVE_SYMLINK */
+
+/* Define if you have tcgetpgrp.  */
+/* #undef HAVE_TCGETPGRP */
+
+/* Define if you have tcsetpgrp.  */
+/* #undef HAVE_TCSETPGRP */
+
+/* Define if you have times.  */
+/* #undef HAVE_TIMES */
+
+/* Define if you have uname.  */
+/* #undef HAVE_UNAME */
+
+/* Define if you have waitpid.  */
+/* #undef HAVE_WAITPID */
+
+/* Define to 1 if you have the `wcsftime' function. */
+#if defined(_MSC_VER) && _MSC_VER >= 1310
+#define HAVE_WCSFTIME 1
+#endif
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define to 1 if you have the `wcsxfrm' function. */
+#define HAVE_WCSXFRM 1
+
+/* Define if the zlib library has inflateCopy */
+#define HAVE_ZLIB_COPY 1
+
+/* Define if you have the <dlfcn.h> header file.  */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define if you have the <fcntl.h> header file.  */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <process.h> header file. */
+#define HAVE_PROCESS_H 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define if you have the <stdarg.h> prototypes.  */
+#define HAVE_STDARG_PROTOTYPES
+
+/* Define if you have the <stddef.h> header file.  */
+#define HAVE_STDDEF_H 1
+
+/* Define if you have the <sys/audioio.h> header file.  */
+/* #undef HAVE_SYS_AUDIOIO_H */
+
+/* Define if you have the <sys/param.h> header file.  */
+/* #define HAVE_SYS_PARAM_H 1 */
+
+/* Define if you have the <sys/select.h> header file.  */
+/* #define HAVE_SYS_SELECT_H 1 */
+
+/* Define to 1 if you have the <sys/stat.h> header file.  */
+#define HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/time.h> header file.  */
+/* #define HAVE_SYS_TIME_H 1 */
+
+/* Define if you have the <sys/times.h> header file.  */
+/* #define HAVE_SYS_TIMES_H 1 */
+
+/* Define to 1 if you have the <sys/types.h> header file.  */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if you have the <sys/un.h> header file.  */
+/* #define HAVE_SYS_UN_H 1 */
+
+/* Define if you have the <sys/utime.h> header file.  */
+/* #define HAVE_SYS_UTIME_H 1 */
+
+/* Define if you have the <sys/utsname.h> header file.  */
+/* #define HAVE_SYS_UTSNAME_H 1 */
+
+/* Define if you have the <unistd.h> header file.  */
+/* #define HAVE_UNISTD_H 1 */
+
+/* Define if you have the <utime.h> header file.  */
+/* #define HAVE_UTIME_H 1 */
+
+/* Define if the compiler provides a wchar.h header file. */
+#define HAVE_WCHAR_H 1
+
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 2
+
+/* The size of `_Bool', as computed by sizeof. */
+#define SIZEOF__BOOL 1
+
+/* The size of `pid_t', as computed by sizeof. */
+#define SIZEOF_PID_T SIZEOF_INT
+
+/* Define if you have the dl library (-ldl).  */
+/* #undef HAVE_LIBDL */
+
+/* Define if you have the mpc library (-lmpc).  */
+/* #undef HAVE_LIBMPC */
+
+/* Define if you have the nsl library (-lnsl).  */
+#define HAVE_LIBNSL 1
+
+/* Define if you have the seq library (-lseq).  */
+/* #undef HAVE_LIBSEQ */
+
+/* Define if you have the socket library (-lsocket).  */
+#define HAVE_LIBSOCKET 1
+
+/* Define if you have the sun library (-lsun).  */
+/* #undef HAVE_LIBSUN */
+
+/* Define if you have the termcap library (-ltermcap).  */
+/* #undef HAVE_LIBTERMCAP */
+
+/* Define if you have the termlib library (-ltermlib).  */
+/* #undef HAVE_LIBTERMLIB */
+
+/* Define if you have the thread library (-lthread).  */
+/* #undef HAVE_LIBTHREAD */
+
+/* WinSock does not use a bitmask in select, and uses
+   socket handles greater than FD_SETSIZE */
+#define Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the
+   least significant byte first */
+#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
+
+/* Define to 1 if you have the `erf' function. */
+#define HAVE_ERF 1
+
+/* Define to 1 if you have the `erfc' function. */
+#define HAVE_ERFC 1
+
+/* Define if you have the 'inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* framework name */
+#define _PYTHONFRAMEWORK ""
+
+/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
+#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1
+
+#endif /* !Py_CONFIG_H */

+ 11 - 0
distro-info/patches/python-2.7.13.amd64.patch

@@ -0,0 +1,11 @@
+--- pyconfig.h	2016-06-26 02:46:30.000000000 +0300
++++ pyconfig.h.new	2018-02-14 13:35:21.000000000 +0200
+@@ -282,7 +282,7 @@
+ #endif
+ 
+ #define COMPILER "[gcc]"
+-#define hypot _hypot
++// #define hypot _hypot
+ #define PY_LONG_LONG long long
+ #define PY_LLONG_MIN LLONG_MIN
+ #define PY_LLONG_MAX LLONG_MAX

+ 11 - 0
distro-info/patches/python-2.7.13.patch

@@ -0,0 +1,11 @@
+--- pyconfig.h	2018-02-13 20:36:06.000000000 +0200
++++ pyconfig.h.new	2018-02-13 20:39:17.000000000 +0200
+@@ -282,7 +282,7 @@
+ #endif
+ 
+ #define COMPILER "[gcc]"
+-#define hypot _hypot
++// #define hypot _hypot
+ #define PY_LONG_LONG long long
+ #define PY_LLONG_MIN LLONG_MIN
+ #define PY_LLONG_MAX LLONG_MAX

+ 67 - 0
distro-info/patches/python3-config.sh

@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+
+# Windows Python3 configuration script
+#
+# As per comment regarding --with-python in gdb/configure.ac, this script
+# follows the interface of gdb/python/python-config.py but return path
+# related to Windows Python3.
+
+set -o errexit # Exit if command failed.
+set -o pipefail # Exit if pipe failed.
+set -o nounset # Exit if variable not set.
+
+if [ ! -d "${SOURCES_FOLDER_PATH}/${PYTHON3_SRC_FOLDER_NAME}" ]
+then
+  exit 1
+fi
+
+if [ ! -d "${SOURCES_FOLDER_PATH}/${PYTHON3_WIN_EMBED_FOLDER_NAME}" ]
+then
+  exit 1
+fi
+
+while [ $# -ge 1 ]
+do
+  opt="$1"
+  case ${opt} in
+
+    --prefix|--exec-prefix)
+      prefix="${SOURCES_FOLDER_PATH}/${PYTHON3_WIN_EMBED_FOLDER_NAME}"
+      echo "${opt} -> [${prefix}]" >&2
+      echo "${prefix}"
+      ;;
+
+    --includes|--cflags)
+      cflags="-I${SOURCES_FOLDER_PATH}/${PYTHON3_SRC_FOLDER_NAME}/Include"
+
+      if [ "${opt}" == "--cflags" ]
+      then
+        cflags+=" ${CFLAGS}"
+      fi
+      echo "${opt} -> [${cflags}]" >&2
+      echo "${cflags}"
+      ;;
+
+    --libs|--ldflags)
+      # Options to link to static libpython2.7 archive so as to avoid  an
+      # external dependency on python
+      libs="-L${SOURCES_FOLDER_PATH}/${PYTHON3_WIN_EMBED_FOLDER_NAME} -lpython37"
+      echo "${opt} -> [${libs}]" >&2
+      echo "${libs}"
+      ;;
+
+    --*)
+      echo "Unknown option: ${opt}" >&2
+      exit 1
+      ;;
+
+    *)
+      # Ignore non options since we are called with gdb provided
+      # python-config.py as first parameter
+      ;;
+
+  esac
+  shift
+done
+
+exit 0

+ 100 - 0
distro-info/scripts/README-8.2.0-3.1.md

@@ -0,0 +1,100 @@
+# xPack GNU RISC-V Embedded GCC
+
+This is the **xPack** version of the
+**GNU RISC-V Embedded GCC** toolchain.
+
+For details, see
+[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-embed-gcc/) pages.
+
+## Easy install
+
+The **xPack RISC-V Embedded GCC** toolchain is also available as a
+binary [xPack](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-embed-gcc)
+and can be conveniently installed with [xpm](https://www.npmjs.com/package/xpm):
+
+```console
+$ xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@8.2.0-3.1.1
+```
+
+For more details on how to install the toolchain, please see
+[How to install the RISC-V toolchain?](http://xpack.github.io/toolchain/riscv-bone-embed-gcc/install/) page.
+
+## Compliance
+
+Starting with 8.2.0-2, the xPack GNU RISC-V Embedded GCC (formerly
+GNU MCU Eclipse RISC-V GCC) follows
+the official [SiFive releases](https://github.com/sifive/freedom-tools/releases),
+with as little differences as possible.
+
+This release is based on the
+[v2019.05.0](https://github.com/sifive/freedom-tools/releases/tag/v2019.05.0)
+release, and includes the SiFive extensions (like CLIC interrupts).
+
+The following commits (from [sifive/freedom-tools](https://github.com/sifive/freedom-tools/tree/master/src)) were used:
+
+- the [sifive/riscv-gcc](https://github.com/sifive/riscv-gcc) project,
+branch `sifive-gcc-8.2.0`, commit
+[242abcaff6](https://github.com/sifive/riscv-gcc/tree/242abcaff697d0a1ea12dccc975465e1bfeb8331)
+from from 5 April 2019
+- the [sifive/riscv-binutils-gdb](https://github.com/sifive/riscv-binutils-gdb)
+project, branch `sifive-binutils-2.32`, commit
+[164267155c](https://github.com/sifive/riscv-binutils-gdb/tree/164267155c96f91472a539ca78ac919993bc5b4e)
+from 28 February 2019
+- the [sifive/riscv-newlib](https://github.com/sifive/riscv-newlib) project,
+commit [42c2e3fb9f](https://github.com/sifive/riscv-newlib/tree/42c2e3fb9f557d59b76d1a64bb6fb32707ff4530)
+from 17 November 2018
+
+GDB was upstreamed and does not require SiFive specific patches,
+so the current build uses
+`git://sourceware.org/git/binutils-gdb.git`, the `9b40759` commit from
+28 Feb 2019.
+
+## Changes
+
+Compared to the original SiFive version, the **same architecture and API**
+options are supported, and there are minimal functional changes
+
+- `libgloss` was removed from the list of libraires always linked to the
+  application, since it issues `ECALL`
+  instructions that fail in bare metal environments
+- `march=rv32imaf/mabi=ilp32f` was added to the list of multilibs
+
+## newlib-nano
+
+Support for **newlib-nano** is available using the
+`--specs=nano.specs` option. For better results, this option must be
+added to both compile and link time.
+
+## nosys.specs
+
+If no syscalls are needed, `--specs=nosys.specs` can be used at link
+time to provide empty implementations for the POSIX system calls.
+
+## Compile options
+
+The libraries are compiled with `-O2 -mcmodel=medany`. The nano version is
+compiled with `-Os -mcmodel=medany`.
+
+> Important: It is mandatory for the applications to be compiled with
+`-mcmodel=medany`, otherwise the link will fail.
+
+## Documentation
+
+The original PDF documentation is available in the `share/doc` folder.
+
+## Support
+
+For support, please read the
+[support](https://xpack.github.io/riscv-none-embed-gcc/support/) page.
+
+## More info
+
+For more info, please see the xPack project site:
+
+  http://xpack.github.io/riscv-none-embed-gcc
+
+
+Thank you for using open source software,
+
+Liviu Ionescu
+

+ 100 - 0
distro-info/scripts/README-8.3.0-1.1.md

@@ -0,0 +1,100 @@
+# xPack GNU RISC-V Embedded GCC
+
+This is the **xPack** version of the
+**GNU RISC-V Embedded GCC** toolchain.
+
+For details, see
+[The xPack GNU RISC-V Embedded GCC](https://xpack.github.io/riscv-none-embed-gcc/) pages.
+
+## Easy install
+
+The **xPack RISC-V Embedded GCC** toolchain is also available as a
+binary [xPack](https://www.npmjs.com/package/@xpack-dev-tools/riscv-none-embed-gcc)
+and can be conveniently installed with [xpm](https://www.npmjs.com/package/xpm):
+
+```console
+$ xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@8.3.0-1.1.1
+```
+
+For more details on how to install the toolchain, please see
+[How to install the RISC-V toolchain?](http://xpack.github.io/toolchain/riscv-bone-embed-gcc/install/) page.
+
+## Compliance
+
+Starting with 8.2.0-2, the xPack GNU RISC-V Embedded GCC (formerly
+GNU MCU Eclipse RISC-V GCC) follows
+the official [SiFive releases](https://github.com/sifive/freedom-tools/releases),
+with as little differences as possible.
+
+This release is based on the
+[v2019.08.0](https://github.com/sifive/freedom-tools/releases/tag/v2019.08.0)
+release, and includes the SiFive extensions (like CLIC interrupts).
+
+The following commits (from [sifive/freedom-tools](https://github.com/sifive/freedom-tools/tree/master/src)) were used:
+
+- the [sifive/riscv-binutils-gdb](https://github.com/sifive/riscv-binutils-gdb)
+project, branch `sifive-binutils-2.32`, commit
+[03d23d5](https://github.com/sifive/riscv-binutils-gdb/tree/03d23d58701bdd425c613b0be2d458bcde46912b)
+from 2 September 2019
+- the [sifive/riscv-gcc](https://github.com/sifive/riscv-gcc) project,
+branch `sifive-gcc-8.3.0`, commit
+[e195042](https://github.com/sifive/riscv-gcc/tree/e195042babe2dc30d9fabb88d336d8c8679b3702)
+from from 7 Aug 2019
+- the [sifive/riscv-newlib](https://github.com/sifive/riscv-newlib) project, the `master` branch,
+commit [0d24a86](https://github.com/sifive/riscv-newlib/tree/0d24a86822a5ee73d6a6aa69e2a0118aa1e35204)
+from 9 July 2019
+
+GDB was upstreamed and does not require SiFive specific patches,
+so the current build uses
+`git://sourceware.org/git/binutils-gdb.git`, the `9b40759` commit from
+28 Feb 2019.
+
+## Changes
+
+Compared to the original SiFive version, the **same architecture and API**
+options are supported, and there are minimal functional changes
+
+- `libgloss` was removed from the list of libraires always linked to the
+  application, since it issues `ECALL`
+  instructions that fail in bare metal environments
+- `march=rv32imaf/mabi=ilp32f` was added to the list of multilibs
+
+## newlib-nano
+
+Support for **newlib-nano** is available using the
+`--specs=nano.specs` option. For better results, this option must be
+added to both compile and link time.
+
+## nosys.specs
+
+If no syscalls are needed, `--specs=nosys.specs` can be used at link
+time to provide empty implementations for the POSIX system calls.
+
+## Compile options
+
+The libraries are compiled with `-O2 -mcmodel=medany`. The nano version is
+compiled with `-Os -mcmodel=medany`.
+
+> Important: It is mandatory for the applications to be compiled with
+`-mcmodel=medany`, otherwise the link will fail.
+
+## Documentation
+
+The original PDF documentation is available in the `share/doc` folder.
+
+## Support
+
+For support, please read the
+[support](https://xpack.github.io/riscv-none-embed-gcc/support/) page.
+
+## More info
+
+For more info, please see the xPack project site:
+
+  http://xpack.github.io/riscv-none-embed-gcc
+
+
+Thank you for using open source software,
+
+Liviu Ionescu
+

Some files were not shown because too many files changed in this diff