gcc: force failure of test for writev
[aros:aros.git] / contrib / gnu / gcc / gcc-4.6.2-aros.diff
1 diff -ruN gcc-4.6.2/configure gcc-4.6.2.aros/configure
2 --- gcc-4.6.2/configure 2011-06-27 22:54:59.000000000 +0200
3 +++ gcc-4.6.2.aros/configure    2013-08-26 07:55:42.000000000 +0200
4 @@ -2997,6 +2997,9 @@
5    ppc*-*-pe)
6      noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl gnuserv"
7      ;;
8 +  *-*-aros*)
9 +    noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl tix gnuserv gdb"
10 +    ;;
11    powerpc-*-beos*)
12      noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu readline"
13      ;;
14 @@ -3810,6 +3813,8 @@
15      # Build the stage2 and stage3 compilers with -fomit-frame-pointer.
16      host_makefile_frag="config/mh-x86omitfp"
17      ;;
18 +  *-*-aros*)
19 +    ;;
20  esac
21  fi
22  
23 diff -ruN gcc-4.6.2/configure.ac gcc-4.6.2.aros/configure.ac
24 --- gcc-4.6.2/configure.ac      2011-06-27 22:54:59.000000000 +0200
25 +++ gcc-4.6.2.aros/configure.ac 2013-08-26 07:55:42.000000000 +0200
26 @@ -453,6 +453,9 @@
27    ppc*-*-pe)
28      noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl gnuserv"
29      ;;
30 +  *-*-aros*)
31 +    noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl tix gnuserv gdb"
32 +    ;;
33    powerpc-*-beos*)
34      noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu readline"
35      ;;
36 @@ -1237,6 +1240,8 @@
37      # Build the stage2 and stage3 compilers with -fomit-frame-pointer.
38      host_makefile_frag="config/mh-x86omitfp"
39      ;;
40 +  *-*-aros*)
41 +    ;;
42  esac
43  fi
44  
45 diff -ruN gcc-4.6.2/fixincludes/configure gcc-4.6.2.aros/fixincludes/configure
46 --- gcc-4.6.2/fixincludes/configure     2010-06-03 08:45:02.000000000 +0200
47 +++ gcc-4.6.2.aros/fixincludes/configure        2013-08-26 07:55:42.000000000 +0200
48 @@ -4245,6 +4245,7 @@
49  fi
50  else
51    case $host in
52 +        *-*-aros* | \
53         i?86-*-msdosdjgpp* | \
54         i?86-*-mingw32* | \
55         x86_64-*-mingw32* | \
56 diff -ruN gcc-4.6.2/fixincludes/configure.ac gcc-4.6.2.aros/fixincludes/configure.ac
57 --- gcc-4.6.2/fixincludes/configure.ac  2010-06-03 08:45:02.000000000 +0200
58 +++ gcc-4.6.2.aros/fixincludes/configure.ac     2013-08-26 07:55:42.000000000 +0200
59 @@ -49,6 +49,7 @@
60         TARGET=oneprocess
61  fi],
62  [case $host in
63 +        *-*-aros* | \
64         i?86-*-msdosdjgpp* | \
65         i?86-*-mingw32* | \
66         x86_64-*-mingw32* | \
67 diff -ruN gcc-4.6.2/gcc/config/arm/aros.h gcc-4.6.2.aros/gcc/config/arm/aros.h
68 --- gcc-4.6.2/gcc/config/arm/aros.h     1970-01-01 01:00:00.000000000 +0100
69 +++ gcc-4.6.2.aros/gcc/config/arm/aros.h        2013-08-26 07:55:42.000000000 +0200
70 @@ -0,0 +1,82 @@
71 +/* Configuration file for ARM AROS EABI targets.
72 +   Copyright (C) 2004, 2005, 2006, 2007, 2010
73 +   Free Software Foundation, Inc.
74 +   Contributed by Pavel Fedin
75 +   Based on linux-eabi.h and other AROS targets
76 +
77 +   This file is part of GCC.
78 +
79 +   GCC is free software; you can redistribute it and/or modify it
80 +   under the terms of the GNU General Public License as published
81 +   by the Free Software Foundation; either version 3, or (at your
82 +   option) any later version.
83 +
84 +   GCC is distributed in the hope that it will be useful, but WITHOUT
85 +   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
86 +   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
87 +   License for more details.
88 +
89 +   You should have received a copy of the GNU General Public License
90 +   along with GCC; see the file COPYING3.  If not see
91 +   <http://www.gnu.org/licenses/>.  */
92 +
93 +/* On EABI GNU/Linux, we want both the BPABI builtins and the
94 +   GNU/Linux builtins.  */
95 +#undef  TARGET_OS_CPP_BUILTINS
96 +#define TARGET_OS_CPP_BUILTINS()               \
97 +  do                                           \
98 +    {                                          \
99 +      TARGET_BPABI_CPP_BUILTINS();             \
100 +       builtin_define_std ("AROS");            \
101 +       builtin_define ("AMIGA");               \
102 +       builtin_define ("_AMIGA");              \
103 +       builtin_assert ("system=posix");        \
104 +       if (flag_pic)                           \
105 +         {                                     \
106 +           builtin_define ("__PIC__");         \
107 +           builtin_define ("__pic__");         \
108 +         }                                     \
109 +    }                                          \
110 +  while (false)
111 +
112 +/* We default to a softfp ABI so that we are compatible
113 +   with the Linux EABI (as used by the linker).  */
114 +#undef  TARGET_DEFAULT_FLOAT_ABI
115 +#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP
116 +
117 +/* We default to the "aapcs-linux" ABI so that enums are int-sized by
118 +   default.  */
119 +#undef  ARM_DEFAULT_ABI
120 +#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
121 +
122 +/* Default to armv5t so that thumb shared libraries work.
123 +   The ARM10TDMI core is the default for armv5t, so set
124 +   SUBTARGET_CPU_DEFAULT to achieve this.  */
125 +#undef  SUBTARGET_CPU_DEFAULT
126 +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
127 +
128 +/* TARGET_BIG_ENDIAN_DEFAULT is set in
129 +   config.gcc for big endian configurations.  */
130 +#undef  TARGET_LINKER_EMULATION
131 +#if TARGET_BIG_ENDIAN_DEFAULT
132 +#define TARGET_LINKER_EMULATION "armelfb_aros"
133 +#else
134 +#define TARGET_LINKER_EMULATION "armelf_aros"
135 +#endif
136 +
137 +#undef SUBTARGET_CPP_SPEC
138 +#define SUBTARGET_CPP_SPEC "-D__ELF__ %{!nostdinc:%{!nostdc:%{!noposixc:-isystem %R/include/aros/posixc} -isystem %R/include/aros/stdc}}"
139 +
140 +#undef  SUBTARGET_EXTRA_LINK_SPEC
141 +#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
142 +
143 +/* Provide a LINK_SPEC appropriate for AROS.  */
144 +#undef  LINK_SPEC
145 +#define LINK_SPEC "-m armelf_aros -L %R/lib"
146 +
147 +/* Use own supplement to libgcc.  */
148 +#undef LIBGCC_SPEC
149 +#define LIBGCC_SPEC "-laeabi -lgcc"
150 +
151 +/* FIXME: AROS doesn't support dw2 unwinding yet.  */
152 +#undef MD_FALLBACK_FRAME_STATE_FOR
153 diff -ruN gcc-4.6.2/gcc/config/arm/t-aros gcc-4.6.2.aros/gcc/config/arm/t-aros
154 --- gcc-4.6.2/gcc/config/arm/t-aros     1970-01-01 01:00:00.000000000 +0100
155 +++ gcc-4.6.2.aros/gcc/config/arm/t-aros        2013-08-26 11:26:23.000000000 +0200
156 @@ -0,0 +1,21 @@
157 +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
158 +# 2008, 2010 Free Software Foundation, Inc.
159 +#
160 +# This file is part of GCC.
161 +#
162 +# GCC is free software; you can redistribute it and/or modify
163 +# it under the terms of the GNU General Public License as published by
164 +# the Free Software Foundation; either version 3, or (at your option)
165 +# any later version.
166 +#
167 +# GCC is distributed in the hope that it will be useful,
168 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
169 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
170 +# GNU General Public License for more details.
171 +#
172 +# You should have received a copy of the GNU General Public License
173 +# along with GCC; see the file COPYING3.  If not see
174 +# <http://www.gnu.org/licenses/>.
175 +
176 +MULTILIB_OPTIONS     = marm mfloat-abi=hard
177 +MULTILIB_DIRNAMES    = arm fpu
178 diff -ruN gcc-4.6.2/gcc/config/arm/unwind-arm.c gcc-4.6.2.aros/gcc/config/arm/unwind-arm.c
179 --- gcc-4.6.2/gcc/config/arm/unwind-arm.c       2009-10-30 15:55:10.000000000 +0100
180 +++ gcc-4.6.2.aros/gcc/config/arm/unwind-arm.c  2013-08-26 07:55:42.000000000 +0200
181 @@ -40,8 +40,10 @@
182                                             bool is_reference,
183                                             void **matched_object);
184  
185 +#if !defined(__AROS__)
186  _Unwind_Ptr __attribute__((weak))
187  __gnu_Unwind_Find_exidx (_Unwind_Ptr, int *);
188 +#endif
189  
190  /* Misc constants.  */
191  #define R_IP   12
192 @@ -598,6 +600,7 @@
193       instruction itself.  */
194    return_address -= 2;
195  
196 +#if !defined(__AROS__)
197    if (__gnu_Unwind_Find_exidx)
198      {
199        eitp = (const __EIT_entry *) __gnu_Unwind_Find_exidx (return_address,
200 @@ -609,6 +612,7 @@
201         }
202      }
203    else
204 +#endif
205      {
206        eitp = &__exidx_start;
207        nrec = &__exidx_end - &__exidx_start;
208 diff -ruN gcc-4.6.2/gcc/config/aros.h gcc-4.6.2.aros/gcc/config/aros.h
209 --- gcc-4.6.2/gcc/config/aros.h 1970-01-01 01:00:00.000000000 +0100
210 +++ gcc-4.6.2.aros/gcc/config/aros.h    2013-08-26 07:55:42.000000000 +0200
211 @@ -0,0 +1,109 @@
212 +/* Definitions for AROS
213 +   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
214 +   Contributed by Fabio Alemagna
215 +   Based upon linux.h, contributed by Eric Youngdale.
216 +
217 +This file is part of GNU CC.
218 +
219 +GNU CC is free software; you can redistribute it and/or modify
220 +it under the terms of the GNU General Public License as published by
221 +the Free Software Foundation; either version 2, or (at your option)
222 +any later version.
223 +
224 +GNU CC is distributed in the hope that it will be useful,
225 +but WITHOUT ANY WARRANTY; without even the implied warranty of
226 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
227 +GNU General Public License for more details.
228 +
229 +You should have received a copy of the GNU General Public License
230 +along with GNU CC; see the file COPYING.  If not, write to
231 +the Free Software Foundation, 59 Temple Place - Suite 330,
232 +Boston, MA 02111-1307, USA.  */
233 +
234 +/* Don't assume anything about the header files.  */
235 +#define NO_IMPLICIT_EXTERN_C
236 +
237 +#undef SIZE_TYPE
238 +#define SIZE_TYPE "long unsigned int"
239 +
240 +#undef WCHAR_TYPE
241 +#define WCHAR_TYPE "char"
242 +
243 +#undef WCHAR_TYPE_SIZE
244 +#define WCHAR_TYPE_SIZE 8
245 +
246 +#undef PTRDIFF_TYPE
247 +#define PTRDIFF_TYPE "long int"
248 +
249 +#undef TARGET_OS_CPP_BUILTINS
250 +#define TARGET_OS_CPP_BUILTINS()               \
251 +  do                                           \
252 +    {                                          \
253 +       builtin_define_std ("AROS");            \
254 +       builtin_define ("AMIGA");               \
255 +       builtin_define ("_AMIGA");              \
256 +       builtin_define ("__ELF__");             \
257 +       builtin_assert ("system=posix");        \
258 +    }                                          \
259 +  while (0)
260 +
261 +#undef ASM_APP_ON
262 +#define ASM_APP_ON "#APP\n"
263 +
264 +#undef ASM_APP_OFF
265 +#define ASM_APP_OFF "#NO_APP\n"
266 +
267 +#undef MD_EXEC_PREFIX
268 +#undef MD_STARTFILE_PREFIX
269 +
270 +/* Provide a STARTFILE_SPEC appropriate for AROS. AROS has its own
271 +   set of startup files which also take care of handling C++
272 +   constructors/destructors.  */
273 +
274 +#undef STARTFILE_SPEC
275 +#define STARTFILE_SPEC \
276 +  "%{detach:detach.o%s} startup.o%s %{nix:nixmain.o%s}"
277 +
278 +/* Provide a ENDFILE_SPEC appropriate for AROS. */
279 +
280 +#undef ENDFILE_SPEC
281 +#define ENDFILE_SPEC \
282 +  "-lautoinit"
283 +
284 +#undef INCLUDE_DEFAULTS
285 +#define INCLUDE_DEFAULTS \
286 +{ \
287 +    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
288 +    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 }, \
289 +    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
290 +    { "/local/include", 0, 0, 1, 1, 0 }, \
291 +    { "/include", STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, \
292 +    { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, \
293 +    { 0, 0, 0, 0, 0, 0 } \
294 +}; \
295 +
296 +#undef CPP_SPEC
297 +#define CPP_SPEC "%{!nostdinc:%{!nostdc:%{!noposixc:-isystem %R/include/aros/posixc} -isystem %R/include/aros/stdc}}"
298 +
299 +/* This is for -profile to use -lc_p instead of -lc.  */
300 +#ifndef CC1_SPEC
301 +#define CC1_SPEC "%{profile:-p}"
302 +#endif
303 +
304 +/* The GNU C++ standard library requires that these macros be defined.  */
305 +#undef CPLUSPLUS_CPP_SPEC
306 +#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
307 +
308 +#undef LIB_SPEC
309 +#define LIB_SPEC \
310 +  "-lmui -larossupport -lamiga %{!nostdc:%{!noposixc:-lposixc} -lstdcio -lstdc} -lcodesets -lkeymap -lexpansion -lcommodities -ldiskfont -lasl -lmuimaster -ldatatypes -lcybergraphics -lworkbench -licon -lintuition -lgadtools -llayers -laros -lpartition -liffparse -lgraphics -llocale -ldos -lutility -loop %{!nosysbase:-lexec} -lautoinit -llibinit -lautoinit %{nostdc:-lstdc.static}"
311 +
312 +#if !defined(USE_GNULIBC_1) && defined(HAVE_LD_EH_FRAME_HDR)
313 +#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
314 +#endif
315 +
316 +/* AROS uses its own collect-like program for the moment.  */
317 +#undef LINKER_NAME
318 +#define LINKER_NAME "collect-aros"
319 +
320 +#define TARGET_HAS_F_SETLKW
321 diff -ruN gcc-4.6.2/gcc/config/i386/aros64.h gcc-4.6.2.aros/gcc/config/i386/aros64.h
322 --- gcc-4.6.2/gcc/config/i386/aros64.h  1970-01-01 01:00:00.000000000 +0100
323 +++ gcc-4.6.2.aros/gcc/config/i386/aros64.h     2013-08-26 07:55:42.000000000 +0200
324 @@ -0,0 +1,40 @@
325 +/* Definitions for AMD x86_64 running AROS systems with ELF64 format.
326 +   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
327 +   Free Software Foundation, Inc.
328 +   Contributed by Stanislaw Szymczyk <sszymczy@gmail.com>. Based on aros.h.
329 +
330 +This file is part of GNU CC.
331 +
332 +GNU CC is free software; you can redistribute it and/or modify
333 +it under the terms of the GNU General Public License as published by
334 +the Free Software Foundation; either version 2, or (at your option)
335 +any later version.
336 +
337 +GNU CC is distributed in the hope that it will be useful,
338 +but WITHOUT ANY WARRANTY; without even the implied warranty of
339 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
340 +GNU General Public License for more details.
341 +
342 +You should have received a copy of the GNU General Public License
343 +along with GNU CC; see the file COPYING.  If not, write to
344 +the Free Software Foundation, 59 Temple Place - Suite 330,
345 +Boston, MA 02111-1307, USA.  */
346 +
347 +/* Output at beginning of assembler file.  */
348 +/* The .file command should always begin the output.  */
349 +
350 +#undef TARGET_VERSION
351 +#define TARGET_VERSION fprintf (stderr, " (x86_64 AROS/ELF)");
352 +
353 +/* The svr4 ABI for the i386 says that records and unions are returned
354 +   in memory.  In the 64bit compilation we will turn this flag off in
355 +   override_options, as we never do pcc_struct_return scheme on this target.  */
356 +#undef DEFAULT_PCC_STRUCT_RETURN
357 +#define DEFAULT_PCC_STRUCT_RETURN 1
358 +
359 +/* Provide a LINK_SPEC appropriate for AROS.  */
360 +
361 +#undef LINK_SPEC
362 +#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} -L %R/lib" 
363 +
364 +/* FIXME: AROS doesn't support dw2 unwinding yet.  */
365 diff -ruN gcc-4.6.2/gcc/config/i386/aros.h gcc-4.6.2.aros/gcc/config/i386/aros.h
366 --- gcc-4.6.2/gcc/config/i386/aros.h    1970-01-01 01:00:00.000000000 +0100
367 +++ gcc-4.6.2.aros/gcc/config/i386/aros.h       2013-08-26 07:55:42.000000000 +0200
368 @@ -0,0 +1,28 @@
369 +/* Definitions for Intel 386 running AROS systems with ELF format.
370 +   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
371 +   Free Software Foundation, Inc.
372 +   Contributed by Fabio Alemagna.
373 +   Based upon i386/linux.h by Eric Youngdale.
374 +
375 +This file is part of GNU CC.
376 +
377 +GNU CC is free software; you can redistribute it and/or modify
378 +it under the terms of the GNU General Public License as published by
379 +the Free Software Foundation; either version 2, or (at your option)
380 +any later version.
381 +
382 +GNU CC is distributed in the hope that it will be useful,
383 +but WITHOUT ANY WARRANTY; without even the implied warranty of
384 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
385 +GNU General Public License for more details.
386 +
387 +You should have received a copy of the GNU General Public License
388 +along with GNU CC; see the file COPYING.  If not, write to
389 +the Free Software Foundation, 59 Temple Place - Suite 330,
390 +Boston, MA 02111-1307, USA.  */
391 +
392 +#undef TARGET_VERSION
393 +#define TARGET_VERSION fprintf (stderr, " (i386 AROS/ELF)");
394 +
395 +#undef LINK_SPEC
396 +#define LINK_SPEC "-m elf_i386 -L%R/lib"
397 diff -ruN gcc-4.6.2/gcc/config/m68k/m68k.c gcc-4.6.2.aros/gcc/config/m68k/m68k.c
398 --- gcc-4.6.2/gcc/config/m68k/m68k.c    2011-07-31 17:09:25.000000000 +0200
399 +++ gcc-4.6.2.aros/gcc/config/m68k/m68k.c       2013-08-26 07:55:42.000000000 +0200
400 @@ -4522,7 +4522,7 @@
401    else if (letter == '/')
402      asm_fprintf (file, "%R");
403    else if (letter == '?')
404 -    asm_fprintf (file, m68k_library_id_string);
405 +    asm_fprintf (file, "%s", m68k_library_id_string);
406    else if (letter == 'p')
407      {
408        output_addr_const (file, op);
409 diff -ruN gcc-4.6.2/gcc/config/m68k/m68k.h gcc-4.6.2.aros/gcc/config/m68k/m68k.h
410 --- gcc-4.6.2/gcc/config/m68k/m68k.h    2010-11-22 02:57:50.000000000 +0100
411 +++ gcc-4.6.2.aros/gcc/config/m68k/m68k.h       2013-08-26 07:55:42.000000000 +0200
412 @@ -342,7 +342,9 @@
413     register elimination.  */
414  #define FIRST_PSEUDO_REGISTER 25
415  
416 -/* All m68k targets (except AmigaOS) use %a5 as the PIC register  */
417 +/* All m68k targets (except AmigaOS) use %a5 as the PIC register.
418 + * On AmigaOS, we use %a4
419 + */
420  #define PIC_OFFSET_TABLE_REGNUM                                \
421    (!flag_pic ? INVALID_REGNUM                          \
422     : reload_completed ? REGNO (pic_offset_table_rtx)   \
423 @@ -432,7 +434,8 @@
424  /* Most m68k targets use %a6 as a frame pointer.  The AmigaOS
425     ABI uses %a6 for shared library calls, therefore the frame
426     pointer is shifted to %a5 on this target.  */
427 -#define FRAME_POINTER_REGNUM A6_REG
428 +#define FRAME_POINTER_REGNUM A5_REG
429 +#define PIC_REG A4_REG
430  
431  /* Base register for access to arguments of the function.
432   * This isn't a hardware register. It will be eliminated to the
433 diff -ruN gcc-4.6.2/gcc/config/m68k/m68k.md gcc-4.6.2.aros/gcc/config/m68k/m68k.md
434 --- gcc-4.6.2/gcc/config/m68k/m68k.md   2009-12-31 00:03:46.000000000 +0100
435 +++ gcc-4.6.2.aros/gcc/config/m68k/m68k.md      2013-08-26 07:55:42.000000000 +0200
436 @@ -131,7 +131,8 @@
437    [(D0_REG             0)
438     (A0_REG             8)
439     (A1_REG             9)
440 -   (PIC_REG            13)
441 +   (A4_REG             12)
442 +   (A5_REG             13)
443     (A6_REG             14)
444     (SP_REG             15)
445     (FP0_REG            16)
446 @@ -7295,7 +7296,7 @@
447  {
448    if (TARGET_ID_SHARED_LIBRARY)
449      {
450 -      operands[1] = gen_rtx_REG (Pmode, PIC_REG);
451 +      operands[1] = gen_rtx_REG (Pmode, A4_REG);
452        return MOTOROLA ? "move.l %?(%1),%0" : "movel %1@(%?), %0";
453      }
454    else if (MOTOROLA)
455 diff -ruN gcc-4.6.2/gcc/config/m68k/t-aros gcc-4.6.2.aros/gcc/config/m68k/t-aros
456 --- gcc-4.6.2/gcc/config/m68k/t-aros    1970-01-01 01:00:00.000000000 +0100
457 +++ gcc-4.6.2.aros/gcc/config/m68k/t-aros       2013-08-26 07:55:42.000000000 +0200
458 @@ -0,0 +1,2 @@
459 +# Custom multilibs for AROS
460 +M68K_MLIB_CPU += && match(MLIB, "^68")
461 diff -ruN gcc-4.6.2/gcc/config/rs6000/aros.h gcc-4.6.2.aros/gcc/config/rs6000/aros.h
462 --- gcc-4.6.2/gcc/config/rs6000/aros.h  1970-01-01 01:00:00.000000000 +0100
463 +++ gcc-4.6.2.aros/gcc/config/rs6000/aros.h     2013-08-26 07:55:42.000000000 +0200
464 @@ -0,0 +1,161 @@
465 +/* Definitions for Powerpc running AROS systems with ELF format.
466 +   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
467 +   Free Software Foundation, Inc.
468 +   Contributed by Markus Weiss.
469 +   Based upon i386/aros.h by Fabio Alemagna.
470 +
471 +This file is part of GNU CC.
472 +
473 +GNU CC is free software; you can redistribute it and/or modify
474 +it under the terms of the GNU General Public License as published by
475 +the Free Software Foundation; either version 2, or (at your option)
476 +any later version.
477 +
478 +GNU CC is distributed in the hope that it will be useful,
479 +but WITHOUT ANY WARRANTY; without even the implied warranty of
480 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
481 +GNU General Public License for more details.
482 +
483 +You should have received a copy of the GNU General Public License
484 +along with GNU CC; see the file COPYING.  If not, write to
485 +the Free Software Foundation, 59 Temple Place - Suite 330,
486 +Boston, MA 02111-1307, USA.  */
487 +
488 +/* Symbols missing in comparison to i386/aros.h are either
489 +   defined in elfos.h, rs6000/rs6000.h rs6000/sysv4.h
490 +   or not needed for PowerPC.
491 +*/
492 +
493 +/* We need to define __powerpc__. */
494 +
495 +#undef TARGET_OS_CPP_BUILTINS
496 +#define TARGET_OS_CPP_BUILTINS()               \
497 +  do                                           \
498 +    {                                          \
499 +       builtin_define_std ("AROS");            \
500 +       builtin_define ("AMIGA");               \
501 +       builtin_define ("_AMIGA");              \
502 +       builtin_define ("__powerpc__");         \
503 +       builtin_define ("__ELF__");             \
504 +       builtin_assert ("system=posix");        \
505 +       if (flag_pic)                           \
506 +         {                                     \
507 +           builtin_define ("__PIC__");         \
508 +           builtin_define ("__pic__");         \
509 +         }                                     \
510 +    }                                          \
511 +  while (0)
512 +
513 +/* This one taken from linux.h. */
514 +/* We are 32-bit all the time, so optimize a little.  */
515 +#undef TARGET_64BIT
516 +#define TARGET_64BIT 0
517
518 +/* Output at beginning of assembler file.  */
519 +/* The .file command should always begin the output.  */
520 +/*#undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
521 +#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
522 +defined in elfos.h
523 +*/
524 +
525 +#undef TARGET_VERSION
526 +#define TARGET_VERSION fprintf (stderr, " (PowerPC AROS/ELF)");
527 +
528 +/* The svr4 ABI for the i386 says that records and unions are returned
529 +   in memory.  */
530 +/*#undef DEFAULT_PCC_STRUCT_RETURN
531 +#define DEFAULT_PCC_STRUCT_RETURN 1
532 +see rs6000/rs6000.h
533 +*/
534 +
535 +/*
536 +#undef ASM_COMMENT_START
537 +#define ASM_COMMENT_START "#"
538 +see rs6000/rs6000.h
539 +*/
540 +
541 +/*
542 +#undef DBX_REGISTER_NUMBER
543 +#define DBX_REGISTER_NUMBER(n) \
544 +  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
545 +see rs6000/sysv4.h
546 +*/
547 +
548 +/* Output assembler code to FILE to call the profiler.
549 +   To the best of my knowledge, no Linux libc has required the label
550 +   argument to mcount.  */
551 +
552 +/*
553 +#define NO_PROFILE_COUNTERS 1
554 +not used by other similar ppc compilers
555 +only in darwin.h rs6000/linux64.h rs6000/rs6000.c
556 +*/
557 +
558 +/*
559 +#undef MCOUNT_NAME
560 +#define MCOUNT_NAME "mcount"
561 +see rs6000/sysv4.h RS6000_MCOUNT
562 +*/
563 +
564 +/* The GLIBC version of mcount for the x86 assumes that there is a
565 +   frame, so we cannot allow profiling without a frame pointer.  */
566 +/*
567 +#undef SUBTARGET_FRAME_POINTER_REQUIRED
568 +#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
569 +seems to be handled by rs6000/rs6000.h
570 +*/
571 +
572 +#undef CC1_SPEC
573 +#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
574 +
575 +/* Provide a LINK_SPEC appropriate for AROS.  */
576 +
577 +#undef LINK_SPEC
578 +#define LINK_SPEC "-m elf32ppc -L %R/lib"
579 +
580 +/* A C statement (sans semicolon) to output to the stdio stream
581 +   FILE the assembler definition of uninitialized global DECL named
582 +   NAME whose size is SIZE bytes and alignment is ALIGN bytes.
583 +   Try to use asm_output_aligned_bss to implement this macro.  */
584 +/*
585 +#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
586 +  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
587 +see rs6000/sysv4.h
588 +*/
589 +
590 +/* A C statement to output to the stdio stream FILE an assembler
591 +   command to advance the location counter to a multiple of 1<<LOG
592 +   bytes if it is within MAX_SKIP bytes.
593 +
594 +   This is used to align code labels according to Intel recommendations.  */
595 +/*
596 +#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
597 +#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP)                   \
598 +  do {                                                                 \
599 +    if ((LOG) != 0) {                                                  \
600 +      if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
601 +      else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
602 +    }                                                                  \
603 +  } while (0)
604 +#endif
605 +see rs6000/sysv4.h
606 +*/
607 +
608 +/* Handle special EH pointer encodings.  Absolute, pc-relative, and
609 +   indirect are handled automatically.  */
610 +/*
611 +#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
612 +  do {                                                                 \
613 +    if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel)                \
614 +      {                                                                        \
615 +        fputs (ASM_LONG, FILE);                        \
616 +        assemble_name (FILE, XSTR (ADDR, 0));                          \
617 +       fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
618 +        goto DONE;                                                     \
619 +      }                                                                        \
620 +  } while (0)
621 +not used for PowerPC
622 +*/
623 +
624 +/* FIXME: AROS doesn't support dw2 unwinding yet.  */
625 +#undef MD_FALLBACK_FRAME_STATE_FOR
626 diff -ruN gcc-4.6.2/gcc/config/rs6000/rs6000.c gcc-4.6.2.aros/gcc/config/rs6000/rs6000.c
627 --- gcc-4.6.2/gcc/config/rs6000/rs6000.c        2011-09-19 00:01:56.000000000 +0200
628 +++ gcc-4.6.2.aros/gcc/config/rs6000/rs6000.c   2013-08-26 07:55:42.000000000 +0200
629 @@ -1308,6 +1308,7 @@
630    { "altivec",   1, 1, false, true,  false, rs6000_handle_altivec_attribute },
631    { "longcall",  0, 0, false, true,  true,  rs6000_handle_longcall_attribute },
632    { "shortcall", 0, 0, false, true,  true,  rs6000_handle_longcall_attribute },
633 +  { "stackparm", 0, 0, false, true,  true,  rs6000_handle_longcall_attribute },
634    { "ms_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute },
635    { "gcc_struct", 0, 0, false, false, false, rs6000_handle_struct_attribute },
636  #ifdef SUBTARGET_ATTRIBUTE_TABLE
637 @@ -8063,6 +8064,9 @@
638           && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype))))
639      cum->call_cookie |= CALL_LONG;
640  
641 +  cum->stackparm = fntype && lookup_attribute("stackparm",
642 +                                            TYPE_ATTRIBUTES(fntype));
643 +
644    if (TARGET_DEBUG_ARG)
645      {
646        fprintf (stderr, "\ninit_cumulative_args:");
647 @@ -9038,6 +9042,9 @@
648        return GEN_INT (cum->call_cookie);
649      }
650  
651 +  if (cum->stackparm)
652 +    return NULL_RTX;
653 +
654    if (TARGET_MACHO && rs6000_darwin64_struct_check_p (mode, type))
655      {
656        rtx rslt = rs6000_darwin64_record_arg (cum, type, named, /*retval= */false);
657 @@ -9453,6 +9460,9 @@
658    int first_reg_offset;
659    alias_set_type set;
660  
661 +  if (cum->stackparm)
662 +    return;
663 +
664    /* Skip the last named argument.  */
665    next_cum = *cum;
666    rs6000_function_arg_advance_1 (&next_cum, mode, type, true, 0);
667 diff -ruN gcc-4.6.2/gcc/config/rs6000/rs6000.h gcc-4.6.2.aros/gcc/config/rs6000/rs6000.h
668 --- gcc-4.6.2/gcc/config/rs6000/rs6000.h        2011-07-27 20:17:15.000000000 +0200
669 +++ gcc-4.6.2.aros/gcc/config/rs6000/rs6000.h   2013-08-26 07:55:42.000000000 +0200
670 @@ -1563,6 +1563,7 @@
671    int nargs_prototype;         /* # args left in the current prototype */
672    int prototype;               /* Whether a prototype was defined */
673    int stdarg;                  /* Whether function is a stdarg function.  */
674 +  int stackparm;               /* Whether function has all args on the stack */
675    int call_cookie;             /* Do special things for this call */
676    int sysv_gregno;             /* next available GP register */
677    int intoffset;               /* running offset in struct (darwin64) */
678 diff -ruN gcc-4.6.2/gcc/config/t-aros gcc-4.6.2.aros/gcc/config/t-aros
679 --- gcc-4.6.2/gcc/config/t-aros 1970-01-01 01:00:00.000000000 +0100
680 +++ gcc-4.6.2.aros/gcc/config/t-aros    2013-08-26 07:55:42.000000000 +0200
681 @@ -0,0 +1,29 @@
682 +# In AROS, "/usr" is a four-letter word.
683 +# Must match STANDARD_INCLUDE_DIR in aros.h !
684 +NATIVE_SYSTEM_HEADER_DIR = /include
685 +
686 +# Don't add AROS target include path when compiling host compiler
687 +CPPFLAGS =
688 +
689 +# Copy AROS specific include replacement files
690 +LIBGCC_DEPS += stmp-aros-hrds
691 +
692 +EXTRA_AROS_HEADERS = aros/types/size_t.h aros/types/ptrdiff_t.h \
693 +    aros/types/wchar_t.h aros/types/wint_t.h aros/types/null.h
694 +
695 +stmp-int-hdrs : | include/aros/types
696 +
697 +include/aros/types : $(addprefix $(srcdir)/ginclude/,$(EXTRA_AROS_HEADERS))
698 +       -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
699 +       -if [ -d include/aros/types ] ; \
700 +          then true; \
701 +         else \
702 +           mkdir include/aros; chmod a+rx include/aros; \
703 +           mkdir include/aros/types; chmod a+rx include/aros/types; \
704 +       fi
705 +       for file in $(EXTRA_AROS_HEADERS); do \
706 +         $(STAMP) include/$$file; \
707 +         rm -fr include/$$file; \
708 +         cp $(srcdir)/ginclude/$$file include/$$file; \
709 +         chmod a+r include/$$file; \
710 +       done
711 diff -ruN gcc-4.6.2/gcc/config.build gcc-4.6.2.aros/gcc/config.build
712 --- gcc-4.6.2/gcc/config.build  2010-04-12 20:36:30.000000000 +0200
713 +++ gcc-4.6.2.aros/gcc/config.build     2013-08-26 07:55:42.000000000 +0200
714 @@ -124,6 +124,9 @@
715      # HP 9000 series 300
716      build_install_headers_dir=install-headers-cpio
717      ;;
718 +  *-*-aros*)
719 +    build_xm_file=xm-aros.h
720 +    ;;
721    *-*-sysv*)
722      # All other System V variants.
723      build_install_headers_dir=install-headers-cpio
724 diff -ruN gcc-4.6.2/gcc/config.gcc gcc-4.6.2.aros/gcc/config.gcc
725 --- gcc-4.6.2/gcc/config.gcc    2011-07-22 18:44:50.000000000 +0200
726 +++ gcc-4.6.2.aros/gcc/config.gcc       2013-08-26 07:55:42.000000000 +0200
727 @@ -656,6 +656,14 @@
728        ;;
729    esac
730    ;;
731 +*-*-aros*)
732 +  gas=yes
733 +  gnu_ld=yes
734 +  thread_file=single
735 +  use_collect2=no
736 +  xm_defines='STDC_HEADERS=1'
737 +  ;;
738 +
739  *-*-openbsd*)
740    tmake_file="t-libc-ok t-openbsd t-libgcc-pic"
741    case ${enable_threads} in
742 @@ -793,6 +801,16 @@
743         tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
744         extra_parts="crtinit.o crtfini.o"
745         ;;
746 +arm*-*-aros*)
747 +       tm_file="dbxelf.h elfos.h arm/elf.h arm/bpabi.h aros.h arm/aros.h arm/aout.h arm/arm.h"
748 +       tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
749 +       tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-arm-softfp arm/t-bpabi arm/t-aros t-aros"
750 +       xm_file="xm-aros.h"
751 +       # The BPABI long long divmod functions return a 128-bit value in
752 +       # registers r0-r3.  Correctly modeling that requires the use of
753 +       # TImode.
754 +       need_64bit_hwint=yes
755 +       ;;
756  arm-wrs-vxworks)
757         tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
758         extra_options="${extra_options} arm/vxworks.opt"
759 @@ -1312,6 +1330,16 @@
760         esac
761         tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
762         ;;
763 +i[34567]86-*-aros*)
764 +       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h aros.h i386/aros.h"
765 +       xm_file=xm-aros.h
766 +       tmake_file="${tmake_file} i386/t-i386elf t-aros"
767 +       ;;      
768 +x86_64-*-aros*)
769 +       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h aros.h i386/aros64.h"
770 +       tmake_file="${tmake_file} i386/t-i386elf t-aros"
771 +       xm_file=xm-aros.h
772 +       ;;
773  i[34567]86-pc-msdosdjgpp*)
774         xm_file=i386/xm-djgpp.h
775         tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
776 @@ -1720,6 +1748,16 @@
777         extra_options="${extra_options} m68hc11/m68hc11.opt"
778         use_gcc_stdint=wrap
779          ;;
780 +m68k-*-aros*)
781 +       default_m68k_cpu=68000
782 +       default_cf_cpu=5206
783 +       tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
784 +       tm_file="${tm_file} aros.h"
785 +       tm_defines="${tm_defines} MOTOROLA=1"
786 +       tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
787 +       tmake_file="$tmake_file m68k/t-aros m68k/t-mlibs t-aros"
788 +       extra_parts="crtbegin.o crtend.o"
789 +       ;;
790  m68k-*-elf* | fido-*-elf*)
791         case ${target} in
792         fido-*-elf*)
793 @@ -2143,6 +2181,13 @@
794         extra_options="${extra_options} rs6000/sysv4.opt"
795         tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-rtems t-rtems rs6000/t-ppccomm"
796         ;;
797 +powerpc-*-aros*)
798 +       tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h aros.h"
799 +       extra_options="${extra_options} rs6000/sysv4.opt"
800 +       tm_file="${tm_file} rs6000/aros.h"
801 +       xm_file=xm-aros.h
802 +       tmake_file="$tmake_file t-aros"
803 +       ;;
804  powerpc-*-linux* | powerpc64-*-linux*)
805         tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
806         extra_options="${extra_options} rs6000/sysv4.opt"
807 diff -ruN gcc-4.6.2/gcc/config.host gcc-4.6.2.aros/gcc/config.host
808 --- gcc-4.6.2/gcc/config.host   2011-02-15 10:49:14.000000000 +0100
809 +++ gcc-4.6.2.aros/gcc/config.host      2013-08-26 07:55:42.000000000 +0200
810 @@ -277,4 +277,8 @@
811      out_host_hook_obj=host-hpux.o
812      host_xmake_file="${host_xmake_file} x-hpux"
813      ;;
814 +  *-*-aros*)
815 +    host_can_use_collect2=no
816 +    host_xm_file=xm-aros.h
817 +    ;;
818  esac
819 diff -ruN gcc-4.6.2/gcc/doc/cppopts.texi gcc-4.6.2.aros/gcc/doc/cppopts.texi
820 --- gcc-4.6.2/gcc/doc/cppopts.texi      2010-12-20 08:26:12.000000000 +0100
821 +++ gcc-4.6.2.aros/gcc/doc/cppopts.texi 2013-08-26 07:55:42.000000000 +0200
822 @@ -769,7 +769,7 @@
823  Enable special code to work around file systems which only permit very
824  short file names, such as MS-DOS@.
825  
826 -@itemx --help
827 +@item --help
828  @itemx --target-help
829  @opindex help
830  @opindex target-help
831 diff -ruN gcc-4.6.2/gcc/doc/generic.texi gcc-4.6.2.aros/gcc/doc/generic.texi
832 --- gcc-4.6.2/gcc/doc/generic.texi      2011-01-02 02:30:55.000000000 +0100
833 +++ gcc-4.6.2.aros/gcc/doc/generic.texi 2013-08-26 07:55:42.000000000 +0200
834 @@ -1421,7 +1421,7 @@
835  integer type compatible with sizetype.  This is the only binary
836  arithmetic operand that can operate on pointer types.
837  
838 -@itemx PLUS_EXPR
839 +@item PLUS_EXPR
840  @itemx MINUS_EXPR
841  @itemx MULT_EXPR
842  These nodes represent various binary arithmetic operations.
843 diff -ruN gcc-4.6.2/gcc/doc/invoke.texi gcc-4.6.2.aros/gcc/doc/invoke.texi
844 --- gcc-4.6.2/gcc/doc/invoke.texi       2011-10-24 14:22:21.000000000 +0200
845 +++ gcc-4.6.2.aros/gcc/doc/invoke.texi  2013-08-26 07:55:42.000000000 +0200
846 @@ -165,7 +165,7 @@
847  -pipe  -pass-exit-codes  @gol
848  -x @var{language}  -v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  @gol
849  --version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg}  @gol
850 --fdump-ada-spec@r{[}-slim@r{]}} -fdump-go-spec=@var{file}
851 +-fdump-ada-spec@r{[}-slim@r{]} -fdump-go-spec=@var{file}}
852  
853  @item C Language Options
854  @xref{C Dialect Options,,Options Controlling C Dialect}.
855 @@ -5085,11 +5085,11 @@
856  @option{-fdump-rtl-ce3} enable dumping after the three
857  if conversion passes.
858  
859 -@itemx -fdump-rtl-cprop_hardreg
860 +@item -fdump-rtl-cprop_hardreg
861  @opindex fdump-rtl-cprop_hardreg
862  Dump after hard register copy propagation.
863  
864 -@itemx -fdump-rtl-csa
865 +@item -fdump-rtl-csa
866  @opindex fdump-rtl-csa
867  Dump after combining stack adjustments.
868  
869 @@ -5100,11 +5100,11 @@
870  @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
871  the two common sub-expression elimination passes.
872  
873 -@itemx -fdump-rtl-dce
874 +@item -fdump-rtl-dce
875  @opindex fdump-rtl-dce
876  Dump after the standalone dead code elimination passes.
877  
878 -@itemx -fdump-rtl-dbr
879 +@item -fdump-rtl-dbr
880  @opindex fdump-rtl-dbr
881  Dump after delayed branch scheduling.
882  
883 @@ -5149,7 +5149,7 @@
884  @opindex fdump-rtl-initvals
885  Dump after the computation of the initial value sets.
886  
887 -@itemx -fdump-rtl-into_cfglayout
888 +@item -fdump-rtl-into_cfglayout
889  @opindex fdump-rtl-into_cfglayout
890  Dump after converting to cfglayout mode.
891  
892 @@ -5179,7 +5179,7 @@
893  @opindex fdump-rtl-rnreg
894  Dump after register renumbering.
895  
896 -@itemx -fdump-rtl-outof_cfglayout
897 +@item -fdump-rtl-outof_cfglayout
898  @opindex fdump-rtl-outof_cfglayout
899  Dump after converting from cfglayout mode.
900  
901 @@ -5191,7 +5191,7 @@
902  @opindex fdump-rtl-postreload
903  Dump after post-reload optimizations.
904  
905 -@itemx -fdump-rtl-pro_and_epilogue
906 +@item -fdump-rtl-pro_and_epilogue
907  @opindex fdump-rtl-pro_and_epilogue
908  Dump after generating the function pro and epilogues.
909  
910 diff -ruN gcc-4.6.2/gcc/doc/sourcebuild.texi gcc-4.6.2.aros/gcc/doc/sourcebuild.texi
911 --- gcc-4.6.2/gcc/doc/sourcebuild.texi  2011-02-11 11:01:29.000000000 +0100
912 +++ gcc-4.6.2.aros/gcc/doc/sourcebuild.texi     2013-08-26 07:55:42.000000000 +0200
913 @@ -676,7 +676,7 @@
914  @code{lang_checks}.
915  
916  @table @code
917 -@itemx all.cross
918 +@item all.cross
919  @itemx start.encap
920  @itemx rest.encap
921  FIXME: exactly what goes in each of these targets?
922 diff -ruN gcc-4.6.2/gcc/gengtype.c gcc-4.6.2.aros/gcc/gengtype.c
923 --- gcc-4.6.2/gcc/gengtype.c    2010-11-25 20:03:27.000000000 +0100
924 +++ gcc-4.6.2.aros/gcc/gengtype.c       2013-08-26 07:55:42.000000000 +0200
925 @@ -3594,13 +3594,13 @@
926                   int has_length, struct fileloc *line, const char *if_marked,
927                   bool emit_pch, type_p field_type, const char *field_name)
928  {
929 +  struct pair newv;
930    /* If the field reference is relative to V, rather than to some
931       subcomponent of V, we can mark any subarrays with a single stride.
932       We're effectively treating the field as a global variable in its
933       own right.  */
934    if (v && type == v->type)
935      {
936 -      struct pair newv;
937  
938        newv = *v;
939        newv.type = field_type;
940 diff -ruN gcc-4.6.2/gcc/ginclude/aros/types/null.h gcc-4.6.2.aros/gcc/ginclude/aros/types/null.h
941 --- gcc-4.6.2/gcc/ginclude/aros/types/null.h    1970-01-01 01:00:00.000000000 +0100
942 +++ gcc-4.6.2.aros/gcc/ginclude/aros/types/null.h       2013-08-26 07:55:42.000000000 +0200
943 @@ -0,0 +1,3 @@
944 +/* Replace AROS' NULL definition with gcc's one */
945 +#define __need_NULL
946 +#include <stddef.h>
947 diff -ruN gcc-4.6.2/gcc/ginclude/aros/types/ptrdiff_t.h gcc-4.6.2.aros/gcc/ginclude/aros/types/ptrdiff_t.h
948 --- gcc-4.6.2/gcc/ginclude/aros/types/ptrdiff_t.h       1970-01-01 01:00:00.000000000 +0100
949 +++ gcc-4.6.2.aros/gcc/ginclude/aros/types/ptrdiff_t.h  2013-08-26 07:55:42.000000000 +0200
950 @@ -0,0 +1,3 @@
951 +/* Replace AROS' ptrdiff_t definition with gcc's one */
952 +#define __need_ptrdiff_t
953 +#include <stddef.h>
954 diff -ruN gcc-4.6.2/gcc/ginclude/aros/types/size_t.h gcc-4.6.2.aros/gcc/ginclude/aros/types/size_t.h
955 --- gcc-4.6.2/gcc/ginclude/aros/types/size_t.h  1970-01-01 01:00:00.000000000 +0100
956 +++ gcc-4.6.2.aros/gcc/ginclude/aros/types/size_t.h     2013-08-26 07:55:42.000000000 +0200
957 @@ -0,0 +1,3 @@
958 +/* Replace AROS' size_t definition with gcc's one */
959 +#define __need_size_t
960 +#include <stddef.h>
961 diff -ruN gcc-4.6.2/gcc/ginclude/aros/types/wchar_t.h gcc-4.6.2.aros/gcc/ginclude/aros/types/wchar_t.h
962 --- gcc-4.6.2/gcc/ginclude/aros/types/wchar_t.h 1970-01-01 01:00:00.000000000 +0100
963 +++ gcc-4.6.2.aros/gcc/ginclude/aros/types/wchar_t.h    2013-08-26 07:55:42.000000000 +0200
964 @@ -0,0 +1,3 @@
965 +/* Replace AROS' wchar_t definition with gcc's one */
966 +#define __need_wchar_t
967 +#include <stddef.h>
968 diff -ruN gcc-4.6.2/gcc/ginclude/aros/types/wint_t.h gcc-4.6.2.aros/gcc/ginclude/aros/types/wint_t.h
969 --- gcc-4.6.2/gcc/ginclude/aros/types/wint_t.h  1970-01-01 01:00:00.000000000 +0100
970 +++ gcc-4.6.2.aros/gcc/ginclude/aros/types/wint_t.h     2013-08-26 07:55:42.000000000 +0200
971 @@ -0,0 +1,3 @@
972 +/* Replace AROS' wint_t definition with gcc's one */
973 +#define __need_wint_t
974 +#include <stddef.h>
975 diff -ruN gcc-4.6.2/gcc/ginclude/stddef.h gcc-4.6.2.aros/gcc/ginclude/stddef.h
976 --- gcc-4.6.2/gcc/ginclude/stddef.h     2011-01-29 23:15:52.000000000 +0100
977 +++ gcc-4.6.2.aros/gcc/ginclude/stddef.h        2013-08-26 07:55:42.000000000 +0200
978 @@ -134,6 +134,7 @@
979  #ifndef __PTRDIFF_T
980  #ifndef _PTRDIFF_T_
981  #ifndef _BSD_PTRDIFF_T_
982 +#ifndef _AROS_TYPES_PTRDIFF_T_H
983  #ifndef ___int_ptrdiff_t_h
984  #ifndef _GCC_PTRDIFF_T
985  #define _PTRDIFF_T
986 @@ -142,6 +143,7 @@
987  #define __PTRDIFF_T
988  #define _PTRDIFF_T_
989  #define _BSD_PTRDIFF_T_
990 +#define _AROS_TYPES_PTRDIFF_T_H
991  #define ___int_ptrdiff_t_h
992  #define _GCC_PTRDIFF_T
993  #ifndef __PTRDIFF_TYPE__
994 @@ -150,6 +152,7 @@
995  typedef __PTRDIFF_TYPE__ ptrdiff_t;
996  #endif /* _GCC_PTRDIFF_T */
997  #endif /* ___int_ptrdiff_t_h */
998 +#endif /* _AROS_TYPES_PTRDIFF_T_H */
999  #endif /* _BSD_PTRDIFF_T_ */
1000  #endif /* _PTRDIFF_T_ */
1001  #endif /* __PTRDIFF_T */
1002 @@ -176,6 +179,7 @@
1003  #ifndef __SIZE_T
1004  #ifndef _SIZE_T_
1005  #ifndef _BSD_SIZE_T_
1006 +#ifndef _AROS_TYPES_SIZE_T_H
1007  #ifndef _SIZE_T_DEFINED_
1008  #ifndef _SIZE_T_DEFINED
1009  #ifndef _BSD_SIZE_T_DEFINED_   /* Darwin */
1010 @@ -193,6 +197,7 @@
1011  #define __SIZE_T
1012  #define _SIZE_T_
1013  #define _BSD_SIZE_T_
1014 +#define _AROS_TYPES_SIZE_T_H
1015  #define _SIZE_T_DEFINED_
1016  #define _SIZE_T_DEFINED
1017  #define _BSD_SIZE_T_DEFINED_   /* Darwin */
1018 @@ -222,6 +227,7 @@
1019  #endif /* _BSD_SIZE_T_DEFINED_ */
1020  #endif /* _SIZE_T_DEFINED */
1021  #endif /* _SIZE_T_DEFINED_ */
1022 +#endif /* _AROS_TYPES_SIZE_T_H */
1023  #endif /* _BSD_SIZE_T_ */
1024  #endif /* _SIZE_T_ */
1025  #endif /* __SIZE_T */
1026 diff -ruN gcc-4.6.2/include/filenames.h gcc-4.6.2.aros/include/filenames.h
1027 --- gcc-4.6.2/include/filenames.h       2011-02-28 19:23:25.000000000 +0100
1028 +++ gcc-4.6.2.aros/include/filenames.h  2013-08-26 07:55:42.000000000 +0200
1029 @@ -37,6 +37,10 @@
1030  #  define HAS_DRIVE_SPEC(f) HAS_DOS_DRIVE_SPEC (f)
1031  #  define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
1032  #  define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
1033 +#elif defined __AROS__
1034 +#  define IS_DIR_SEPARATOR(c)  ((c) == '/' || (c) == ':')
1035 +#  define IS_ABSOLUTE_PATH(f)  (IS_DIR_SEPARATOR((f)[0]) || (strchr((f), ':')))
1036 +#  define HAVE_CASE_INSENSITIVE_FILE_SYSTEM
1037  #else /* not DOSish */
1038  #  define HAS_DRIVE_SPEC(f) (0)
1039  #  define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
1040 diff -ruN gcc-4.6.2/libcpp/configure gcc-4.6.2.aros/libcpp/configure
1041 --- gcc-4.6.2/libcpp/configure  2011-10-26 11:30:24.000000000 +0200
1042 +++ gcc-4.6.2.aros/libcpp/configure     2013-08-26 07:55:42.000000000 +0200
1043 @@ -7091,6 +7091,7 @@
1044         alpha*-*-* | \
1045         arm*-*-*eabi* | \
1046         arm*-*-symbianelf* | \
1047 +       arm*-*-aros | \
1048         x86_64-*-* | \
1049         ia64-*-* | \
1050         hppa*64*-*-* | \
1051 diff -ruN gcc-4.6.2/libcpp/configure.ac gcc-4.6.2.aros/libcpp/configure.ac
1052 --- gcc-4.6.2/libcpp/configure.ac       2010-11-18 08:35:34.000000000 +0100
1053 +++ gcc-4.6.2.aros/libcpp/configure.ac  2013-08-26 07:55:42.000000000 +0200
1054 @@ -141,6 +141,7 @@
1055         alpha*-*-* | \
1056         arm*-*-*eabi* | \
1057         arm*-*-symbianelf* | \
1058 +       arm*-*-aros | \
1059         x86_64-*-* | \
1060         ia64-*-* | \
1061         hppa*64*-*-* | \
1062 diff -ruN gcc-4.6.2/libgcc/config.host gcc-4.6.2.aros/libgcc/config.host
1063 --- gcc-4.6.2/libgcc/config.host        2011-03-14 07:06:23.000000000 +0100
1064 +++ gcc-4.6.2.aros/libgcc/config.host   2013-08-26 07:55:42.000000000 +0200
1065 @@ -599,6 +599,8 @@
1066         ;;
1067  mep*-*-*)
1068         ;;
1069 +*-*-aros*)
1070 +       ;;
1071  *)
1072         echo "*** Configuration ${host} not supported" 1>&2
1073         exit 1
1074 diff -ruN gcc-4.6.2/libiberty/filename_cmp.c gcc-4.6.2.aros/libiberty/filename_cmp.c
1075 --- gcc-4.6.2/libiberty/filename_cmp.c  2011-02-28 19:23:25.000000000 +0100
1076 +++ gcc-4.6.2.aros/libiberty/filename_cmp.c     2013-08-26 07:55:42.000000000 +0200
1077 @@ -51,7 +51,11 @@
1078  filename_cmp (const char *s1, const char *s2)
1079  {
1080  #ifndef HAVE_DOS_BASED_FILE_SYSTEM
1081 +#ifdef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
1082 +  return strcasecmp(s1, s2);
1083 +#else
1084    return strcmp(s1, s2);
1085 +#endif
1086  #else
1087    for (;;)
1088      {
1089 diff -ruN gcc-4.6.2/libobjc/configure gcc-4.6.2.aros/libobjc/configure
1090 --- gcc-4.6.2/libobjc/configure 2011-02-13 12:45:53.000000000 +0100
1091 +++ gcc-4.6.2.aros/libobjc/configure    2013-08-26 07:55:42.000000000 +0200
1092 @@ -11249,215 +11249,7 @@
1093  
1094  fi
1095  
1096 -# Check if we have thread-local storage
1097 -
1098 -
1099 -   # Check whether --enable-tls was given.
1100 -if test "${enable_tls+set}" = set; then :
1101 -  enableval=$enable_tls;
1102 -      case "$enableval" in
1103 -       yes|no) ;;
1104 -       *) as_fn_error "Argument to enable/disable tls must be yes or no" "$LINENO" 5 ;;
1105 -      esac
1106 -
1107 -else
1108 -  enable_tls=yes
1109 -fi
1110 -
1111 -
1112 -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports thread-local storage" >&5
1113 -$as_echo_n "checking whether the target supports thread-local storage... " >&6; }
1114 -if test "${gcc_cv_have_tls+set}" = set; then :
1115 -  $as_echo_n "(cached) " >&6
1116 -else
1117 -
1118 -    if test "$cross_compiling" = yes; then :
1119 -                if test x$gcc_no_link = xyes; then
1120 -  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
1121 -fi
1122 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1123 -/* end confdefs.h.  */
1124 -__thread int a; int b; int main() { return a = b; }
1125 -_ACEOF
1126 -if ac_fn_c_try_link "$LINENO"; then :
1127 -  chktls_save_LDFLAGS="$LDFLAGS"
1128 -                         case $host in
1129 -           *-*-linux*)
1130 -             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
1131 -             ;;
1132 -         esac
1133 -         chktls_save_CFLAGS="$CFLAGS"
1134 -         CFLAGS="-fPIC $CFLAGS"
1135 -                 if test x$gcc_no_link = xyes; then
1136 -  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
1137 -fi
1138 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1139 -/* end confdefs.h.  */
1140 -int f() { return 0; }
1141 -_ACEOF
1142 -if ac_fn_c_try_link "$LINENO"; then :
1143 -  if test x$gcc_no_link = xyes; then
1144 -  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
1145 -fi
1146 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1147 -/* end confdefs.h.  */
1148 -__thread int a; int b; int f() { return a = b; }
1149 -_ACEOF
1150 -if ac_fn_c_try_link "$LINENO"; then :
1151 -  gcc_cv_have_tls=yes
1152 -else
1153 -  gcc_cv_have_tls=no
1154 -fi
1155 -rm -f core conftest.err conftest.$ac_objext \
1156 -    conftest$ac_exeext conftest.$ac_ext
1157 -else
1158 -  gcc_cv_have_tls=yes
1159 -fi
1160 -rm -f core conftest.err conftest.$ac_objext \
1161 -    conftest$ac_exeext conftest.$ac_ext
1162 -         CFLAGS="$chktls_save_CFLAGS"
1163 -         LDFLAGS="$chktls_save_LDFLAGS"
1164 -else
1165 -  gcc_cv_have_tls=no
1166 -fi
1167 -rm -f core conftest.err conftest.$ac_objext \
1168 -    conftest$ac_exeext conftest.$ac_ext
1169 -
1170 -
1171 -else
1172 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1173 -/* end confdefs.h.  */
1174 -__thread int a; int b; int main() { return a = b; }
1175 -_ACEOF
1176 -if ac_fn_c_try_run "$LINENO"; then :
1177 -                      chktls_save_LDFLAGS="$LDFLAGS"
1178 -      LDFLAGS="-static $LDFLAGS"
1179 -      if test x$gcc_no_link = xyes; then
1180 -  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
1181 -fi
1182 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1183 -/* end confdefs.h.  */
1184 -int main() { return 0; }
1185 -_ACEOF
1186 -if ac_fn_c_try_link "$LINENO"; then :
1187 -  if test "$cross_compiling" = yes; then :
1188 -  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
1189 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
1190 -as_fn_error "cannot run test program while cross compiling
1191 -See \`config.log' for more details." "$LINENO" 5; }
1192 -else
1193 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1194 -/* end confdefs.h.  */
1195 -__thread int a; int b; int main() { return a = b; }
1196 -_ACEOF
1197 -if ac_fn_c_try_run "$LINENO"; then :
1198 -  gcc_cv_have_tls=yes
1199 -else
1200 -  gcc_cv_have_tls=no
1201 -fi
1202 -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
1203 -  conftest.$ac_objext conftest.beam conftest.$ac_ext
1204 -fi
1205 -
1206 -else
1207 -  gcc_cv_have_tls=yes
1208 -fi
1209 -rm -f core conftest.err conftest.$ac_objext \
1210 -    conftest$ac_exeext conftest.$ac_ext
1211 -      LDFLAGS="$chktls_save_LDFLAGS"
1212 -      if test $gcc_cv_have_tls = yes; then
1213 -                                               chktls_save_CFLAGS="$CFLAGS"
1214 -       thread_CFLAGS=failed
1215 -       for flag in '' '-pthread' '-lpthread'; do
1216 -         CFLAGS="$flag $chktls_save_CFLAGS"
1217 -         if test x$gcc_no_link = xyes; then
1218 -  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
1219 -fi
1220 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1221 -/* end confdefs.h.  */
1222 -#include <pthread.h>
1223 -               void *g(void *d) { return NULL; }
1224 -int
1225 -main ()
1226 -{
1227 -pthread_t t; pthread_create(&t,NULL,g,NULL);
1228 -  ;
1229 -  return 0;
1230 -}
1231 -_ACEOF
1232 -if ac_fn_c_try_link "$LINENO"; then :
1233 -  thread_CFLAGS="$flag"
1234 -fi
1235 -rm -f core conftest.err conftest.$ac_objext \
1236 -    conftest$ac_exeext conftest.$ac_ext
1237 -         if test "X$thread_CFLAGS" != Xfailed; then
1238 -           break
1239 -         fi
1240 -       done
1241 -       CFLAGS="$chktls_save_CFLAGS"
1242 -       if test "X$thread_CFLAGS" != Xfailed; then
1243 -         CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
1244 -                                                 if test "$cross_compiling" = yes; then :
1245 -  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
1246 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
1247 -as_fn_error "cannot run test program while cross compiling
1248 -See \`config.log' for more details." "$LINENO" 5; }
1249 -else
1250 -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1251 -/* end confdefs.h.  */
1252 -#include <pthread.h>
1253 -               __thread int a;
1254 -               static int *volatile a_in_other_thread;
1255 -               static void *
1256 -               thread_func (void *arg)
1257 -               {
1258 -                 a_in_other_thread = &a;
1259 -                 return (void *)0;
1260 -               }
1261 -int
1262 -main ()
1263 -{
1264 -pthread_t thread;
1265 -               void *thread_retval;
1266 -               int *volatile a_in_main_thread;
1267 -               a_in_main_thread = &a;
1268 -               if (pthread_create (&thread, (pthread_attr_t *)0,
1269 -                                   thread_func, (void *)0))
1270 -                 return 0;
1271 -               if (pthread_join (thread, &thread_retval))
1272 -                 return 0;
1273 -               return (a_in_other_thread == a_in_main_thread);
1274 -  ;
1275 -  return 0;
1276 -}
1277 -_ACEOF
1278 -if ac_fn_c_try_run "$LINENO"; then :
1279 -  gcc_cv_have_tls=yes
1280 -else
1281 -  gcc_cv_have_tls=no
1282 -fi
1283 -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
1284 -  conftest.$ac_objext conftest.beam conftest.$ac_ext
1285 -fi
1286 -
1287 -         CFLAGS="$chktls_save_CFLAGS"
1288 -       fi
1289 -      fi
1290 -else
1291 -  gcc_cv_have_tls=no
1292 -fi
1293 -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
1294 -  conftest.$ac_objext conftest.beam conftest.$ac_ext
1295 -fi
1296 -
1297 -fi
1298 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_have_tls" >&5
1299 -$as_echo "$gcc_cv_have_tls" >&6; }
1300 -  if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
1301 -
1302 -$as_echo "#define HAVE_TLS 1" >>confdefs.h
1303 -
1304 -  fi
1305 +#dnl GCC_ENABLE_TLS
1306  
1307  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exception model to use" >&5
1308  $as_echo_n "checking for exception model to use... " >&6; }
1309 diff -ruN gcc-4.6.2/libobjc/configure.ac gcc-4.6.2.aros/libobjc/configure.ac
1310 --- gcc-4.6.2/libobjc/configure.ac      2010-12-06 01:50:04.000000000 +0100
1311 +++ gcc-4.6.2.aros/libobjc/configure.ac 2013-08-26 07:55:42.000000000 +0200
1312 @@ -217,7 +217,7 @@
1313  fi 
1314  
1315  # Check if we have thread-local storage
1316 -GCC_CHECK_TLS
1317 +dnl GCC_CHECK_TLS
1318  
1319  AC_MSG_CHECKING([for exception model to use])
1320  AC_LANG_PUSH(C)
1321 diff -ruN gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_base.h gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_base.h
1322 --- gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_base.h  1970-01-01 01:00:00.000000000 +0100
1323 +++ gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_base.h     2013-08-26 07:55:42.000000000 +0200
1324 @@ -0,0 +1,27 @@
1325 +namespace std _GLIBCXX_VISIBILITY(default)
1326 +{
1327 +_GLIBCXX_BEGIN_NAMESPACE_VERSION
1328 +
1329 +struct ctype_base {
1330 +    /* Non-standard typedefs */
1331 +    typedef int *              __to_type;
1332 +
1333 +    /* NB: Offsets into ctype<char>::_M_table force a particular size
1334 +       on the mask type. Because of this, we don't use an enum. */
1335 +    typedef unsigned short int mask;
1336 +
1337 +    static const mask upper  = _ISupper;
1338 +    static const mask lower  = _ISlower;
1339 +    static const mask alpha  = _ISalpha;
1340 +    static const mask digit  = _ISdigit;
1341 +    static const mask xdigit = _ISxdigit;
1342 +    static const mask space  = _ISspace;
1343 +    static const mask print  = _ISprint;
1344 +    static const mask graph  = _ISgraph;
1345 +    static const mask cntrl  = _IScntrl;
1346 +    static const mask punct  = _ISpunct;
1347 +    static const mask alnum  = _ISalnum;
1348 +};
1349 +
1350 +_GLIBCXX_END_NAMESPACE_VERSION
1351 +} // namespace
1352 diff -ruN gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_inline.h gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_inline.h
1353 --- gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_inline.h        1970-01-01 01:00:00.000000000 +0100
1354 +++ gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_inline.h   2013-08-26 07:55:42.000000000 +0200
1355 @@ -0,0 +1,173 @@
1356 +// Locale support -*- C++ -*-
1357 +
1358 +// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
1359 +//
1360 +// This file is part of the GNU ISO C++ Library.  This library is free
1361 +// software; you can redistribute it and/or modify it under the
1362 +// terms of the GNU General Public License as published by the
1363 +// Free Software Foundation; either version 2, or (at your option)
1364 +// any later version.
1365 +
1366 +// This library is distributed in the hope that it will be useful,
1367 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
1368 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1369 +// GNU General Public License for more details.
1370 +
1371 +// You should have received a copy of the GNU General Public License along
1372 +// with this library; see the file COPYING.  If not, write to the Free
1373 +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
1374 +// USA.
1375 +
1376 +// As a special exception, you may use this file as part of a free software
1377 +// library without restriction.  Specifically, if other files instantiate
1378 +// templates or use macros or inline functions from this file, or you compile
1379 +// this file and link it with other files to produce an executable, this
1380 +// file does not by itself cause the resulting executable to be covered by
1381 +// the GNU General Public License.  This exception does not however
1382 +// invalidate any other reasons why the executable file might be covered by
1383 +// the GNU General Public License.
1384 +
1385 +/** @file ctype_inline.h
1386 + *  This is an internal header file, included by other library headers.
1387 + *  You should not attempt to use it directly.
1388 + */
1389 +
1390 +//
1391 +// ISO C++ 14882: 22.1  Locales
1392 +//
1393 +  
1394 +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
1395 +// functions go in ctype.cc
1396 +  
1397 +// The following definitions are portable, but insanely slow. If one
1398 +// cares at all about performance, then specialized ctype
1399 +// functionality should be added for the native os in question: see
1400 +// the config/os/bits/ctype_*.h files.
1401 +
1402 +// Constructing a synthetic "C" table should be seriously considered...
1403 +
1404 +namespace std _GLIBCXX_VISIBILITY(default)
1405 +{
1406 +_GLIBCXX_BEGIN_NAMESPACE_VERSION
1407 +
1408 +  bool
1409 +  ctype<char>::
1410 +  is(mask __m, char __c) const
1411 +  { 
1412 +    if (_M_table)
1413 +      return _M_table[static_cast<unsigned char>(__c)] & __m;
1414 +    else
1415 +      {
1416 +       bool __ret = false;
1417 +       const size_t __bitmasksize = 15; 
1418 +       size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0
1419 +       for (; __bitcur <= __bitmasksize; ++__bitcur)
1420 +         {
1421 +           const mask __bit = static_cast<mask>(1 << __bitcur);
1422 +           if (__m & __bit)
1423 +             {
1424 +               bool __testis;
1425 +               switch (__bit)
1426 +                 {
1427 +                 case space:
1428 +                   __testis = isspace(__c);
1429 +                   break;
1430 +                 case print:
1431 +                   __testis = isprint(__c);
1432 +                   break;
1433 +                 case cntrl:
1434 +                   __testis = iscntrl(__c);
1435 +                   break;
1436 +                 case upper:
1437 +                   __testis = isupper(__c);
1438 +                   break;
1439 +                 case lower:
1440 +                   __testis = islower(__c);
1441 +                   break;
1442 +                 case alpha:
1443 +                   __testis = isalpha(__c);
1444 +                   break;
1445 +                 case digit:
1446 +                   __testis = isdigit(__c);
1447 +                   break;
1448 +                 case punct:
1449 +                   __testis = ispunct(__c);
1450 +                   break;
1451 +                 case xdigit:
1452 +                   __testis = isxdigit(__c);
1453 +                   break;
1454 +                 case alnum:
1455 +                   __testis = isalnum(__c);
1456 +                   break;
1457 +                 case graph:
1458 +                   __testis = isgraph(__c);
1459 +                   break;
1460 +                 default:
1461 +                   __testis = false;
1462 +                   break;
1463 +                 }
1464 +               __ret |= __testis;
1465 +             }
1466 +         }
1467 +       return __ret;
1468 +      }
1469 +  }
1470 +   
1471 +  const char*
1472 +  ctype<char>::
1473 +  is(const char* __low, const char* __high, mask* __vec) const
1474 +  {
1475 +    if (_M_table)
1476 +      while (__low < __high)
1477 +       *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
1478 +    else
1479 +      {
1480 +       // Highest bitmask in ctype_base == 10.
1481 +       const size_t __bitmasksize = 15; 
1482 +       for (;__low < __high; ++__vec, ++__low)
1483 +         {
1484 +           mask __m = 0;
1485 +           // Lowest bitmask in ctype_base == 0
1486 +           size_t __i = 0; 
1487 +           for (;__i <= __bitmasksize; ++__i)
1488 +             {
1489 +               const mask __bit = static_cast<mask>(1 << __i);
1490 +               if (this->is(__bit, *__low))
1491 +                 __m |= __bit;
1492 +             }
1493 +           *__vec = __m;
1494 +         }
1495 +      }
1496 +    return __high;
1497 +  }
1498 +
1499 +  const char*
1500 +  ctype<char>::
1501 +  scan_is(mask __m, const char* __low, const char* __high) const
1502 +  {
1503 +    if (_M_table)
1504 +      while (__low < __high
1505 +            && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
1506 +       ++__low;
1507 +    else
1508 +      while (__low < __high && !this->is(__m, *__low))
1509 +       ++__low;
1510 +    return __low;
1511 +  }
1512 +
1513 +  const char*
1514 +  ctype<char>::
1515 +  scan_not(mask __m, const char* __low, const char* __high) const
1516 +  {
1517 +    if (_M_table)
1518 +      while (__low < __high
1519 +            && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
1520 +       ++__low;
1521 +    else
1522 +      while (__low < __high && this->is(__m, *__low) != 0)
1523 +       ++__low;
1524 +    return __low;
1525 +  }
1526 +
1527 +_GLIBCXX_END_NAMESPACE_VERSION
1528 +} // namespace
1529 diff -ruN gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_noninline.h gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_noninline.h
1530 --- gcc-4.6.2/libstdc++-v3/config/os/aros/ctype_noninline.h     1970-01-01 01:00:00.000000000 +0100
1531 +++ gcc-4.6.2.aros/libstdc++-v3/config/os/aros/ctype_noninline.h        2013-08-26 07:55:42.000000000 +0200
1532 @@ -0,0 +1,56 @@
1533 +  const ctype_base::mask*
1534 +  ctype<char>::classic_table() throw()
1535 +  { return *__ctype_b_ptr; }
1536 +
1537 +  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
1538 +                    size_t __refs) 
1539 +  : facet(__refs), _M_del(__table != 0 && __del), 
1540 +  _M_toupper(NULL), _M_tolower(NULL), 
1541 +  _M_table(__table ? __table : classic_table()) 
1542 +  { 
1543 +    memset(_M_widen, 0, sizeof(_M_widen));
1544 +    _M_widen_ok = 0;
1545 +    memset(_M_narrow, 0, sizeof(_M_narrow));
1546 +    _M_narrow_ok = 0;
1547 +  }
1548 +
1549 +  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 
1550 +  : facet(__refs), _M_del(__table != 0 && __del), 
1551 +  _M_toupper(NULL), _M_tolower(NULL), 
1552 +  _M_table(__table ? __table : classic_table())
1553 +  { 
1554 +    memset(_M_widen, 0, sizeof(_M_widen));
1555 +    _M_widen_ok = 0;
1556 +    memset(_M_narrow, 0, sizeof(_M_narrow));
1557 +    _M_narrow_ok = 0;
1558 +  }
1559 +
1560 +  char
1561 +  ctype<char>::do_toupper(char __c) const
1562 +  { return ::toupper((int) __c); }
1563 +
1564 +  const char*
1565 +  ctype<char>::do_toupper(char* __low, const char* __high) const
1566 +  {
1567 +    while (__low < __high)
1568 +      {
1569 +       *__low = ::toupper((int) *__low);
1570 +       ++__low;
1571 +      }
1572 +    return __high;
1573 +  }
1574 +
1575 +  char
1576 +  ctype<char>::do_tolower(char __c) const
1577 +  { return ::tolower((int) __c); }
1578 +
1579 +  const char* 
1580 +  ctype<char>::do_tolower(char* __low, const char* __high) const
1581 +  {
1582 +    while (__low < __high)
1583 +      {
1584 +       *__low = ::tolower((int) *__low);
1585 +       ++__low;
1586 +      }
1587 +    return __high;
1588 +  }
1589 diff -ruN gcc-4.6.2/libstdc++-v3/config/os/aros/os_defines.h gcc-4.6.2.aros/libstdc++-v3/config/os/aros/os_defines.h
1590 --- gcc-4.6.2/libstdc++-v3/config/os/aros/os_defines.h  1970-01-01 01:00:00.000000000 +0100
1591 +++ gcc-4.6.2.aros/libstdc++-v3/config/os/aros/os_defines.h     2013-08-26 07:55:42.000000000 +0200
1592 @@ -0,0 +1,6 @@
1593 +#ifndef _GLIBCXX_OS_DEFINES
1594 +#define _GLIBCXX_OS_DEFINES
1595 +
1596 +#define __off64_t   off_t
1597 +
1598 +#endif
1599 diff -ruN gcc-4.6.2/libstdc++-v3/configure gcc-4.6.2.aros/libstdc++-v3/configure
1600 --- gcc-4.6.2/libstdc++-v3/configure    2011-10-06 01:09:51.000000000 +0200
1601 +++ gcc-4.6.2.aros/libstdc++-v3/configure       2013-08-26 07:55:42.000000000 +0200
1602 @@ -5267,12 +5267,9 @@
1603  
1604  
1605  
1606 -if test "x${with_newlib}" != "xyes"; then
1607 -  enable_dlopen=yes
1608 -
1609 -
1610 -
1611 -fi
1612 +#if test "x${with_newlib}" != "xyes"; then
1613 +#  AC_LIBTOOL_DLOPEN
1614 +#fi
1615  case `pwd` in
1616    *\ * | *\    *)
1617      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
1618 @@ -7990,6 +7987,8 @@
1619  
1620  
1621  
1622 +        enable_dlopen=no
1623 +
1624  
1625    enable_win32_dll=no
1626  
1627 @@ -18131,6 +18130,7 @@
1628  {
1629  struct iovec iov[2];
1630         writev(0, iov, 0);
1631 +#error be sure to fail
1632    ;
1633    return 0;
1634  }
1635 @@ -18153,6 +18153,7 @@
1636  {
1637  struct iovec iov[2];
1638         writev(0, iov, 0);
1639 +#error be sure to fail
1640    ;
1641    return 0;
1642  }
1643 @@ -26484,6 +26485,58 @@
1644  
1645  # Base decisions on target environment.
1646  case "${host}" in
1647 +  *-aros*)
1648 +    for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
1649 +    machine/param.h sys/machine.h sys/types.h fp.h locale.h float.h inttypes.h
1650 +do :
1651 +  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
1652 +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
1653 +eval as_val=\$$as_ac_Header
1654 +   if test "x$as_val" = x""yes; then :
1655 +  cat >>confdefs.h <<_ACEOF
1656 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
1657 +_ACEOF
1658 +
1659 +fi
1660 +
1661 +done
1662 +
1663 +
1664 +    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
1665 +    GLIBCXX_CHECK_WCHAR_T_SUPPORT
1666 +
1667 +    $as_echo "#define HAVE_FINITE 1" >>confdefs.h
1668 +
1669 +    $as_echo "#define HAVE_FINITEF 1" >>confdefs.h
1670 +
1671 +    $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
1672 +
1673 +    $as_echo "#define HAVE_HYPOTF 1" >>confdefs.h
1674 +
1675 +    $as_echo "#define HAVE_ISINF 1" >>confdefs.h
1676 +
1677 +    $as_echo "#define HAVE_ISINFF 1" >>confdefs.h
1678 +
1679 +    $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
1680 +
1681 +    $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
1682 +
1683 +    $as_echo "#define HAVE_SINCOS 1" >>confdefs.h
1684 +
1685 +    $as_echo "#define HAVE_SINCOSF 1" >>confdefs.h
1686 +
1687 +    if test x"long_double_math_on_this_cpu" = x"yes"; then
1688 +      $as_echo "#define HAVE_FINITEL 1" >>confdefs.h
1689 +
1690 +      $as_echo "#define HAVE_HYPOTL 1" >>confdefs.h
1691 +
1692 +      $as_echo "#define HAVE_ISINFL 1" >>confdefs.h
1693 +
1694 +      $as_echo "#define HAVE_ISNANL 1" >>confdefs.h
1695 +
1696 +    fi
1697 +    ;;
1698 +
1699    arm*-*-symbianelf*)
1700      # This is a freestanding configuration; there is nothing to do here.
1701      ;;
1702 diff -ruN gcc-4.6.2/libstdc++-v3/configure.ac gcc-4.6.2.aros/libstdc++-v3/configure.ac
1703 --- gcc-4.6.2/libstdc++-v3/configure.ac 2011-10-06 01:09:51.000000000 +0200
1704 +++ gcc-4.6.2.aros/libstdc++-v3/configure.ac    2013-08-26 07:55:42.000000000 +0200
1705 @@ -88,9 +88,9 @@
1706  # up critical shell variables.
1707  GLIBCXX_CONFIGURE
1708  
1709 -if test "x${with_newlib}" != "xyes"; then
1710 -  AC_LIBTOOL_DLOPEN
1711 -fi
1712 +#if test "x${with_newlib}" != "xyes"; then
1713 +#  AC_LIBTOOL_DLOPEN
1714 +#fi
1715  AM_PROG_LIBTOOL
1716  ACX_LT_HOST_FLAGS
1717  AC_SUBST(enable_shared)
1718 diff -ruN gcc-4.6.2/libstdc++-v3/configure.host gcc-4.6.2.aros/libstdc++-v3/configure.host
1719 --- gcc-4.6.2/libstdc++-v3/configure.host       2010-12-06 01:50:04.000000000 +0100
1720 +++ gcc-4.6.2.aros/libstdc++-v3/configure.host  2013-08-26 07:55:42.000000000 +0200
1721 @@ -203,6 +203,9 @@
1722      os_include_dir="os/generic"
1723      atomicity_dir="cpu/generic"
1724      ;;
1725 +  aros*)
1726 +    os_include_dir="os/aros"
1727 +    ;;
1728    bsd*)
1729      # Plain BSD attempts to share FreeBSD files.
1730      os_include_dir="os/bsd/freebsd"
1731 diff -ruN gcc-4.6.2/libstdc++-v3/crossconfig.m4 gcc-4.6.2.aros/libstdc++-v3/crossconfig.m4
1732 --- gcc-4.6.2/libstdc++-v3/crossconfig.m4       2011-02-04 08:26:57.000000000 +0100
1733 +++ gcc-4.6.2.aros/libstdc++-v3/crossconfig.m4  2013-08-26 07:55:42.000000000 +0200
1734 @@ -5,6 +5,31 @@
1735  AC_DEFUN([GLIBCXX_CROSSCONFIG],[
1736  # Base decisions on target environment.
1737  case "${host}" in
1738 +  *-aros*)
1739 +    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
1740 +    machine/param.h sys/machine.h sys/types.h fp.h locale.h float.h inttypes.h])
1741 +
1742 +    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
1743 +    GLIBCXX_CHECK_WCHAR_T_SUPPORT
1744 +
1745 +    AC_DEFINE(HAVE_FINITE)
1746 +    AC_DEFINE(HAVE_FINITEF)
1747 +    AC_DEFINE(HAVE_FREXPF)
1748 +    AC_DEFINE(HAVE_HYPOTF)
1749 +    AC_DEFINE(HAVE_ISINF)
1750 +    AC_DEFINE(HAVE_ISINFF)
1751 +    AC_DEFINE(HAVE_ISNAN)
1752 +    AC_DEFINE(HAVE_ISNANF)
1753 +    AC_DEFINE(HAVE_SINCOS)
1754 +    AC_DEFINE(HAVE_SINCOSF)
1755 +    if test x"long_double_math_on_this_cpu" = x"yes"; then
1756 +      AC_DEFINE(HAVE_FINITEL)
1757 +      AC_DEFINE(HAVE_HYPOTL)
1758 +      AC_DEFINE(HAVE_ISINFL)
1759 +      AC_DEFINE(HAVE_ISNANL)
1760 +    fi
1761 +    ;;
1762 +
1763    arm*-*-symbianelf*)
1764      # This is a freestanding configuration; there is nothing to do here.
1765      ;;