1*4882a593SmuzhiyunFrom 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Bernd Kuhls <bernd.kuhls@t-online.de> 3*4882a593SmuzhiyunDate: Wed, 1 Mar 2017 10:03:40 +0100 4*4882a593SmuzhiyunSubject: [PATCH] Various fixes to compile libsidplay2 with newer gcc compilers 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunDownloaded from 7*4882a593Smuzhiyunhttp://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> 10*4882a593Smuzhiyun[Thomas: adjusted to avoid the need to autoreconf, which doesn't work 11*4882a593Smuzhiyunproperly on this package.] 12*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 13*4882a593Smuzhiyun--- 14*4882a593Smuzhiyun builders/hardsid-builder/src/hardsid-builder.cpp | 1 + 15*4882a593Smuzhiyun builders/resid-builder/src/resid-builder.cpp | 1 + 16*4882a593Smuzhiyun builders/resid-builder/src/resid.cpp | 1 + 17*4882a593Smuzhiyun configure | 2 +- 18*4882a593Smuzhiyun libsidplay/configure | 5 +++-- 19*4882a593Smuzhiyun libsidplay/include/sidplay/SmartPtr.h | 28 ++++++++++++------------ 20*4882a593Smuzhiyun libsidplay/include/sidplay/sidendian.h | 18 +++++++++------ 21*4882a593Smuzhiyun libsidutils/include/sidplay/utils/SidUsage.h | 2 +- 22*4882a593Smuzhiyun 8 files changed, 33 insertions(+), 25 deletions(-) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyundiff --git a/builders/hardsid-builder/src/hardsid-builder.cpp b/builders/hardsid-builder/src/hardsid-builder.cpp 25*4882a593Smuzhiyunindex f54d0a9..9375e40 100644 26*4882a593Smuzhiyun--- a/builders/hardsid-builder/src/hardsid-builder.cpp 27*4882a593Smuzhiyun+++ b/builders/hardsid-builder/src/hardsid-builder.cpp 28*4882a593Smuzhiyun@@ -47,6 +47,7 @@ 29*4882a593Smuzhiyun ***************************************************************************/ 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #include <stdio.h> 32*4882a593Smuzhiyun+#include <cstring> 33*4882a593Smuzhiyun #include "config.h" 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #ifdef HAVE_EXCEPTIONS 36*4882a593Smuzhiyundiff --git a/builders/resid-builder/src/resid-builder.cpp b/builders/resid-builder/src/resid-builder.cpp 37*4882a593Smuzhiyunindex e6e4eaa..4c7650f 100644 38*4882a593Smuzhiyun--- a/builders/resid-builder/src/resid-builder.cpp 39*4882a593Smuzhiyun+++ b/builders/resid-builder/src/resid-builder.cpp 40*4882a593Smuzhiyun@@ -37,6 +37,7 @@ 41*4882a593Smuzhiyun ***************************************************************************/ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #include <stdio.h> 44*4882a593Smuzhiyun+#include <cstring> 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #include "config.h" 47*4882a593Smuzhiyun #ifdef HAVE_EXCEPTIONS 48*4882a593Smuzhiyundiff --git a/builders/resid-builder/src/resid.cpp b/builders/resid-builder/src/resid.cpp 49*4882a593Smuzhiyunindex 8c27850..d3123c5 100644 50*4882a593Smuzhiyun--- a/builders/resid-builder/src/resid.cpp 51*4882a593Smuzhiyun+++ b/builders/resid-builder/src/resid.cpp 52*4882a593Smuzhiyun@@ -16,6 +16,7 @@ 53*4882a593Smuzhiyun * * 54*4882a593Smuzhiyun ***************************************************************************/ 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun+#include <cstring> 57*4882a593Smuzhiyun #include "config.h" 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #ifdef HAVE_EXCEPTIONS 60*4882a593Smuzhiyundiff --git a/configure b/configure 61*4882a593Smuzhiyunindex 1200eaf..77948b4 100755 62*4882a593Smuzhiyun--- a/configure 63*4882a593Smuzhiyun+++ b/configure 64*4882a593Smuzhiyun@@ -1227,7 +1227,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun #Variables 67*4882a593Smuzhiyun pwd=`pwd` 68*4882a593Smuzhiyun-builders='${libdir}'/sidplay/builders 69*4882a593Smuzhiyun+builders='${libdir}'/ 70*4882a593Smuzhiyun ac_configure_args="$ac_configure_args --disable-library-checks" 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun ac_aux_dir= 73*4882a593Smuzhiyundiff --git a/libsidplay/configure b/libsidplay/configure 74*4882a593Smuzhiyunindex 05a8ea6..3d93956 100755 75*4882a593Smuzhiyun--- a/libsidplay/configure 76*4882a593Smuzhiyun+++ b/libsidplay/configure 77*4882a593Smuzhiyun@@ -23466,8 +23466,9 @@ _ACEOF 78*4882a593Smuzhiyun cat confdefs.h >>conftest.$ac_ext 79*4882a593Smuzhiyun cat >>conftest.$ac_ext <<_ACEOF 80*4882a593Smuzhiyun /* end confdefs.h. */ 81*4882a593Smuzhiyun-#include <fstream.h> 82*4882a593Smuzhiyun- #include <iomanip.h> 83*4882a593Smuzhiyun+#include <fstream> 84*4882a593Smuzhiyun+ #include <iomanip> 85*4882a593Smuzhiyun+ using namespace std; 86*4882a593Smuzhiyun int 87*4882a593Smuzhiyun main () 88*4882a593Smuzhiyun { 89*4882a593Smuzhiyundiff --git a/libsidplay/include/sidplay/SmartPtr.h b/libsidplay/include/sidplay/SmartPtr.h 90*4882a593Smuzhiyunindex c0cbb1a..15efd10 100644 91*4882a593Smuzhiyun--- a/libsidplay/include/sidplay/SmartPtr.h 92*4882a593Smuzhiyun+++ b/libsidplay/include/sidplay/SmartPtr.h 93*4882a593Smuzhiyun@@ -17,16 +17,16 @@ class SmartPtrBase_sidtt 94*4882a593Smuzhiyun doFree = bufOwner; 95*4882a593Smuzhiyun if ( bufferLen >= 1 ) 96*4882a593Smuzhiyun { 97*4882a593Smuzhiyun- pBufCurrent = ( bufBegin = buffer ); 98*4882a593Smuzhiyun- bufEnd = bufBegin + bufferLen; 99*4882a593Smuzhiyun- bufLen = bufferLen; 100*4882a593Smuzhiyun- status = true; 101*4882a593Smuzhiyun+ this->pBufCurrent = ( this->bufBegin = buffer ); 102*4882a593Smuzhiyun+ this->bufEnd = this->bufBegin + bufferLen; 103*4882a593Smuzhiyun+ this->bufLen = bufferLen; 104*4882a593Smuzhiyun+ this->status = true; 105*4882a593Smuzhiyun } 106*4882a593Smuzhiyun else 107*4882a593Smuzhiyun { 108*4882a593Smuzhiyun- pBufCurrent = ( bufBegin = ( bufEnd = 0 )); 109*4882a593Smuzhiyun- bufLen = 0; 110*4882a593Smuzhiyun- status = false; 111*4882a593Smuzhiyun+ this->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 )); 112*4882a593Smuzhiyun+ this->bufLen = 0; 113*4882a593Smuzhiyun+ this->status = false; 114*4882a593Smuzhiyun } 115*4882a593Smuzhiyun } 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun@@ -211,16 +211,16 @@ class SmartPtr_sidtt : public SmartPtrBase_sidtt<T> 118*4882a593Smuzhiyun { 119*4882a593Smuzhiyun if ( bufferLen >= 1 ) 120*4882a593Smuzhiyun { 121*4882a593Smuzhiyun- pBufCurrent = ( bufBegin = buffer ); 122*4882a593Smuzhiyun- bufEnd = bufBegin + bufferLen; 123*4882a593Smuzhiyun- bufLen = bufferLen; 124*4882a593Smuzhiyun- status = true; 125*4882a593Smuzhiyun+ this->pBufCurrent = ( this->bufBegin = buffer ); 126*4882a593Smuzhiyun+ this->bufEnd = this->bufBegin + bufferLen; 127*4882a593Smuzhiyun+ this->bufLen = bufferLen; 128*4882a593Smuzhiyun+ this->status = true; 129*4882a593Smuzhiyun } 130*4882a593Smuzhiyun else 131*4882a593Smuzhiyun { 132*4882a593Smuzhiyun- pBufCurrent = bufBegin = bufEnd = 0; 133*4882a593Smuzhiyun- bufLen = 0; 134*4882a593Smuzhiyun- status = false; 135*4882a593Smuzhiyun+ this->pBufCurrent = this->bufBegin = this->bufEnd = 0; 136*4882a593Smuzhiyun+ this->bufLen = 0; 137*4882a593Smuzhiyun+ this->status = false; 138*4882a593Smuzhiyun } 139*4882a593Smuzhiyun } 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyundiff --git a/libsidplay/include/sidplay/sidendian.h b/libsidplay/include/sidplay/sidendian.h 142*4882a593Smuzhiyunindex 9fa8582..6115282 100644 143*4882a593Smuzhiyun--- a/libsidplay/include/sidplay/sidendian.h 144*4882a593Smuzhiyun+++ b/libsidplay/include/sidplay/sidendian.h 145*4882a593Smuzhiyun@@ -16,6 +16,10 @@ 146*4882a593Smuzhiyun ***************************************************************************/ 147*4882a593Smuzhiyun /*************************************************************************** 148*4882a593Smuzhiyun * $Log: sidendian.h,v $ 149*4882a593Smuzhiyun+ * Revision 1.6 2005/11/20 11:02:06 s_a_white 150*4882a593Smuzhiyun+ * Work around for bug in gcc 4 (optimiser breaks if variable never has a 151*4882a593Smuzhiyun+ * direct assignment). 152*4882a593Smuzhiyun+ * 153*4882a593Smuzhiyun * Revision 1.5 2001/07/03 22:44:13 s_a_white 154*4882a593Smuzhiyun * Added endian_16 to convert a 16 bit value to an array of 8s. 155*4882a593Smuzhiyun * 156*4882a593Smuzhiyun@@ -141,7 +145,7 @@ inline void endian_16swap8 (uint_least16_t &word) 157*4882a593Smuzhiyun // Convert high-byte and low-byte to 16-bit word. 158*4882a593Smuzhiyun inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo) 159*4882a593Smuzhiyun { 160*4882a593Smuzhiyun- uint_least16_t word; 161*4882a593Smuzhiyun+ uint_least16_t word = 0; 162*4882a593Smuzhiyun endian_16lo8 (word, lo); 163*4882a593Smuzhiyun endian_16hi8 (word, hi); 164*4882a593Smuzhiyun return word; 165*4882a593Smuzhiyun@@ -165,7 +169,7 @@ inline void endian_16 (uint8_t ptr[2], uint_least16_t word) 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun inline void endian_16 (char ptr[2], uint_least16_t word) 168*4882a593Smuzhiyun { 169*4882a593Smuzhiyun- endian_16 ((uint8_t *) ptr, word); 170*4882a593Smuzhiyun+ endian_16 ((uint8_t *) ptr, word); 171*4882a593Smuzhiyun } 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun // Convert high-byte and low-byte to 16-bit little endian word. 174*4882a593Smuzhiyun@@ -334,7 +338,7 @@ inline void endian_32swap16 (uint_least32_t &dword) 175*4882a593Smuzhiyun // Swap word endian. 176*4882a593Smuzhiyun inline void endian_32swap8 (uint_least32_t &dword) 177*4882a593Smuzhiyun { 178*4882a593Smuzhiyun- uint_least16_t lo, hi; 179*4882a593Smuzhiyun+ uint_least16_t lo = 0, hi = 0; 180*4882a593Smuzhiyun lo = endian_32lo16 (dword); 181*4882a593Smuzhiyun hi = endian_32hi16 (dword); 182*4882a593Smuzhiyun endian_16swap8 (lo); 183*4882a593Smuzhiyun@@ -346,8 +350,8 @@ inline void endian_32swap8 (uint_least32_t &dword) 184*4882a593Smuzhiyun // Convert high-byte and low-byte to 32-bit word. 185*4882a593Smuzhiyun inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo) 186*4882a593Smuzhiyun { 187*4882a593Smuzhiyun- uint_least32_t dword; 188*4882a593Smuzhiyun- uint_least16_t word; 189*4882a593Smuzhiyun+ uint_least32_t dword = 0; 190*4882a593Smuzhiyun+ uint_least16_t word = 0; 191*4882a593Smuzhiyun endian_32lo8 (dword, lo); 192*4882a593Smuzhiyun endian_32hi8 (dword, hi); 193*4882a593Smuzhiyun endian_16lo8 (word, hilo); 194*4882a593Smuzhiyun@@ -374,7 +378,7 @@ inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword) 195*4882a593Smuzhiyun defined(SID_WORDS_LITTLEENDIAN) 196*4882a593Smuzhiyun *((uint_least32_t *) ptr) = dword; 197*4882a593Smuzhiyun #else 198*4882a593Smuzhiyun- uint_least16_t word; 199*4882a593Smuzhiyun+ uint_least16_t word = 0; 200*4882a593Smuzhiyun ptr[0] = endian_32lo8 (dword); 201*4882a593Smuzhiyun ptr[1] = endian_32hi8 (dword); 202*4882a593Smuzhiyun word = endian_32hi16 (dword); 203*4882a593Smuzhiyun@@ -401,7 +405,7 @@ inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword) 204*4882a593Smuzhiyun defined(SID_WORDS_BIGENDIAN) 205*4882a593Smuzhiyun *((uint_least32_t *) ptr) = dword; 206*4882a593Smuzhiyun #else 207*4882a593Smuzhiyun- uint_least16_t word; 208*4882a593Smuzhiyun+ uint_least16_t word = 0; 209*4882a593Smuzhiyun word = endian_32hi16 (dword); 210*4882a593Smuzhiyun ptr[1] = endian_16lo8 (word); 211*4882a593Smuzhiyun ptr[0] = endian_16hi8 (word); 212*4882a593Smuzhiyundiff --git a/libsidutils/include/sidplay/utils/SidUsage.h b/libsidutils/include/sidplay/utils/SidUsage.h 213*4882a593Smuzhiyunindex 2afb0f3..0496eea 100755 214*4882a593Smuzhiyun--- a/libsidutils/include/sidplay/utils/SidUsage.h 215*4882a593Smuzhiyun+++ b/libsidutils/include/sidplay/utils/SidUsage.h 216*4882a593Smuzhiyun@@ -33,7 +33,7 @@ struct sid2_usage_t: public sid_usage_t 217*4882a593Smuzhiyun uint_least16_t length; // usage scan length 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun // Copy common parts of basic usage to extended usage. 220*4882a593Smuzhiyun- sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage) 221*4882a593Smuzhiyun+ sid2_usage_t &operator= (const sid_usage_t &usage) 222*4882a593Smuzhiyun { 223*4882a593Smuzhiyun *((sid_usage_t *) this) = usage; 224*4882a593Smuzhiyun return *this; 225*4882a593Smuzhiyun-- 226*4882a593Smuzhiyun2.7.4 227*4882a593Smuzhiyun 228