author | Antonio Rojas
<arojas@archlinux.org> 2024-05-15 21:07:26 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2024-05-15 21:07:26 UTC |
parent | 76be20fba03ad8025c385fe1993997de674dd966 |
.SRCINFO | +24 | -0 |
PKGBUILD | +5 | -10 |
r14312.diff | +0 | -3561 |
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..1d218f2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,24 @@ +pkgbase = sdcc + pkgdesc = Retargettable ANSI C compiler + pkgver = 4.4.0 + pkgrel = 1 + url = https://sdcc.sourceforge.net/ + arch = x86_64 + license = GPL + makedepends = gputils + makedepends = boost + makedepends = patchutils + depends = gcc-libs + depends = bash + optdepends = python + options = !strip + options = staticlibs + options = !debug + source = sdcc-4.4.0.tar.bz2::https://sourceforge.net/projects/sdcc/files/sdcc/4.4.0/sdcc-src-4.4.0.tar.bz2 + source = build-all-mcs51-models.patch + sha512sums = 807738f852ab8df64dafa3deda1d9c5154d56fa090f126abe9368e0cb17f37589b7dac50d1e135609f0a14318f0d5d8abd444ed8303c854f2bd34cc783db4b30 + sha512sums = 265982849af52f5d84069ef9dd43f6d768eb46b2ff07e1652c3036d69e59fd366481a4447b6c376d2c74123cf6cf5f08afe957fa18a8038a4b0602f4593238f9 + b2sums = 891b2d29f98fedf5fd7ce5a0892c143d8cbeee1351746a633ba507dd71224ac34620530bbc278feff5d70cae20c6b53b3ea3b5efc4876efe974bbec223d8db72 + b2sums = 28bca84a8e1c2eda552efb0129941fdf1b17cdc2e888c26bf896295d392fd31f729136e76794913770b052f5171091bddbb944cde7407fd65e0df370654faf29 + +pkgname = sdcc diff --git a/PKGBUILD b/PKGBUILD index 2cdfd98..932bc57 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,7 +4,7 @@ # Contributor: Jose Negron <josenj.arch@mailnull.net> pkgname=sdcc -pkgver=4.3.0 +pkgver=4.4.0 pkgrel=1 pkgdesc='Retargettable ANSI C compiler' arch=('x86_64') @@ -13,25 +13,19 @@ license=('GPL') depends=('gcc-libs' 'bash') makedepends=('gputils' 'boost' 'patchutils') optdepends=('python') -options=('!strip' 'staticlibs') +options=('!strip' 'staticlibs' '!debug') source=( "$pkgname-$pkgver.tar.bz2::https://sourceforge.net/projects/sdcc/files/sdcc/$pkgver/$pkgname-src-$pkgver.tar.bz2" - 'r14312.diff' 'build-all-mcs51-models.patch' ) -sha512sums=('dabe276a0d2872bee2cdc14433f31a1e94153f9dce5a11add916ede2e76bfacf763be8e6d8134dc3aefdae29e38d3a7354626755e81e0f6db0e60c1798476f21' - '092c460f5286a104e95e05b1cdc9a0e88058002e1242ae25ad8e5e51e1e9de94329fde3994b2b5a0455b88088d96a53c1b0e5783f796fbeadc49530647347f02' +sha512sums=('807738f852ab8df64dafa3deda1d9c5154d56fa090f126abe9368e0cb17f37589b7dac50d1e135609f0a14318f0d5d8abd444ed8303c854f2bd34cc783db4b30' '265982849af52f5d84069ef9dd43f6d768eb46b2ff07e1652c3036d69e59fd366481a4447b6c376d2c74123cf6cf5f08afe957fa18a8038a4b0602f4593238f9') -b2sums=('94fc7ade96801ea6c9eb89d32b99554d27ad3d926d2d5889e91334b11d4658ccc160606cd2b1c6f3bb21bd25ea3df1dca274f40553aa8a52a73ac07764b3eaad' - '32b264427b685cfd5b3e14ba5a3d9b2d5dcde9a5c2501dbf3f50bf6315e58f85467bf90fee4a8af588dfe22e2d2facce3b1e35f6d170ac1c7fe383209980c647' +b2sums=('891b2d29f98fedf5fd7ce5a0892c143d8cbeee1351746a633ba507dd71224ac34620530bbc278feff5d70cae20c6b53b3ea3b5efc4876efe974bbec223d8db72' '28bca84a8e1c2eda552efb0129941fdf1b17cdc2e888c26bf896295d392fd31f729136e76794913770b052f5171091bddbb944cde7407fd65e0df370654faf29') prepare() { cd "$pkgname-$pkgver" - # FS#79070: FTBFS - filterdiff -p0 -i 'support/cpp/*' ../r14312.diff | patch -Np0 - # FS#79070: Build all models for mcs51 by default patch -p1 -i "$srcdir/build-all-mcs51-models.patch" } @@ -39,6 +33,7 @@ prepare() { build() { cd "$pkgname-$pkgver" + CFLAGS+=" -Wno-incompatible-pointer-types" \ ./configure \ --prefix=/usr \ --includedir=/usr/include/sdcc \ diff --git a/r14312.diff b/r14312.diff deleted file mode 100644 index 7792756..0000000 --- a/r14312.diff +++ /dev/null @@ -1,3561 +0,0 @@ -Index: ChangeLog -=================================================================== ---- ChangeLog (revision 14311) -+++ ChangeLog (revision 14312) -@@ -1,3 +1,104 @@ -+2023-08-19 Maarten Brock <sourceforge.brock AT dse.nl> -+ -+ * device/include/asm/default/features.h, -+ * device/include/asm/ds390/features.h, -+ * device/include/asm/mcs51/features.h, -+ * device/include/asm/pic14/features.h, -+ * device/include/asm/pic16/features.h, -+ * device/include/asm/r2k/features.h, -+ * device/include/asm/r3ka/features.h, -+ * device/include/asm/sm83/features.h, -+ * device/include/asm/stm8/features.h, -+ * device/include/asm/tlcs90/features.h, -+ * device/include/asm/z80/features.h: added __SDCC_NONBANKED -+ * device/include/float.h: use __SDCC_NONBANKED for __SDCC_FLOAT_NONBANKED -+ * device/include/sdcc-lib.h: cosmetics -+ * device/lib/_divsint.c, -+ * device/lib/_divslong.c, -+ * device/lib/_divslonglong.c, -+ * device/lib/_divuint.c, -+ * device/lib/_divulong.c, -+ * device/lib/_divulonglong.c, -+ * device/lib/_modsint.c, -+ * device/lib/_modslong.c, -+ * device/lib/_modslonglong.c, -+ * device/lib/_moduint.c, -+ * device/lib/_modulong.c, -+ * device/lib/_modulonglong.c, -+ * device/lib/_mulint.c, -+ * device/lib/_mullong.c, -+ * device/lib/_mullonglong.c: moved __SDCC_NONBANKED to sdcc-lib.h -+ * device/lib/_slonglong2fs.c: cosmetics -+ * device/lib/Makefile.in, -+ * device/lib/hc08/Makefile.in, -+ * device/lib/mos6502/Makefile.in, -+ * device/lib/mos6502-stack-auto/Makefile.in, -+ * device/lib/mos65c02/Makefile.in, -+ * device/lib/pdk13/Makefile.in, -+ * device/lib/pdk14/Makefile.in, -+ * device/lib/pdk15/Makefile.in, -+ * device/lib/pdk15-stack-auto/Makefile.in, -+ * device/lib/s08/Makefile.in, -+ * device/lib/s08-stack-auto/Makefile.in, -+ * device/lib/stm8/Makefile.in, -+ * device/lib/stm8-large/Makefile.in, -+ * src/SDCCsymt.c (initCSupport): renamed _r[lr][su]longlong.c to -+ _s[lr][su]longlong.c because they are shifts not rotates -+ * device/lib/_slslonglong.c: renamed from _rlslonglong.c, -+ moved __SDCC_NONBANKED to sdcc-lib.h -+ * device/lib/_slulonglong.c: renamed from _rlulonglong.c, -+ moved __SDCC_NONBANKED to sdcc-lib.h, -+ use _AUTOMEM for better code generation -+ * device/lib/_srslonglong.c: renamed from _rrslonglong.c, -+ bugfix little endian variant, -+ moved __SDCC_NONBANKED to sdcc-lib.h, -+ use _AUTOMEM for better code generation, -+ removed comment about non-existing rrulonglong_rrx_s.c -+ * device/lib/_srulonglong.c: renamed from _rrulonglong.c, -+ moved __SDCC_NONBANKED to sdcc-lib.h, -+ use _AUTOMEM for better code generation, -+ removed comment about non-existing rrulonglong_rrx_s.c -+ * device/lib/mos6502/_srslonglong.c: renamed from _rrslonglong.c -+ * device/lib/mos6502/_srulonglong.c: renamed from _rrulonglong.c -+ * device/lib/mos6502-stack-auto/_srslonglong.c: renamed from _rrslonglong.c -+ * device/lib/mos6502-stack-auto/_srulonglong.c: renamed from _rrulonglong.c -+ -+ * device/lib/atomic_flag_clear.c: generate external definition for -+ inline definition with external linkage -+ * device/include/stdatomic.h: inline atomic_flag_clear(), -+ use 0xfe for z80-like, -+ use __SDCC_NONBANKED -+ * device/lib/ez80_z80/atomic_flag_test_and_set.s, -+ * device/lib/r2k/atomic_flag_test_and_set.s, -+ * device/lib/r2ka/atomic_flag_test_and_set.s, -+ * device/lib/r3ka/atomic_flag_test_and_set.s, -+ * device/lib/sm83/atomic_flag_test_and_set.s, -+ * device/lib/z180/atomic_flag_test_and_set.s, -+ * device/lib/z80/atomic_flag_test_and_set.s, -+ * device/lib/z80n/atomic_flag_test_and_set.s: use sra on 0xfe and drop ccf -+ -+ * device/lib/strtoull.c: drop oldret -+ * device/lib/wcstoull.c: drop oldret, -+ (_isdigit): fix L'a', -+ (strtoull): bugfix, renamed to wcstoull() & use iswblank() -+ -+ * debugger/mcs51/sdcdb.c (readCdb): fixed warning/bug -+ * src/SDCC.y: fixed warnings -+ * src/SDCCval.h, -+ * src/SDCCval.c (ullFromVal): make val const to fix warnings -+ * src/mcs51/ralloc.c (regsUsedIniCode): removed label to fix warning -+ * src/mos6502/gen.c (opInfo): fix warning, -+ (genRightShift): fixed warning -+ * src/z80/ralloc.c (regsUsedIniCode): removed label to fix warning -+ * support/cpp/gcc/diagnostic.cc (fancy_abort): fixed warning, -+ removed formfeeds -+ * support/cpp/gcc/gcc.cc (insert_comments,get_random_number): fixed warnings -+ removed formfeeds -+ * support/cpp/libcpp/expr.cc (cpp_classify_number): fixed warnings, -+ removed formfeeds -+ * support/cpp/libcpp/macro.cc (update,create_iso_definition): fixed warnings -+ * support/makebin/makebin.c: fixed warning -+ - 2023-08-17 Benedikt Freisen <b.freisen AT gmx.net> - - * device/include/inttypes.h, -Index: debugger/mcs51/sdcdb.c -=================================================================== ---- debugger/mcs51/sdcdb.c (revision 14311) -+++ debugger/mcs51/sdcdb.c (revision 14312) -@@ -414,9 +414,8 @@ - } - - bp += 2; -- currl->line = Safe_malloc(strlen(bp)); -- strncpy(currl->line, bp, strlen(bp)-1); -- currl->line[strlen(bp)-1] = '\0'; -+ currl->line = Safe_malloc(strlen(bp)+1); -+ strcpy(currl->line, bp); - } - - if (!(bp = fgets(buffer, sizeof(buffer), file))) -Index: device/include/asm/default/features.h -=================================================================== ---- device/include/asm/default/features.h (revision 14311) -+++ device/include/asm/default/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -26,8 +26,8 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - --#ifndef __SDC51_ASM_FEATURES_H --#define __SDC51_ASM_FEATURES_H 1 -+#ifndef __SDCC_ASM_FEATURES_H -+#define __SDCC_ASM_FEATURES_H 1 - - #define _REENTRANT __reentrant - #define _CODE __code -@@ -34,4 +34,6 @@ - #define _AUTOMEM - #define _STATMEM - -+#define __SDCC_NONBANKED -+ - #endif -Index: device/include/asm/ds390/features.h -=================================================================== ---- device/include/asm/ds390/features.h (revision 14311) -+++ device/include/asm/ds390/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -26,8 +26,8 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - --#ifndef __SDC51_ASM_DS390_FEATURES_H --#define __SDC51_ASM_DS390_FEATURES_H 1 -+#ifndef __SDCC_ASM_DS390_FEATURES_H -+#define __SDCC_ASM_DS390_FEATURES_H 1 - - #define _REENTRANT __reentrant - #define _CODE __code -@@ -71,4 +71,6 @@ - #define _STATMEM __xdata - #endif - -+#define __SDCC_NONBANKED -+ - #endif -Index: device/include/asm/mcs51/features.h -=================================================================== ---- device/include/asm/mcs51/features.h (revision 14311) -+++ device/include/asm/mcs51/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -26,8 +26,8 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - --#ifndef __SDC51_ASM_MCS51_FEATURES_H --#define __SDC51_ASM_MCS51_FEATURES_H 1 -+#ifndef __SDCC_ASM_MCS51_FEATURES_H -+#define __SDCC_ASM_MCS51_FEATURES_H 1 - - #define _REENTRANT __reentrant - #define _CODE __code -@@ -82,5 +82,6 @@ - #define _RETURN ret - #endif - -+#define __SDCC_NONBANKED __nonbanked - - #endif -Index: device/include/asm/pic14/features.h -=================================================================== ---- device/include/asm/pic14/features.h (revision 14311) -+++ device/include/asm/pic14/features.h (revision 14312) -@@ -14,7 +14,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,4 +37,6 @@ - #define _AUTOMEM - #define _STATMEM - -+#define __SDCC_NONBANKED -+ - #endif /* __PIC14_ASM_FEATURES_H */ -Index: device/include/asm/pic16/features.h -=================================================================== ---- device/include/asm/pic16/features.h (revision 14311) -+++ device/include/asm/pic16/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -40,4 +40,6 @@ - #define _AUTOMEM - #define _STATMEM - -+#define __SDCC_NONBANKED -+ - #endif /* __PIC16_ASM_FEATURES_H */ -Index: device/include/asm/r2k/features.h -=================================================================== ---- device/include/asm/r2k/features.h (revision 14311) -+++ device/include/asm/r2k/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/asm/r3ka/features.h -=================================================================== ---- device/include/asm/r3ka/features.h (revision 14311) -+++ device/include/asm/r3ka/features.h (revision 14312) -@@ -2,7 +2,7 @@ - features.h - Rabbit 3000A specific features. - - Copyright (C) 2001, Michael Hope -- -+ - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/asm/sm83/features.h -=================================================================== ---- device/include/asm/sm83/features.h (revision 14311) -+++ device/include/asm/sm83/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -26,8 +26,8 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - --#ifndef __SDC51_ASM_SM83_FEATURES_H --#define __SDC51_ASM_SM83_FEATURES_H 1 -+#ifndef __SDCC_ASM_SM83_FEATURES_H -+#define __SDCC_ASM_SM83_FEATURES_H 1 - - #define _REENTRANT - #define _CODE -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/asm/stm8/features.h -=================================================================== ---- device/include/asm/stm8/features.h (revision 14311) -+++ device/include/asm/stm8/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/asm/tlcs90/features.h -=================================================================== ---- device/include/asm/tlcs90/features.h (revision 14311) -+++ device/include/asm/tlcs90/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/asm/z80/features.h -=================================================================== ---- device/include/asm/z80/features.h (revision 14311) -+++ device/include/asm/z80/features.h (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -37,5 +37,7 @@ - #define _SDCC_MANGLES_SUPPORT_FUNS 1 - #define _SDCC_Z80_STYLE_LIB_OPT 1 - -+#define __SDCC_NONBANKED -+ - #endif - -Index: device/include/float.h -=================================================================== ---- device/include/float.h (revision 14311) -+++ device/include/float.h (revision 14312) -@@ -31,6 +31,8 @@ - - #include <limits.h> - -+#include <sdcc-lib.h> -+ - #define FLT_RADIX 2 - #define FLT_MANT_DIG 24 - #define FLT_EPSILON 1.192092896E-07F -@@ -80,11 +82,7 @@ - #define PACK(s,e,m) ((s) | ((unsigned long)(e) << 23) | (m)) - #endif - --#ifdef __SDCC_mcs51 --#define __SDCC_FLOAT_NONBANKED __nonbanked --#else --#define __SDCC_FLOAT_NONBANKED --#endif -+#define __SDCC_FLOAT_NONBANKED __SDCC_NONBANKED - - float __uchar2fs (unsigned char) __SDCC_FLOAT_NONBANKED; - float __schar2fs (signed char) __SDCC_FLOAT_NONBANKED; -Index: device/include/sdcc-lib.h -=================================================================== ---- device/include/sdcc-lib.h (revision 14311) -+++ device/include/sdcc-lib.h (revision 14312) -@@ -14,7 +14,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -27,8 +27,8 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - --#ifndef __SDC51_SDCC_LIB_H --#define __SDC51_SDCC_LIB_H 1 -+#ifndef __SDCC_SDCC_LIB_H -+#define __SDCC_SDCC_LIB_H 1 - - #if defined(__SDCC_z80) || defined(__SDCC_z180) || defined(__SDCC_ez80_z80) || defined(__SDCC_z80n) - #include <asm/z80/features.h> -Index: device/include/stdatomic.h -=================================================================== ---- device/include/stdatomic.h (revision 14311) -+++ device/include/stdatomic.h (revision 14312) -@@ -1,29 +1,50 @@ - #ifndef __SDCC_STDATOMIC_H - #define __SDCC_STDATOMIC_H 1 - -+#include <sdcc-lib.h> -+ -+#ifndef __SDCC_ATOMIC_EXTERN -+#define __SDCC_ATOMIC_EXTERN -+#endif -+ - typedef struct {unsigned char flag;} atomic_flag; - --#if defined(__SDCC_tlcs90) || defined(__SDCC_z80) || defined(__SDCC_z180) || defined(__SDCC_ez80_z80) || defined(__SDCC_z80n) || defined(__SDCC_sm83) || defined(__SDCC_r2k) || defined(__SDCC_r2ka) || defined(__SDCC_r3ka) || defined(__SDCC_stm8) || defined(__SDCC_hc08) || defined(__SDCC_s08) || defined(__SDCC_mos6502) || defined(__SDCC_mos65c02) -+#if defined(__SDCC_mcs51) || defined(__SDCC_ds390) - --#define ATOMIC_FLAG_INIT {1} --_Bool atomic_flag_test_and_set(volatile atomic_flag *object); -+#define ATOMIC_FLAG_INIT {0} - --void atomic_flag_clear(volatile atomic_flag *object); -+_Bool atomic_flag_test_and_set(volatile atomic_flag __idata *object) __SDCC_NONBANKED; - --#elif defined(__SDCC_mcs51) -+__SDCC_ATOMIC_EXTERN -+inline void atomic_flag_clear(volatile atomic_flag __idata *object) __SDCC_NONBANKED -+{ -+ object->flag = 0; -+} - --#define ATOMIC_FLAG_INIT {0} --_Bool atomic_flag_test_and_set(volatile atomic_flag __idata *object) __nonbanked; -+#elif defined(__SDCC_z80) || defined(__SDCC_z180) || defined(__SDCC_ez80_z80) || defined(__SDCC_z80n) || defined(__SDCC_sm83) || defined(__SDCC_r2k) || defined(__SDCC_r2ka) || defined(__SDCC_r3ka) - --void atomic_flag_clear(volatile atomic_flag __idata *object) __nonbanked; -+#define ATOMIC_FLAG_INIT {0xfe} - --#elif defined(__SDCC_ds390) -+_Bool atomic_flag_test_and_set(volatile atomic_flag *object); - --#define ATOMIC_FLAG_INIT {0} --_Bool atomic_flag_test_and_set(volatile atomic_flag __idata *object); -+__SDCC_ATOMIC_EXTERN -+inline void atomic_flag_clear(volatile atomic_flag *object) -+{ -+ object->flag = 0xfe; -+} - --void atomic_flag_clear(volatile atomic_flag __idata *object); -+#elif defined(__SDCC_tlcs90) || defined(__SDCC_stm8) || defined(__SDCC_hc08) || defined(__SDCC_s08) || defined(__SDCC_mos6502) || defined(__SDCC_mos65c02) - -+#define ATOMIC_FLAG_INIT {1} -+ -+_Bool atomic_flag_test_and_set(volatile atomic_flag *object); -+ -+__SDCC_ATOMIC_EXTERN -+inline void atomic_flag_clear(volatile atomic_flag *object) -+{ -+ object->flag = 1; -+} -+ - #else - - #error Support for atomic_flag not implemented -Index: device/lib/_rrulonglong.c -=================================================================== ---- device/lib/_rrulonglong.c (revision 14311) -+++ device/lib/_rrulonglong.c (nonexistent) -@@ -1,91 +0,0 @@ --/*------------------------------------------------------------------------- -- _rrulonglong.c - routine for right shift of 64 bit unsigned long long -- -- Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -- -- This library is free software; you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the -- Free Software Foundation; either version 2, or (at your option) any -- later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this library; see the file COPYING. If not, write to the -- Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA. -- -- As a special exception, if you link this library with other files, -- some of which are compiled with SDCC, to produce an executable, -- this library does not by itself cause the resulting executable to -- be covered by the GNU General Public License. This exception does -- not however invalidate any other reasons why the executable file -- might be covered by the GNU General Public License. ---------------------------------------------------------------------------*/ -- --#include <stdint.h> -- --#include <stdbit.h> -- --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- --#ifdef __SDCC_LONGLONG --// This function is the same as the one from rrslonglong_rrx_s.c, except for the type of top, and b[0/3]. -- --#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ --unsigned long long _rrulonglong(unsigned long long l, char s) __SDCC_NONBANKED --{ -- uint32_t *const top = (uint32_t *)((char *)(&l) + 0); -- uint32_t *const middle = (uint16_t *)((char *)(&l) + 2); -- uint32_t *const bottom = (uint32_t *)((char *)(&l) + 4); -- uint16_t *const b = (uint16_t *)(&l); -- -- for(;s >= 16; s -= 16) -- { -- b[3] = b[2]; -- b[2] = b[1]; -- b[1] = b[0]; -- b[0] = 0x000000; -- } -- -- (*bottom) >>= s; -- (*middle) |= (((*middle & 0xffff0000ul) >> s) & 0x0000fffful); -- (*top) >>= s; -- -- return(l); --} --#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ --unsigned long long _rrulonglong(unsigned long long l, char s) __SDCC_NONBANKED --{ -- uint32_t *const top = (uint32_t *)((char *)(&l) + 4); -- uint16_t *const middle = (uint16_t *)((char *)(&l) + 4); -- uint32_t *const bottom = (uint32_t *)(&l); -- uint16_t *const b = (uint16_t *)(&l); -- -- for(;s >= 16; s -= 16) -- { -- b[0] = b[1]; -- b[1] = b[2]; -- b[2] = b[3]; -- b[3] = 0x000000; -- } -- -- (*bottom) >>= s; -- (*middle) |= (uint16_t)(((uint32_t)(*middle) << 16) >> s); -- (*top) |= (((*middle) & 0xffff0000ul) >> s); -- -- return(l); --} --#else --#error Support for mixed endiannness not implemented! --#endif -- --#endif -- - -Property changes on: device/lib/_rrulonglong.c -___________________________________________________________________ -Deleted: svn:eol-style -## -1 +0,0 ## --native -\ No newline at end of property -Deleted: svn:keywords -## -1 +0,0 ## --Author Date Id Revision -\ No newline at end of property -Index: device/lib/_rrslonglong.c -=================================================================== ---- device/lib/_rrslonglong.c (revision 14311) -+++ device/lib/_rrslonglong.c (nonexistent) -@@ -1,89 +0,0 @@ --/*------------------------------------------------------------------------- -- _rrulonglong.c - routine for right shift of 64 bit unsigned long long -- -- Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -- -- This library is free software; you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the -- Free Software Foundation; either version 2, or (at your option) any -- later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this library; see the file COPYING. If not, write to the -- Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA. -- -- As a special exception, if you link this library with other files, -- some of which are compiled with SDCC, to produce an executable, -- this library does not by itself cause the resulting executable to -- be covered by the GNU General Public License. This exception does -- not however invalidate any other reasons why the executable file -- might be covered by the GNU General Public License. ---------------------------------------------------------------------------*/ -- --#include <stdint.h> -- --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- --#ifdef __SDCC_LONGLONG --// This function is the same as the one from rrulonglong_rrx_s.c, except for the type of top. -- --#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ --long long _rrslonglong(long long l, char s) __SDCC_NONBANKED --{ -- int32_t *top = (uint32_t *)((char *)(&l) + 0); -- uint32_t *middle = (uint16_t *)((char *)(&l) + 2); -- uint32_t *bottom = (uint32_t *)((char *)(&l) + 4); -- uint16_t *b = (uint16_t *)(&l); -- -- for(;s >= 16; s-= 16) -- { -- b[3] = b[2]; -- b[2] = b[1]; -- b[1] = b[0]; -- b[0] = (b[0] & 0x8000) ? 0xffff : 0x000000; -- } -- -- (*bottom) >>= s; -- (*middle) |= (((*middle & 0xffff0000ul) >> s) & 0x0000fffful); -- (*top) >>= s; -- -- return(l); --} --#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ --long long _rrslonglong(long long l, char s) __SDCC_NONBANKED --{ -- int32_t *top = (uint32_t *)((char *)(&l) + 4); -- uint16_t *middle = (uint16_t *)((char *)(&l) + 3); -- uint32_t *bottom = (uint32_t *)(&l); -- uint16_t *b = (uint16_t *)(&l); -- -- for(;s >= 16; s-= 16) -- { -- b[0] = b[1]; -- b[1] = b[2]; -- b[2] = b[3]; -- b[3] = (b[3] & 0x8000) ? 0xffff : 0x000000; -- } -- -- (*bottom) >>= s; -- (*bottom) |= ((uint32_t)((*middle) >> s) << 16); -- (*top) |= (((*middle) & 0xffff0000) >> s); -- -- return(l); --} --#else --#error Support for mixed endiannness not implemented! --#endif -- --#endif -- - -Property changes on: device/lib/_rrslonglong.c -___________________________________________________________________ -Deleted: svn:eol-style -## -1 +0,0 ## --native -\ No newline at end of property -Deleted: svn:keywords -## -1 +0,0 ## --Author Date Id Revision -\ No newline at end of property -Index: device/lib/_rlulonglong.c -=================================================================== ---- device/lib/_rlulonglong.c (revision 14311) -+++ device/lib/_rlulonglong.c (nonexistent) -@@ -1,94 +0,0 @@ --/*------------------------------------------------------------------------- -- _rlulonglong.c - routine for left shift of 64 bit unsigned long long -- -- Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -- -- This library is free software; you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the -- Free Software Foundation; either version 2, or (at your option) any -- later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this library; see the file COPYING. If not, write to the -- Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA. -- -- As a special exception, if you link this library with other files, -- some of which are compiled with SDCC, to produce an executable, -- this library does not by itself cause the resulting executable to -- be covered by the GNU General Public License. This exception does -- not however invalidate any other reasons why the executable file -- might be covered by the GNU General Public License. ---------------------------------------------------------------------------*/ -- --#include <stdint.h> -- --#include <stdbit.h> -- --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- --#ifdef __SDCC_LONGLONG -- --#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ -- --unsigned long long _rlulonglong(unsigned long long l, char s) __SDCC_NONBANKED --{ -- uint32_t *const top = (uint32_t *)((char *)(&l) + 0); -- uint16_t *const middle = (uint16_t *)((char *)(&l) + 4); -- uint32_t *const bottom = (uint32_t *)((char *)(&l) + 4); -- uint16_t *const b = (uint16_t *)(&l); -- -- for(;s >= 16; s-= 16) -- { -- b[0] = b[1]; -- b[1] = b[2]; -- b[2] = b[3]; -- b[3] = 0; -- } -- -- (*top) <<= s; -- (*top) |= (((uint32_t)((*middle) & 0xffffu) << s) >> 16); -- (*bottom) <<= s; -- -- return(l); --} -- --#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ -- --unsigned long long _rlulonglong(unsigned long long l, char s) __SDCC_NONBANKED --{ -- uint32_t *const top = (uint32_t *)((char *)(&l) + 4); -- uint16_t *const middle = (uint16_t *)((char *)(&l) + 2); -- uint32_t *const bottom = (uint32_t *)(&l); -- uint16_t *const b = (uint16_t *)(&l); -- -- for(;s >= 16; s-= 16) -- { -- b[3] = b[2]; -- b[2] = b[1]; -- b[1] = b[0]; -- b[0] = 0; -- } -- -- (*top) <<= s; -- (*top) |= (((uint32_t)((*middle) & 0xffffu) << s) >> 16); -- (*bottom) <<= s; -- -- return(l); --} -- --#else --#error Support for mixed endiannness not implemented! --#endif -- --#endif -- - -Property changes on: device/lib/_rlulonglong.c -___________________________________________________________________ -Deleted: svn:eol-style -## -1 +0,0 ## --native -\ No newline at end of property -Deleted: svn:keywords -## -1 +0,0 ## --Author Date Id Revision -\ No newline at end of property -Index: device/lib/_rlslonglong.c -=================================================================== ---- device/lib/_rlslonglong.c (revision 14311) -+++ device/lib/_rlslonglong.c (nonexistent) -@@ -1,45 +0,0 @@ --/*------------------------------------------------------------------------- -- _rlslonglong.c - routine for left shift of 64 bit long long -- -- Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -- -- This library is free software; you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the -- Free Software Foundation; either version 2, or (at your option) any -- later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this library; see the file COPYING. If not, write to the -- Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -- MA 02110-1301, USA. -- -- As a special exception, if you link this library with other files, -- some of which are compiled with SDCC, to produce an executable, -- this library does not by itself cause the resulting executable to -- be covered by the GNU General Public License. This exception does -- not however invalidate any other reasons why the executable file -- might be covered by the GNU General Public License. ---------------------------------------------------------------------------*/ -- --#include <stdint.h> -- --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- --#ifdef __SDCC_LONGLONG -- --long long _rlslonglong(long long l, char s) __SDCC_NONBANKED --{ -- return((unsigned long long)(l) << s); --} -- --#endif -- - -Property changes on: device/lib/_rlslonglong.c -___________________________________________________________________ -Deleted: svn:eol-style -## -1 +0,0 ## --native -\ No newline at end of property -Deleted: svn:keywords -## -1 +0,0 ## --Author Date Id Revision -\ No newline at end of property -Index: device/lib/Makefile.in -=================================================================== ---- device/lib/Makefile.in (revision 14311) -+++ device/lib/Makefile.in (revision 14312) -@@ -93,7 +93,7 @@ - _fsreturnval.c \ - _fsrshift.c \ - _fsswapargs.c \ -- _logexpf.c -+ _logexpf.c - - SOURCES_INT = $(COMMON_INT) \ - _divsint.c \ -@@ -107,10 +107,10 @@ - _mullong.c - - SOURCES_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/_divsint.c -=================================================================== ---- device/lib/_divsint.c (revision 14311) -+++ device/lib/_divsint.c (revision 14312) -@@ -30,12 +30,6 @@ - - #include <sdcc-lib.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- - #if _SDCC_MANGLES_SUPPORT_FUNS - unsigned unsigned _divuint (unsigned x, unsigned y); - #endif -Index: device/lib/_divslong.c -=================================================================== ---- device/lib/_divslong.c (revision 14311) -+++ device/lib/_divslong.c (revision 14312) -@@ -29,12 +29,6 @@ - - #include <sdcc-lib.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- - #if _SDCC_MANGLES_SUPPORT_FUNS - unsigned long _divulong (unsigned long x, unsigned long y); - #endif -Index: device/lib/_divslonglong.c -=================================================================== ---- device/lib/_divslonglong.c (revision 14311) -+++ device/lib/_divslonglong.c (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -29,14 +29,10 @@ - #include <stdint.h> - #include <stdbool.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #ifdef __SDCC_LONGLONG --long long -+long long - _divslonglong (long long numerator, long long denominator) __SDCC_NONBANKED - { - bool numeratorneg = (numerator < 0); -Index: device/lib/_divuint.c -=================================================================== ---- device/lib/_divuint.c (revision 14311) -+++ device/lib/_divuint.c (revision 14312) -@@ -33,11 +33,7 @@ - - #include <stdbool.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_mcs51) -Index: device/lib/_divulong.c -=================================================================== ---- device/lib/_divulong.c (revision 14311) -+++ device/lib/_divulong.c (revision 14312) -@@ -33,11 +33,7 @@ - - #include <stdbool.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_mcs51) -Index: device/lib/_divulonglong.c -=================================================================== ---- device/lib/_divulonglong.c (revision 14311) -+++ device/lib/_divulonglong.c (revision 14312) -@@ -14,7 +14,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -30,11 +30,7 @@ - #include <stdint.h> - #include <stdbool.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #ifdef __SDCC_LONGLONG - #define MSB_SET(x) ((x >> (8*sizeof(x)-1)) & 1) -Index: device/lib/_modsint.c -=================================================================== ---- device/lib/_modsint.c (revision 14311) -+++ device/lib/_modsint.c (revision 14312) -@@ -29,12 +29,6 @@ - - #include <sdcc-lib.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- - #if _SDCC_MANGLES_SUPPORT_FUNS - unsigned unsigned _moduint (unsigned a, unsigned b); - #endif -Index: device/lib/_modslong.c -=================================================================== ---- device/lib/_modslong.c (revision 14311) -+++ device/lib/_modslong.c (revision 14312) -@@ -28,12 +28,6 @@ - - #include <sdcc-lib.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -- - #if _SDCC_MANGLES_SUPPORT_FUNS - unsigned long _modulong (unsigned long a, unsigned long b); - #endif -Index: device/lib/_modslonglong.c -=================================================================== ---- device/lib/_modslonglong.c (revision 14311) -+++ device/lib/_modslonglong.c (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -29,14 +29,10 @@ - #include <stdint.h> - #include <stdbool.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #ifdef __SDCC_LONGLONG --long long -+long long - _modslonglong (long long numerator, long long denominator) __SDCC_NONBANKED - { - bool numeratorneg = (numerator < 0); -Index: device/lib/_moduint.c -=================================================================== ---- device/lib/_moduint.c (revision 14311) -+++ device/lib/_moduint.c (revision 14312) -@@ -32,11 +32,7 @@ - mcs51 small stack-auto - */ - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_mcs51) -Index: device/lib/_modulong.c -=================================================================== ---- device/lib/_modulong.c (revision 14311) -+++ device/lib/_modulong.c (revision 14312) -@@ -32,11 +32,7 @@ - mcs51 small stack-auto - */ - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_mcs51) -@@ -238,7 +234,7 @@ - - __modlong: ; entry point for __modslong - ; a in r1, b, dph, dpl -- ; b in r5, r4, r3, r2 -+ ; b in r5, r4, r3, r2 - - mov count,#0 - -Index: device/lib/_modulonglong.c -=================================================================== ---- device/lib/_modulonglong.c (revision 14311) -+++ device/lib/_modulonglong.c (revision 14312) -@@ -15,7 +15,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -30,11 +30,7 @@ - - #include <stdint.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #ifdef __SDCC_LONGLONG - -Index: device/lib/_mulint.c -=================================================================== ---- device/lib/_mulint.c (revision 14311) -+++ device/lib/_mulint.c (revision 14312) -@@ -36,11 +36,7 @@ - mcs51 large - */ - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_ds390) -Index: device/lib/_mullong.c -=================================================================== ---- device/lib/_mullong.c (revision 14311) -+++ device/lib/_mullong.c (revision 14312) -@@ -35,11 +35,7 @@ - mcs51 small stack-auto - */ - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #if !defined(__SDCC_USE_XSTACK) && !defined(_SDCC_NO_ASM_LIB_FUNCS) - # if defined(__SDCC_mcs51) -Index: device/lib/_mullonglong.c -=================================================================== ---- device/lib/_mullonglong.c (revision 14311) -+++ device/lib/_mullonglong.c (revision 14312) -@@ -13,7 +13,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -28,11 +28,7 @@ - - #include <stdint.h> - --#ifdef __SDCC_mcs51 --#define __SDCC_NONBANKED __nonbanked --#else --#define __SDCC_NONBANKED --#endif -+#include <sdcc-lib.h> - - #ifdef __SDCC_LONGLONG - -Index: device/lib/_slonglong2fs.c -=================================================================== ---- device/lib/_slonglong2fs.c (revision 14311) -+++ device/lib/_slonglong2fs.c (revision 14312) -@@ -1,6 +1,6 @@ - /*------------------------------------------------------------------------- - _slonglong2fs.c - Floating point library in optimized assembly for 8051 -- -+ - Copyright (C) 2004, Paul Stoffregen, paul@pjrc.com - 2022, Benedikt Freisen - -@@ -14,7 +14,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU General Public License - along with this library; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - MA 02110-1301, USA. -@@ -31,11 +31,11 @@ - #define __SDCC_FLOAT_LIB - #include <float.h> - -- - /* convert signed long long to float */ --float __slonglong2fs (signed long long sll) __SDCC_FLOAT_NONBANKED { -- if (sll<0) -+float __slonglong2fs (signed long long sll) __SDCC_FLOAT_NONBANKED -+{ -+ if (sll<0) - return -__ulonglong2fs(-sll); -- else -+ else - return __ulonglong2fs(sll); - } -Index: device/lib/_slslonglong.c -=================================================================== ---- device/lib/_slslonglong.c (nonexistent) -+++ device/lib/_slslonglong.c (revision 14312) -@@ -0,0 +1,41 @@ -+/*------------------------------------------------------------------------- -+ _slslonglong.c - routine for shift left of 64 bit signed long long -+ -+ Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -+ -+ This library is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this library; see the file COPYING. If not, write to the -+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -+ MA 02110-1301, USA. -+ -+ As a special exception, if you link this library with other files, -+ some of which are compiled with SDCC, to produce an executable, -+ this library does not by itself cause the resulting executable to -+ be covered by the GNU General Public License. This exception does -+ not however invalidate any other reasons why the executable file -+ might be covered by the GNU General Public License. -+-------------------------------------------------------------------------*/ -+ -+#include <stdint.h> -+ -+#include <sdcc-lib.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+long long _slslonglong(long long l, char s) __SDCC_NONBANKED -+{ -+ return((unsigned long long)(l) << s); -+} -+ -+#endif -+ - -Property changes on: device/lib/_slslonglong.c -___________________________________________________________________ -Added: svn:eol-style -## -0,0 +1 ## -+native -\ No newline at end of property -Added: svn:keywords -## -0,0 +1 ## -+Author Date Id Revision -\ No newline at end of property -Index: device/lib/_slulonglong.c -=================================================================== ---- device/lib/_slulonglong.c (nonexistent) -+++ device/lib/_slulonglong.c (revision 14312) -@@ -0,0 +1,90 @@ -+/*------------------------------------------------------------------------- -+ _slulonglong.c - routine for shift left of 64 bit unsigned long long -+ -+ Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -+ -+ This library is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this library; see the file COPYING. If not, write to the -+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -+ MA 02110-1301, USA. -+ -+ As a special exception, if you link this library with other files, -+ some of which are compiled with SDCC, to produce an executable, -+ this library does not by itself cause the resulting executable to -+ be covered by the GNU General Public License. This exception does -+ not however invalidate any other reasons why the executable file -+ might be covered by the GNU General Public License. -+-------------------------------------------------------------------------*/ -+ -+#include <stdint.h> -+ -+#include <stdbit.h> -+ -+#include <sdcc-lib.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ -+ -+unsigned long long _slulonglong(unsigned long long l, char s) __SDCC_NONBANKED -+{ -+ uint32_t * const top = (uint32_t *)((char *)(&l) + 0); -+ uint16_t * const middle = (uint16_t *)((char *)(&l) + 4); -+ uint32_t * const bottom = (uint32_t *)((char *)(&l) + 4); -+ uint16_t * const w = (uint16_t *)(&l); -+ -+ for (; s >= 16; s-= 16) -+ { -+ w[0] = w[1]; -+ w[1] = w[2]; -+ w[2] = w[3]; -+ w[3] = 0; -+ } -+ -+ (*top) <<= s; -+ (*top) |= (((uint32_t)((*middle) & 0xffffu) << s) >> 16); -+ (*bottom) <<= s; -+ -+ return(l); -+} -+ -+#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ -+ -+unsigned long long _slulonglong(unsigned long long l, char s) __SDCC_NONBANKED -+{ -+ _AUTOMEM uint32_t * const top = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 4); -+ _AUTOMEM uint16_t * const middle = (_AUTOMEM uint16_t *)((_AUTOMEM char *)(&l) + 2); -+ _AUTOMEM uint32_t * const bottom = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 0); -+ _AUTOMEM uint16_t * const w = (_AUTOMEM uint16_t *)(&l); -+ -+ for (; s >= 16; s-= 16) -+ { -+ w[3] = w[2]; -+ w[2] = w[1]; -+ w[1] = w[0]; -+ w[0] = 0; -+ } -+ -+ (*top) <<= s; -+ (*top) |= (((uint32_t)((*middle) & 0xffffu) << s) >> 16); -+ (*bottom) <<= s; -+ -+ return(l); -+} -+ -+#else -+#error Support for mixed endiannness not implemented! -+#endif -+ -+#endif -+ - -Property changes on: device/lib/_slulonglong.c -___________________________________________________________________ -Added: svn:eol-style -## -0,0 +1 ## -+native -\ No newline at end of property -Added: svn:keywords -## -0,0 +1 ## -+Author Date Id Revision -\ No newline at end of property -Index: device/lib/_srslonglong.c -=================================================================== ---- device/lib/_srslonglong.c (nonexistent) -+++ device/lib/_srslonglong.c (revision 14312) -@@ -0,0 +1,86 @@ -+/*------------------------------------------------------------------------- -+ _srslonglong.c - routine for shift right of 64 bit signed long long -+ -+ Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -+ -+ This library is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this library; see the file COPYING. If not, write to the -+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -+ MA 02110-1301, USA. -+ -+ As a special exception, if you link this library with other files, -+ some of which are compiled with SDCC, to produce an executable, -+ this library does not by itself cause the resulting executable to -+ be covered by the GNU General Public License. This exception does -+ not however invalidate any other reasons why the executable file -+ might be covered by the GNU General Public License. -+-------------------------------------------------------------------------*/ -+ -+#include <stdint.h> -+ -+#include <stdbit.h> -+ -+#include <sdcc-lib.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ -+long long _srslonglong(long long l, char s) __SDCC_NONBANKED -+{ -+ int32_t * const top = ( int32_t *)((char *)(&l) + 0); -+ uint32_t * const middle = (uint32_t *)((char *)(&l) + 2); -+ uint32_t * const bottom = (uint32_t *)((char *)(&l) + 4); -+ uint16_t * const w = (uint16_t *)(&l); -+ -+ for (; s >= 16; s-= 16) -+ { -+ w[3] = w[2]; -+ w[2] = w[1]; -+ w[1] = w[0]; -+ w[0] = (w[0] & 0x8000) ? 0xffff : 0x000000; -+ } -+ -+ (*bottom) >>= s; -+ (*middle) |= (((*middle & 0xffff0000ul) >> s) & 0x0000fffful); -+ (*top) >>= s; -+ -+ return(l); -+} -+#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ -+long long _srslonglong(long long l, char s) __SDCC_NONBANKED -+{ -+ _AUTOMEM int32_t * const top = (_AUTOMEM int32_t *)((_AUTOMEM char *)(&l) + 4); -+ _AUTOMEM uint32_t * const middle = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 2); -+ _AUTOMEM uint32_t * const bottom = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 0); -+ _AUTOMEM uint16_t * const w = (_AUTOMEM uint16_t *)(&l); -+ -+ for (; s >= 16; s-= 16) -+ { -+ w[0] = w[1]; -+ w[1] = w[2]; -+ w[2] = w[3]; -+ w[3] = (w[3] & 0x8000) ? 0xffff : 0x000000; -+ } -+ -+ (*bottom) >>= s; -+ (*middle) |= (((*middle & 0xffff0000ul) >> s) & 0x0000fffful); -+ (*top) >>= s; -+ -+ return(l); -+} -+#else -+#error Support for mixed endiannness not implemented! -+#endif -+ -+#endif -+ - -Property changes on: device/lib/_srslonglong.c -___________________________________________________________________ -Added: svn:eol-style -## -0,0 +1 ## -+native -\ No newline at end of property -Added: svn:keywords -## -0,0 +1 ## -+Author Date Id Revision -\ No newline at end of property -Index: device/lib/_srulonglong.c -=================================================================== ---- device/lib/_srulonglong.c (nonexistent) -+++ device/lib/_srulonglong.c (revision 14312) -@@ -0,0 +1,86 @@ -+/*------------------------------------------------------------------------- -+ _srulonglong.c - routine for shift right of 64 bit unsigned long long -+ -+ Copyright (C) 2012, Philipp Klaus Krause . philipp@informatik.uni-frankfurt.de -+ -+ This library is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this library; see the file COPYING. If not, write to the -+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, -+ MA 02110-1301, USA. -+ -+ As a special exception, if you link this library with other files, -+ some of which are compiled with SDCC, to produce an executable, -+ this library does not by itself cause the resulting executable to -+ be covered by the GNU General Public License. This exception does -+ not however invalidate any other reasons why the executable file -+ might be covered by the GNU General Public License. -+-------------------------------------------------------------------------*/ -+ -+#include <stdint.h> -+ -+#include <stdbit.h> -+ -+#include <sdcc-lib.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+#if __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__ -+unsigned long long _srulonglong(unsigned long long l, char s) __SDCC_NONBANKED -+{ -+ uint32_t *const top = (uint32_t *)((char *)(&l) + 0); -+ uint32_t *const middle = (uint16_t *)((char *)(&l) + 2); -+ uint32_t *const bottom = (uint32_t *)((char *)(&l) + 4); -+ uint16_t *const w = (uint16_t *)(&l); -+ -+ for (; s >= 16; s -= 16) -+ { -+ w[3] = w[2]; -+ w[2] = w[1]; -+ w[1] = w[0]; -+ w[0] = 0x000000; -+ } -+ -+ (*bottom) >>= s; -+ (*middle) |= (((*middle & 0xffff0000ul) >> s) & 0x0000fffful); -+ (*top) >>= s; -+ -+ return(l); -+} -+#elif __STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__ -+unsigned long long _srulonglong(unsigned long long l, char s) __SDCC_NONBANKED -+{ -+ _AUTOMEM uint32_t *const top = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 4); -+ _AUTOMEM uint16_t *const middle = (_AUTOMEM uint16_t *)((_AUTOMEM char *)(&l) + 4); -+ _AUTOMEM uint32_t *const bottom = (_AUTOMEM uint32_t *)((_AUTOMEM char *)(&l) + 0); -+ _AUTOMEM uint16_t *const w = (_AUTOMEM uint16_t *)(&l); -+ -+ for (; s >= 16; s -= 16) -+ { -+ w[0] = w[1]; -+ w[1] = w[2]; -+ w[2] = w[3]; -+ w[3] = 0x000000; -+ } -+ -+ (*bottom) >>= s; -+ (*middle) |= (uint16_t)(((uint32_t)(*middle) << 16) >> s); -+ (*top) |= (((*middle) & 0xffff0000ul) >> s); -+ -+ return(l); -+} -+#else -+#error Support for mixed endiannness not implemented! -+#endif -+ -+#endif -+ - -Property changes on: device/lib/_srulonglong.c -___________________________________________________________________ -Added: svn:eol-style -## -0,0 +1 ## -+native -\ No newline at end of property -Added: svn:keywords -## -0,0 +1 ## -+Author Date Id Revision -\ No newline at end of property -Index: device/lib/atomic_flag_clear.c -=================================================================== ---- device/lib/atomic_flag_clear.c (revision 14311) -+++ device/lib/atomic_flag_clear.c (revision 14312) -@@ -26,16 +26,6 @@ - might be covered by the GNU General Public License. - -------------------------------------------------------------------------*/ - -+#define __SDCC_ATOMIC_EXTERN extern -+ - #include <stdatomic.h> -- --void atomic_flag_clear(volatile atomic_flag *object) --{ --#if defined(__SDCC_mcs51) -- object->flag = 0; --#elif defined(__SDCC_tlcs90) || defined(__SDCC_z80) || defined(__SDCC_z180) || defined(__SDCC_ez80_z80) || defined(__SDCC_z80n) || defined(__SDCC_sm83) || defined(__SDCC_r2k) || defined(__SDCC_r2ka) || defined(__SDCC_r3ka) || defined(__SDCC_stm8) || defined(__SDCC_hc08) || defined(__SDCC_s08) || defined(__SDCC_mos6502) || defined(__SDCC_mos65c02) -- object->flag = 1; --#else --#error Support for atomic_flag not implemented --#endif --} -- -Index: device/lib/ez80_z80/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/ez80_z80/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/ez80_z80/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -36,8 +36,7 @@ - push hl - push de - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ld l, a - ret -Index: device/lib/hc08/Makefile.in -=================================================================== ---- device/lib/hc08/Makefile.in (revision 14311) -+++ device/lib/hc08/Makefile.in (revision 14312) -@@ -28,10 +28,10 @@ - _divulong.c - - HC08_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/mcs51/Makefile.in -=================================================================== ---- device/lib/mcs51/Makefile.in (revision 14311) -+++ device/lib/mcs51/Makefile.in (revision 14312) -@@ -15,7 +15,7 @@ - override PORTDIR = ../build/$(PORT) - - OBJ = crtstart.rel crtxinit.rel crtxclear.rel crtclear.rel \ -- crtpagesfr.rel crtbank.rel crtcall.rel \ -+ crtpagesfr.rel crtbank.rel crtcall.rel crtstackprobe.rel \ - crtxstack.rel crtxpush.rel crtxpushr0.rel crtxpop.rel crtxpopr0.rel \ - gptr_cmp.rel atomic_flag_test_and_set.rel atomic_flag_clear.rel - -Index: device/lib/mos6502/_rrslonglong.c -=================================================================== ---- device/lib/mos6502/_rrslonglong.c (revision 14311) -+++ device/lib/mos6502/_rrslonglong.c (nonexistent) -@@ -1,40 +0,0 @@ -- --#pragma std_c99 -- --#include <stdint.h> -- --#ifdef __SDCC_LONGLONG -- --long long _rrslonglong(long long l, char s) --{ -- -- uint8_t *const b = (uint8_t *)(&l); -- unsigned char shift,t1,t2, sign; -- signed char zb,i; -- -- sign=b[7]&0x80; -- -- zb=s>>3; -- if(zb) { -- i=0; -- for(;i<(8-zb);i++) { -- b[i]=b[zb+i]; -- } -- for(;i<8;i++) -- b[i]=sign?0xff:0x00; -- } -- -- shift=s&0x7; -- while(shift--) { -- t2=sign; -- for(i=7-zb;i>=0;i--) { -- t1=b[i]&1; -- b[i]=(b[i]>>1)|t2; -- t2=t1?0x80:0; -- } -- } -- -- return(l); --} -- --#endif -Index: device/lib/mos6502/_rrulonglong.c -=================================================================== ---- device/lib/mos6502/_rrulonglong.c (revision 14311) -+++ device/lib/mos6502/_rrulonglong.c (nonexistent) -@@ -1,38 +0,0 @@ -- --#pragma std_c99 -- --#include <stdint.h> -- --#ifdef __SDCC_LONGLONG -- --unsigned long long _rrulonglong(unsigned long long l, char s) --{ -- -- uint8_t *const b = (uint8_t *)(&l); -- unsigned char shift,t1,t2; -- signed char zb,i; -- -- zb=s>>3; -- if(zb) { -- for(i=0;i<(8-zb);i++) { -- b[i]=b[zb+i]; -- } -- -- for(;i<8;i++) -- b[i]=0; -- } -- -- shift=s&0x7; -- while(shift--) { -- t2=0; -- for(i=7-zb;i>=0;i--) { -- t1=b[i]&1; -- b[i]=(b[i]>>1)|t2; -- t2=t1?0x80:0; -- } -- } -- -- return(l); --} -- --#endif -Index: device/lib/mos6502/Makefile.in -=================================================================== ---- device/lib/mos6502/Makefile.in (revision 14311) -+++ device/lib/mos6502/Makefile.in (revision 14312) -@@ -41,10 +41,10 @@ - _mullong.c - - MOS6502_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/mos6502/_srslonglong.c -=================================================================== ---- device/lib/mos6502/_srslonglong.c (nonexistent) -+++ device/lib/mos6502/_srslonglong.c (revision 14312) -@@ -0,0 +1,37 @@ -+#include <stdint.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+long long _srslonglong(long long l, char s) -+{ -+ -+ uint8_t *const b = (uint8_t *)(&l); -+ unsigned char shift,t1,t2, sign; -+ signed char zb,i; -+ -+ sign=b[7]&0x80; -+ -+ zb=s>>3; -+ if(zb) { -+ i=0; -+ for(;i<(8-zb);i++) { -+ b[i]=b[zb+i]; -+ } -+ for(;i<8;i++) -+ b[i]=sign?0xff:0x00; -+ } -+ -+ shift=s&0x7; -+ while(shift--) { -+ t2=sign; -+ for(i=7-zb;i>=0;i--) { -+ t1=b[i]&1; -+ b[i]=(b[i]>>1)|t2; -+ t2=t1?0x80:0; -+ } -+ } -+ -+ return(l); -+} -+ -+#endif -Index: device/lib/mos6502/_srulonglong.c -=================================================================== ---- device/lib/mos6502/_srulonglong.c (nonexistent) -+++ device/lib/mos6502/_srulonglong.c (revision 14312) -@@ -0,0 +1,34 @@ -+#include <stdint.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+unsigned long long _srulonglong(unsigned long long l, char s) -+{ -+ uint8_t *const b = (uint8_t *)(&l); -+ unsigned char shift,t1,t2; -+ signed char zb,i; -+ -+ zb=s>>3; -+ if(zb) { -+ for(i=0;i<(8-zb);i++) { -+ b[i]=b[zb+i]; -+ } -+ -+ for(;i<8;i++) -+ b[i]=0; -+ } -+ -+ shift=s&0x7; -+ while(shift--) { -+ t2=0; -+ for(i=7-zb;i>=0;i--) { -+ t1=b[i]&1; -+ b[i]=(b[i]>>1)|t2; -+ t2=t1?0x80:0; -+ } -+ } -+ -+ return(l); -+} -+ -+#endif -Index: device/lib/mos6502-stack-auto/_rrslonglong.c -=================================================================== ---- device/lib/mos6502-stack-auto/_rrslonglong.c (revision 14311) -+++ device/lib/mos6502-stack-auto/_rrslonglong.c (nonexistent) -@@ -1,40 +0,0 @@ -- --#pragma std_c99 -- --#include <stdint.h> -- --#ifdef __SDCC_LONGLONG -- --long long _rrslonglong(long long l, char s) --{ -- -- uint8_t *const b = (uint8_t *)(&l); -- unsigned char shift,t1,t2, sign; -- signed char zb,i; -- -- sign=b[7]&0x80; -- -- zb=s>>3; -- if(zb) { -- i=0; -- for(;i<(8-zb);i++) { -- b[i]=b[zb+i]; -- } -- for(;i<8;i++) -- b[i]=sign?0xff:0x00; -- } -- -- shift=s&0x7; -- while(shift--) { -- t2=sign; -- for(i=7-zb;i>=0;i--) { -- t1=b[i]&1; -- b[i]=(b[i]>>1)|t2; -- t2=t1?0x80:0; -- } -- } -- -- return(l); --} -- --#endif -Index: device/lib/mos6502-stack-auto/_rrulonglong.c -=================================================================== ---- device/lib/mos6502-stack-auto/_rrulonglong.c (revision 14311) -+++ device/lib/mos6502-stack-auto/_rrulonglong.c (nonexistent) -@@ -1,38 +0,0 @@ -- --#pragma std_c99 -- --#include <stdint.h> -- --#ifdef __SDCC_LONGLONG -- --unsigned long long _rrulonglong(unsigned long long l, char s) --{ -- -- uint8_t *const b = (uint8_t *)(&l); -- unsigned char shift,t1,t2; -- signed char zb,i; -- -- zb=s>>3; -- if(zb) { -- for(i=0;i<(8-zb);i++) { -- b[i]=b[zb+i]; -- } -- -- for(;i<8;i++) -- b[i]=0; -- } -- -- shift=s&0x7; -- while(shift--) { -- t2=0; -- for(i=7-zb;i>=0;i--) { -- t1=b[i]&1; -- b[i]=(b[i]>>1)|t2; -- t2=t1?0x80:0; -- } -- } -- -- return(l); --} -- --#endif -Index: device/lib/mos6502-stack-auto/Makefile.in -=================================================================== ---- device/lib/mos6502-stack-auto/Makefile.in (revision 14311) -+++ device/lib/mos6502-stack-auto/Makefile.in (revision 14312) -@@ -35,10 +35,10 @@ - _mullong.c - - MOS6502_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/mos6502-stack-auto/_srslonglong.c -=================================================================== ---- device/lib/mos6502-stack-auto/_srslonglong.c (nonexistent) -+++ device/lib/mos6502-stack-auto/_srslonglong.c (revision 14312) -@@ -0,0 +1,37 @@ -+#include <stdint.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+long long _srslonglong(long long l, char s) -+{ -+ -+ uint8_t *const b = (uint8_t *)(&l); -+ unsigned char shift,t1,t2, sign; -+ signed char zb,i; -+ -+ sign=b[7]&0x80; -+ -+ zb=s>>3; -+ if(zb) { -+ i=0; -+ for(;i<(8-zb);i++) { -+ b[i]=b[zb+i]; -+ } -+ for(;i<8;i++) -+ b[i]=sign?0xff:0x00; -+ } -+ -+ shift=s&0x7; -+ while(shift--) { -+ t2=sign; -+ for(i=7-zb;i>=0;i--) { -+ t1=b[i]&1; -+ b[i]=(b[i]>>1)|t2; -+ t2=t1?0x80:0; -+ } -+ } -+ -+ return(l); -+} -+ -+#endif -Index: device/lib/mos6502-stack-auto/_srulonglong.c -=================================================================== ---- device/lib/mos6502-stack-auto/_srulonglong.c (nonexistent) -+++ device/lib/mos6502-stack-auto/_srulonglong.c (revision 14312) -@@ -0,0 +1,34 @@ -+#include <stdint.h> -+ -+#ifdef __SDCC_LONGLONG -+ -+unsigned long long _srulonglong(unsigned long long l, char s) -+{ -+ uint8_t *const b = (uint8_t *)(&l); -+ unsigned char shift,t1,t2; -+ signed char zb,i; -+ -+ zb=s>>3; -+ if(zb) { -+ for(i=0;i<(8-zb);i++) { -+ b[i]=b[zb+i]; -+ } -+ -+ for(;i<8;i++) -+ b[i]=0; -+ } -+ -+ shift=s&0x7; -+ while(shift--) { -+ t2=0; -+ for(i=7-zb;i>=0;i--) { -+ t1=b[i]&1; -+ b[i]=(b[i]>>1)|t2; -+ t2=t1?0x80:0; -+ } -+ } -+ -+ return(l); -+} -+ -+#endif -Index: device/lib/mos65c02/Makefile.in -=================================================================== ---- device/lib/mos65c02/Makefile.in (revision 14311) -+++ device/lib/mos65c02/Makefile.in (revision 14312) -@@ -27,10 +27,10 @@ - _divulong.c - - M6502_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/pdk13/Makefile.in -=================================================================== ---- device/lib/pdk13/Makefile.in (revision 14311) -+++ device/lib/pdk13/Makefile.in (revision 14312) -@@ -41,10 +41,10 @@ - _mullong.c - - PDK13_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/pdk14/Makefile.in -=================================================================== ---- device/lib/pdk14/Makefile.in (revision 14311) -+++ device/lib/pdk14/Makefile.in (revision 14312) -@@ -35,10 +35,10 @@ - _mullong.c - - PDK14_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/pdk15/Makefile.in -=================================================================== ---- device/lib/pdk15/Makefile.in (revision 14311) -+++ device/lib/pdk15/Makefile.in (revision 14312) -@@ -35,10 +35,10 @@ - _mullong.c - - PDK15_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/pdk15-stack-auto/Makefile.in -=================================================================== ---- device/lib/pdk15-stack-auto/Makefile.in (revision 14311) -+++ device/lib/pdk15-stack-auto/Makefile.in (revision 14312) -@@ -35,10 +35,10 @@ - _mullong.c - - PDK15_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/r2k/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/r2k/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/r2k/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -33,8 +33,7 @@ - _atomic_flag_test_and_set: - ld hl, 2 (sp) - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ld l, a - ret -Index: device/lib/r2ka/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/r2ka/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/r2ka/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -33,8 +33,7 @@ - _atomic_flag_test_and_set: - ld hl, 2 (sp) - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ld l, a - ret -Index: device/lib/r3ka/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/r3ka/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/r3ka/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -33,8 +33,7 @@ - _atomic_flag_test_and_set: - ld hl, 2 (sp) - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ld l, a - ret -Index: device/lib/s08/Makefile.in -=================================================================== ---- device/lib/s08/Makefile.in (revision 14311) -+++ device/lib/s08/Makefile.in (revision 14312) -@@ -29,10 +29,10 @@ - _divulong.c - - HC08_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/s08-stack-auto/Makefile.in -=================================================================== ---- device/lib/s08-stack-auto/Makefile.in (revision 14311) -+++ device/lib/s08-stack-auto/Makefile.in (revision 14312) -@@ -29,10 +29,10 @@ - _divulong.c - - HC08_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/sm83/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/sm83/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/sm83/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -34,8 +34,7 @@ - ld l, e - ld h, d - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ret - -Index: device/lib/stm8/Makefile.in -=================================================================== ---- device/lib/stm8/Makefile.in (revision 14311) -+++ device/lib/stm8/Makefile.in (revision 14312) -@@ -31,10 +31,10 @@ - _modulong.c - - STM8_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/stm8-large/Makefile.in -=================================================================== ---- device/lib/stm8-large/Makefile.in (revision 14311) -+++ device/lib/stm8-large/Makefile.in (revision 14312) -@@ -28,10 +28,10 @@ - STM8_LONG = - - STM8_LONGLONG = $(COMMON_LONGLONG) \ -- _rrulonglong.c \ -- _rrslonglong.c \ -- _rlulonglong.c \ -- _rlslonglong.c \ -+ _srulonglong.c \ -+ _srslonglong.c \ -+ _slulonglong.c \ -+ _slslonglong.c \ - _mullonglong.c \ - _divslonglong.c \ - _divulonglong.c \ -Index: device/lib/strtoull.c -=================================================================== ---- device/lib/strtoull.c (revision 14311) -+++ device/lib/strtoull.c (revision 14312) -@@ -107,7 +107,6 @@ - else if (b == 2 && (!strncmp (ptr, "0b", 2) || !strncmp (ptr, "0B", 2))) - ptr += 2; - -- - // Empty sequence conversion error - if (_isdigit (*ptr, b) < 0) - { -@@ -118,13 +117,11 @@ - - for (ret = 0;; ptr++) - { -- unsigned long long int oldret; - signed char digit = _isdigit (*ptr, b); - - if (digit < 0) - break; - -- oldret = ret; - range_error |= ckd_mul (&ret, ret, b); - range_error |= ckd_add (&ret, ret, digit); - -Index: device/lib/wcstoull.c -=================================================================== ---- device/lib/wcstoull.c (revision 14311) -+++ device/lib/wcstoull.c (revision 14312) -@@ -47,7 +47,7 @@ - if (c >= L'0' && c <= L'9') - v = c - L'0'; - else if (c >= L'a' && c <= L'z') -- v = c - 'a' + 10; -+ v = c - L'a' + 10; - else if (c >= L'A' && c <= L'Z') - v = c - L'A' + 10; - else -@@ -61,7 +61,7 @@ - - // NOTE for maintenance: strtoull, wcstoul and wcstoull have been derived from strtoul - --unsigned long long int strtoull(const wchar_t *nptr, wchar_t **endptr, int base) -+unsigned long long int wcstoull(const wchar_t *nptr, wchar_t **endptr, int base) - { - const wchar_t *ptr = nptr; - unsigned long long int ret; -@@ -69,7 +69,7 @@ - bool neg = false; - unsigned char b = base; - -- while (isblank (*ptr)) -+ while (iswblank (*ptr)) - ptr++; - - // Handle sign. -@@ -108,7 +108,6 @@ - else if (b == 2 && (!wcsncmp (ptr, L"0b", 2) || !wcsncmp (ptr, L"0B", 2))) - ptr += 2; - -- - // Empty sequence conversion error - if (_isdigit (*ptr, b) < 0) - { -@@ -119,13 +118,11 @@ - - for (ret = 0;; ptr++) - { -- unsigned long long int oldret; - signed char digit = _isdigit (*ptr, b); - - if (digit < 0) - break; - -- oldret = ret; - range_error |= ckd_mul(&ret, ret, b); - range_error |= ckd_add (&ret, ret, digit); - -Index: device/lib/z180/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/z180/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/z180/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -32,8 +32,7 @@ - - _atomic_flag_test_and_set: - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ret - -Index: device/lib/z80/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/z80/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/z80/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -32,8 +32,7 @@ - - _atomic_flag_test_and_set: - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ret - -Index: device/lib/z80n/atomic_flag_test_and_set.s -=================================================================== ---- device/lib/z80n/atomic_flag_test_and_set.s (revision 14311) -+++ device/lib/z80n/atomic_flag_test_and_set.s (revision 14312) -@@ -13,7 +13,7 @@ - ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ; GNU General Public License for more details. - ; --; You should have received a copy of the GNU General Public License -+; You should have received a copy of the GNU General Public License - ; along with this library; see the file COPYING. If not, write to the - ; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, - ; MA 02110-1301, USA. -@@ -32,8 +32,7 @@ - - _atomic_flag_test_and_set: - xor a, a -- srl (hl) -- ccf -+ sra (hl) - rla - ret - -Index: src/SDCC.y -=================================================================== ---- src/SDCC.y (revision 14311) -+++ src/SDCC.y (revision 14312) -@@ -2155,7 +2155,7 @@ - { - if (FUNC_ISCRITICAL ($1->type)) - inCriticalFunction = 1; -- strncpy (function_name, $1->name, sizeof (function_name) - 4); -+ strncpyz (function_name, $1->name, sizeof (function_name) - 3); - memset (function_name + sizeof (function_name) - 4, 0x00, 4); - } - } -@@ -2173,8 +2173,8 @@ - $2 = createFunctionDecl($2); - if ($2) - { -- if (!strcmp ($2->name, "_sdcc_external_startup")) // The rename (and semantics change happened) in SDCC 4.2.10. Keep this warning for two major releases afterwards. -- werror (W__SDCC_EXTERNAL_STARTUP_DEF); -+ if (!strcmp ($2->name, "_sdcc_external_startup")) // The rename (and semantics change happened) in SDCC 4.2.10. Keep this warning for two major releases afterwards. -+ werror (W__SDCC_EXTERNAL_STARTUP_DEF); - if (FUNC_ISCRITICAL ($2->type)) - inCriticalFunction = 1; - // warn for loss of calling convention for inlined functions. -@@ -2183,7 +2183,7 @@ - FUNC_BANKED ($2->type) || FUNC_REGBANK ($2->type) || - FUNC_ISOVERLAY ($2->type) || FUNC_ISISR ($2->type) )) - werror (W_INLINE_FUNCATTR, $2->name); -- strncpy (function_name, $2->name, sizeof (function_name) - 4); -+ strncpyz (function_name, $2->name, sizeof (function_name) - 3); - memset (function_name + sizeof (function_name) - 4, 0x00, 4); - } - } -Index: src/SDCCsymt.c -=================================================================== ---- src/SDCCsymt.c (revision 14311) -+++ src/SDCCsymt.c (revision 14312) -@@ -4581,7 +4581,7 @@ - "s", "su", "us", "u" - }; - const char *srlrr[] = { -- "rl", "rr" -+ "sl", "sr" - }; - /* type as character codes for typeFromStr() */ - const char *sbwdCodes[] = { -Index: src/SDCCval.c -=================================================================== ---- src/SDCCval.c (revision 14311) -+++ src/SDCCval.c (revision 14312) -@@ -1181,7 +1181,7 @@ - /*-----------------------------------------------------------------*/ - /* sepStrToUll - like stroull, but also handles digit separators */ - /*-----------------------------------------------------------------*/ --static unsigned long long -+static unsigned long long - sepStrToUll (const char *nptr, char **endptr, int base) - { - wassert (base >= 2 && base <= 16); -@@ -1199,7 +1199,7 @@ - separated = true; - continue; - } -- -+ - // Assumes 0-9, a-f and A-F are consecutive in character set. - if (next >= 'a' && next <= 'f') - next = next - 'a' + 10; -@@ -1212,7 +1212,7 @@ - - if (!(next >= 0 && next < base)) - break; -- -+ - ret *= base; - ret += next; - } -@@ -1526,9 +1526,9 @@ - val->type = val->etype = newLink (SPECIFIER); /* create the specifier */ - SPEC_SCLS (val->type) = S_LITERAL; - SPEC_CONST (val->type) = 1; -- -+ - SPEC_NOUN (val->type) = (bit) ? V_BIT : V_BOOL; -- -+ - SPEC_CVAL (val->type).v_uint = (unsigned int) v; - return val; - } -@@ -1548,9 +1548,9 @@ - val->type = val->etype = newLink (SPECIFIER); /* create the specifier */ - SPEC_SCLS (val->type) = S_LITERAL; - SPEC_CONST (val->type) = 1; -- -+ - SPEC_NOUN (val->type) = V_NULLPTR; -- -+ - SPEC_CVAL (val->type).v_uint = 0; - return val; - } -@@ -1659,7 +1659,6 @@ - - if (s[0] == '"' || explicit_u8) // UTF-8 string literal - { -- - // Convert input string (mixed UTF-8 and UTF-32) to UTF-8 (handling all escape sequences, etc). - utf_8 = copyStr (s[0] == '"' ? s : s + 2, &utf_8_size); - -@@ -1678,7 +1677,7 @@ - { - // Convert input string (mixed UTF-8 and UTF-32) to UTF-8 first (handling all escape sequences, etc). - utf_8 = copyStr (s + 1, &utf_8_size); -- -+ - size_t utf_32_size; - // Convert to UTF-32 next, since converting UTF-32 to UTF-16 is easier than UTF-8 to UTF-16. - const TYPE_UDWORD *utf_32 = utf_32_from_utf_8 (&utf_32_size, utf_8, utf_8_size); -@@ -1718,7 +1717,7 @@ - { - struct dbuf_s dbuf; - value *val = newValue (); -- -+ - dbuf_init (&dbuf, size); - wassert (dbuf_append (&dbuf, s, size)); - -@@ -2024,7 +2023,7 @@ - werror (E_CONST_EXPECTED, val->name); - return 0; - } -- -+ - /* if it is not a specifier then we can assume that */ - /* it will be an unsigned long */ - /* 2012-Apr-30 EEP - Why is this true? */ -@@ -2043,7 +2042,7 @@ - #else - p += offset; - #endif -- return *p; -+ return *p; - } - - if (SPEC_NOUN (val->etype) == V_FIXED16X16) -@@ -2054,7 +2053,7 @@ - if (SPEC_USIGN (val->etype)) - return offset < 8 ? (SPEC_CVAL (val->etype).v_ulonglong >> shift) & 0xff : 0; - else -- return offset < 8 ? (SPEC_CVAL (val->etype).v_longlong >> shift) & 0xff : -+ return offset < 8 ? (SPEC_CVAL (val->etype).v_longlong >> shift) & 0xff : - (SPEC_CVAL (val->etype).v_longlong < 0 ? 0xff : 0); - } - -@@ -2063,7 +2062,7 @@ - if (SPEC_USIGN (val->etype)) - return offset < 4 ? (SPEC_CVAL (val->etype).v_ulong >> shift) & 0xff : 0; - else -- return offset < 4 ? (SPEC_CVAL (val->etype).v_long >> shift) & 0xff : -+ return offset < 4 ? (SPEC_CVAL (val->etype).v_long >> shift) & 0xff : - (SPEC_CVAL (val->etype).v_long < 0 ? 0xff : 0); - } - -@@ -2171,7 +2170,7 @@ - /* ullFromVal - value to unsigned long long conversion */ - /*------------------------------------------------------------------*/ - unsigned long long --ullFromVal (value * val) -+ullFromVal (const value * val) - { - if (!val) - return 0; -@@ -2408,7 +2407,7 @@ - SPEC_CVAL (val->etype).v_int = !SPEC_CVAL (val->etype).v_int; - - } -- -+ - /* ANSI: result type is int, value is 0 or 1 */ - /* If reduction is allowed SDCC will hold this in an 'unsigned char' */ - if (reduceType) -@@ -2810,7 +2809,7 @@ - val->type = val->etype = newCharLink (); - val->type->xclass = SPECIFIER; - SPEC_SCLS (val->type) = S_LITERAL; /* will remain literal */ -- -+ - if (reduceType) - { - SPEC_NOUN (val->type) = V_CHAR; /* type is char */ -@@ -3021,7 +3020,7 @@ - val->type = val->etype = newCharLink (); - val->type->xclass = SPECIFIER; - SPEC_SCLS (val->type) = S_LITERAL; /* will remain literal */ -- -+ - if (reduceType) - SPEC_USIGN (val->type) = 1; - else -@@ -3057,7 +3056,7 @@ - return NULL; - if ((fval > 0x7ffffffful) || (-fval > 0x7ffffffful)) - l = (unsigned long)llval; -- -+ - #if 0 - printf("valCastLiteral: %llx to ", (unsigned long long)llval); printTypeChain (dtype, stdout); printf("\n"); - #endif -Index: src/SDCCval.h -=================================================================== ---- src/SDCCval.h (revision 14311) -+++ src/SDCCval.h (revision 14312) -@@ -130,7 +130,7 @@ - void printVal (value *); - double floatFromVal (value *); - unsigned long ulFromVal (const value *); --unsigned long long ullFromVal (value *); -+unsigned long long ullFromVal (const value *); - - /* convert a fixed16x16 type to double */ - double doubleFromFixed16x16 (TYPE_TARGET_ULONG value); -Index: src/mcs51/ralloc.c -=================================================================== ---- src/mcs51/ralloc.c (revision 14311) -+++ src/mcs51/ralloc.c (revision 14312) -@@ -1787,7 +1787,6 @@ - if (IC_RESULT (ic)) - rmask = bitVectUnion (rmask, mcs51_rUmaskForOp (IC_RESULT (ic))); - --ret: - return rmask; - } - -@@ -3308,12 +3307,12 @@ - if (IC_LEFT (ic) && IS_SYMOP (IC_LEFT (ic)) && OP_SYMBOL (IC_LEFT (ic))->nRegs && - IC_RESULT (ic) && IS_SYMOP (IC_RESULT (ic)) && OP_SYMBOL (IC_RESULT (ic))->nRegs) - { -- positionRegs (OP_SYMBOL (IC_RESULT (ic)), OP_SYMBOL (IC_LEFT (ic)), 1); -+ positionRegs (OP_SYMBOL (IC_RESULT (ic)), OP_SYMBOL (IC_LEFT (ic)), 1); - } - if (IC_RIGHT (ic) && IS_SYMOP (IC_RIGHT (ic)) && OP_SYMBOL (IC_RIGHT (ic))->nRegs && - IC_RESULT (ic) && IS_SYMOP (IC_RESULT (ic)) && OP_SYMBOL (IC_RESULT (ic))->nRegs) - { -- positionRegs (OP_SYMBOL (IC_RESULT (ic)), OP_SYMBOL (IC_RIGHT (ic)), 1); -+ positionRegs (OP_SYMBOL (IC_RESULT (ic)), OP_SYMBOL (IC_RIGHT (ic)), 1); - } - } - } -Index: src/mos6502/gen.c -=================================================================== ---- src/mos6502/gen.c (revision 14311) -+++ src/mos6502/gen.c (revision 14312) -@@ -327,8 +327,9 @@ - if(op==0) { - snprintf(str, 64, "---"); - } else if(IS_SYMOP(op)) { -- snprintf(str, 64, "SYM:%s(%s:%d)", -- op->svt.symOperand->rname, type, size); -+ if (snprintf(str, 64, "SYM:%s(%s:%d)", op->svt.symOperand->rname, type, size) >= 64) { -+ str[63] = 0; // ridiculous workaround to silence GCC warning ā%sā directive output may be truncated -+ } - } else if(IS_VALOP(op)) { - snprintf(str, 64, "VAL(%s:%d)", - type, size); -@@ -3355,7 +3356,7 @@ - if (aop->type==AOP_SOF) - { - #if 0 -- // code for lda [BASEPTR],y -+ // code for lda [BASEPTR],y - aopPrepareStoreTemp = storeRegTemp(m6502_reg_y, false); - // FIXME: offset is wrong - emitComment (TRACE_AOP, "ofs=%d base=%d tsx=%d push=%d stk=%d loffset=%d", _G.stackOfs, _G.baseStackPushes, _G.tsxStackPushes, _G.stackPushes, aop->aopu.aop_stk, loffset); -@@ -8438,7 +8439,6 @@ - operand *left = IC_LEFT (ic); - operand *result = IC_RESULT (ic); - -- sym_link *retype; - int size, offset; - symbol *tlbl, *tlbl1; - char *shift; -@@ -9926,7 +9926,7 @@ - /* the result is now in the z flag bit */ - freeAsmop (cond, NULL); - --// TODO: redundant bne/beq -+// TODO: redundant bne/beq - emitComment (TRACEGEN|VVDBG, " genIfx - call jump"); - genIfxJump (ic, "a"); - -@@ -10346,7 +10346,7 @@ - offset++; - size--; - } -- else if ((size > 2 || size >= 2 && !signExtend) && m6502_reg_y->isDead && m6502_reg_x->isDead && -+ else if ((size > 2 || size >= 2 && !signExtend) && m6502_reg_y->isDead && m6502_reg_x->isDead && - (AOP_TYPE (right) == AOP_IMMD || IS_MOS65C02 && AOP_TYPE (right) == AOP_EXT) && - (AOP_TYPE (result) == AOP_DIR || IS_MOS65C02 && AOP_TYPE (result) == AOP_EXT)) - { -Index: src/z80/ralloc.c -=================================================================== ---- src/z80/ralloc.c (revision 14311) -+++ src/z80/ralloc.c (revision 14312) -@@ -468,7 +468,6 @@ - if (IC_RESULT (ic)) - rmask = bitVectUnion (rmask, rUmaskForOp (IC_RESULT (ic))); - --ret: - return rmask; - } - -Index: support/cpp/gcc/diagnostic.cc -=================================================================== ---- support/cpp/gcc/diagnostic.cc (revision 14311) -+++ support/cpp/gcc/diagnostic.cc (revision 14312) -@@ -79,7 +79,7 @@ - /* A diagnostic_context surrogate for stderr. */ - static diagnostic_context global_diagnostic_context; - diagnostic_context *global_dc = &global_diagnostic_context; -- -+ - /* Return a malloc'd string containing MSG formatted a la printf. The - caller is responsible for freeing the memory. */ - char * -@@ -105,8 +105,6 @@ - return build_message_string ("%s%s:%s ", locus_cs, f, locus_ce); - } - -- -- - /* Return the value of the getenv("COLUMNS") as an integer. If the - value is not set to a positive integer, use ioctl to get the - terminal width. If it fails, return INT_MAX. */ -@@ -135,11 +133,11 @@ - diagnostic_set_caret_max_width (diagnostic_context *context, int value) - { - /* One minus to account for the leading empty space. */ -- value = value ? value - 1 -+ value = value ? value - 1 - : (isatty (fileno (pp_buffer (context->printer)->stream)) - ? get_terminal_width () - 1: INT_MAX); -- -- if (value <= 0) -+ -+ if (value <= 0) - value = INT_MAX; - - context->caret_max_width = value; -@@ -1357,7 +1355,7 @@ - || diagnostic_kind_count (context, DK_SORRY) > 0) - && !context->abort_on_error) - { -- expanded_location s -+ expanded_location s - = expand_location (diagnostic_location (diagnostic)); - fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n", - s.file, s.line); -@@ -1470,7 +1468,7 @@ - - return p; - } -- -+ - /* Standard error reporting routines in increasing order of severity. - All of these take arguments like printf. */ - -@@ -1966,7 +1964,7 @@ - - gcc_unreachable (); - } -- -+ - /* Special case error functions. Most are implemented in terms of the - above, or should be. */ - -@@ -2024,7 +2022,7 @@ - if (global_dc->printer == NULL) - { - /* Print the error message. */ -- fnotice (stderr, diagnostic_kind_text[DK_ICE]); -+ fnotice (stderr, "%s", diagnostic_kind_text[DK_ICE]); - fnotice (stderr, "in %s, at %s:%d", function, trim_filename (file), line); - fputc ('\n', stderr); - -Index: support/cpp/gcc/gcc.cc -=================================================================== ---- support/cpp/gcc/gcc.cc (revision 14311) -+++ support/cpp/gcc/gcc.cc (revision 14312) -@@ -47,7 +47,6 @@ - - #define untested() { fprintf (stderr, "@@#\n@@@:%s:%d:%s\n", __FILE__, __LINE__, __func__); } - -- - // sdcpp - extern bool flag_wpa; - bool flag_wpa; -@@ -173,8 +172,6 @@ - #pragma GCC poison getenv putenv - #endif - -- -- - /* By default there is no special suffix for target executables. */ - #ifdef TARGET_EXECUTABLE_SUFFIX - #define HAVE_TARGET_EXECUTABLE_SUFFIX -@@ -451,7 +448,6 @@ - static char *quote_spec_arg (char *); - static bool not_actual_file_p (const char *); - -- - /* The Specs Language - - Specs are strings containing lines, each of which (if not blank) -@@ -681,7 +677,7 @@ - GCC also knows implicitly that arguments starting in `-l' are to be - treated as compiler output files, and passed to the linker in their - proper position among the other output files. */ -- -+ - /* Define the macros used for specs %a, %l, %L, %S, %C, %1. */ - - /* config.h can define ASM_SPEC to provide extra args to the assembler -@@ -924,7 +920,7 @@ - compilations. */ - # define ASM_DEBUG_DWARF_OPTION "" - # elif defined(HAVE_AS_GDWARF_5_DEBUG_FLAG) && !defined(HAVE_LD_BROKEN_PE_DWARF5) --# define ASM_DEBUG_DWARF_OPTION "%{%:dwarf-version-gt(4):--gdwarf-5;" \ -+# define ASM_DEBUG_DWARF_OPTION "%{%:dwarf-version-gt(4):--gdwarf-5;" \ - "%:dwarf-version-gt(3):--gdwarf-4;" \ - "%:dwarf-version-gt(2):--gdwarf-3;" \ - ":--gdwarf2}" -@@ -1377,7 +1373,6 @@ - - static struct user_specs *user_specs_head, *user_specs_tail; - -- - /* Record the mapping from file suffixes for compilation specs. */ - - struct compiler -@@ -1522,7 +1517,7 @@ - These options are accumulated by -Wp, - and substituted into the preprocessor command with %Z. */ - static vec<char_p> preprocessor_options; -- -+ - static char * - skip_whitespace (char *p) - { -@@ -1665,7 +1660,7 @@ - set_multilib_dir based on the compilation options. */ - - static const char *multiarch_dir; -- -+ - /* Structure to keep track of the specs that have been defined so far. - These are accessed using %(specname) in a compiler or link - spec. */ -@@ -1757,7 +1752,7 @@ - /* List of dynamically allocates specs that have been defined so far. */ - - static struct spec_list *specs = (struct spec_list *) 0; -- -+ - /* List of static spec functions. */ - - static const struct spec_function static_spec_functions[] = -@@ -1789,7 +1784,7 @@ - }; - - static int processing_spec_function; -- -+ - /* Add appropriate libgcc specs to OBSTACK, taking into account - various permutations of -shared-libgcc, -shared, and such. */ - -@@ -2044,7 +2039,6 @@ - return set_static_spec (spec, val, false); - } - -- - /* Change the value of spec NAME to SPEC. If SPEC is empty, then the spec is - removed; If the spec starts with a + then SPEC is added to the end of the - current spec. */ -@@ -2106,7 +2100,7 @@ - sl->user_p = user_p; - sl->alloc_p = true; - } -- -+ - /* Accumulate a command (program name and args), and run it. */ - - typedef const char *const_char_p; /* For DEF_VEC_P. */ -@@ -2152,7 +2146,7 @@ - /* Number of commands that exited with a signal. */ - - static int signal_count; -- -+ - /* Allocate the argument vector. */ - - static void -@@ -2284,7 +2278,7 @@ - - record_temp_file (temp_file, !save_temps_flag, !save_temps_flag); - } -- -+ - /* Load specs from a file name named FILENAME, replacing occurrences of - various different types of line-endings, \r\n, \n\r and just \r, with - a single \n. */ -@@ -2609,7 +2603,7 @@ - - XDELETEVEC (buffer); - } -- -+ - /* Record the names of temporary files we tell compilers to write, - and delete them at the end of the run. */ - -@@ -2749,7 +2743,7 @@ - { - failure_delete_queue = 0; - } -- -+ - /* Call CALLBACK for each path in PATHS, breaking out early if CALLBACK - returns non-NULL. - If DO_MULTI is true iterate over the paths twice, first with multilib -@@ -2992,7 +2986,7 @@ - { - xputenv (build_search_list (paths, env_var, true, do_multi)); - } -- -+ - /* Check whether NAME can be accessed in MODE. This is like access, - except that it never considers directories to be executable. */ - -@@ -3234,7 +3228,6 @@ - require_machine_suffix, os_multilib); - } - -- - /* Execute the command specified by the arguments on the current line of spec. - When using pipes, this includes several piped-together commands - with `|' between them. -@@ -3588,7 +3581,7 @@ - return ret_code; - } - } -- -+ - /* Find all the switches given to us - and make a vector describing them. - The elements of the vector are strings, one per switch given. -@@ -3698,7 +3691,7 @@ - /* And a vector of corresponding output files is made up later. */ - - const char **outfiles; -- -+ - #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX) - - /* Convert NAME to a new name if it is the standard suffix. DO_EXE -@@ -3754,7 +3747,7 @@ - return name; - } - #endif -- -+ - /* Display the command line switches accepted by gcc. */ - static void - display_help (void) -@@ -3851,7 +3844,7 @@ - { - linker_options.safe_push (save_string (option, len)); - } -- -+ - /* Allocate space for an input file in infiles. */ - - static void -@@ -5581,7 +5574,7 @@ - obstack_grow (&collect_obstack, "\0", 1); - xputenv (XOBFINISH (&collect_obstack, char *)); - } -- -+ - /* Process a spec string, accumulating and running commands. */ - - /* These variables describe the input file name. -@@ -6766,7 +6759,7 @@ - "%{foo=*:bar%*}%{foo=*:one%*two}" - - matches -foo=hello then it will produce: -- -+ - barhello onehellotwo - */ - if (*p == 0 || *p == '}') -@@ -7415,7 +7408,7 @@ - invalid: - fatal_error (input_location, "braced spec body %qs is invalid", body); - } -- -+ - /* Return 0 iff switch number SWITCHNUM is obsoleted by a later switch - on the command line. PREFIX_LENGTH is the length of XXX in an {XXX*} - spec, or -1 if either exact match or %* is used. -@@ -7496,7 +7489,7 @@ - switches[switchnum].live_cond |= SWITCH_LIVE; - return 1; - } -- -+ - /* Pass a switch to the current accumulating command - in the same form that we received it. - SWITCHNUM identifies the switch; it is an index into -@@ -7550,7 +7543,7 @@ - do_spec_1 (" ", 0, NULL); - switches[switchnum].validated = true; - } -- -+ - /* Print GCC configuration (e.g. version, thread model, target, - configuration_arguments) to a given FILE. */ - -@@ -7783,16 +7776,18 @@ - char **out_file, char **err_file) - { - int i, status; -+ ssize_t ret; - int fd = open (*out_file, O_RDWR | O_APPEND); - if (fd < 0) - return; -- write (fd, "\n//", 3); -+ ret = write (fd, "\n//", 3); - for (i = 0; i < nargs; i++) - { -- write (fd, " ", 1); -- write (fd, new_argv[i], strlen (new_argv[i])); -+ ret = write (fd, " ", 1); -+ ret = write (fd, new_argv[i], strlen (new_argv[i])); - } -- write (fd, "\n\n", 2); -+ ret = write (fd, "\n\n", 2); -+ (void)ret; - close (fd); - new_argv[nargs] = "-E"; - new_argv[nargs + 1] = NULL; -@@ -7986,7 +7981,7 @@ - INPUT_STAT_SET signals that the stat is needed. */ - input_stat_set = 0; - } -- -+ - /* On fatal signals, delete all the temporary files. */ - - static void -@@ -9316,7 +9311,7 @@ - } - return 0; - } -- -+ - static char * - save_string (const char *s, int len) - { -@@ -9328,7 +9323,6 @@ - return result; - } - -- - static inline void - validate_switches_from_spec (const char *spec, bool user) - { -@@ -9444,7 +9438,7 @@ - return p; - #undef SKIP_WHITE - } -- -+ - struct mdswitchstr - { - const char *str; -@@ -10188,7 +10182,7 @@ - ++p; - } - } -- -+ - /* getenv built-in spec function. - - Returns the value of the environment variable given by its first argument, -@@ -10569,14 +10563,14 @@ - get_random_number (void) - { - unsigned HOST_WIDE_INT ret = 0; -- int fd; -+ int fd; - -- fd = open ("/dev/urandom", O_RDONLY); -+ fd = open ("/dev/urandom", O_RDONLY); - if (fd >= 0) - { -- read (fd, &ret, sizeof (HOST_WIDE_INT)); -+ ssize_t r = read (fd, &ret, sizeof (HOST_WIDE_INT)); - close (fd); -- if (ret) -+ if (ret && r == sizeof (HOST_WIDE_INT)) - return ret; - } - -@@ -11002,16 +10996,16 @@ - return (c == ' ' || c == '\t'); - } - --/* Insert backslash before spaces in ORIG (usually a file path), to -+/* Insert backslash before spaces in ORIG (usually a file path), to - avoid being broken by spec parser. - - This function is needed as do_spec_1 treats white space (' ' and '\t') - as the end of an argument. But in case of -plugin /usr/gcc install/xxx.so, - the file name should be treated as a single argument rather than being -- broken into multiple. Solution is to insert '\\' before the space in a -+ broken into multiple. Solution is to insert '\\' before the space in a - file name. -- -- This function converts and only converts all occurrence of ' ' -+ -+ This function converts and only converts all occurrence of ' ' - to '\\' + ' ' and '\t' to '\\' + '\t'. For example: - "a b" -> "a\\ b" - "a b" -> "a\\ \\ b" -Index: support/cpp/libcpp/expr.cc -=================================================================== ---- support/cpp/libcpp/expr.cc (revision 14311) -+++ support/cpp/libcpp/expr.cc (revision 14312) -@@ -799,26 +799,25 @@ - if ((result & CPP_N_WIDTH) == CPP_N_LARGE - && CPP_OPTION (pfile, cpp_warn_long_long)) - { -- const char *message = CPP_OPTION (pfile, cplusplus) -- ? N_("use of C++11 long long integer constant") -- : N_("use of C99 long long integer constant"); -+ const char *message = CPP_OPTION (pfile, cplusplus) -+ ? N_("use of C++11 long long integer constant") -+ : N_("use of C99 long long integer constant"); - -- if (CPP_OPTION (pfile, c99)) -- cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, -- 0, message); -+ if (CPP_OPTION (pfile, c99)) -+ cpp_warning_with_line (pfile, CPP_W_LONG_LONG, -+ virtual_location, 0, "%s", message); - else - cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, -- virtual_location, 0, message); -+ virtual_location, 0, "%s", message); - } - -- if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T -- && !CPP_OPTION (pfile, size_t_literals)) -+ if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T && !CPP_OPTION (pfile, size_t_literals)) - { -- const char *message = (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED -- ? N_("use of C++23 %<size_t%> integer constant") -- : N_("use of C++23 %<make_signed_t<size_t>%> integer constant"); -- cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, -- virtual_location, 0, message); -+ const char *message = (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED -+ ? N_("use of C++23 %<size_t%> integer constant") -+ : N_("use of C++23 %<make_signed_t<size_t>%> integer constant"); -+ cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS, -+ virtual_location, 0, "%s", message); - } - - result |= CPP_N_INTEGER; -@@ -866,8 +865,7 @@ - because the preprocessor doesn't need it and we don't want to - drag in GCC's floating point emulator. */ - cpp_num --cpp_interpret_integer (cpp_reader *pfile, const cpp_token *token, -- unsigned int type) -+cpp_interpret_integer (cpp_reader *pfile, const cpp_token *token, unsigned int type) - { - const uchar *p, *end; - cpp_num result; -@@ -1226,7 +1224,7 @@ - result.unsignedp = !!unsignedp; - return result; - } -- -+ - /* Operator precedence and flags table. - - After an operator is returned from the lexer, if it has priority less -@@ -1577,7 +1575,7 @@ - case CPP_OPEN_PAREN: - if (op != CPP_CLOSE_PAREN) - { -- cpp_error_with_line (pfile, CPP_DL_ERROR, -+ cpp_error_with_line (pfile, CPP_DL_ERROR, - top->token->src_loc, - 0, "missing ')' in expression"); - return 0; -Index: support/cpp/libcpp/macro.cc -=================================================================== ---- support/cpp/libcpp/macro.cc (revision 14311) -+++ support/cpp/libcpp/macro.cc (revision 14312) -@@ -183,7 +183,7 @@ - if (m_state == 2 && token->type == CPP_PASTE) - { - cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, -- vaopt_paste_error); -+ "%s", vaopt_paste_error); - return ERROR; - } - /* Advance states before further considering this token, in -@@ -212,7 +212,7 @@ - if (was_paste) - { - cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc, -- vaopt_paste_error); -+ "%s", vaopt_paste_error); - return ERROR; - } - -@@ -512,9 +512,9 @@ - struct _cpp_file *file = cpp_get_file (pbuffer); - if (file) - { -- /* Generate __TIMESTAMP__ string, that represents -- the date and time of the last modification -- of the current source file. The string constant -+ /* Generate __TIMESTAMP__ string, that represents -+ the date and time of the last modification -+ of the current source file. The string constant - looks like "Sun Sep 16 01:03:52 1973". */ - struct tm *tb = NULL; - struct stat *st = _cpp_get_file_stat (file); -@@ -625,7 +625,7 @@ - { - cpp_errno (pfile, CPP_DL_WARNING, - "could not determine date and time"); -- -+ - pfile->date = UC"\"??? ?? ????\""; - pfile->time = UC"\"??:??:??\""; - } -@@ -686,7 +686,7 @@ - sprintf ((char *) result, "%u", number); - } - -- return result; -+ return result; - } - - /* Get an idempotent date. Either the cached value, the value from -@@ -1386,7 +1386,7 @@ - pfile->state.parsing_args = 2; - return collect_args (pfile, node, pragma_buff, num_args); - } -- -+ - /* Back up. A CPP_EOF is either an EOF from an argument we're - expanding, or a fake one from lex_direct. We want to backup the - former, but not the latter. We may have skipped padding, in -@@ -1693,7 +1693,7 @@ - case MACRO_ARG_TOKEN_NORMAL: - tokens_ptr = arg->first; - break; -- case MACRO_ARG_TOKEN_STRINGIFIED: -+ case MACRO_ARG_TOKEN_STRINGIFIED: - tokens_ptr = (const cpp_token **) &arg->stringified; - break; - case MACRO_ARG_TOKEN_EXPANDED: -@@ -1811,12 +1811,12 @@ - want each tokens resulting from function-like macro arguments - expansion to have a different location or not. - -- E.g, consider this function-like macro: -+ E.g, consider this function-like macro: - - #define M(x) x - 3 - - Then consider us "calling" it (and thus expanding it) like: -- -+ - M(1+4) - - It will be expanded into: -@@ -1954,7 +1954,7 @@ - location that records many things like the locus of the expansion - point as well as the original locus inside the definition of the - macro. This location is called a virtual location. -- -+ - So the buffer BUFF holds a set of cpp_token*, and the buffer - VIRT_LOCS holds the virtual locations of the tokens held by BUFF. - -@@ -1962,7 +1962,7 @@ - context, when the latter is pushed. The memory allocated to - store the tokens and their locations is going to be freed once - the context of macro expansion is popped. -- -+ - As far as tokens are concerned, the memory overhead of - -ftrack-macro-expansion is proportional to the number of - macros that get expanded multiplied by sizeof (location_t). -@@ -2602,7 +2602,7 @@ - { - const cpp_token **result; - location_t *virt_loc_dest = NULL; -- unsigned token_index = -+ unsigned token_index = - (BUFF_FRONT (buffer) - buffer->base) / sizeof (cpp_token *); - - /* Abort if we pass the end the buffer. */ -@@ -2749,7 +2749,7 @@ - if (pfile == NULL) - return false; - -- return (pfile->about_to_expand_macro_p -+ return (pfile->about_to_expand_macro_p - || macro_of_context (pfile->context)); - } - -@@ -2853,7 +2853,7 @@ - *location = (*token)->src_loc; - FIRST (c).token++; - } -- else if ((c)->tokens_kind == TOKENS_KIND_INDIRECT) -+ else if ((c)->tokens_kind == TOKENS_KIND_INDIRECT) - { - *token = *FIRST (c).ptoken; - *location = (*token)->src_loc; -@@ -3114,7 +3114,7 @@ - _cpp_extend_buff (pfile, &pfile->u_buff, len + 1 + dotme * 2); - unsigned char *buf = BUFF_FRONT (pfile->u_buff); - size_t pos = 0; -- -+ - if (dotme) - { - buf[pos++] = '.'; -@@ -3130,7 +3130,7 @@ - - tmp->type = CPP_HEADER_NAME; - XDELETEVEC (fname); -- -+ - result = tmp; - } - } -@@ -3384,7 +3384,7 @@ - = XRESIZEVEC (unsigned char, pfile->macro_buffer, len); - pfile->macro_buffer_len = len; - } -- -+ - macro_arg_saved_data *saved = (macro_arg_saved_data *)pfile->macro_buffer; - saved[n].canonical_node = node; - saved[n].value = node->value; -@@ -3701,7 +3701,7 @@ - function-like macros, but not at the end. */ - if (following_paste_op) - { -- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); -+ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); - goto out; - } - if (!vaopt_tracker.completed ()) -@@ -3716,7 +3716,7 @@ - function-like macros, but not at the beginning. */ - if (macro->count == 1) - { -- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); -+ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); - goto out; - } - -@@ -3842,7 +3842,7 @@ - = (cpp_builtin_macro_p (node) && !(node->flags & NODE_WARN)) - ? CPP_W_BUILTIN_MACRO_REDEFINED : CPP_W_NONE; - -- bool warned = -+ bool warned = - cpp_pedwarning_with_line (pfile, reason, - pfile->directive_line, 0, - "\"%s\" redefined", NODE_NAME (node)); -Index: support/makebin/makebin.c -=================================================================== ---- support/makebin/makebin.c (revision 14311) -+++ support/makebin/makebin.c (revision 14312) -@@ -130,7 +130,7 @@ - struct gb_opt_s - { - char cart_name[CART_NAME_LEN]; /* cartridge name buffer */ -- char licensee_str[2]; /* new licensee string */ -+ char licensee_str[3]; /* new licensee string */ - BYTE mbc_type; /* MBC type (default: no MBC) */ - short nb_rom_banks; /* Number of rom banks (default: 2) */ - BYTE nb_ram_banks; /* Number of ram banks (default: 0) */ -@@ -699,7 +699,7 @@ - int sms = 0; - - struct gb_opt_s gb_opt = {.cart_name="", -- .licensee_str={'0', '0'}, -+ .licensee_str="00", - .mbc_type=0, - .nb_rom_banks=2, - .nb_ram_banks=0, -@@ -721,10 +721,13 @@ - setmode (fileno (stdout), O_BINARY); - #endif - -- while (*++argv && '-' == argv[0][0] && '\0' != argv[0][1]) -+ while (*++argv && '-' == argv[0][0]) - { - switch (argv[0][1]) - { -+ case '\0': -+ break; -+ - case 's': - if (!*++argv) - { -@@ -762,6 +765,7 @@ - * -ya Number of ram banks (default: 0) - * -yt MBC type (default: no MBC) - * -yn Name of program (default: name of output file) -+ * -yk,-yl,-yc,-yC,-yN,-ys,-yS,-yj,-yp see usage() - */ - switch (argv[0][2]) - { -@@ -815,7 +819,6 @@ - usage (); - return 1; - } -- // we don't need \0 - strncpy (gb_opt.licensee_str, *argv, 2); - break; -