Sun Mar 13 08:34:05 2022 UTC ()
lang: import gcc10-aux, the gcc10 ada compiler. from irvise in pkgsrc-wip.


(nia)
diff -r1.639 -r1.640 pkgsrc/lang/Makefile
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/DESCR
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/Makefile
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/buildlink3.mk
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/distinfo
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/options.mk
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/version.mk
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-contrib_download__prerequisites
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-fixincludes_inclhack.def
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_Makefile.in
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_Makefile.rtl
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_adaint.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_adaint.h
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_cstreams.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-osinte____netbsd.adb
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-osinte____netbsd.ads
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-taprop____posix.adb
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_g-socthi.ads
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_g-socthi____bsd.adb
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_s-osprim____posix.adb
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_s-oscons-tmplt.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_sysdep.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config.gcc
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config.host
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_aarch64-builtins.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_driver-aarch64.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_darwin-driver.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_sparc_sparc.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_configure
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_ggc-common.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_lto_lto.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gcc_targhooks.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-gnattools_configure
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-isl_configure
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libffi_configure
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libffi_testsuite_libffi.call_float2.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgcc_config.host
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgcc_crtstuff.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_format.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_io.h
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_list__read.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_read.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_runtime_environ.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libquadmath_printf_quadmath-printf.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libquadmath_strtod_strtod__l.c
diff -r0 -r1.1 pkgsrc/lang/gcc10-aux/patches/patch-libstdc++-v3_libsupc++_new__opa.cc

cvs diff -r1.639 -r1.640 pkgsrc/lang/Makefile (switch to unified diff)

--- pkgsrc/lang/Makefile 2022/03/08 00:09:46 1.639
+++ pkgsrc/lang/Makefile 2022/03/13 08:34:04 1.640
@@ -1,331 +1,332 @@ @@ -1,331 +1,332 @@
1# $NetBSD: Makefile,v 1.639 2022/03/08 00:09:46 wiz Exp $ 1# $NetBSD: Makefile,v 1.640 2022/03/13 08:34:04 nia Exp $
2# 2#
3 3
4COMMENT= Programming languages 4COMMENT= Programming languages
5 5
6SUBDIR+= Cg-compiler 6SUBDIR+= Cg-compiler
7SUBDIR+= LuaJIT2 7SUBDIR+= LuaJIT2
8SUBDIR+= R-cpp11 8SUBDIR+= R-cpp11
9SUBDIR+= R-sourcetools 9SUBDIR+= R-sourcetools
10SUBDIR+= STk 10SUBDIR+= STk
11SUBDIR+= a60 11SUBDIR+= a60
12SUBDIR+= abcl 12SUBDIR+= abcl
13SUBDIR+= adoptopenjdk11-bin 13SUBDIR+= adoptopenjdk11-bin
14SUBDIR+= algol68g 14SUBDIR+= algol68g
15SUBDIR+= asn1c 15SUBDIR+= asn1c
16SUBDIR+= awka 16SUBDIR+= awka
17SUBDIR+= baci 17SUBDIR+= baci
18SUBDIR+= boomerang 18SUBDIR+= boomerang
19SUBDIR+= brandybasic 19SUBDIR+= brandybasic
20SUBDIR+= bwbasic 20SUBDIR+= bwbasic
21SUBDIR+= caml-light 21SUBDIR+= caml-light
22SUBDIR+= camlp4 22SUBDIR+= camlp4
23SUBDIR+= camlp5 23SUBDIR+= camlp5
24SUBDIR+= cbmbasic 24SUBDIR+= cbmbasic
25SUBDIR+= ccsh 25SUBDIR+= ccsh
26SUBDIR+= cdl3 26SUBDIR+= cdl3
27SUBDIR+= chibi-scheme 27SUBDIR+= chibi-scheme
28SUBDIR+= chicken 28SUBDIR+= chicken
29SUBDIR+= chicken5 29SUBDIR+= chicken5
30SUBDIR+= cim 30SUBDIR+= cim
31SUBDIR+= cint 31SUBDIR+= cint
32SUBDIR+= clang 32SUBDIR+= clang
33SUBDIR+= clang-tools-extra 33SUBDIR+= clang-tools-extra
34SUBDIR+= classpath 34SUBDIR+= classpath
35SUBDIR+= classpath-gui 35SUBDIR+= classpath-gui
36SUBDIR+= clisp 36SUBDIR+= clisp
37SUBDIR+= clojure 37SUBDIR+= clojure
38SUBDIR+= compiler-rt 38SUBDIR+= compiler-rt
39SUBDIR+= coq 39SUBDIR+= coq
40SUBDIR+= cparser 40SUBDIR+= cparser
41SUBDIR+= csmith 41SUBDIR+= csmith
42SUBDIR+= cu-prolog 42SUBDIR+= cu-prolog
43SUBDIR+= dhall 43SUBDIR+= dhall
44SUBDIR+= duktape 44SUBDIR+= duktape
45SUBDIR+= eag 45SUBDIR+= eag
46SUBDIR+= ecl 46SUBDIR+= ecl
47SUBDIR+= eieio 47SUBDIR+= eieio
48SUBDIR+= elisp-manual 48SUBDIR+= elisp-manual
49SUBDIR+= elixir 49SUBDIR+= elixir
50SUBDIR+= elk 50SUBDIR+= elk
51SUBDIR+= embryo 51SUBDIR+= embryo
52SUBDIR+= erlang 52SUBDIR+= erlang
53SUBDIR+= erlang-doc 53SUBDIR+= erlang-doc
54SUBDIR+= erlang-luerl 54SUBDIR+= erlang-luerl
55SUBDIR+= erlang-man 55SUBDIR+= erlang-man
56SUBDIR+= erlang21 56SUBDIR+= erlang21
57SUBDIR+= execline 57SUBDIR+= execline
58SUBDIR+= f2c 58SUBDIR+= f2c
59SUBDIR+= ficl 59SUBDIR+= ficl
60SUBDIR+= focal 60SUBDIR+= focal
61SUBDIR+= fort77 61SUBDIR+= fort77
62SUBDIR+= forth-retro 62SUBDIR+= forth-retro
63SUBDIR+= g95 63SUBDIR+= g95
64SUBDIR+= gambc 64SUBDIR+= gambc
65SUBDIR+= gauche 65SUBDIR+= gauche
66SUBDIR+= gawk 66SUBDIR+= gawk
67SUBDIR+= gcc-aux 67SUBDIR+= gcc-aux
68SUBDIR+= gcc10 68SUBDIR+= gcc10
 69SUBDIR+= gcc10-aux
69SUBDIR+= gcc10-libs 70SUBDIR+= gcc10-libs
70SUBDIR+= gcc2 71SUBDIR+= gcc2
71SUBDIR+= gcc5-aux 72SUBDIR+= gcc5-aux
72SUBDIR+= gcc6 73SUBDIR+= gcc6
73SUBDIR+= gcc6-aux 74SUBDIR+= gcc6-aux
74SUBDIR+= gcc6-libs 75SUBDIR+= gcc6-libs
75SUBDIR+= gcc7 76SUBDIR+= gcc7
76SUBDIR+= gcc7-libs 77SUBDIR+= gcc7-libs
77SUBDIR+= gcc8 78SUBDIR+= gcc8
78SUBDIR+= gcc8-libs 79SUBDIR+= gcc8-libs
79SUBDIR+= gcc9 80SUBDIR+= gcc9
80SUBDIR+= gcc9-libs 81SUBDIR+= gcc9-libs
81SUBDIR+= gforth 82SUBDIR+= gforth
82SUBDIR+= ghc 83SUBDIR+= ghc
83SUBDIR+= ghc-bootstrap 84SUBDIR+= ghc-bootstrap
84SUBDIR+= ghc7 85SUBDIR+= ghc7
85SUBDIR+= ghc80 86SUBDIR+= ghc80
86SUBDIR+= ghc810 87SUBDIR+= ghc810
87SUBDIR+= ghc84 88SUBDIR+= ghc84
88SUBDIR+= ghc88 89SUBDIR+= ghc88
89SUBDIR+= ghc90 90SUBDIR+= ghc90
90SUBDIR+= ghc92 91SUBDIR+= ghc92
91SUBDIR+= gjs 92SUBDIR+= gjs
92SUBDIR+= gnat_util 93SUBDIR+= gnat_util
93SUBDIR+= gnucobol 94SUBDIR+= gnucobol
94SUBDIR+= go 95SUBDIR+= go
95SUBDIR+= go-bin 96SUBDIR+= go-bin
96SUBDIR+= go110 97SUBDIR+= go110
97SUBDIR+= go116 98SUBDIR+= go116
98SUBDIR+= go117 99SUBDIR+= go117
99SUBDIR+= go14 100SUBDIR+= go14
100SUBDIR+= go19 101SUBDIR+= go19
101SUBDIR+= gpc 102SUBDIR+= gpc
102SUBDIR+= gprolog 103SUBDIR+= gprolog
103SUBDIR+= guile18 104SUBDIR+= guile18
104SUBDIR+= guile20 105SUBDIR+= guile20
105SUBDIR+= guile22 106SUBDIR+= guile22
106SUBDIR+= guile30 107SUBDIR+= guile30
107SUBDIR+= gwydion-dylan 108SUBDIR+= gwydion-dylan
108SUBDIR+= heirloom-awk 109SUBDIR+= heirloom-awk
109SUBDIR+= hs-hslua 110SUBDIR+= hs-hslua
110SUBDIR+= hs-hslua-classes 111SUBDIR+= hs-hslua-classes
111SUBDIR+= hs-hslua-core 112SUBDIR+= hs-hslua-core
112SUBDIR+= hs-hslua-marshalling 113SUBDIR+= hs-hslua-marshalling
113SUBDIR+= hs-hslua-objectorientation 114SUBDIR+= hs-hslua-objectorientation
114SUBDIR+= hs-hslua-packaging 115SUBDIR+= hs-hslua-packaging
115SUBDIR+= hs-language-javascript 116SUBDIR+= hs-language-javascript
116SUBDIR+= hs-lua 117SUBDIR+= hs-lua
117SUBDIR+= hs-purescript-cst 118SUBDIR+= hs-purescript-cst
118SUBDIR+= hs-sourcemap 119SUBDIR+= hs-sourcemap
119SUBDIR+= hugs 120SUBDIR+= hugs
120SUBDIR+= icon 121SUBDIR+= icon
121SUBDIR+= idris 122SUBDIR+= idris
122SUBDIR+= inform 123SUBDIR+= inform
123SUBDIR+= intercal 124SUBDIR+= intercal
124SUBDIR+= ja-gawk 125SUBDIR+= ja-gawk
125SUBDIR+= jamvm 126SUBDIR+= jamvm
126SUBDIR+= janet 127SUBDIR+= janet
127SUBDIR+= japhar 128SUBDIR+= japhar
128SUBDIR+= jasmin 129SUBDIR+= jasmin
129SUBDIR+= jikes 130SUBDIR+= jikes
130SUBDIR+= jimtcl 131SUBDIR+= jimtcl
131SUBDIR+= joos 132SUBDIR+= joos
132SUBDIR+= jpm 133SUBDIR+= jpm
133SUBDIR+= js 134SUBDIR+= js
134SUBDIR+= kaffe 135SUBDIR+= kaffe
135SUBDIR+= kaffe-x11 136SUBDIR+= kaffe-x11
136SUBDIR+= kali 137SUBDIR+= kali
137SUBDIR+= konoha 138SUBDIR+= konoha
138SUBDIR+= ksi 139SUBDIR+= ksi
139SUBDIR+= libBlocksRuntime 140SUBDIR+= libBlocksRuntime
140SUBDIR+= libLLVM 141SUBDIR+= libLLVM
141SUBDIR+= libLLVM34 142SUBDIR+= libLLVM34
142SUBDIR+= libLLVM4 143SUBDIR+= libLLVM4
143SUBDIR+= libcxx 144SUBDIR+= libcxx
144SUBDIR+= libcxxabi 145SUBDIR+= libcxxabi
145SUBDIR+= libduktape 146SUBDIR+= libduktape
146SUBDIR+= libobjc2 147SUBDIR+= libobjc2
147SUBDIR+= librep 148SUBDIR+= librep
148SUBDIR+= libunwind 149SUBDIR+= libunwind
149SUBDIR+= likepython 150SUBDIR+= likepython
150SUBDIR+= llvm 151SUBDIR+= llvm
151SUBDIR+= lua-moonscript 152SUBDIR+= lua-moonscript
152SUBDIR+= lua51 153SUBDIR+= lua51
153SUBDIR+= lua52 154SUBDIR+= lua52
154SUBDIR+= lua53 155SUBDIR+= lua53
155SUBDIR+= lua54 156SUBDIR+= lua54
156SUBDIR+= lush 157SUBDIR+= lush
157SUBDIR+= maude 158SUBDIR+= maude
158SUBDIR+= mawk 159SUBDIR+= mawk
159SUBDIR+= mercury 160SUBDIR+= mercury
160SUBDIR+= micropython 161SUBDIR+= micropython
161SUBDIR+= minischeme 162SUBDIR+= minischeme
162SUBDIR+= mit-scheme-bin 163SUBDIR+= mit-scheme-bin
163SUBDIR+= mono 164SUBDIR+= mono
164SUBDIR+= mono-basic 165SUBDIR+= mono-basic
165SUBDIR+= moscow_ml 166SUBDIR+= moscow_ml
166SUBDIR+= mozjs78 167SUBDIR+= mozjs78
167SUBDIR+= mpd 168SUBDIR+= mpd
168SUBDIR+= nawk 169SUBDIR+= nawk
169SUBDIR+= neko 170SUBDIR+= neko
170SUBDIR+= newlisp 171SUBDIR+= newlisp
171SUBDIR+= newsqueak 172SUBDIR+= newsqueak
172SUBDIR+= nhc98 173SUBDIR+= nhc98
173SUBDIR+= nim 174SUBDIR+= nim
174SUBDIR+= nodejs 175SUBDIR+= nodejs
175SUBDIR+= nodejs10 176SUBDIR+= nodejs10
176SUBDIR+= nodejs12 177SUBDIR+= nodejs12
177SUBDIR+= npm 178SUBDIR+= npm
178SUBDIR+= nqp 179SUBDIR+= nqp
179SUBDIR+= nuitka 180SUBDIR+= nuitka
180SUBDIR+= objc 181SUBDIR+= objc
181SUBDIR+= ocaml 182SUBDIR+= ocaml
182SUBDIR+= oo2c 183SUBDIR+= oo2c
183SUBDIR+= open-cobol-ce 184SUBDIR+= open-cobol-ce
184SUBDIR+= opencobol 185SUBDIR+= opencobol
185SUBDIR+= openjdk-bin 186SUBDIR+= openjdk-bin
186SUBDIR+= openjdk11 187SUBDIR+= openjdk11
187SUBDIR+= openjdk8 188SUBDIR+= openjdk8
188SUBDIR+= opensource-cobol 189SUBDIR+= opensource-cobol
189SUBDIR+= oracle-jdk8 190SUBDIR+= oracle-jdk8
190SUBDIR+= oracle-jre8 191SUBDIR+= oracle-jre8
191SUBDIR+= ossp-js 192SUBDIR+= ossp-js
192SUBDIR+= owl-lisp 193SUBDIR+= owl-lisp
193SUBDIR+= p2c 194SUBDIR+= p2c
194SUBDIR+= p5-Perl-LanguageServer 195SUBDIR+= p5-Perl-LanguageServer
195SUBDIR+= p5-Switch 196SUBDIR+= p5-Switch
196SUBDIR+= parrot 197SUBDIR+= parrot
197SUBDIR+= pc-lisp 198SUBDIR+= pc-lisp
198SUBDIR+= pcc 199SUBDIR+= pcc
199SUBDIR+= pcc-current 200SUBDIR+= pcc-current
200SUBDIR+= pear 201SUBDIR+= pear
201SUBDIR+= perl5 202SUBDIR+= perl5
202SUBDIR+= pfe 203SUBDIR+= pfe
203SUBDIR+= pforth 204SUBDIR+= pforth
204SUBDIR+= php56 205SUBDIR+= php56
205SUBDIR+= php74 206SUBDIR+= php74
206SUBDIR+= php80 207SUBDIR+= php80
207SUBDIR+= php81 208SUBDIR+= php81
208SUBDIR+= picoc 209SUBDIR+= picoc
209SUBDIR+= pict 210SUBDIR+= pict
210SUBDIR+= polyml 211SUBDIR+= polyml
211SUBDIR+= purescript 212SUBDIR+= purescript
212SUBDIR+= py-asttokens 213SUBDIR+= py-asttokens
213SUBDIR+= py-basicproperty 214SUBDIR+= py-basicproperty
214SUBDIR+= py-byterun 215SUBDIR+= py-byterun
215SUBDIR+= py-cmake-language-server 216SUBDIR+= py-cmake-language-server
216SUBDIR+= py-cxfreeze 217SUBDIR+= py-cxfreeze
217SUBDIR+= py-execjs 218SUBDIR+= py-execjs
218SUBDIR+= py-executing 219SUBDIR+= py-executing
219SUBDIR+= py-hy 220SUBDIR+= py-hy
220SUBDIR+= py-inflect 221SUBDIR+= py-inflect
221SUBDIR+= py-js2py 222SUBDIR+= py-js2py
222SUBDIR+= py-jsparser 223SUBDIR+= py-jsparser
223SUBDIR+= py-lark-parser 224SUBDIR+= py-lark-parser
224SUBDIR+= py-libcst 225SUBDIR+= py-libcst
225SUBDIR+= py-lsp-server 226SUBDIR+= py-lsp-server
226SUBDIR+= py-mypy 227SUBDIR+= py-mypy
227SUBDIR+= py-mypy_extensions 228SUBDIR+= py-mypy_extensions
228SUBDIR+= py-parso 229SUBDIR+= py-parso
229SUBDIR+= py-paver 230SUBDIR+= py-paver
230SUBDIR+= py-pure-eval 231SUBDIR+= py-pure-eval
231SUBDIR+= py-py3c 232SUBDIR+= py-py3c
232SUBDIR+= py-pygls 233SUBDIR+= py-pygls
233SUBDIR+= py-pyrex 234SUBDIR+= py-pyrex
234SUBDIR+= py-python-language-server 235SUBDIR+= py-python-language-server
235SUBDIR+= py-python-lua 236SUBDIR+= py-python-lua
236SUBDIR+= py-pythonz 237SUBDIR+= py-pythonz
237SUBDIR+= py-six 238SUBDIR+= py-six
238SUBDIR+= py-spark-parser 239SUBDIR+= py-spark-parser
239SUBDIR+= py-uncompyle6 240SUBDIR+= py-uncompyle6
240SUBDIR+= py27-html-docs 241SUBDIR+= py27-html-docs
241SUBDIR+= py310-html-docs 242SUBDIR+= py310-html-docs
242SUBDIR+= py37-html-docs 243SUBDIR+= py37-html-docs
243SUBDIR+= py38-html-docs 244SUBDIR+= py38-html-docs
244SUBDIR+= py39-html-docs 245SUBDIR+= py39-html-docs
245SUBDIR+= python27 246SUBDIR+= python27
246SUBDIR+= python310 247SUBDIR+= python310
247SUBDIR+= python37 248SUBDIR+= python37
248SUBDIR+= python38 249SUBDIR+= python38
249SUBDIR+= python39 250SUBDIR+= python39
250SUBDIR+= qore 251SUBDIR+= qore
251SUBDIR+= quickjs 252SUBDIR+= quickjs
252SUBDIR+= racket 253SUBDIR+= racket
253SUBDIR+= racket-textual 254SUBDIR+= racket-textual
254SUBDIR+= rakudo 255SUBDIR+= rakudo
255SUBDIR+= rcfunge 256SUBDIR+= rcfunge
256SUBDIR+= rexx-imc 257SUBDIR+= rexx-imc
257SUBDIR+= rexx-regina 258SUBDIR+= rexx-regina
258SUBDIR+= ruby 259SUBDIR+= ruby
259SUBDIR+= ruby-coffee-script 260SUBDIR+= ruby-coffee-script
260SUBDIR+= ruby-coffee-script-source 261SUBDIR+= ruby-coffee-script-source
261SUBDIR+= ruby-cucumber-gherkin 262SUBDIR+= ruby-cucumber-gherkin
262SUBDIR+= ruby-doc-stdlib 263SUBDIR+= ruby-doc-stdlib
263SUBDIR+= ruby-execjs 264SUBDIR+= ruby-execjs
264SUBDIR+= ruby-rkelly-remix 265SUBDIR+= ruby-rkelly-remix
265SUBDIR+= ruby26 266SUBDIR+= ruby26
266SUBDIR+= ruby26-base 267SUBDIR+= ruby26-base
267SUBDIR+= ruby27 268SUBDIR+= ruby27
268SUBDIR+= ruby27-base 269SUBDIR+= ruby27-base
269SUBDIR+= ruby30 270SUBDIR+= ruby30
270SUBDIR+= ruby30-base 271SUBDIR+= ruby30-base
271SUBDIR+= ruby31 272SUBDIR+= ruby31
272SUBDIR+= ruby31-base 273SUBDIR+= ruby31-base
273SUBDIR+= runawk 274SUBDIR+= runawk
274SUBDIR+= rust 275SUBDIR+= rust
275SUBDIR+= rust-analyzer 276SUBDIR+= rust-analyzer
276SUBDIR+= rust-bin 277SUBDIR+= rust-bin
277SUBDIR+= rust-src 278SUBDIR+= rust-src
278SUBDIR+= sablevm 279SUBDIR+= sablevm
279SUBDIR+= sablevm-classpath 280SUBDIR+= sablevm-classpath
280SUBDIR+= sablevm-classpath-gui 281SUBDIR+= sablevm-classpath-gui
281SUBDIR+= sather 282SUBDIR+= sather
282SUBDIR+= sbcl 283SUBDIR+= sbcl
283SUBDIR+= scala 284SUBDIR+= scala
284SUBDIR+= scala-sbt 285SUBDIR+= scala-sbt
285SUBDIR+= scheme48 286SUBDIR+= scheme48
286SUBDIR+= scm 287SUBDIR+= scm
287SUBDIR+= see 288SUBDIR+= see
288SUBDIR+= sigscheme 289SUBDIR+= sigscheme
289SUBDIR+= siod 290SUBDIR+= siod
290SUBDIR+= smalltalk 291SUBDIR+= smalltalk
291SUBDIR+= smlnj 292SUBDIR+= smlnj
292SUBDIR+= smlnj11072 293SUBDIR+= smlnj11072
293SUBDIR+= snobol 294SUBDIR+= snobol
294SUBDIR+= spago 295SUBDIR+= spago
295SUBDIR+= spidermonkey 296SUBDIR+= spidermonkey
296SUBDIR+= spidermonkey185 297SUBDIR+= spidermonkey185
297SUBDIR+= spl 298SUBDIR+= spl
298SUBDIR+= squeak 299SUBDIR+= squeak
299SUBDIR+= squeak-vm 300SUBDIR+= squeak-vm
300SUBDIR+= sr 301SUBDIR+= sr
301SUBDIR+= sr-examples 302SUBDIR+= sr-examples
302SUBDIR+= stalin 303SUBDIR+= stalin
303SUBDIR+= sun-jdk7 304SUBDIR+= sun-jdk7
304SUBDIR+= sun-jre7 305SUBDIR+= sun-jre7
305SUBDIR+= surgescript 306SUBDIR+= surgescript
306SUBDIR+= swi-prolog 307SUBDIR+= swi-prolog
307SUBDIR+= swi-prolog-jpl 308SUBDIR+= swi-prolog-jpl
308SUBDIR+= swi-prolog-lite 309SUBDIR+= swi-prolog-lite
309SUBDIR+= swi-prolog-packages 310SUBDIR+= swi-prolog-packages
310SUBDIR+= tcl 311SUBDIR+= tcl
311SUBDIR+= tcl-expect 312SUBDIR+= tcl-expect
312SUBDIR+= tcl-otcl 313SUBDIR+= tcl-otcl
313SUBDIR+= tcl85 314SUBDIR+= tcl85
314SUBDIR+= tcltutor 315SUBDIR+= tcltutor
315SUBDIR+= tinyscheme 316SUBDIR+= tinyscheme
316SUBDIR+= ucblogo 317SUBDIR+= ucblogo
317SUBDIR+= umb-scheme 318SUBDIR+= umb-scheme
318SUBDIR+= utilisp 319SUBDIR+= utilisp
319SUBDIR+= vala 320SUBDIR+= vala
320SUBDIR+= vscm 321SUBDIR+= vscm
321SUBDIR+= vslisp 322SUBDIR+= vslisp
322SUBDIR+= wasi-compiler-rt 323SUBDIR+= wasi-compiler-rt
323SUBDIR+= wasi-libc 324SUBDIR+= wasi-libc
324SUBDIR+= wasi-libcxx 325SUBDIR+= wasi-libcxx
325SUBDIR+= wsbasic 326SUBDIR+= wsbasic
326SUBDIR+= yabasic 327SUBDIR+= yabasic
327SUBDIR+= yap 328SUBDIR+= yap
328SUBDIR+= zenlisp 329SUBDIR+= zenlisp
329SUBDIR+= zig 330SUBDIR+= zig
330 331
331.include "../mk/misc/category.mk" 332.include "../mk/misc/category.mk"

File Added: pkgsrc/lang/gcc10-aux/DESCR
The GNU Compiler Collection (GCC) with Ada support. Includes front ends for Ada,
C, C++ and Fortran.

File Added: pkgsrc/lang/gcc10-aux/Makefile
# $NetBSD: Makefile,v 1.1 2022/03/13 08:34:04 nia Exp $

GCC_PKGNAME=		gcc10-aux
.include		"version.mk"

DISTNAME=	gcc-${GCC10_DIST_VERSION}
PKGNAME=	${GCC_PKGNAME}-${GCC10_DIST_VERSION}
CATEGORIES=	lang
MASTER_SITES=	${MASTER_SITE_GNU:=gcc/gcc-${GCC10_DIST_VERSION}/}
EXTRACT_SUFX=	.tar.xz

MAINTAINER=	irvise@irvise.xyz
HOMEPAGE=	https://gcc.gnu.org/
COMMENT=	The GNU Compiler Collection (GCC) with Ada support v10
LICENSE=	gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3

DISTFILES=		${DEFAULT_DISTFILES}
EXTRACT_ONLY=		${DEFAULT_DISTFILES}

# Relocations result in a linker error on AArch64, but not x86.
MKPIE_SUPPORTED=	no

CHECK_RELRO_SKIP+=	${GCC_PKGNAME}/lib/*

NOT_FOR_PLATFORM=	Interix-*-*

USE_TOOLS+=		gmake makeinfo sed:run tar:build
USE_TOOLS.NetBSD+=	gsed

GNU_CONFIGURE=		yes
GNU_CONFIGURE_STRICT=	no
## Build outside ${WRKSRC}
OBJDIR=			../build
CONFIGURE_DIRS=		${OBJDIR}
CONFIGURE_SCRIPT=	../${DISTNAME}/configure
GCC_SUBPREFIX=		${GCC_PKGNAME}
GCC_PREFIX=		${PREFIX}/${GCC_SUBPREFIX}
GNU_CONFIGURE_PREFIX=	${GCC_PREFIX}
INFO_FILES=		yes
CONFIGURE_ARGS+=	--disable-libstdcxx-pch

UNLIMIT_RESOURCES+=	datasize
UNLIMIT_RESOURCES+=	stacksize

CHECK_PORTABILITY_SKIP+=	contrib/*

.include "../../mk/bsd.prefs.mk"

LANGS=			c

# In some cases LINKER_RPATH_FLAG needs a trailing space.
LINKER_RPATH_FLAG:=	${LINKER_RPATH_FLAG:S/-rpath/& /}

## The Library rpath to use in end programs.
LDFLAGS_FOR_TARGET=	${LDFLAGS:M${COMPILER_RPATH_FLAG}*:N*/usr/lib*} ${LDFLAGS:M-Wl,-z*}

# The "-static-libstdc++ -static-libgcc" flags are normally added to the
# boot-ldflags by configure but because we are supply the boot-ldflags
# we mash supply them.
BOOT_LDFLAGS=		-static-libstdc++ -static-libgcc ${LDFLAGS_FOR_TARGET}
# Needed on Darwin when LDFLAGS point to a SDK
BOOT_LDFLAGS+=		${LDFLAGS:M-Wl,-syslibroot*}
# GCC does not understand this option; remove it, or stage build will fail
BUILDLINK_TRANSFORM+=	rm:-stdlib=libc++

# Disable fixincludes on SmartOS, header changes result in broken includes
# being generated, see https://github.com/joyent/pkgsrc-legacy/issues/270
.if ${OS_VARIANT} == "SmartOS"
SUBST_CLASSES+=		fixinc
SUBST_STAGE.fixinc=	pre-configure
SUBST_FILES.fixinc=	gcc/Makefile.in
SUBST_SED.fixinc=	-e "s,\./fixinc.sh,-c true,"
.endif

.include "options.mk"

## Make gcc6-aux the compiler for the package since we need ada support.
# This will allow the configure script to use the gnat* packages and gcc
# with ada support
PATH=	/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/gcc6-aux/bin:${PREFIX}/sbin:${PREFIX}/bin
CC=	${PREFIX}/gcc6-aux/bin/gcc
CXX=	${PREFIX}/gcc6-aux/bin/g++

## For graphite support.
.if !empty(PKG_OPTIONS:Mgcc-graphite)

post-extract:
	${TAR} -jxf ${DISTDIR}/${ISL16}.tar.bz2 -C ${WRKSRC}
	${MV} ${WRKSRC}/${ISL16} ${WRKSRC}/isl
.endif

.if !empty(MACHINE_PLATFORM:MNetBSD-*-*)
# on NetBSD, use the native SSP code in libc
CONFIGURE_ARGS+=	--disable-libssp
# Match base libstdc++ major
SUBST_CLASSES+=		libstdc
SUBST_STAGE.libstdc=	pre-configure
SUBST_FILES.libstdc=	libstdc++-v3/configure
SUBST_MESSAGE.libstdc=	Bumping libstdc++ major to 7
SUBST_SED.libstdc=	-e 's,libtool_VERSION=6:,libtool_VERSION=7:,g'
.else
CONFIGURE_ARGS+=	--enable-libssp
.endif

## For target librarys and libjava programs.
CONFIGURE_ENV+=		LDFLAGS_FOR_TARGET=${LDFLAGS_FOR_TARGET:Q}

CONFIGURE_ARGS+=	--enable-languages=${LANGS:Q}
CONFIGURE_ARGS+=	--enable-shared
CONFIGURE_ARGS+=	--enable-long-long
CONFIGURE_ARGS+=	--with-local-prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=	--enable-threads=posix
CONFIGURE_ARGS+=	--with-boot-ldflags=${BOOT_LDFLAGS:Q}
CONFIGURE_ARGS+=	--with-system-zlib
CONFIGURE_ARGS+=	--without-zstd
# multilib on Darwin requires fat-binaries
CONFIGURE_ARGS.Darwin+=	--disable-multilib
.if !empty(OSX_SDK_PATH)
CONFIGURE_ARGS.Darwin+=	--with-sysroot=${OSX_SDK_PATH}
.endif
CONFIGURE_ARGS.NetBSD+=	--with-gnu-ld --with-ld=/usr/bin/ld
CONFIGURE_ARGS.NetBSD+=	--with-gnu-as --with-as=/usr/bin/as
MAKE_ENV.NetBSD+=	ac_cv_func_clock_gettime=yes
MAKE_ENV.NetBSD+=	ac_cv_func_gethostbyname_r=no
MAKE_ENV.NetBSD+=	ac_cv_func_freelocale=no
MAKE_ENV.NetBSD+=	ac_cv_func_newlocale=no
MAKE_ENV.NetBSD+=	ac_cv_func_uselocale=no
MAKE_ENV.SunOS+=	ac_cv_func_mkostemp=no

.if !empty(PKGSRC_COMPILER:Mclang) || ${OPSYS} == "DragonFly"
CONFIGURE_ARGS+=	--disable-bootstrap
.endif

.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || !empty(MACHINE_PLATFORM:MLinux-*-i386)
CONFIGURE_ARGS+=	--with-arch=i486 --with-tune=i486
.endif

.if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
CONFIGURE_ARGS+=	--with-arch=nocona --with-tune=nocona --with-fpmath=sse
.endif

.if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
CONFIGURE_ARGS+=	--with-dwarf2
.endif

# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
# a binary so we need to make sure we give it the installed sed and not
# the tool wrapped one.
MAKE_ENV+=		ac_cv_path_SED=${TOOLS_SED}
MAKE_ENV+=		lt_cv_path_SED=${TOOLS_SED}

# Determine whether to use binutils
.if ${OPSYS} == "SunOS"
.  if exists(/usr/sfw/bin/gobjdump)
CONFIGURE_ENV+=		OBJDUMP=/usr/sfw/bin/gobjdump
.  endif
.  if exists(/usr/bin/ld)
CONFIGURE_ARGS+=	--without-gnu-ld --with-ld=/usr/bin/ld
.  else
CONFIGURE_ARGS+=	--without-gnu-ld --with-ld=/usr/ccs/bin/ld
.  endif
.  if exists(/usr/sfw/bin/gas)
CONFIGURE_ARGS+=	--with-gnu-as --with-as=/usr/sfw/bin/gas
.  elif exists(/usr/ccs/bin/as)
CONFIGURE_ARGS+=	--without-gnu-as --with-as=/usr/ccs/bin/as
.  else
BUILDLINK_DEPMETHOD.binutils=	full
.    include "../../devel/binutils/buildlink3.mk"
CONFIGURE_ARGS+=	--with-gnu-as --with-as=${PREFIX}/bin/gas
.  endif
.endif

.if ${OS_VARIANT} == "SmartOS"
SUBST_CLASSES+=		ccs
SUBST_STAGE.ccs=	pre-configure
SUBST_FILES.ccs=	contrib/make_sunver.pl
SUBST_SED.ccs=		-e 's,/usr/ccs/bin,/usr/bin,g'
.endif

CTF_FILES_SKIP+=	*/gengtype	# CPU limit exceeded

pre-configure:
	${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}

TEST_TARGET=	-j ${MAKE_JOBS} -k check || ${TRUE}
TEST_DEPENDS+=	dejagnu-[0-9]*:../../devel/dejagnu

post-test:
	${RUN} cd ${WRKSRC} && cd ${OBJDIR} &&		\
	${SHELL} ${WRKSRC}/contrib/test_summary >${WRKDIR}/test_summary.log
	${INFO_MSG} "Test summary are available in ${WRKDIR}/test_summary.log"

post-install:
	${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || \
		( cd ${DESTDIR}${GCC_PREFIX}/bin ; ${LN} -f gcc cc )
.if !empty(MACHINE_PLATFORM:MSunOS-*-*86*) && ${OS_VERSION} != "5.11"
	${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m32 || ${TRUE}
	${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m64 || ${TRUE}
.endif

GENERATE_PLIST+= \
	cd ${DESTDIR}${PREFIX} && \
	${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print | ${SORT};

# Add gcc6-aux as an explicit dependency. It is needed to bootstrap.
.include "../../lang/gcc6-aux/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/lang/gcc10-aux/buildlink3.mk
# $NetBSD: buildlink3.mk,v 1.1 2022/03/13 08:34:04 nia Exp $

BUILDLINK_TREE+=	gcc10-aux

.if !defined(GCC10_AUX_BUILDLINK3_MK)
GCC10_AUX_BUILDLINK3_MK:=

BUILDLINK_API_DEPENDS.gcc10-aux+=	gcc10-aux>=${_GCC_REQD}
BUILDLINK_ABI_DEPENDS.gcc10-aux+=	gcc10-aux>=10.0
BUILDLINK_PKGSRCDIR.gcc10-aux=		../../lang/gcc10-aux
BUILDLINK_DEPMETHOD.gcc10-aux?=		build

BUILDLINK_PASSTHRU_DIRS+=	${BUILDLINK_PREFIX.gcc10-aux}/gcc10-aux

BUILDLINK_FILES.gcc10-aux=	# empty
BUILDLINK_AUTO_VARS.gcc10-aux=	no

pkgbase := gcc10-aux
.include "../../mk/pkg-build-options.mk"
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.endif

BUILDLINK_TREE+=	-gcc10-aux

File Added: pkgsrc/lang/gcc10-aux/distinfo
$NetBSD: distinfo,v 1.1 2022/03/13 08:34:04 nia Exp $

BLAKE2s (gcc-10.3.0.tar.xz) = 6d7c42f9386e5e32a3148122471cb207e5f65d7b5f53b3c9adba2d45a4f28715
SHA512 (gcc-10.3.0.tar.xz) = 2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86
Size (gcc-10.3.0.tar.xz) = 76692288 bytes
BLAKE2s (isl-0.16.1.tar.bz2) = 01c3fc657326e81414986eb7ede6f73e540b97009745ced125cdf7f4a8d80f61
SHA512 (isl-0.16.1.tar.bz2) = c188667a84dc5bdddb4ab7c35f89c91bf15a8171f4fcaf41301cf285fb7328846d9a367c096012fec4cc69d244f0bc9e95d84c09ec097394cd4093076f2a041b
Size (isl-0.16.1.tar.bz2) = 1626446 bytes
SHA1 (patch-contrib_download__prerequisites) = 9cdcde21ab174052911447d20762ddfd40aa8791
SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a
SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651
SHA1 (patch-gcc_ada_Makefile.rtl) = 1b6a18dce5ffe752be942f6e328d487692f3b33a
SHA1 (patch-gcc_ada_adaint.c) = 465b3e3d6db193b2729f1d4e1c74eefcc3dc85bf
SHA1 (patch-gcc_ada_adaint.h) = 57befa67b18f97345db05672f1e53e8ec70e1935
SHA1 (patch-gcc_ada_cstreams.c) = 047746f1da085917082dafe8b87fdc5e757e1237
SHA1 (patch-gcc_ada_libgnarl_s-osinte____netbsd.adb) = 84268061686b15a8ef9013242e3d258b82b9f13e
SHA1 (patch-gcc_ada_libgnarl_s-osinte____netbsd.ads) = 2d1179230289a243bb004b9f16c747cda9761b60
SHA1 (patch-gcc_ada_libgnarl_s-taprop____posix.adb) = 505d0ba78a21a8a6cc6213a9809c44c284fe2334
SHA1 (patch-gcc_ada_libgnat_g-socthi.ads) = e2fbc2589814aa630165d3cf4ddc15baf9dce1c9
SHA1 (patch-gcc_ada_libgnat_g-socthi____bsd.adb) = cbc8aca2b0be1c183cffb0a93091a95b35d78abd
SHA1 (patch-gcc_ada_libgnat_s-osprim____posix.adb) = 018dce870dd06febeb83719149f10e469c4bcc00
SHA1 (patch-gcc_ada_s-oscons-tmplt.c) = a48b5ae3c061144b8406e27cbbc084385fef5131
SHA1 (patch-gcc_ada_sysdep.c) = 5b8705680ee1a2c9c2686d14d4cbbba8c5fb4fb2
SHA1 (patch-gcc_config.gcc) = 4bf07441b6893e9b510f9ad775b4b95aa23e9791
SHA1 (patch-gcc_config.host) = 8920ce841f6088b365c9b590e3ea9535bd880b40
SHA1 (patch-gcc_config_aarch64_aarch64-builtins.c) = 87185f5c2e2dbe4195cb19fe6213d2d616d5519b
SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827
SHA1 (patch-gcc_config_aarch64_driver-aarch64.c) = 7e17b49924ddd9ff33d049d6539e4df77d14d3e5
SHA1 (patch-gcc_config_darwin-driver.c) = fd57dcca96ce5ddc330e7c7b3b811f64856d7611
SHA1 (patch-gcc_config_sparc_sparc.c) = e9cb956f3769642bcd0ba4a477d16c73dea46014
SHA1 (patch-gcc_configure) = 6a2d8eeeed2bf08c3c81291178e669dc91c913ce
SHA1 (patch-gcc_ggc-common.c) = 3e325767922ab7d2079fdb9a3d6b6aa531a2fea5
SHA1 (patch-gcc_lto_lto.c) = 7bd85ac8ade76a28c394f6fbe5d495f91824f79f
SHA1 (patch-gcc_targhooks.c) = b28d8a9696d07bbfb00b7d8c55193ba99447ff1d
SHA1 (patch-gnattools_configure) = aa6181ee8723a1199d84acea1331645205b558cc
SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e
SHA1 (patch-libffi_configure) = 22006b20d7f655e2455a7ad613d676703b6c1ccc
SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 27b84a11378fb648dfaad0c70abedd77a0a1c1a8
SHA1 (patch-libgcc_config.host) = ca62e9ecba9e6efe8b18dfb0d73a2ea47a818bec
SHA1 (patch-libgcc_crtstuff.c) = a16d465039de00c195cf0694560140a9c38f3a25
SHA1 (patch-libgfortran_io_format.c) = 9bbc5e4f6277bdec785b3690fd08259939a2aa1a
SHA1 (patch-libgfortran_io_io.h) = d44676239a7f45e42054d24bd5224f43c20055c0
SHA1 (patch-libgfortran_io_list__read.c) = 589cdb8dcd180b781ededc086e8775224fca5779
SHA1 (patch-libgfortran_io_read.c) = cf21493396d07a5e8ad0dfb70a8d25a11482fc98
SHA1 (patch-libgfortran_runtime_environ.c) = c7217704a00f4c0314bbc1838ac6fc966cc854d0
SHA1 (patch-libquadmath_printf_quadmath-printf.c) = 78e09f1e6d61ee57cee83275093cf46b2335d204
SHA1 (patch-libquadmath_strtod_strtod__l.c) = 6142c10d34174174cce7f06c37eab04dc431b2dc
SHA1 (patch-libstdc++-v3_libsupc++_new__opa.cc) = 4183b00a5ee6e61524da4755c825a0c08fd01ed6

File Added: pkgsrc/lang/gcc10-aux/options.mk
# $NetBSD: options.mk,v 1.1 2022/03/13 08:34:04 nia Exp $

PKG_OPTIONS_VAR=	PKG_OPTIONS.${GCC_PKGNAME}
PKG_SUPPORTED_OPTIONS=	nls gcc-inplace-math gcc-c++ gcc-fortran gcc-ada \
			gcc-go gcc-objc gcc-objc++ gcc-graphite \
			always-libgcc
PKG_SUGGESTED_OPTIONS=	gcc-ada gcc-c++ gcc-fortran \
			gcc-graphite gcc-inplace-math

.if ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "Linux"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "DragonFly"
PKG_SUGGESTED_OPTIONS+=	nls
.elif ${OPSYS} == "SunOS"
PKG_SUGGESTED_OPTIONS+=	gcc-inplace-math always-libgcc
.else
.endif

.include "../../mk/compiler.mk"
.if empty(PKGSRC_COMPILER:Mgcc)
PKG_SUGGESTED_OPTIONS+=			always-libgcc
.endif

###
### Determine if multilib is avalible.
###
MULTILIB_SUPPORTED?=	unknown
.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
.  if exists(/usr/include/x86_64-linux-gnu/gnu)
_GNU_INCLUDE_DIR=	/usr/include/x86_64-linux-gnu/gnu
.  else
_GNU_INCLUDE_DIR=	/usr/include/gnu
.  endif
.  if exists(${_GNU_INCLUDE_DIR}/stubs-64.h) && \
     !exists(${_GNU_INCLUDE_DIR}/stubs-32.h)
MULTILIB_SUPPORTED=	No
.  else
MULTILIB_SUPPORTED=	Yes
.  endif
.endif
.if !empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss])
PKG_SUPPORTED_OPTIONS+=	gcc-multilib
PKG_SUGGESTED_OPTIONS+=	gcc-multilib
.endif

.include "../../mk/bsd.options.mk"

###
### Don't install libgcc if it's older than the system one
###
.if empty(PKG_OPTIONS:Malways-libgcc)

.  for _libdir_ in ${_OPSYS_LIB_DIRS}
.    if exists(${_libdir_})
BASE_LIBGCC!=			find ${_libdir_} -name libgcc_s.so
BASE_LIBGCC_MATCH_STRING!=	${ECHO} ${BASE_LIBGCC} ${GCC10_DIST_VERSION} | \
				${AWK} -f ../../mk/scripts/larger_symbol_version.awk
.      if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
DELETE_INSTALLED_LIBGCC=	yes
.      endif
.    endif
.  endfor

.  if ${DELETE_INSTALLED_LIBGCC:Uno}
post-install:	delete-installed-libgcc

.PHONY: delete-installed-libgcc
delete-installed-libgcc:
	${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete

.  endif

.endif

###
### Native Language Support
###
.if !empty(PKG_OPTIONS:Mnls)
USE_TOOLS+=		msgfmt
CONFIGURE_ARGS+=	--enable-nls
CONFIGURE_ARGS+=	--with-libiconv-prefix=${BUILDLINK_PREFIX.iconv}
MAKE_ENV+=		ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
.include "../../converters/libiconv/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
.else
CONFIGURE_ARGS+=	--disable-nls
.endif

###
### Multilib Support
###
.if (!empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss]) && \
      empty(PKG_OPTIONS:Mgcc-multilib) ) || \
    !empty(MULTILIB_SUPPORTED:M[Nn][Oo])
CONFIGURE_ARGS+=	--disable-multilib
.endif

###
### Build math libraries in place
###
.if !empty(PKG_OPTIONS:Mgcc-inplace-math)
.  include "../../devel/gmp/inplace.mk"
.  include "../../math/mpcomplex/inplace.mk"
.  include "../../math/mpfr/inplace.mk"
.else
CONFIGURE_ARGS+=	--with-gmp=${BUILDLINK_PREFIX.gmp}
CONFIGURE_ARGS+=	--with-mpc=${BUILDLINK_PREFIX.mpcomplex}
CONFIGURE_ARGS+=	--with-mpfr=${BUILDLINK_PREFIX.mpfr}
LIBS.SunOS+=		-lgmp
.  include "../../devel/gmp/buildlink3.mk"
.  include "../../math/mpcomplex/buildlink3.mk"
.  include "../../math/mpfr/buildlink3.mk"
.endif


###
### Graphite Support
###
.if !empty(PKG_OPTIONS:Mgcc-graphite)
ISL16=			isl-0.16.1
SITES.${ISL16}.tar.bz2=	${MASTER_SITE_GNU:=gcc/infrastructure/}
DISTFILES+=		${ISL16}.tar.bz2
.endif

###
### Optional languages
###

.if !empty(PKG_OPTIONS:Mgcc-ada)
LANGS+=			ada
USE_TOOLS+=		perl
.endif

.if !empty(PKG_OPTIONS:Mgcc-objc++)
.  if empty(PKG_OPTIONS:Mgcc-c++)
PKG_OPTIONS+=		gcc-c++
.  endif
.  if empty(PKG_OPTIONS:Mgcc-objc)
PKG_OPTIONS+=		gcc-objc
.  endif
LANGS+=			obj-c++
.endif

.if !empty(PKG_OPTIONS:Mgcc-objc)
LANGS+=			objc
.endif

.if !empty(PKG_OPTIONS:Mgcc-go)
LANGS+=			go
.endif

.if !empty(PKG_OPTIONS:Mgcc-fortran)
LANGS+=			fortran
.endif

.if !empty(PKG_OPTIONS:Mgcc-c++)
LANGS+=			c++
USE_TOOLS+=		perl
CONFIGURE_ARGS+=	--enable-__cxa_atexit
CONFIGURE_ARGS+=	--with-gxx-include-dir=${GCC_PREFIX}/include/c++/
.else
CONFIGURE_ARGS+=	--disable-build-with-cxx
CONFIGURE_ARGS+=	--disable-build-poststage1-with-cxx
.endif

File Added: pkgsrc/lang/gcc10-aux/version.mk
# $NetBSD: version.mk,v 1.1 2022/03/13 08:34:04 nia Exp $
GCC10_DIST_VERSION:=	10.3.0

File Added: pkgsrc/lang/gcc10-aux/patches/patch-contrib_download__prerequisites
$NetBSD: patch-contrib_download__prerequisites,v 1.1 2022/03/13 08:34:04 nia Exp $

Non-portable test

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90142

--- contrib/download_prerequisites.orig	2017-04-11 16:34:07.000000000 +0000
+++ contrib/download_prerequisites
@@ -122,7 +122,7 @@ md5_check() {
   md5_checksum_output=$(md5 -r "${file_to_check}")
   # Grab the text before the first space
   md5_checksum_detected="${md5_checksum_output%% *}"
-  [ "${md5_checksum_expected}" == "${md5_checksum_detected}" ] \
+  [ "${md5_checksum_expected}" = "${md5_checksum_detected}" ] \
     || die "Cannot verify integrity of possibly corrupted file ${file_to_check}"
   echo "${file_to_check}: OK"
 }

File Added: pkgsrc/lang/gcc10-aux/patches/patch-fixincludes_inclhack.def
$NetBSD: patch-fixincludes_inclhack.def,v 1.1 2022/03/13 08:34:04 nia Exp $

A workaround for Catalina SDK bug from
https://github.com/Homebrew/homebrew-core/pull/44762

--- fixincludes/inclhack.def.orig	2020-03-04 08:29:59.000000000 +0000
+++ fixincludes/inclhack.def
@@ -1269,6 +1269,28 @@ fix = {
 };
 
 /*
+ *  macOS 10.15 <Availability.h> does not define __OSX_AVAILABLE_STARTING on
+ *  non-clang compilers.
+ */
+fix = {
+    hackname  = darwin_availability;
+    mach      = "*-*-darwin*";
+    files     = Availability.h;
+    select    = "#endif /\\* __OSX_AVAILABLE_STARTING \\*/";
+    c_fix     = format;
+    c_fix_arg = <<- _EOFix_
+	#endif /* __OSX_AVAILABLE_STARTING */
+	#ifndef __OSX_AVAILABLE_STARTING
+	  #define __OSX_AVAILABLE_STARTING(_osx, _ios)
+	  #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
+	  #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
+	#endif
+	_EOFix_;
+
+    test_text = "#endif /* __OSX_AVAILABLE_STARTING */";
+};
+
+/*
  *  macOS 10.12 <AvailabilityInternal.h> uses __attribute__((availability))
  *  unconditionally.
  */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_Makefile.in
$NetBSD: patch-gcc_Makefile.in,v 1.1 2022/03/13 08:34:04 nia Exp $

Add gcc libdir to a programs rpath so that _this gcc's_ support libraries
are found.

--- gcc/Makefile.in.orig	2017-04-18 18:10:27.000000000 +0000
+++ gcc/Makefile.in
@@ -2112,6 +2112,7 @@ prefix.o: $(BASEVER)
 # Language-independent files.
 
 DRIVER_DEFINES = \
+  -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
   -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
   -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_Makefile.rtl
$NetBSD: patch-gcc_ada_Makefile.rtl,v 1.1 2022/03/13 08:34:04 nia Exp $

Add NetBSD as a target and generate the required files correctly.

--- gcc/ada/Makefile.rtl.orig	2021-04-08 13:56:27.725736525 +0200
+++ gcc/ada/Makefile.rtl	2021-10-09 18:43:45.974586137 +0200
@@ -1739,6 +1739,131 @@
   MISCLIB = -lutil
 endif
 
+# x86 NetBSD
+ifeq ($(strip $(filter-out %86 netbsd%,$(target_cpu) $(target_os))),)
+  LIBGNAT_TARGET_PAIRS = \
+  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
+  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
+  s-intman.adb<libgnarl/s-intman__posix.adb \
+  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
+  s-osinte.adb<libgnarl/s-osinte__netbsd.adb \
+  s-osinte.ads<libgnarl/s-osinte__netbsd.ads \
+  s-osprim.adb<libgnat/s-osprim__posix.adb \
+  s-taprop.adb<libgnarl/s-taprop__posix.adb \
+  s-taspri.ads<libgnarl/s-taspri__posix.ads \
+  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
+  g-socthi.adb<libgnat/g-socthi__bsd.adb \
+  $(TRASYM_DWARF_UNIX_PAIRS) \
+  $(ATOMICS_TARGET_PAIRS) \
+  $(X86_64_TARGET_PAIRS) \
+  system.ads<libgnat/system-freebsd.ads
+
+  GNATLIB_SHARED = gnatlib-shared-dual
+
+  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+
+  EH_MECHANISM=-gcc
+  THREADSLIB= -lpthread -lrt
+  GMEM_LIB = gmemlib
+  LIBRARY_VERSION := $(LIB_VERSION)
+  MISCLIB = -lutil
+endif
+
+
+# x86-64 NetBSD
+ifeq ($(strip $(filter-out %86_64 netbsd%,$(target_cpu) $(target_os))),)
+  LIBGNAT_TARGET_PAIRS = \
+  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
+  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
+  s-intman.adb<libgnarl/s-intman__posix.adb \
+  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
+  s-osinte.adb<libgnarl/s-osinte__netbsd.adb \
+  s-osinte.ads<libgnarl/s-osinte__netbsd.ads \
+  s-osprim.adb<libgnat/s-osprim__posix.adb \
+  s-taprop.adb<libgnarl/s-taprop__posix.adb \
+  s-taspri.ads<libgnarl/s-taspri__posix.ads \
+  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
+  g-socthi.adb<libgnat/g-socthi__bsd.adb \
+  $(TRASYM_DWARF_UNIX_PAIRS) \
+  $(ATOMICS_TARGET_PAIRS) \
+  $(X86_64_TARGET_PAIRS) \
+  system.ads<libgnat/system-freebsd.ads
+
+  GNATLIB_SHARED = gnatlib-shared-dual
+
+  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+
+  EH_MECHANISM=-gcc
+  THREADSLIB= -lpthread -lrt
+  GMEM_LIB = gmemlib
+  LIBRARY_VERSION := $(LIB_VERSION)
+  MISCLIB = -lutil
+endif
+
+# arm NetBSD
+ifeq ($(strip $(filter-out %arm netbsd%,$(target_cpu) $(target_os))),)
+  LIBGNAT_TARGET_PAIRS = \
+  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
+  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
+  s-intman.adb<libgnarl/s-intman__posix.adb \
+  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
+  s-osinte.adb<libgnarl/s-osinte__netbsd.adb \
+  s-osinte.ads<libgnarl/s-osinte__netbsd.ads \
+  s-osprim.adb<libgnat/s-osprim__posix.adb \
+  s-taprop.adb<libgnarl/s-taprop__posix.adb \
+  s-taspri.ads<libgnarl/s-taspri__posix.ads \
+  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
+  g-socthi.adb<libgnat/g-socthi__bsd.adb \
+  $(TRASYM_DWARF_UNIX_PAIRS) \
+  $(ATOMICS_TARGET_PAIRS) \
+  $(X86_64_TARGET_PAIRS) \
+  system.ads<libgnat/system-freebsd.ads
+
+  GNATLIB_SHARED = gnatlib-shared-dual
+
+  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+
+  EH_MECHANISM=-gcc
+  THREADSLIB= -lpthread -lrt
+  GMEM_LIB = gmemlib
+  LIBRARY_VERSION := $(LIB_VERSION)
+  MISCLIB = -lutil
+endif
+
+# aarch64 NetBSD
+ifeq ($(strip $(filter-out %aarch64 netbsd%,$(target_cpu) $(target_os))),)
+  LIBGNAT_TARGET_PAIRS = \
+  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
+  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
+  s-intman.adb<libgnarl/s-intman__posix.adb \
+  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
+  s-osinte.adb<libgnarl/s-osinte__netbsd.adb \
+  s-osinte.ads<libgnarl/s-osinte__netbsd.ads \
+  s-osprim.adb<libgnat/s-osprim__posix.adb \
+  s-taprop.adb<libgnarl/s-taprop__posix.adb \
+  s-taspri.ads<libgnarl/s-taspri__posix.ads \
+  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
+  g-socthi.adb<libgnat/g-socthi__bsd.adb \
+  $(TRASYM_DWARF_UNIX_PAIRS) \
+  $(ATOMICS_TARGET_PAIRS) \
+  $(X86_64_TARGET_PAIRS) \
+  system.ads<libgnat/system-freebsd.ads
+
+  GNATLIB_SHARED = gnatlib-shared-dual
+
+  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
+  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
+
+  EH_MECHANISM=-gcc
+  THREADSLIB= -lpthread -lrt
+  GMEM_LIB = gmemlib
+  LIBRARY_VERSION := $(LIB_VERSION)
+  MISCLIB = -lutil
+endif
+
 # x86-64 DragonFly
 ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
   LIBGNAT_TARGET_PAIRS = \
@@ -2502,7 +2627,7 @@
       s-osprim.adb<libgnat/s-osprim__darwin.adb \
       $(ATOMICS_TARGET_PAIRS) \
       system.ads<libgnat/system-darwin-x86.ads
-
+p
     ifeq ($(strip $(MULTISUBDIR)),/x86_64)
       SO_OPTS += -m64
       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_adaint.c
$NetBSD: patch-gcc_ada_adaint.c,v 1.1 2022/03/13 08:34:04 nia Exp $

NetBSD does not use symbol versioning, which requires some functions
to be preprocessed in C. This patch adds those functions definitions,
not only for NetBSD, but for any other system too.

--- gcc/ada/adaint.c.orig	2021-04-08 13:56:27.725736525 +0200
+++ gcc/ada/adaint.c	2021-10-09 17:27:52.413919872 +0200
@@ -817,7 +817,8 @@
 }
 
 #if defined (_WIN32) || defined (__linux__) || defined (__sun__) \
-  || defined (__FreeBSD__) || defined(__DragonFly__) || defined (__QNX__)
+  || defined (__FreeBSD__) || defined(__DragonFly__) || defined (__QNX__) \
+  || defined (__NetBSD__)
 #define HAS_TARGET_WCHAR_T
 #endif
 
@@ -3544,6 +3545,69 @@
   */
 }
 
+#if defined(__NetBSD__)
+/* It's 2021, and NetBSD still doesn't use symbol versioning in their
+ * libraries.  They mimic this by having header macros rename the function
+ * at compile time.  If we don't wrap the functions, the osinte specification
+ * for NetBSD would need to import e.g. __sigaltstack14 instead of sigaltstack.
+ * By wrapping, new versions won't break gnat.
+ */
+int
+__gnat_sigemptyset (sigset_t *set) {
+   return sigemptyset (set);
+}
+int
+__gnat_sigfillset (sigset_t *set) {
+   return sigfillset (set);
+}
+int
+__gnat_sigaddset (sigset_t *set, int signo) {
+   return sigaddset (set, signo);
+}
+int
+__gnat_sigdelset (sigset_t *set, int signo) {
+   return sigdelset (set, signo);
+}
+int
+__gnat_sigismember (sigset_t *set, int signo) {
+   return sigismember (set, signo);
+}
+int
+__gnat_sigaltstack (const stack_t *ss, stack_t *oss) {
+   return sigaltstack (ss, oss);
+}
+int
+__gnat_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) {
+   return sigaction (sig, act, oact);
+}
+int
+__gnat_clock_getres (clockid_t clock_id, struct timespec *res) {
+   return clock_getres (clock_id, res);
+}
+int
+__gnat_clock_gettime (clockid_t clock_id, struct timespec *tp) {
+   return clock_gettime (clock_id, tp);
+}
+#endif
+int
+__gnat_nanosleep (const struct timespec *rqtp, struct timespec *rmtp) {
+   return nanosleep (rqtp, rmtp);
+}
+int
+__gnat_gettimeofday (struct timeval * tp, struct timezone * tzp) {
+   return gettimeofday (tp, tzp);
+}
+
+int
+__gnat_select(int nfds, fd_set * readfds, fd_set * writefds,
+              fd_set * exceptfds, struct timeval * timeout) {
+   return select (nfds, readfds, writefds, exceptfds, timeout);
+}
+int
+__gnat_socket (int domain, int type, int protocol) {
+   return socket (domain, type, protocol);
+}
+
 #ifdef __cplusplus
 }
 #endif

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_adaint.h
$NetBSD: patch-gcc_ada_adaint.h,v 1.1 2022/03/13 08:34:04 nia Exp $

Due to the lack of symbol versioning in NetBSD, some functions need
to be exported from C to be used correctly. This patch addresses
that issue and makes sure that other systems also work correclty.

--- gcc/ada/adaint.h.orig	2021-10-09 19:21:39.117755578 +0200
+++ gcc/ada/adaint.h	2021-10-09 19:02:38.871872061 +0200
@@ -345,6 +345,28 @@
 
 extern const void * __gnat_get_executable_load_address  (void);
 
+#if defined(__NetBSD__)
+#include <signal.h>
+extern int    __gnat_sigemptyset (sigset_t *);
+extern int    __gnat_sigfillset  (sigset_t *);
+extern int    __gnat_sigaddset   (sigset_t *, int);
+extern int    __gnat_sigdelset   (sigset_t *, int);
+extern int    __gnat_sigismember (sigset_t *, int);
+extern int    __gnat_sigaltstack (const stack_t *, stack_t *);
+extern int    __gnat_sigaction   (int, const struct sigaction *, struct sigaction *);
+#endif
+#include <time.h>
+extern int    __gnat_nanosleep     (const struct timespec *, struct timespec *);
+extern int    __gnat_gettimeofday  (struct timeval *, struct timezone *);
+#include <sys/select.h>
+extern int    __gnat_select        (int, fd_set *, fd_set *, fd_set *, struct timeval *);
+#include <sys/socket.h>
+extern int    __gnat_socket        (int, int, int);
+#if defined(__NetBSD__)
+extern int    __gnat_clock_getres  (clockid_t, struct timespec *);
+extern int    __gnat_clock_gettime (clockid_t, struct timespec *);
+#endif
+
 #ifdef __cplusplus
 }
 #endif

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_cstreams.c
$NetBSD: patch-gcc_ada_cstreams.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Add missing defines

--- gcc/ada/cstreams.c.orig	2021-08-28 18:42:21.323680378 +0000
+++ gcc/ada/cstreams.c	2021-08-28 18:43:48.045445919 +0000
@@ -188,7 +188,8 @@
 	  *p = '\\';
     }
 
-#elif defined (__FreeBSD__) || defined (__DragonFly__) || defined (__OpenBSD__)
+#elif defined (__FreeBSD__) || defined (__DragonFly__) \
+  || defined (__OpenBSD__) || defined (__NetBSD__)
 
   /* Use realpath function which resolves links and references to . and ..
      on those Unix systems that support it. Note that GNU/Linux provides it but
@@ -270,7 +271,7 @@
 }
 
 #elif defined (__linux__) || defined (__sun__) || defined (__FreeBSD__) \
-  || defined (__APPLE__)
+  || defined (__APPLE__) || defined (__NetBSD__)
 /* section for platforms having ftello/fseeko */
 
 __int64

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-osinte____netbsd.adb
$NetBSD: patch-gcc_ada_libgnarl_s-osinte____netbsd.adb,v 1.1 2022/03/13 08:34:04 nia Exp $

Add NetBSD interface.

--- gcc/ada/libgnarl/s-osinte__netbsd.adb.orig	2021-10-08 11:29:30.470090202 +0200
+++ gcc/ada/libgnarl/s-osinte__netbsd.adb	2021-10-08 11:29:30.472274837 +0200
@@ -0,0 +1,140 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+--                                                                          --
+--                   S Y S T E M . O S _ I N T E R F A C E                  --
+--                                                                          --
+--                                   B o d y                                --
+--                                                                          --
+--          Copyright (C) 1991-2015, Free Software Foundation, Inc.         --
+--                                                                          --
+-- GNARL is free software; you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNARL was developed by the GNARL team at Florida State University. It is --
+-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+-- State University (http://www.gnat.com).                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This is the NetBSD THREADS version of this package
+
+with Interfaces.C; use Interfaces.C;
+
+package body System.OS_Interface is
+
+   -----------
+   -- Errno --
+   -----------
+
+   function Errno return int is
+      type int_ptr is access all int;
+
+      function internal_errno return int_ptr;
+      pragma Import (C, internal_errno, "__errno");
+
+   begin
+      return (internal_errno.all);
+   end Errno;
+
+   --------------------
+   -- Get_Stack_Base --
+   --------------------
+
+   function Get_Stack_Base (thread : pthread_t) return Address is
+      pragma Unreferenced (thread);
+   begin
+      return Null_Address;
+   end Get_Stack_Base;
+
+   ------------------
+   -- pthread_init --
+   ------------------
+
+   procedure pthread_init is
+   begin
+      null;
+   end pthread_init;
+
+   -----------------------------------
+   -- pthread_mutexattr_setprotocol --
+   -----------------------------------
+
+   function pthread_mutexattr_setprotocol
+     (attr     : access pthread_mutexattr_t;
+      protocol : int) return int is
+      pragma Unreferenced (attr, protocol);
+   begin
+      return 0;
+   end pthread_mutexattr_setprotocol;
+
+   --------------------------------------
+   -- pthread_mutexattr_setprioceiling --
+   --------------------------------------
+
+   function pthread_mutexattr_setprioceiling
+     (attr     : access pthread_mutexattr_t;
+      prioceiling : int) return int is
+      pragma Unreferenced (attr, prioceiling);
+   begin
+      return 0;
+   end pthread_mutexattr_setprioceiling;
+
+   -----------------
+   -- To_Duration --
+   -----------------
+
+   function To_Duration (TS : timespec) return Duration is
+   begin
+      return Duration (TS.ts_sec) + Duration (TS.ts_nsec) / 10#1#E9;
+   end To_Duration;
+
+   ------------------------
+   -- To_Target_Priority --
+   ------------------------
+
+   function To_Target_Priority
+     (Prio : System.Any_Priority) return Interfaces.C.int
+   is
+   begin
+      return Interfaces.C.int (Prio);
+   end To_Target_Priority;
+
+   -----------------
+   -- To_Timespec --
+   -----------------
+
+   function To_Timespec (D : Duration) return timespec is
+      S : time_t;
+      F : Duration;
+
+   begin
+      S := time_t (Long_Long_Integer (D));
+      F := D - Duration (S);
+
+      --  If F has negative value due to a round-up, adjust for positive F
+      --  value.
+
+      if F < 0.0 then
+         S := S - 1;
+         F := F + 1.0;
+      end if;
+
+      return timespec'(ts_sec => S,
+                       ts_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+   end To_Timespec;
+
+end System.OS_Interface;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-osinte____netbsd.ads
$NetBSD: patch-gcc_ada_libgnarl_s-osinte____netbsd.ads,v 1.1 2022/03/13 08:34:04 nia Exp $

Add NetBSD interface.

--- gcc/ada/libgnarl/s-osinte__netbsd.ads.orig	2021-10-08 11:29:30.503927461 +0200
+++ gcc/ada/libgnarl/s-osinte__netbsd.ads	2021-10-09 18:31:14.947869872 +0200
@@ -0,0 +1,663 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                  GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                --
+--                                                                          --
+--                   S Y S T E M . O S _ I N T E R F A C E                  --
+--                                                                          --
+--                                   S p e c                                --
+--                                                                          --
+--             Copyright (C) 1991-1994, Florida State University            --
+--          Copyright (C) 1995-2015, Free Software Foundation, Inc.         --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNARL was developed by the GNARL team at Florida State University. It is --
+-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+-- State University (http://www.gnat.com).                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This is the NetBSD PTHREADS version of this package.
+
+--  This package encapsulates all direct interfaces to OS services
+--  that are needed by the tasking run-time (libgnarl).
+
+--  PLEASE DO NOT add any with-clauses to this package or remove the pragma
+--  Preelaborate. This package is designed to be a bottom-level (leaf) package.
+
+with Ada.Unchecked_Conversion;
+
+with Interfaces.C;
+with System.OS_Constants;
+
+package System.OS_Interface is
+   pragma Preelaborate;
+
+   pragma Linker_Options ("-pthread");
+
+   subtype int            is Interfaces.C.int;
+   subtype short          is Interfaces.C.short;
+   subtype long           is Interfaces.C.long;
+   subtype unsigned       is Interfaces.C.unsigned;
+   subtype unsigned_short is Interfaces.C.unsigned_short;
+   subtype unsigned_long  is Interfaces.C.unsigned_long;
+   subtype unsigned_char  is Interfaces.C.unsigned_char;
+   subtype plain_char     is Interfaces.C.plain_char;
+   subtype size_t         is Interfaces.C.size_t;
+   subtype char_array     is Interfaces.C.char_array;
+   subtype int64          is Interfaces.Integer_64;
+
+   -----------
+   -- Errno --
+   -----------
+
+   function Errno return int;
+   pragma Inline (Errno);
+
+   EAGAIN    : constant := 35;
+   EINTR     : constant := 4;
+   EINVAL    : constant := 22;
+   ENOMEM    : constant := 12;
+   ETIMEDOUT : constant := 60;
+
+   -------------
+   -- Signals --
+   -------------
+
+   Max_Interrupt : constant := 31;
+   type Signal is new int range 0 .. Max_Interrupt;
+   for Signal'Size use int'Size;
+
+   SIGHUP     : constant := 1; --  hangup
+   SIGINT     : constant := 2; --  interrupt (rubout)
+   SIGQUIT    : constant := 3; --  quit (ASCD FS)
+   SIGILL     : constant := 4; --  illegal instruction (not reset)
+   SIGTRAP    : constant := 5; --  trace trap (not reset)
+   SIGIOT     : constant := 6; --  IOT instruction
+   SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
+   SIGEMT     : constant := 7; --  EMT instruction
+   SIGFPE     : constant := 8; --  floating point exception
+   SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
+   SIGBUS     : constant := 10; --  bus error
+   SIGSEGV    : constant := 11; --  segmentation violation
+   SIGSYS     : constant := 12; --  bad argument to system call
+   SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
+   SIGALRM    : constant := 14; --  alarm clock
+   SIGTERM    : constant := 15; --  software termination signal from kill
+   SIGURG     : constant := 16; --  urgent condition on IO channel
+   SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
+   SIGTSTP    : constant := 18; --  user stop requested from tty
+   SIGCONT    : constant := 19; --  stopped process has been continued
+   SIGCLD     : constant := 20; --  alias for SIGCHLD
+   SIGCHLD    : constant := 20; --  child status change
+   SIGTTIN    : constant := 21; --  background tty read attempted
+   SIGTTOU    : constant := 22; --  background tty write attempted
+   SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
+   SIGXCPU    : constant := 24; --  CPU time limit exceeded
+   SIGXFSZ    : constant := 25; --  filesize limit exceeded
+   SIGVTALRM  : constant := 26; --  virtual timer expired
+   SIGPROF    : constant := 27; --  profiling time alarm
+   SIGWINCH   : constant := 28; --  window size change
+   SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
+   SIGUSR1    : constant := 30; --  user defined signal 1
+   SIGUSR2    : constant := 31; --  user defined signal 2
+
+   SIGADAABORT : constant := SIGABRT;
+   --  Change this if you want to use another signal for task abort.
+   --  SIGTERM might be a good one.
+
+   type Signal_Set is array (Natural range <>) of Signal;
+
+   --  Interrupts that must be unmasked at all times.  NetBSD
+   --  pthreads will not allow an application to mask out any
+   --  interrupt needed by the threads library.
+   Unmasked : constant Signal_Set :=
+     (SIGTRAP, SIGBUS, SIGTTIN, SIGTTOU, SIGTSTP);
+
+   --  NetBSD will uses SIGPROF for timing.  Do not allow a
+   --  handler to attach to this signal.
+   Reserved : constant Signal_Set := (0 .. 0 => SIGPROF);
+
+   type sigset_t is private;
+
+   function sigaddset
+     (set : access sigset_t;
+      sig : Signal) return int;
+   pragma Import (C, sigaddset, "__gnat_sigaddset");
+
+   function sigdelset
+     (set : access sigset_t;
+      sig : Signal) return int;
+   pragma Import (C, sigdelset, "__gnat_sigdelset");
+
+   function sigfillset (set : access sigset_t) return int;
+   pragma Import (C, sigfillset, "__gnat_sigfillset");
+
+   function sigismember
+     (set : access sigset_t;
+      sig : Signal) return int;
+   pragma Import (C, sigismember, "__gnat_sigismember");
+
+   function sigemptyset (set : access sigset_t) return int;
+   pragma Import (C, sigemptyset, "__gnat_sigemptyset");
+
+   --  sigcontext is architecture dependent, so define it private
+   type struct_sigcontext is private;
+
+   --  ??? This is the current definition of struct_sigaction
+   --  as of 2021/10/02 in signal.h
+   type old_struct_sigaction is record
+      sa_handler : System.Address;
+      sa_mask    : sigset_t;
+      sa_flags   : int;
+   end record;
+   pragma Convention (C, old_struct_sigaction);
+
+   --  This is an incorrect struct as of 2021/10/02
+   type new_struct_sigaction is record
+      sa_handler : System.Address;
+      sa_flags   : int;
+      sa_mask    : sigset_t;
+   end record;
+   pragma Convention (C, new_struct_sigaction);
+
+   --  Corrected to use old_struct_sigaction 2021/10/02
+   subtype struct_sigaction is old_struct_sigaction;
+   type struct_sigaction_ptr is access all struct_sigaction;
+
+   SIG_BLOCK   : constant := 1;
+   SIG_UNBLOCK : constant := 2;
+   SIG_SETMASK : constant := 3;
+
+   SIG_DFL  : constant := 0;
+   SIG_IGN  : constant := 1;
+   --  Added for completeness
+   SIG_ERR  : constant := -1;
+   SIG_HOLD : constant := 3;
+
+   SA_SIGINFO : constant := 16#0040#;
+   SA_ONSTACK : constant := 16#0001#;
+
+   function sigaction
+     (sig  : Signal;
+      act  : struct_sigaction_ptr;
+      oact : struct_sigaction_ptr) return int;
+   pragma Import (C, sigaction, "__gnat_sigaction");
+
+   ----------
+   -- Time --
+   ----------
+
+   Time_Slice_Supported : constant Boolean := True;
+   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+
+   type timespec is private;
+
+   function nanosleep (rqtp, rmtp : access timespec) return int;
+   pragma Import (C, nanosleep, "__gnat_nanosleep");
+
+   type clockid_t is new unsigned;
+
+   function clock_getres
+     (clock_id : clockid_t;
+      res      : access timespec) return int;
+   pragma Import (C, clock_getres, "__gnat_clock_getres");
+
+   function clock_gettime
+     (clock_id : clockid_t;
+      tp       : access timespec)
+      return int;
+   pragma Import (C, clock_gettime, "__gnat_clock_gettime");
+
+   function To_Duration (TS : timespec) return Duration;
+   pragma Inline (To_Duration);
+
+   function To_Timespec (D : Duration) return timespec;
+   pragma Inline (To_Timespec);
+
+   type struct_timezone is record
+      tz_minuteswest : int;
+      tz_dsttime     : int;
+   end record;
+   pragma Convention (C, struct_timezone);
+
+   -------------------------
+   -- Priority Scheduling --
+   -------------------------
+
+   SCHED_OTHER : constant := 0;
+   SCHED_FIFO  : constant := 1;
+   SCHED_RR    : constant := 2;
+
+   function To_Target_Priority
+     (Prio : System.Any_Priority) return Interfaces.C.int;
+   --  Maps System.Any_Priority to a POSIX priority
+
+   -------------
+   -- Process --
+   -------------
+
+   type pid_t is private;
+
+   function kill (pid : pid_t; sig : Signal) return int;
+   pragma Import (C, kill, "__gnat_kill");
+
+   function getpid return pid_t;
+   pragma Import (C, getpid, "getpid");
+
+   ---------
+   -- LWP --
+   ---------
+
+   function lwp_self return System.Address;
+   --  lwp_self does not exist on this thread library, revert to pthread_self
+   --  which is the closest approximation (with getpid). This function is
+   --  needed to share s-taprop.adb across POSIX-like targets.
+   pragma Import (C, lwp_self, "pthread_self");
+
+   -------------
+   -- Threads --
+   -------------
+
+   type Thread_Body is access
+     function (arg : System.Address) return System.Address;
+   pragma Convention (C, Thread_Body);
+
+   function Thread_Body_Access is new
+     Ada.Unchecked_Conversion (System.Address, Thread_Body);
+
+   type pthread_t           is private;
+   subtype Thread_Id        is pthread_t;
+
+   type pthread_mutex_t      is limited private;
+   type pthread_cond_t       is limited private;
+   type pthread_attr_t       is limited private;
+   type pthread_mutexattr_t  is limited private;
+   type pthread_condattr_t   is limited private;
+   type pthread_rwlock_t     is limited private;
+   type pthread_rwlockattr_t is limited private;
+   type pthread_key_t        is private;
+
+   PTHREAD_CREATE_DETACHED : constant := 1;
+   PTHREAD_CREATE_JOINABLE : constant := 0;
+
+   PTHREAD_SCOPE_PROCESS : constant := 0;
+   PTHREAD_SCOPE_SYSTEM  : constant := 1;
+
+   -----------
+   -- Stack --
+   -----------
+
+   type stack_t is record
+      ss_sp    : System.Address;
+      ss_size  : size_t;
+      ss_flags : int;
+   end record;
+   pragma Convention (C, stack_t);
+
+   function sigaltstack
+     (ss  : not null access stack_t;
+      oss : access stack_t) return int;
+   pragma Import (C, sigaltstack, "__gnat_sigaltstack");
+
+   Alternate_Stack : aliased System.Address;
+   --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+
+   Alternate_Stack_Size : constant := 0;
+   --  No alternate signal stack is used on this platform
+
+   Stack_Base_Available : constant Boolean := False;
+   --  Indicates whether the stack base is available on this target. This
+   --  allows us to share s-osinte.adb between all the FSU run time. Note that
+   --  this value can only be true if pthread_t has a complete definition that
+   --  corresponds exactly to the C header files.
+
+   function Get_Stack_Base (thread : pthread_t) return Address;
+   pragma Inline (Get_Stack_Base);
+   --  returns the stack base of the specified thread. Only call this function
+   --  when Stack_Base_Available is True.
+
+   function Get_Page_Size return int;
+   pragma Import (C, Get_Page_Size, "_getpagesize");
+   --  Returns the size of a page
+
+   PROT_NONE  : constant := 0;
+   PROT_READ  : constant := 1;
+   PROT_WRITE : constant := 2;
+   PROT_EXEC  : constant := 4;
+   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+   PROT_ON    : constant := PROT_NONE;
+   PROT_OFF   : constant := PROT_ALL;
+
+   function mprotect (addr : Address; len : size_t; prot : int) return int;
+   pragma Import (C, mprotect);
+
+   ---------------------------------------
+   -- Nonstandard Thread Initialization --
+   ---------------------------------------
+
+   --  FSU_THREADS requires pthread_init, which is nonstandard and this should
+   --  be invoked during the elaboration of s-taprop.adb.
+
+   --  NetBSD does not require this so we provide an empty Ada body
+
+   procedure pthread_init;
+
+   -------------------------
+   -- POSIX.1c  Section 3 --
+   -------------------------
+
+   function sigwait
+     (set : access sigset_t;
+      sig : access Signal) return int;
+   pragma Import (C, sigwait, "sigwait");
+
+   function pthread_kill
+     (thread : pthread_t;
+      sig    : Signal) return int;
+   pragma Import (C, pthread_kill, "pthread_kill");
+
+   function pthread_sigmask
+     (how  : int;
+      set  : access sigset_t;
+      oset : access sigset_t) return int;
+   pragma Import (C, pthread_sigmask, "pthread_sigmask");
+
+   --------------------------
+   -- POSIX.1c  Section 11 --
+   --------------------------
+
+   function pthread_mutexattr_init
+     (attr : access pthread_mutexattr_t) return int;
+   pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
+
+   function pthread_mutexattr_destroy
+     (attr : access pthread_mutexattr_t) return int;
+   pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
+
+   function pthread_mutex_init
+     (mutex : access pthread_mutex_t;
+      attr  : access pthread_mutexattr_t) return int;
+   pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
+
+   function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
+   pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
+
+   function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
+   pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
+
+   function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
+   pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
+
+   function pthread_condattr_init
+     (attr : access pthread_condattr_t) return int;
+   pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
+
+   function pthread_condattr_destroy
+     (attr : access pthread_condattr_t) return int;
+   pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
+
+   function pthread_cond_init
+     (cond : access pthread_cond_t;
+      attr : access pthread_condattr_t) return int;
+   pragma Import (C, pthread_cond_init, "pthread_cond_init");
+
+   function pthread_cond_destroy (cond : access pthread_cond_t) return int;
+   pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
+
+   function pthread_cond_signal (cond : access pthread_cond_t) return int;
+   pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
+
+   function pthread_cond_wait
+     (cond  : access pthread_cond_t;
+      mutex : access pthread_mutex_t) return int;
+   pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
+
+   function pthread_cond_timedwait
+     (cond    : access pthread_cond_t;
+      mutex   : access pthread_mutex_t;
+      abstime : access timespec) return int;
+   pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
+
+   Relative_Timed_Wait : constant Boolean := False;
+   --  pthread_cond_timedwait requires an absolute delay time
+
+   --------------------------
+   -- POSIX.1c  Section 13 --
+   --------------------------
+
+   PTHREAD_PRIO_NONE    : constant := 0;
+   PTHREAD_PRIO_INHERIT : constant := 1;
+   PTHREAD_PRIO_PROTECT : constant := 2;
+
+   function pthread_mutexattr_setprotocol
+     (attr     : access pthread_mutexattr_t;
+      protocol : int) return int;
+
+   function pthread_mutexattr_setprioceiling
+     (attr     : access pthread_mutexattr_t;
+      prioceiling : int) return int;
+
+   type struct_sched_param is record
+      sched_priority : int;
+   end record;
+   pragma Convention (C, struct_sched_param);
+
+   function pthread_getschedparam
+     (thread : pthread_t;
+      policy : access int;
+      param  : access struct_sched_param) return int;
+   pragma Import (C, pthread_getschedparam, "pthread_getschedparam");
+
+   function pthread_setschedparam
+     (thread : pthread_t;
+      policy : int;
+      param  : access struct_sched_param) return int;
+   pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+
+   function pthread_attr_setscope
+     (attr            : access pthread_attr_t;
+      contentionscope : int) return int;
+   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+
+   function pthread_attr_getscope
+     (attr            : access pthread_attr_t;
+      contentionscope : access int) return int;
+   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+
+   function pthread_attr_setinheritsched
+     (attr            : access pthread_attr_t;
+      inheritsched : int) return int;
+   pragma Import
+     (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+
+   function pthread_attr_getinheritsched
+     (attr         : access pthread_attr_t;
+      inheritsched : access int) return int;
+   pragma Import
+     (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
+
+   function pthread_attr_setschedpolicy
+     (attr   : access pthread_attr_t;
+      policy : int) return int;
+   pragma Import (C, pthread_attr_setschedpolicy,
+     "pthread_attr_setschedpolicy");
+
+   function pthread_attr_getschedpolicy
+     (attr   : access pthread_attr_t;
+      policy : access int) return int;
+   pragma Import (C, pthread_attr_getschedpolicy,
+     "pthread_attr_getschedpolicy");
+
+   function pthread_attr_setschedparam
+     (attr        : access pthread_attr_t;
+      sched_param : int) return int;
+   pragma Import (C, pthread_attr_setschedparam, "pthread_attr_setschedparam");
+
+   function pthread_attr_getschedparam
+     (attr        : access pthread_attr_t;
+      sched_param : access int) return int;
+   pragma Import (C, pthread_attr_getschedparam, "pthread_attr_getschedparam");
+
+   function sched_yield return int;
+   pragma Import (C, sched_yield, "sched_yield");
+
+   --------------------------
+   -- P1003.1c  Section 16 --
+   --------------------------
+
+   function pthread_attr_init (attributes : access pthread_attr_t) return int;
+   pragma Import (C, pthread_attr_init, "pthread_attr_init");
+
+   function pthread_attr_destroy
+     (attributes : access pthread_attr_t) return int;
+   pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
+
+   function pthread_attr_setdetachstate
+     (attr        : access pthread_attr_t;
+      detachstate : int) return int;
+   pragma Import
+     (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
+
+   function pthread_attr_getdetachstate
+     (attr        : access pthread_attr_t;
+      detachstate : access int) return int;
+   pragma Import
+     (C, pthread_attr_getdetachstate, "pthread_attr_getdetachstate");
+
+   function pthread_attr_getstacksize
+     (attr      : access pthread_attr_t;
+      stacksize : access size_t) return int;
+   pragma Import
+     (C, pthread_attr_getstacksize, "pthread_attr_getstacksize");
+
+   function pthread_attr_setstacksize
+     (attr      : access pthread_attr_t;
+      stacksize : size_t) return int;
+   pragma Import
+     (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
+
+   function pthread_create
+     (thread        : access pthread_t;
+      attributes    : access pthread_attr_t;
+      start_routine : Thread_Body;
+      arg           : System.Address) return int;
+   pragma Import (C, pthread_create, "pthread_create");
+
+   function pthread_detach (thread : pthread_t) return int;
+   pragma Import (C, pthread_detach, "pthread_detach");
+
+   procedure pthread_exit (status : System.Address);
+   pragma Import (C, pthread_exit, "pthread_exit");
+
+   function pthread_self return pthread_t;
+   pragma Import (C, pthread_self, "pthread_self");
+
+   --------------------------
+   -- POSIX.1c  Section 17 --
+   --------------------------
+
+   function pthread_setspecific
+     (key   : pthread_key_t;
+      value : System.Address) return  int;
+   pragma Import (C, pthread_setspecific, "pthread_setspecific");
+
+   function pthread_getspecific (key : pthread_key_t) return System.Address;
+   pragma Import (C, pthread_getspecific, "pthread_getspecific");
+
+   type destructor_pointer is access procedure (arg : System.Address);
+   pragma Convention (C, destructor_pointer);
+
+   function pthread_key_create
+     (key        : access pthread_key_t;
+      destructor : destructor_pointer) return int;
+   pragma Import (C, pthread_key_create, "pthread_key_create");
+
+private
+
+   type sigset_t is array (1 .. 4) of unsigned;
+
+   --  In NetBSD the component sa_handler turns out to
+   --  be one a union type, and the selector is a macro:
+   --  #define sa_handler __sigaction_u._handler
+   --  #define sa_sigaction __sigaction_u._sigaction
+
+   --  Should we add a signal_context type here ???
+   --  How could it be done independent of the CPU architecture ???
+   --  sigcontext type is opaque, so it is architecturally neutral.
+   --  It is always passed as an access type, so define it as an empty record
+   --  since the contents are not used anywhere.
+
+   type struct_sigcontext is null record;
+   pragma Convention (C, struct_sigcontext);
+
+   type pid_t is new int;
+
+   type time_t is new int64;
+
+   type timespec is record
+      ts_sec  : time_t;
+      ts_nsec : long;
+   end record;
+   pragma Convention (C, timespec);
+
+   type pthread_t     is new System.Address;
+   type pthread_key_t is new int;
+
+   type pthread_attr_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_ATTR_SIZE);
+   end record;
+   pragma Convention (C, pthread_attr_t);
+   for pthread_attr_t'Alignment use size_t'Alignment;
+
+   type pthread_mutex_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_MUTEX_SIZE);
+   end record;
+   pragma Convention (C, pthread_mutex_t);
+   for pthread_mutex_t'Alignment use size_t'Alignment;
+
+   type pthread_mutexattr_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+   end record;
+   pragma Convention (C, pthread_mutexattr_t);
+   for pthread_mutexattr_t'Alignment use size_t'Alignment;
+
+   type pthread_cond_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_COND_SIZE);
+   end record;
+   pragma Convention (C, pthread_cond_t);
+   for pthread_cond_t'Alignment use size_t'Alignment;
+
+   type pthread_condattr_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_CONDATTR_SIZE);
+   end record;
+   pragma Convention (C, pthread_condattr_t);
+   for pthread_condattr_t'Alignment use size_t'Alignment;
+
+   type pthread_rwlock_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_RWLOCK_SIZE);
+   end record;
+   pragma Convention (C, pthread_rwlock_t);
+   for pthread_rwlock_t'Alignment use size_t'Alignment;
+
+   type pthread_rwlockattr_t is record
+      Data : char_array (1 .. System.OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
+   end record;
+   pragma Convention (C, pthread_rwlockattr_t);
+   for pthread_rwlockattr_t'Alignment use size_t'Alignment;
+
+end System.OS_Interface;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnarl_s-taprop____posix.adb
$NetBSD: patch-gcc_ada_libgnarl_s-taprop____posix.adb,v 1.1 2022/03/13 08:34:04 nia Exp $

When using SCHED_OTHER, the minimum and maximum in NetBSD is -1.
In most other OSs it is 0. Change the behaviour to try to set the
params using the default priority, if that fails, use 0, otherwise
use -1. If none are valid, the tasking system will fail if assertions
are on.

--- gcc/ada/libgnarl/s-taprop__posix.adb.orig	2021-09-23 19:55:24.471842046 +0000
+++ gcc/ada/libgnarl/s-taprop__posix.adb	2021-09-23 20:01:31.689253592 +0000
@@ -654,6 +654,16 @@
       else
          Result := pthread_setschedparam
            (T.Common.LL.Thread, SCHED_OTHER, Param'Access);
+         if Result /= 0 then
+            Param.sched_priority := 0;
+            Result := pthread_setschedparam
+              (T.Common.LL.Thread, SCHED_OTHER, Param'Access);
+            if Result /= 0 then
+               Param.sched_priority := -1;
+               Result := pthread_setschedparam
+                 (T.Common.LL.Thread, SCHED_OTHER, Param'Access);
+            end if;
+         end if;
       end if;
 
       pragma Assert (Result = 0);

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_g-socthi.ads
$NetBSD: patch-gcc_ada_libgnat_g-socthi.ads,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix symbol to make it use the C processed one.

--- gcc/ada/libgnat/g-socthi.ads.orig	2021-10-09 18:09:40.607907149 +0200
+++ gcc/ada/libgnat/g-socthi.ads	2021-10-09 18:24:39.373733909 +0200
@@ -53,8 +53,6 @@
 
    package C renames Interfaces.C;
 
-   use type System.CRTL.ssize_t;
-
    function Socket_Errno return Integer renames GNAT.OS_Lib.Errno;
    --  Returns last socket error number
 
@@ -256,7 +254,7 @@
    pragma Import (C, C_Getsockname, "getsockname");
    pragma Import (C, C_Getsockopt, "getsockopt");
    pragma Import (C, C_Listen, "listen");
-   pragma Import (C, C_Select, "select");
+   pragma Import (C, C_Select, "__gnat_select");
    pragma Import (C, C_Setsockopt, "setsockopt");
    pragma Import (C, C_Shutdown, "shutdown");
    pragma Import (C, C_Socketpair, "socketpair");

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_g-socthi____bsd.adb
$NetBSD: patch-gcc_ada_libgnat_g-socthi____bsd.adb,v 1.1 2022/03/13 08:34:04 nia Exp $

Create a g-socthi package that is common to all *BSD systems.

--- /dev/null	2021-10-09 18:50:23.845256363 +0200
+++ gcc/ada/libgnat/g-socthi__bsd.adb	2021-10-09 18:07:08.069557825 +0200
@@ -0,0 +1,356 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                    G N A T . S O C K E T S . T H I N                     --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--                     Copyright (C) 2001-2018, AdaCore                     --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package provides a target dependent thin interface to the sockets
+--  layer for use by the GNAT.Sockets package (g-socket.ads). This package
+--  should not be directly with'ed by an applications program.
+
+--  This is the *BSD version which uses fcntl rather than ioctl
+--  The constant SCON.Thread_Blocking_IO is always true (for all platforms, not
+--  just *BSD), so this binding is significantly simpler than the standard
+--  one it replaces.
+
+with GNAT.OS_Lib; use GNAT.OS_Lib;
+
+with Interfaces.C; use Interfaces.C;
+
+package body GNAT.Sockets.Thin is
+
+   function Syscall_Accept
+     (S       : C.int;
+      Addr    : System.Address;
+      Addrlen : not null access C.int) return C.int;
+   pragma Import (C, Syscall_Accept, "accept");
+   --  The accept() function accepts a connection on a socket.  An incoming
+   --  connection is acknowledged and associated with an immediately created
+   --  socket.  The original socket is returned to the listening state.
+
+   function Syscall_Connect
+     (S       : C.int;
+      Name    : System.Address;
+      Namelen : C.int) return C.int;
+   pragma Import (C, Syscall_Connect, "connect");
+   --  The connect() system call initiates a connection on a socket.  If the
+   --  parameter S is of type SOCK_DGRAM then connect() permanently specifies
+   --  the peer to which datagrams are to be sent.  If S is type SOCK_STREAM
+   --  then connect() attempts to make a connection with another socket, which
+   --  is identified by the parameter Name.
+
+   function Syscall_Recv
+     (S     : C.int;
+      Msg   : System.Address;
+      Len   : C.int;
+      Flags : C.int) return C.int;
+   pragma Import (C, Syscall_Recv, "recv");
+   --  The recv() function receives a message from a socket.  The call can be
+   --  used on a connection mode socket or a bound, connectionless socket.  If
+   --  no messages are available at the socket, the recv() call waits for a
+   --  message to arrive unless the socket is non-blocking.  If a socket is
+   --  non-blocking, the call returns a -1 and ERRNO is set to EWOULDBLOCK.
+
+   function Syscall_Recvfrom
+     (S       : C.int;
+      Msg     : System.Address;
+      Len     : C.int;
+      Flags   : C.int;
+      From    : System.Address;
+      Fromlen : not null access C.int) return C.int;
+   pragma Import (C, Syscall_Recvfrom, "recvfrom");
+   --  The recvfrom() system call receives a message from a socket and captures
+   --  the address from which the data was sent.  It can be used to receive
+   --  data on an unconnected socket as well.  If no messages are available,
+   --  the call waits for a message to arrive on blocking sockets.  For
+   --  non-blocking sockets without messages, -1 is returned and ERRNO is set
+   --  to EAGAIN or EWOULDBLOCK.
+
+   function Syscall_Recvmsg
+     (S     : C.int;
+      Msg   : System.Address;
+      Flags : C.int) return System.CRTL.ssize_t;
+   pragma Import (C, Syscall_Recvmsg, "recvmsg");
+   --  The recvmsg call receives a message from a socket, and can be used to
+   --  receive data on an unconnected socket as well.  If no messages are
+   --  available, the call waits for a message to arrive on blocking sockets.
+   --  For non-blocking sockets without messages, -1 is returned and ERRNO is
+   --  set to EAGAIN or EWOULDBLOCK.
+
+   function Syscall_Sendmsg
+     (S     : C.int;
+      Msg   : System.Address;
+      Flags : C.int) return System.CRTL.ssize_t;
+   pragma Import (C, Syscall_Sendmsg, "sendmsg");
+   --  The sendmsg() function sends a message to a socket, and can be used with
+   --  unconnected sockets as well (the msg is ignored in this case).  The
+   --  function returns the number of bytes sent when successful, otherwise it
+   --  returns -1 and ERRNO is set (many possible values).
+
+   function Syscall_Sendto
+     (S     : C.int;
+      Msg   : System.Address;
+      Len   : C.int;
+      Flags : C.int;
+      To    : System.Address;
+      Tolen : C.int) return C.int;
+   pragma Import (C, Syscall_Sendto, "sendto");
+   --  The sendto() function only works for connected sockets and it initiates
+   --  the transmission of a message.  A successful call returns the numbers of
+   --  bytes sent, and a failure returns a -1 and ERRNO is set.
+
+   function Syscall_Socket
+     (Domain   : C.int;
+      Typ      : C.int;
+      Protocol : C.int) return C.int;
+   pragma Import (C, Syscall_Socket, "__gnat_socket");
+   --  The socket() function is used to create an unbound socket and returns a
+   --  file descriptor that can be used with other socket functions.  Upon
+   --  failure, a -1 is returned and ERRNO is set.
+
+   procedure Disable_SIGPIPE (S : C.int);
+   pragma Import (C, Disable_SIGPIPE, "__gnat_disable_sigpipe");
+
+   procedure Disable_All_SIGPIPEs;
+   pragma Import (C, Disable_All_SIGPIPEs, "__gnat_disable_all_sigpipes");
+   --  Sets the process to ignore all SIGPIPE signals on platforms that
+   --  don't support Disable_SIGPIPE for particular streams.
+
+   function C_Fcntl
+     (Fd  : C.int;
+      Cmd : C.int;
+      Val : C.int) return C.int;
+   pragma Import (C, C_Fcntl, "fcntl");
+   --  The ioctl of 64-bit DragonFlyBSD, OpenBSD, and NetBSD does not support
+   --  setting a socket in non-blocking mode.  fcntl must be used instead.
+
+   --------------
+   -- C_Accept --
+   --------------
+
+   function C_Accept
+     (S       : C.int;
+      Addr    : System.Address;
+      Addrlen : not null access C.int) return C.int
+   is
+      R : constant C.int := Syscall_Accept (S, Addr, Addrlen);
+   begin
+
+      Disable_SIGPIPE (R);
+      return R;
+   end C_Accept;
+
+   ---------------
+   -- C_Connect --
+   ---------------
+
+   function C_Connect
+     (S       : C.int;
+      Name    : System.Address;
+      Namelen : C.int) return C.int
+   is
+   begin
+      return Syscall_Connect (S, Name, Namelen);
+   end C_Connect;
+
+   ------------------
+   -- Socket_Ioctl --
+   ------------------
+
+   function Socket_Ioctl
+     (S   : C.int;
+      Req : SOSC.IOCTL_Req_T;
+      Arg : access C.int) return C.int
+   is
+   begin
+      if Req = SOSC.FIONBIO then
+         declare
+            use Interfaces;
+            flags    : constant Unsigned_32 :=
+                                Unsigned_32 (C_Fcntl (S, SOSC.F_GETFL, 0));
+            nonblock : constant Unsigned_32 := Unsigned_32 (SOSC.O_NDELAY);
+            enabled  : constant Boolean := Arg.all = 1;
+            newval   : C.int := C.int (flags);
+         begin
+            if enabled then
+               newval := C.int (flags or nonblock);
+            elsif (flags and nonblock) > 0 then
+               newval := C.int (flags - nonblock);
+            end if;
+            return C_Fcntl (Fd => S, Cmd => SOSC.F_SETFL, Val => newval);
+         end;
+      end if;
+
+      return C_Ioctl (S, Req, Arg);
+   end Socket_Ioctl;
+
+   ------------
+   -- C_Recv --
+   ------------
+
+   function C_Recv
+     (S     : C.int;
+      Msg   : System.Address;
+      Len   : C.int;
+      Flags : C.int) return C.int
+   is
+   begin
+      return Syscall_Recv (S, Msg, Len, Flags);
+   end C_Recv;
+
+   ----------------
+   -- C_Recvfrom --
+   ----------------
+
+   function C_Recvfrom
+     (S       : C.int;
+      Msg     : System.Address;
+      Len     : C.int;
+      Flags   : C.int;
+      From    : System.Address;
+      Fromlen : not null access C.int) return C.int
+   is
+   begin
+      return Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen);
+   end C_Recvfrom;
+
+   ---------------
+   -- C_Recvmsg --
+   ---------------
+
+   function C_Recvmsg
+     (S     : C.int;
+      Msg   : System.Address;
+      Flags : C.int) return System.CRTL.ssize_t
+   is
+   begin
+      return Syscall_Recvmsg (S, Msg, Flags);
+   end C_Recvmsg;
+
+   ---------------
+   -- C_Sendmsg --
+   ---------------
+
+   function C_Sendmsg
+     (S     : C.int;
+      Msg   : System.Address;
+      Flags : C.int) return System.CRTL.ssize_t
+   is
+   begin
+      return Syscall_Sendmsg (S, Msg, Flags);
+   end C_Sendmsg;
+
+   --------------
+   -- C_Sendto --
+   --------------
+
+   function C_Sendto
+     (S     : C.int;
+      Msg   : System.Address;
+      Len   : C.int;
+      Flags : C.int;
+      To    : System.Address;
+      Tolen : C.int) return C.int
+   is
+   begin
+      return Syscall_Sendto (S, Msg, Len, Flags, To, Tolen);
+   end C_Sendto;
+
+   --------------
+   -- C_Socket --
+   --------------
+
+   function C_Socket
+     (Domain   : C.int;
+      Typ      : C.int;
+      Protocol : C.int) return C.int
+   is
+      R : constant C.int := Syscall_Socket (Domain, Typ, Protocol);
+   begin
+      Disable_SIGPIPE (R);
+      return R;
+   end C_Socket;
+
+   --------------
+   -- Finalize --
+   --------------
+
+   procedure Finalize is
+   begin
+      null;
+   end Finalize;
+
+   -------------------------
+   -- Host_Error_Messages --
+   -------------------------
+
+   package body Host_Error_Messages is separate;
+
+   ----------------
+   -- Initialize --
+   ----------------
+
+   procedure Initialize is
+   begin
+      Disable_All_SIGPIPEs;
+   end Initialize;
+
+   --------------------
+   -- Signalling_Fds --
+   --------------------
+
+   package body Signalling_Fds is
+
+      --  In this default implementation, we use a C version of these
+      --  subprograms provided by socket.c.
+
+      function C_Create (Fds : not null access Fd_Pair) return C.int;
+      function C_Read (Rsig : C.int) return C.int;
+      function C_Write (Wsig : C.int) return C.int;
+      procedure C_Close (Sig : C.int);
+
+      pragma Import (C, C_Create, "__gnat_create_signalling_fds");
+      pragma Import (C, C_Read,   "__gnat_read_signalling_fd");
+      pragma Import (C, C_Write,  "__gnat_write_signalling_fd");
+      pragma Import (C, C_Close,  "__gnat_close_signalling_fd");
+
+      function Create
+        (Fds : not null access Fd_Pair) return C.int renames C_Create;
+      function Read (Rsig : C.int) return C.int renames C_Read;
+      function Write (Wsig : C.int) return C.int renames C_Write;
+      procedure Close (Sig : C.int) renames C_Close;
+
+   end Signalling_Fds;
+
+   --------------------------
+   -- Socket_Error_Message --
+   --------------------------
+
+   function Socket_Error_Message (Errno : Integer) return String is separate;
+
+end GNAT.Sockets.Thin;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_libgnat_s-osprim____posix.adb
$NetBSD: patch-gcc_ada_libgnat_s-osprim____posix.adb,v 1.1 2022/03/13 08:34:04 nia Exp $

Use C preprocessed symbols.

--- gcc/ada/libgnat/s-osprim__posix.adb.orig	2021-10-09 19:24:46.671910328 +0200
+++ gcc/ada/libgnat/s-osprim__posix.adb	2021-10-09 19:28:33.938823233 +0200
@@ -47,7 +47,7 @@
    pragma Convention (C, timespec);
 
    function nanosleep (rqtp, rmtp : not null access timespec) return Integer;
-   pragma Import (C, nanosleep, "nanosleep");
+   pragma Import (C, nanosleep, "__gnat_nanosleep");
 
    -----------
    -- Clock --
@@ -77,7 +77,7 @@
       function gettimeofday
         (Tv : access timeval;
          Tz : System.Address := System.Null_Address) return Integer;
-      pragma Import (C, gettimeofday, "gettimeofday");
+      pragma Import (C, gettimeofday, "__gnat_gettimeofday");
 
    begin
       --  The return codes for gettimeofday are as follows (from man pages):

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_s-oscons-tmplt.c
$NetBSD: patch-gcc_ada_s-oscons-tmplt.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Add NetBSD to some defined parts and bump the version of
_XOPEN_SOURCE and add _NETBSD_SOURCE.

--- gcc/ada/s-oscons-tmplt.c.orig	2021-04-08 13:56:27.913738795 +0200
+++ gcc/ada/s-oscons-tmplt.c	2021-10-09 18:26:07.630440685 +0200
@@ -86,16 +86,25 @@
  ** a number of non-POSIX but useful/required features.
  **/
 
-#if defined (__linux__) || defined (__ANDROID__)
+#if defined (__linux__) || defined (__ANDROID__) \
+  || defined (__FreeBSD__) || defined (__NetBSD__) \
+  || defined (__DragonFly__) || defined (__OpenBSD__)
 
 /* Define _XOPEN_SOURCE to get IOV_MAX */
+/* We use 520 since NetBSD does not include getaddrinfo flags with only 500 */
 # if !defined (_XOPEN_SOURCE)
-#  define _XOPEN_SOURCE 500
+#  define _XOPEN_SOURCE 520
 # endif
 
 /* Define _BSD_SOURCE to get CRTSCTS */
 # define _BSD_SOURCE
 
+/* NetBSD requires _NETBSD_SOURCE to be defined in order to include */
+/* NI_MAX{HOST,SERV} correctly */
+# if defined (__NetBSD__)
+#  define _NETBSD_SOURCE
+# endif
+
 #endif /* defined (__linux__) */
 
 /* Include gsocket.h before any system header so it can redefine FD_SETSIZE */
@@ -158,7 +167,8 @@
 #endif
 
 #if defined (__linux__) || defined (__ANDROID__) || defined (__QNX__) \
-  || defined (__rtems__)
+  || defined (__rtems__) || defined (__FreeBSD__) || defined (__NetBSD__) \
+  || defined (__OpenBSD__) || defined (__DragonFly__)
 # include <pthread.h>
 # include <signal.h>
 #endif
@@ -406,11 +416,14 @@
 
 */
 
-/* ioctl(2) requests are "int" in UNIX, but "unsigned long" on FreeBSD */
+/* ioctl(2) requests are "int" in UNIX, but "unsigned long" on FreeBSD
+   and NetBSD
+*/
 
-#if defined (__FreeBSD__) || defined (__DragonFly__)
+#if defined (__FreeBSD__) || defined (__DragonFly__) || defined (__NetBSD__) \
+  || defined (__OpenBSD__)
 # define CNI CNU
-# define IOCTL_Req_T "Interfaces.C.unsigned"
+# define IOCTL_Req_T "Interfaces.C.unsigned_long"
 #else
 # define CNI CND
 # define IOCTL_Req_T "Interfaces.C.int"
@@ -1020,7 +1033,8 @@
 
 */
 
-#if defined (__FreeBSD__) || defined (__linux__) || defined (__DragonFly__)
+#if defined (__FreeBSD__) || defined (__linux__) || defined (__DragonFly__) \
+  || defined (__NetBSD__) || defined (__OpenBSD__)
 # define PTY_Library "-lutil"
 #else
 # define PTY_Library ""
@@ -1833,7 +1847,8 @@
 
 #if defined(__linux__) || defined(__FreeBSD__) \
  || (defined(_AIX) && defined(_AIXVERSION_530)) \
- || defined(__DragonFly__) || defined(__QNX__)
+ || defined(__DragonFly__) || defined(__QNX__) \
+ || defined (__NetBSD__) || defined (__OpenBSD__)
 /** On these platforms use system provided monotonic clock instead of
  ** the default CLOCK_REALTIME. We then need to set up cond var attributes
  ** appropriately (see thread.c).
@@ -1855,7 +1870,9 @@
 #endif
 
 #if defined (__APPLE__) || defined (__linux__) || defined (__ANDROID__) \
-  || defined (__QNX__) || defined (__rtems__) || defined (DUMMY)
+  || defined (__QNX__) || defined (__rtems__) || defined (DUMMY) \
+  || defined (__FreeBSD__) || defined (__DragonFly__) \
+  || defined (__NetBSD__) || defined (__OpenBSD__)
 /*
 
    --  Sizes of pthread data types

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ada_sysdep.c
$NetBSD: patch-gcc_ada_sysdep.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Add NetBSD to some defined sections.

--- gcc/ada/sysdep.c.orig	2021-08-28 13:11:25.681014624 +0000
+++ gcc/ada/sysdep.c	2021-08-28 13:21:14.748176113 +0000
@@ -320,7 +320,7 @@
   || (defined (__svr4__) && defined (__i386__)) || defined (__Lynx__) \
   || defined (__CYGWIN__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
   || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
-  || defined (__QNX__)
+  || defined (__QNX__) || defined (__NetBSD__)
 
 # ifdef __MINGW32__
 #  if OLD_MINGW
@@ -373,7 +373,7 @@
     || defined (_AIX) || (defined (__svr4__) && defined (__i386__)) \
     || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
     || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
-    || defined (__QNX__)
+    || defined (__QNX__) || defined (__NetBSD__)
   char c;
   int nread;
   int good_one = 0;
@@ -394,7 +394,7 @@
     || defined (_AIX) || (defined (__svr4__) && defined (__i386__)) \
     || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
     || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
-    || defined (__QNX__)
+    || defined (__QNX__) || defined (__NetBSD__)
       eof_ch = termios_rec.c_cc[VEOF];
 
       /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
@@ -831,7 +831,7 @@
 
 #elif defined (__APPLE__) || defined (__FreeBSD__) || defined (__linux__) \
   || defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__) \
-  || defined (__DJGPP__) || defined (__QNX__)
+  || defined (__DJGPP__) || defined (__QNX__) || defined (__NetBSD__)
 {
   localtime_r (timer, &tp);
   *off = tp.tm_gmtoff;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config.gcc
$NetBSD: patch-gcc_config.gcc,v 1.1 2022/03/13 08:34:04 nia Exp $

Match what is in NetBSD src. Fixes at least aarch64eb, and
probably several others.

Allow builds on Darwin 21.

--- gcc/config.gcc.orig	2021-04-08 11:56:28.000000000 +0000
+++ gcc/config.gcc
@@ -462,6 +462,16 @@ m32r*-*-*)
         cpu_type=m32r
 	extra_options="${extra_options} g.opt"
         ;;
+m5200-*-*|m5407-*-*)
+	cpu_type=m68k
+	extra_headers=math-68881.h
+	extra_options="${extra_options} m68k/m68k-tables.opt"
+	;;
+m680[012]0-*-*)
+	cpu_type=m68k
+	extra_headers=math-68881.h
+	extra_options="${extra_options} m68k/m68k-tables.opt"
+	;;
 m68k-*-*)
 	extra_headers=math-68881.h
 	extra_options="${extra_options} m68k/m68k-tables.opt"
@@ -691,7 +701,7 @@ case ${target} in
       *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
         macos_min=`expr $darwin_maj - 4`
         ;;
-      *-*-darwin20*)
+      *-*-darwin2[01]*)
         # Darwin 20 corresponds to macOS 11.
         macos_maj=11
         def_ld64=609.0
@@ -877,6 +887,11 @@ case ${target} in
   case ${enable_threads} in
     "" | yes | posix) thread_file='posix' ;;
   esac
+  case ${target} in
+    arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
+      default_gnu_indirect_function=yes
+      ;;
+  esac
   nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
   default_use_cxa_atexit=yes
   target_has_targetdm=yes
@@ -1111,6 +1126,11 @@ aarch64*-*-netbsd*)
 	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
 	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+	case $target in
+	aarch64_be-*)
+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+		;;
+	esac
 	;;
 aarch64*-*-linux*)
 	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
@@ -1252,7 +1272,6 @@ arm*-*-freebsd*)                # ARM Fr
 	with_tls=${with_tls:-gnu}
 	;;
 arm*-*-netbsdelf*)
-	target_cpu_cname="strongarm"
 	tmake_file="${tmake_file} arm/t-arm"
 	tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
@@ -1261,26 +1280,33 @@ arm*-*-netbsdelf*)
 	esac
 	case ${target} in
 	arm*-*-netbsdelf-*eabi*)
-	    tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
-	    tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
+	    tm_file="${tm_file} arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
+	    # GCC 7 vs NetBSD/eabi -> avoid arm unwinder
+	    #tmake_file="$tmake_file arm/t-bpabi"
+	    tmake_file="$tmake_file arm/t-netbsdeabi"
+	    # The EABI requires the use of __cxa_atexit.
+	    default_use_cxa_atexit=yes
 	    ;;
 	*)
-	    tm_file="$tm_file arm/netbsd-elf.h"
+	    tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h"
+	    #tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
 	    tmake_file="$tmake_file arm/t-netbsd"
 	    ;;
 	esac
 	tm_file="${tm_file} arm/aout.h arm/arm.h"
 	case ${target} in
 	arm*-*-netbsdelf-*eabihf*)
-	    # Hard-float requires at least Arm v5te
-	    target_cpu_cname="arm10e"
 	    tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
 	    ;;
 	esac
 	case ${target} in
-	armv6*) target_cpu_cname="arm1176jzf-s";;
-	armv7*) target_cpu_cname="generic-armv7-a";;
+	armv4*) with_cpu=${with_cpu:-strongarm};;
+	armv6*) with_cpu=${with_cpu:-arm1176jzf-s};;
+	armv7*) with_cpu=${with_cpu:-cortex-a8};;
+	arm*eabihf*) with_cpu=${with_cpu:-arm10e};;
+	arm*) with_cpu=${with_cpu:-arm9e};;
 	esac
+	target_cpu_cname="$with_cpu"
 	;;
 arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
@@ -1928,6 +1954,7 @@ i[34567]86-*-netbsdelf*)
 	;;
 x86_64-*-netbsd*)
 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
+	tmake_file="${tmake_file} i386/t-netbsd64"
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
 	;;
 i[34567]86-*-openbsd*)
@@ -2250,6 +2277,16 @@ ia64*-*-elf*)
 		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
 	fi
 	;;
+ia64*-*-netbsd*)
+	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} ia64/sysv4.h ia64/netbsd.h"
+	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+	tmake_file="${tmake_file} ia64/t-ia64"
+	if test x$with_system_libunwind != xyes ; then
+		tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
+	fi
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+	;;
 ia64*-*-freebsd*)
 	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
@@ -2362,8 +2399,25 @@ m68k-*-elf* | fido-*-elf*)
 		;;
 	esac
 	;;
-m68k*-*-netbsdelf*)
+m68010-*-netbsdelf* | m68k-*-netbsdelf* | m5407-*-netbsdelf*)
 	default_m68k_cpu=68020
+	case ${target} in
+	m5407*)
+		with_arch=${with_arch:-cf}
+		target_cpu_default="mcf5475"
+#	        target="`echo ${target} | sed 's/m68kcf/m68k/'`"
+		;;
+	m68010*)
+		target_cpu_default="m68010"
+		tmake_file="${tmake_file} m68k/t-m68kelf m68k/t-m68010-netbsd"
+		default_m68k_cpu=68010
+		tmake_file="${tmake_file} m68k/t-floatlib"
+		;;
+	*)
+		with_arch=${with_arch:-m68k}
+		tmake_file="${tmake_file} m68k/t-floatlib"
+		;;
+	esac
 	default_cf_cpu=5475
 	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
@@ -2503,6 +2557,26 @@ riscv*-*-freebsd*)
 	# automatically detect that GAS supports it, yet we require it.
 	gcc_cv_initfini_array=yes
 	;;
+riscv*-*-netbsd*)			# NetBSD RISC-V
+	tm_file="elfos.h ${tm_file} ${nbsd_tm_file} riscv/netbsd.h"
+	tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
+	case ${target} in
+	  riscv32*) tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=0" ;;
+	  *) tmake_file="${tmake_file} riscv/t-netbsd64" ;;
+	esac
+	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+	tmake_file="${tmake_file} riscv/t-riscv"
+	gnu_ld=yes
+	gas=yes
+	gcc_cv_initfini_array=yes
+	;;
+mips64*-*-netbsd*)			# NetBSD/mips64, either endian.
+	target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_SOFT_FLOAT_ABI"
+	tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h mips/netbsd64.h"
+	tmake_file="${tmake_file} mips/t-netbsd64"
+	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+	;;
 mips*-*-netbsd*)			# NetBSD/mips, either endian.
 	target_cpu_default="MASK_ABICALLS"
 	tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
@@ -2918,11 +2992,24 @@ powerpc*-*-freebsd*)
 		;;
 	esac
 	;;
-powerpc-*-netbsd*)
-	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
+powerpc*-*-netbsd*)
+	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h"
+	case ${target} in
+	    powerpc64*)
+		tm_file="rs6000/biarch64.h ${tm_file}"
+		tm_file="${tm_file} rs6000/sysv4.h rs6000/default64.h rs6000/netbsd64.h"
+		tmake_file="${tmake_file} rs6000/t-netbsd64"
+		;;
+	    *)
+		tm_file="${tm_file} rs6000/sysv4.h rs6000/netbsd.h"
+		tmake_file="${tmake_file} rs6000/t-netbsd"
+		;;
+	esac
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
-	tmake_file="${tmake_file} rs6000/t-netbsd"
-	extra_options="${extra_options} rs6000/sysv4.opt"
+	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
+	if test x${enable_secureplt} != xno; then
+	    tm_file="rs6000/secureplt.h ${tm_file}"
+	fi
 	;;
 powerpc-*-eabisimaltivec*)
 	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
@@ -3394,9 +3481,11 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
 sparc64-*-netbsd*)
 	tm_file="sparc/biarch64.h ${tm_file}"
 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
+	tm_file="${tm_file} sparc/default64.h"
 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
 	extra_options="${extra_options} sparc/long-double-switch.opt"
 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
+	with_cpu=ultrasparc
 	;;
 sparc64-*-openbsd*)
 	tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
@@ -3911,6 +4000,9 @@ if test x$with_cpu = x ; then
     frv550-*-*linux*)
       with_cpu=fr550
       ;;
+    m5200-*-*|m5407-*-*)
+      with_cpu=${default_cf_cpu}
+      ;;
     m68k*-*-*)
       case "$with_arch" in
 	"cf")
@@ -4421,7 +4513,7 @@ case "${target}" in
 		esac
 		;;
 
-	fido-*-* | m68k*-*-*)
+	fido-*-* | m68k*-*-* | m5200-*-* | m5407-*-*)
 		supported_defaults="arch cpu"
 		case "$with_arch" in
 		"" | "m68k"| "cf")

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config.host
$NetBSD: patch-gcc_config.host,v 1.1 2022/03/13 08:34:04 nia Exp $

Add aarch64*-*-netbsd*.

--- gcc/config.host.orig	2020-07-23 06:35:17.316384243 +0000
+++ gcc/config.host
@@ -99,7 +99,7 @@ case ${host} in
 esac
 
 case ${host} in
-  aarch64*-*-freebsd* | aarch64*-*-linux* | aarch64*-*-fuchsia*)
+  aarch64*-*-freebsd* | aarch64*-*-netbsd* | aarch64*-*-linux* | aarch64*-*-fuchsia*)
     case ${target} in
       aarch64*-*-*)
 	host_extra_gcc_objs="driver-aarch64.o"

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_aarch64-builtins.c
$NetBSD: patch-gcc_config_aarch64_aarch64-builtins.c,v 1.1 2022/03/13 08:34:04 nia Exp $

initialise subtarget builtins so cabs*() are renamed.
https://gcc.gnu.org/pipermail/gcc-patches/2021-February/565289.html

--- gcc/config/aarch64/aarch64-builtins.c.orig	2017-01-20 21:03:41.000000000 +0000
+++ gcc/config/aarch64/aarch64-builtins.c	2018-11-10 00:44:41.905576216 +0000
@@ -1303,6 +1303,10 @@ aarch64_general_init_builtins (void)
 
   if (TARGET_MEMTAG)
     aarch64_init_memtag_builtins ();
+
+#ifdef SUBTARGET_INIT_BUILTINS
+  SUBTARGET_INIT_BUILTINS;
+#endif
 }
 
 /* Implement TARGET_BUILTIN_DECL for the AARCH64_BUILTIN_GENERAL group.  */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
$NetBSD: patch-gcc_config_aarch64_aarch64-netbsd.h,v 1.1 2022/03/13 08:34:04 nia Exp $

Match what is in NetBSD src.  Fixes at least aarch64eb, and
probably several others.

--- gcc/config/aarch64/aarch64-netbsd.h.orig	2021-04-08 04:56:28.033740243 -0700
+++ gcc/config/aarch64/aarch64-netbsd.h	2021-04-24 00:16:41.451665444 -0700
@@ -20,6 +20,10 @@
 #ifndef GCC_AARCH64_NETBSD_H
 #define GCC_AARCH64_NETBSD_H
 
+/* NetBSD malloc(3) does 64, not 128 bytes. */
+#undef MALLOC_ABI_ALIGNMENT
+#define MALLOC_ABI_ALIGNMENT  64
+
 #define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
 #define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
 

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_aarch64_driver-aarch64.c
$NetBSD: patch-gcc_config_aarch64_driver-aarch64.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Match what is in NetBSD src.  Fixes at least aarch64eb, and
probably several others.

--- gcc/config/aarch64/driver-aarch64.c.orig	2021-04-08 04:56:28.041740341 -0700
+++ gcc/config/aarch64/driver-aarch64.c	2021-04-24 00:16:45.471750258 -0700
@@ -25,6 +25,7 @@
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#include "diagnostic-core.h"
 
 /* Defined in common/config/aarch64/aarch64-common.c.  */
 std::string aarch64_get_extension_string_for_isa_flags (uint64_t, uint64_t);
@@ -244,6 +245,14 @@
    ARGC and ARGV are set depending on the actual arguments given
    in the spec.  */
 
+#ifdef __NetBSD__
+/* The NetBSD/arm64 platform may not export linux-style /proc/cpuinfo,
+   but the data is available via a sysctl(3) interface.  */
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <aarch64/armreg.h>
+#endif
+
 const char *
 host_detect_local_cpu (int argc, const char **argv)
 {
@@ -282,6 +291,7 @@
   if (!arch && !tune && !cpu)
     goto not_found;
 
+#ifndef __NetBSD__
   fcpu_info = getenv ("GCC_CPUINFO");
   if (fcpu_info)
     f = fopen (fcpu_info, "r");
@@ -374,6 +384,145 @@
 
   fclose (f);
   f = NULL;
+#else
+  unsigned int curcpu;
+  size_t len;
+  char impl_buf[8];
+  int mib[2], ncpu;
+
+  mib[0] = CTL_HW;
+  mib[1] = HW_NCPU; 
+  len = sizeof(ncpu);
+  if (sysctl(mib, 2, &ncpu, &len, NULL, 0) == -1)
+    goto not_found;
+
+  for (curcpu = 0; curcpu < ncpu; curcpu++)
+    {
+      char path[128];
+      struct aarch64_sysctl_cpu_id id;
+
+      len = sizeof id;
+      snprintf(path, sizeof path, "machdep.cpu%d.cpu_id", curcpu);
+      if (sysctlbyname(path, &id, &len, NULL, 0) != 0)
+        goto not_found;
+
+      unsigned cimp = __SHIFTOUT(id.ac_midr, MIDR_EL1_IMPL);
+      if (cimp == INVALID_IMP)
+        goto not_found;
+
+      if (imp == INVALID_IMP)
+        imp = cimp;
+	/* FIXME: BIG.little implementers are always equal. */
+      else if (imp != cimp)
+        goto not_found;
+  
+      unsigned cvariant = __SHIFTOUT(id.ac_midr, MIDR_EL1_VARIANT);
+      if (!contains_core_p (variants, cvariant))
+        {
+          if (n_variants == 2)
+            goto not_found;
+  
+          variants[n_variants++] = cvariant;
+  	}
+
+      unsigned ccore = __SHIFTOUT(id.ac_midr, MIDR_EL1_PARTNUM);
+      if (!contains_core_p (cores, ccore))
+  	{
+  	  if (n_cores == 2)
+  	    goto not_found;
+  
+  	  cores[n_cores++] = ccore;
+  	}
+
+      if (!tune && !processed_exts)
+        {
+          std::string exts;
+
+	  /* These are all the extensions from aarch64-option-extensions.def.  */
+          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_FP) == ID_AA64PFR0_EL1_FP_IMPL)
+	    exts += "fp ";
+          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_ADVSIMD) == ID_AA64PFR0_EL1_ADV_SIMD_IMPL)
+	    exts += "asimd ";
+#ifdef ID_AA64ISAR0_EL1_RDM
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_RDM) == ID_AA64ISAR0_EL1_RDM_SQRDML)
+	    exts += "asimdrdm ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_DP) == ID_AA64ISAR0_EL1_DP_UDOT)
+	    exts += "asimddp ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_FHM) == ID_AA64ISAR0_EL1_FHM_FMLAL)
+	    exts += "asimdfml ";
+#endif
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) == ID_AA64ISAR0_EL1_AES_AES)
+	    exts += "aes ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) == ID_AA64ISAR0_EL1_AES_PMUL)
+	    exts += "aes pmull ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_CRC32) == ID_AA64ISAR0_EL1_CRC32_CRC32X)
+	    exts += "crc32 ";
+#ifdef ID_AA64ISAR0_EL1_ATOMIC
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_ATOMIC) == ID_AA64ISAR0_EL1_ATOMIC_SWP)
+	    exts += "atomics ";
+#endif
+          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA1) & ID_AA64ISAR0_EL1_SHA1_SHA1CPMHSU) != 0)
+	    exts += "sha1 ";
+          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) & ID_AA64ISAR0_EL1_SHA2_SHA256HSU) != 0)
+	    exts += "sha2 ";
+#ifdef ID_AA64ISAR0_EL1_SHA2_SHA512HSU
+          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) & ID_AA64ISAR0_EL1_SHA2_SHA512HSU) != 0)
+	    exts += "sha512 ";
+          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA3) & ID_AA64ISAR0_EL1_SHA3_EOR3) != 0)
+	    exts += "sha3 ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SM3) == ID_AA64ISAR0_EL1_SM3_SM3)
+	    exts += "sm3 ";
+          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SM4) == ID_AA64ISAR0_EL1_SM4_SM4)
+	    exts += "sm4 ";
+          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_SVE) == ID_AA64PFR0_EL1_SVE_IMPL)
+	    exts += "sve ";
+          if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_LRCPC) == ID_AA64ISAR1_EL1_LRCPC_PR)
+	    exts += "lrcpc ";
+#endif
+
+          for (i = 0; i < num_exts; i++)
+            {
+	      const char *p = aarch64_extensions[i].feat_string;
+
+	      /* If the feature contains no HWCAPS string then ignore it for the
+		 auto detection.  */
+	      if (*p == '\0')
+		continue;
+
+	      bool enabled = true;
+
+	      /* This may be a multi-token feature string.  We need
+		 to match all parts, which could be in any order.  */
+	      size_t len = strlen (exts.c_str());
+	      do
+		{
+		  const char *end = strchr (p, ' ');
+		  if (end == NULL)
+		    end = strchr (p, '\0');
+		  if (memmem (exts.c_str(), len, p, end - p) == NULL)
+		    {
+		      /* Failed to match this token.  Turn off the
+			 features we'd otherwise enable.  */
+		      enabled = false;
+		      break;
+		    }
+		  if (*end == '\0')
+		    break;
+		  p = end + 1;
+		}
+	      while (1);
+
+              if (enabled)
+                extension_flags |= aarch64_extensions[i].flag;
+              else
+                extension_flags &= ~(aarch64_extensions[i].flag);
+            }
+
+          processed_exts = true;
+	}
+    }
+  /* End of NetBSD specific section.  */
+#endif
 
   /* Weird cpuinfo format that we don't know how to handle.  */
   if (n_cores == 0

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_darwin-driver.c
$NetBSD: patch-gcc_config_darwin-driver.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Allow macOS 12.

--- gcc/config/darwin-driver.c.orig	2021-10-13 11:50:13.000000000 +0000
+++ gcc/config/darwin-driver.c
@@ -64,7 +64,7 @@ validate_macosx_version_min (const char 
 
   major = strtoul (version_str, &end, 10);
 
-  if (major < 10 || major > 11 ) /* MacOS 10 and 11 are known. */
+  if (major < 10 || major > 12 ) /* MacOS 10 and 11 and 12 are known. */
     return NULL;
 
   /* Skip a separating period, if there's one.  */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_config_sparc_sparc.c
$NetBSD: patch-gcc_config_sparc_sparc.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Invoke subtarget-specific code for replacing builtin functions.
Causes "cabsl" to be converted to _c99_cabsl on NetBSD.
https://gcc.gnu.org/pipermail/gcc-patches/2021-February/565290.html

--- gcc/config/sparc/sparc.c.orig	2020-07-23 06:35:17.480386051 +0000
+++ gcc/config/sparc/sparc.c
@@ -10993,6 +10993,9 @@ sparc_init_builtins (void)
 
   if (TARGET_VIS)
     sparc_vis_init_builtins ();
+#ifdef SUBTARGET_INIT_BUILTINS
+  SUBTARGET_INIT_BUILTINS;
+#endif
 }
 
 /* Create builtin functions for FPU instructions.  */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_configure
$NetBSD: patch-gcc_configure,v 1.1 2022/03/13 08:34:04 nia Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90143

--- gcc/configure.orig	2015-09-30 23:06:11.000000000 +0000
+++ gcc/configure
@@ -28321,7 +28321,7 @@ case "$target" in
       gcc_cv_target_dl_iterate_phdr=no
     fi
     ;;
-  *-*-dragonfly* | *-*-freebsd*)
+  *-*-dragonfly* | *-*-freebsd* | *-*-netbsd* )
     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
       gcc_cv_target_dl_iterate_phdr=yes
     else

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_ggc-common.c
$NetBSD: patch-gcc_ggc-common.c,v 1.1 2022/03/13 08:34:04 nia Exp $

--- gcc/ggc-common.c.orig	2014-12-10 03:45:40.000000000 +0000
+++ gcc/ggc-common.c
@@ -591,6 +591,8 @@ gt_pch_restore (FILE *f)
   size_t i;
   struct mmap_info mmi;
   int result;
+  struct line_maps * old_line_table = line_table;
+  location_t old_input_loc = input_location;
 
   /* Delete any deletable objects.  This makes ggc_pch_read much
      faster, as it can be sure that no GCable objects remain other
@@ -603,7 +605,7 @@ gt_pch_restore (FILE *f)
   for (rt = gt_pch_scalar_rtab; *rt; rt++)
     for (rti = *rt; rti->base != NULL; rti++)
       if (fread (rti->base, rti->stride, 1, f) != 1)
-	fatal_error (input_location, "cannot read PCH file: %m");
+	{ line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "cannot read PCH file: %m"); }
 
   /* Read in all the global pointers, in 6 easy loops.  */
   for (rt = gt_ggc_rtab; *rt; rt++)
@@ -611,23 +613,23 @@ gt_pch_restore (FILE *f)
       for (i = 0; i < rti->nelt; i++)
 	if (fread ((char *)rti->base + rti->stride * i,
 		   sizeof (void *), 1, f) != 1)
-	  fatal_error (input_location, "cannot read PCH file: %m");
+	  { line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "cannot read PCH file: %m"); }
 
   if (fread (&mmi, sizeof (mmi), 1, f) != 1)
-    fatal_error (input_location, "cannot read PCH file: %m");
+    { line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "cannot read PCH file: %m"); }
 
   result = host_hooks.gt_pch_use_address (mmi.preferred_base, mmi.size,
 					  fileno (f), mmi.offset);
   if (result < 0)
-    fatal_error (input_location, "had to relocate PCH");
+    { line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "had to relocate PCH"); }
   if (result == 0)
     {
       if (fseek (f, mmi.offset, SEEK_SET) != 0
 	  || fread (mmi.preferred_base, mmi.size, 1, f) != 1)
-	fatal_error (input_location, "cannot read PCH file: %m");
+	{ line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "cannot read PCH file: %m"); }
     }
   else if (fseek (f, mmi.offset + mmi.size, SEEK_SET) != 0)
-    fatal_error (input_location, "cannot read PCH file: %m");
+    { line_table = old_line_table; input_location = old_input_loc; fatal_error (input_location, "cannot read PCH file: %m"); }
 
   ggc_pch_read (f, mmi.preferred_base);
 

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_lto_lto.c
$NetBSD: patch-gcc_lto_lto.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Better fallback for netbsd<8 lacking WALLSIG.

--- gcc/lto/lto.c.orig	2018-01-03 21:42:12.000000000 +0000
+++ gcc/lto/lto.c
@@ -2321,7 +2321,11 @@ wait_for_child ()
   do
     {
 #ifndef WCONTINUED
-#define WCONTINUED 0
+#  ifdef WALLSIG
+#    define WCONTINUED WALLSIG
+#  else
+#    define WCONTINUED 0
+#  endif
 #endif
       int w = waitpid (0, &status, WUNTRACED | WCONTINUED);
       if (w == -1)

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gcc_targhooks.c
$NetBSD: patch-gcc_targhooks.c,v 1.1 2022/03/13 08:34:04 nia Exp $

PR pkg/53436
netbsd can't handle hidden reference to stack_chk_fail_local.
(note: this code is only happening if targeting i386)

--- gcc/targhooks.c.orig	2018-01-13 18:00:59.000000000 +0000
+++ gcc/targhooks.c
@@ -919,7 +919,7 @@ default_external_stack_protect_fail (voi
 tree
 default_hidden_stack_protect_fail (void)
 {
-#ifndef HAVE_GAS_HIDDEN
+#if !defined(HAVE_GAS_HIDDEN) || defined(__NetBSD__) || defined(__sun)
   return default_external_stack_protect_fail ();
 #else
   tree t = stack_chk_fail_decl;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-gnattools_configure
$NetBSD: patch-gnattools_configure,v 1.1 2022/03/13 08:34:04 nia Exp $

Include NetBSD in the gnat tools configure.

--- gnattools/configure.orig	2021-08-28 14:19:25.404806918 +0000
+++ gnattools/configure	2021-08-28 14:25:51.208977452 +0000
@@ -2079,6 +2079,11 @@
     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
     indepsw.adb<indepsw-gnu.adb"
     ;;
+  *-*-netbsd*)
+    TOOLS_TARGET_PAIRS="\
+    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
+    indepsw.adb<indepsw-gnu.adb"
+    ;;
   *-*-linux*)
     TOOLS_TARGET_PAIRS="\
     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \

File Added: pkgsrc/lang/gcc10-aux/patches/patch-isl_configure
$NetBSD: patch-isl_configure,v 1.1 2022/03/13 08:34:04 nia Exp $

Make test portable

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90144

--- isl/configure.orig	2016-01-14 17:26:10.000000000 +0000
+++ isl/configure
@@ -17561,7 +17561,7 @@ else
 fi
 
 
- if test "x$with_int" == "ximath-32"; then
+ if test "x$with_int" = "ximath-32"; then
   SMALL_INT_OPT_TRUE=
   SMALL_INT_OPT_FALSE='#'
 else
@@ -17569,7 +17569,7 @@ else
   SMALL_INT_OPT_FALSE=
 fi
 
-if test "x$with_int" == "ximath-32"; then :
+if test "x$with_int" = "ximath-32"; then :
 
 
 $as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libffi_configure
$NetBSD: patch-libffi_configure,v 1.1 2022/03/13 08:34:04 nia Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146
https://github.com/libffi/libffi/issues/485

--- libffi/configure.orig	2013-06-01 17:03:49.000000000 +0000
+++ libffi/configure
@@ -12689,7 +12689,7 @@ case "$target" in
 $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
 
      ;;
-     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
+     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-netbsd* | *-*-openbsd* | *-pc-solaris*)
 
 $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
 

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libffi_testsuite_libffi.call_float2.c
$NetBSD: patch-libffi_testsuite_libffi.call_float2.c,v 1.1 2022/03/13 08:34:04 nia Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146

--- libffi/testsuite/libffi.call/float2.c.orig	2013-06-01 17:08:18.000000000 +0000
+++ libffi/testsuite/libffi.call/float2.c
@@ -45,7 +45,7 @@ int main (void)
   /* This is ifdef'd out for now. long double support under SunOS/gcc
      is pretty much non-existent.  You'll get the odd bus error in library
      routines like printf().  */
-  printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
+  printf ("%Lf, %Lf, %Lf, %Lf\n", (long double)ld, (long double)ldblit(f), (long double)(ld - ldblit(f)), (long double)LDBL_EPSILON);
 #endif
 
   /* These are not always the same!! Check for a reasonable delta */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgcc_config.host
$NetBSD: patch-libgcc_config.host,v 1.1 2022/03/13 08:34:04 nia Exp $

This is needed to get Out-of-line LSE atomics linked into libgcc.
libsupc++ fails to link without this.

--- libgcc/config.host.orig	2020-07-23 06:35:18.752400064 +0000
+++ libgcc/config.host
@@ -377,6 +377,7 @@ aarch64*-*-freebsd*)
 aarch64*-*-netbsd*)
 	extra_parts="$extra_parts crtfastmath.o"
 	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+	tmake_file="${tmake_file} ${cpu_type}/t-lse"
 	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
 	md_unwind_header=aarch64/aarch64-unwind.h
 	;;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgcc_crtstuff.c
$NetBSD: patch-libgcc_crtstuff.c,v 1.1 2022/03/13 08:34:04 nia Exp $

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90147

--- libgcc/crtstuff.c.orig	2017-01-01 12:07:43.000000000 +0000
+++ libgcc/crtstuff.c
@@ -81,7 +81,7 @@ call_ ## FUNC (void)					\
 #endif
 
 #if defined(TARGET_DL_ITERATE_PHDR) && \
-   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__))
+   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__))
 #define BSD_DL_ITERATE_PHDR_AVAILABLE
 #endif
  

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_format.c
$NetBSD: patch-libgfortran_io_format.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95177

--- libgfortran/io/format.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libgfortran/io/format.c
@@ -193,7 +193,7 @@ next_char (format_data *fmt, int literal
 	return -1;
 
       fmt->format_string_len--;
-      c = toupper (*fmt->format_string++);
+      c = toupper ((unsigned char) *fmt->format_string++);
       fmt->error_element = c;
     }
   while ((c == ' ' || c == '\t') && !literal);

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_io.h
$NetBSD: patch-libgfortran_io_io.h,v 1.1 2022/03/13 08:34:04 nia Exp $

Don't declare old_locale* an internal_proto to avoid linking problems

--- libgfortran/io/io.h.orig	2018-01-07 10:17:52.000000000 +0000
+++ libgfortran/io/io.h
@@ -57,11 +57,8 @@ extern locale_t c_locale;
 internal_proto(c_locale);
 #else
 extern char* old_locale;
-internal_proto(old_locale);
 extern int old_locale_ctr;
-internal_proto(old_locale_ctr);
 extern __gthread_mutex_t old_locale_lock;
-internal_proto(old_locale_lock);
 #endif
 
 

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_list__read.c
$NetBSD: patch-libgfortran_io_list__read.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95177

--- libgfortran/io/list_read.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libgfortran/io/list_read.c
@@ -2757,7 +2757,7 @@ nml_match_name (st_parameter_dt *dtp, co
   for (i = 0; i < len; i++)
     {
       c = next_char (dtp);
-      if (c == EOF || (tolower (c) != tolower (name[i])))
+      if (c == EOF || (tolower (c) != tolower ((unsigned char) name[i])))
 	{
 	  dtp->u.p.nml_read_error = 1;
 	  break;

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_io_read.c
$NetBSD: patch-libgfortran_io_read.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95177

--- libgfortran/io/read.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libgfortran/io/read.c
@@ -959,7 +959,7 @@ read_f (st_parameter_dt *dtp, const fnod
 	 between "NaN" and the optional perenthesis is not permitted.  */
       while (w > 0)
 	{
-	  *out = tolower (*p);
+	  *out = tolower ((unsigned char) *p);
 	  switch (*p)
 	    {
 	    case ' ':
@@ -981,7 +981,7 @@ read_f (st_parameter_dt *dtp, const fnod
 		goto bad_float;
 	      break;
 	    default:
-	      if (!isalnum (*out))
+	      if (!isalnum ((unsigned char) *out))
 		goto bad_float;
 	    }
 	  --w;
@@ -1109,7 +1109,7 @@ exponent:
 
   if (dtp->u.p.blank_status == BLANK_UNSPECIFIED)
     {
-      while (w > 0 && isdigit (*p))
+      while (w > 0 && isdigit ((unsigned char) *p))
 	{
 	  exponent *= 10;
 	  exponent += *p - '0';
@@ -1137,7 +1137,7 @@ exponent:
 	      else
 		assert (dtp->u.p.blank_status == BLANK_NULL);
 	    }
-	  else if (!isdigit (*p))
+	  else if (!isdigit ((unsigned char) *p))
 	    goto bad_float;
 	  else
 	    {

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libgfortran_runtime_environ.c
$NetBSD: patch-libgfortran_runtime_environ.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95177

--- libgfortran/runtime/environ.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libgfortran/runtime/environ.c
@@ -91,7 +91,7 @@ init_integer (variable * v)
     return;
 
   for (q = p; *q; q++)
-    if (!isdigit (*q) && (p != q || *q != '-'))
+    if (!isdigit ((unsigned char) *q) && (p != q || *q != '-'))
       return;
 
   *v->var = atoi (p);
@@ -344,7 +344,7 @@ static int
 match_integer (void)
 {
   unit_num = 0;
-  while (isdigit (*p))
+  while (isdigit ((unsigned char) *p))
     unit_num = unit_num * 10 + (*p++ - '0');
   return INTEGER;
 }

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libquadmath_printf_quadmath-printf.c
$NetBSD: patch-libquadmath_printf_quadmath-printf.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178

--- libquadmath/printf/quadmath-printf.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libquadmath/printf/quadmath-printf.c
@@ -189,7 +189,7 @@ quadmath_snprintf (char *str, size_t siz
       ++format;
       info.width = va_arg (ap, int);
     }
-  else if (isdigit (*format))
+  else if (isdigit ((unsigned char) *format))
     /* Constant width specification.  */
     info.width = read_int (&format);
 
@@ -206,7 +206,7 @@ quadmath_snprintf (char *str, size_t siz
 
 	  info.prec = va_arg (ap, int);
 	}
-      else if (isdigit (*format))
+      else if (isdigit ((unsigned char) *format))
 	info.prec = read_int (&format);
       else
 	/* "%.?" is treated like "%.0?".  */

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libquadmath_strtod_strtod__l.c
$NetBSD: patch-libquadmath_strtod_strtod__l.c,v 1.1 2022/03/13 08:34:04 nia Exp $

Fix -Werror=char-subscripts.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178

--- libquadmath/strtod/strtod_l.c.orig	2020-05-07 10:50:02.000000000 +0000
+++ libquadmath/strtod/strtod_l.c
@@ -57,10 +57,10 @@
 # define STRING_TYPE char
 # define CHAR_TYPE char
 # define L_(Ch) Ch
-# define ISSPACE(Ch) isspace (Ch)
-# define ISDIGIT(Ch) isdigit (Ch)
-# define ISXDIGIT(Ch) isxdigit (Ch)
-# define TOLOWER(Ch) tolower (Ch)
+# define ISSPACE(Ch) isspace ((unsigned char) Ch)
+# define ISDIGIT(Ch) isdigit ((unsigned char) Ch)
+# define ISXDIGIT(Ch) isxdigit ((unsigned char) Ch)
+# define TOLOWER(Ch) tolower ((unsigned char) Ch)
 # define TOLOWER_C(Ch) \
   ({__typeof(Ch) __tlc = (Ch); \
     (__tlc >= 'A' && __tlc <= 'Z') ? __tlc - 'A' + 'a' : __tlc; })

File Added: pkgsrc/lang/gcc10-aux/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
$NetBSD: patch-libstdc++-v3_libsupc++_new__opa.cc,v 1.1 2022/03/13 08:34:04 nia Exp $

Ensure we can find SunOS std::aligned_alloc if using it.

--- libstdc++-v3/libsupc++/new_opa.cc.orig	2020-03-04 08:30:03.000000000 +0000
+++ libstdc++-v3/libsupc++/new_opa.cc
@@ -57,6 +57,10 @@ extern "C"
 }
 #endif
 
+#if defined(__sun) && _GLIBCXX_HAVE_ALIGNED_ALLOC
+using std::aligned_alloc;
+#endif
+
 namespace __gnu_cxx {
 #if _GLIBCXX_HAVE_ALIGNED_ALLOC
 using ::aligned_alloc;