From f1ea3f8f9c001176da1ac4d60a7da1ff313e380b Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Fri, 10 May 2024 21:54:56 +0200 Subject: [PATCH] Adding Werror to compilation and solve warnings --- configure.ac | 2 +- src/audio/pspaudiolib.c | 7 ------- src/audio/pspaudiolib.h | 1 - src/debug/stacktrace.c | 15 ++++++++++----- src/libcglue/glue.c | 7 ++++--- src/libcglue/init.c | 8 ++++++-- src/libcglue/lock.c | 1 + src/libpthreadglue/tls-helper.c | 1 + 8 files changed, 23 insertions(+), 19 deletions(-) diff --git a/configure.ac b/configure.ac index c198e56e..321f2f4d 100644 --- a/configure.ac +++ b/configure.ac @@ -72,7 +72,7 @@ AC_SUBST(PSPSDK_INCLUDEDIR) AC_SUBST(PSPSDK_LIBDIR) # CFLAGS and CXXFLAGS used to build pspsdk libraries. -PSPSDK_CFLAGS="$CFLAGS -mno-gpopt -Wall -D_PSP_FW_VERSION=600" +PSPSDK_CFLAGS="$CFLAGS -mno-gpopt -Wall -Werror -D_PSP_FW_VERSION=600" PSPSDK_CXXFLAGS="$PSPSDK_CFLAGS -fno-exceptions -fno-rtti" if test "$with_pthread" = no ; then PSPSDK_CFLAGS="$PSPSDK_CFLAGS -DPSP_WITHOUT_PTHREAD" diff --git a/src/audio/pspaudiolib.c b/src/audio/pspaudiolib.c index 8af9da4d..6325c412 100644 --- a/src/audio/pspaudiolib.c +++ b/src/audio/pspaudiolib.c @@ -30,13 +30,6 @@ void pspAudioSetVolume(int channel, int left, int right) AudioStatus[channel].volumeleft = left; } -void pspAudioChannelThreadCallback(int channel, void *buf, unsigned int reqn) -{ - pspAudioCallback_t callback; - callback=AudioStatus[channel].callback; -} - - void pspAudioSetChannelCallback(int channel, pspAudioCallback_t callback, void *pdata) { volatile psp_audio_channelinfo *pci = &AudioStatus[channel]; diff --git a/src/audio/pspaudiolib.h b/src/audio/pspaudiolib.h index e3472213..18f9aa05 100644 --- a/src/audio/pspaudiolib.h +++ b/src/audio/pspaudiolib.h @@ -41,7 +41,6 @@ void pspAudioEndPre(); void pspAudioEnd(); void pspAudioSetVolume(int channel, int left, int right); -void pspAudioChannelThreadCallback(int channel, void *buf, unsigned int reqn); void pspAudioSetChannelCallback(int channel, pspAudioCallback_t callback, void *pdata); int pspAudioOutBlocking(unsigned int channel, unsigned int vol1, unsigned int vol2, void *buf); diff --git a/src/debug/stacktrace.c b/src/debug/stacktrace.c index 4b5106ff..653d2ae5 100644 --- a/src/debug/stacktrace.c +++ b/src/debug/stacktrace.c @@ -12,6 +12,7 @@ #include #include #include +#include #define CALL 0x0C000000 #define CALL_MASK 0xFC000000 @@ -21,9 +22,13 @@ extern u32 _ftext; extern u32 _etext; -/* Ideally should be something which is automatic */ -#define ELF_START (&_ftext) -#define ELF_END (&_etext) +static inline int validAddress(u32 *addr) +{ + u32 *elf_start = &_ftext; + u32 *elf_end = &_etext; + ptrdiff_t startDiff = addr - elf_start; + return (startDiff >= 2) && (addr < elf_end); +} /* This is a blatently wrong way of doing a stack trace, but I felt as long as you use some intelligence you could easily work out if some calls in the trace were invalid :P */ @@ -32,7 +37,7 @@ static int _pspDebugDoStackTrace(u32 *sp, u32 *sp_end, u32 *ra, PspDebugStackTra int count = 0; int recurse = 0; - if((ra >= (ELF_START + 2)) && (ra < ELF_END) && (IS_CALL(ra[-2]))) + if (validAddress(ra) && (IS_CALL(ra[-2]))) { trace[count].func_addr = CALL_ADDR(ra[-2]); trace[count].call_addr = (u32) (&ra[-2]); @@ -48,7 +53,7 @@ static int _pspDebugDoStackTrace(u32 *sp, u32 *sp_end, u32 *ra, PspDebugStackTra addr = (u32*) *sp; /* Check that the address could possibly be a valid ra address */ - if((addr >= (ELF_START + 2)) && (addr < ELF_END)) + if (validAddress(addr)) { if(IS_CALL(addr[-2])) { diff --git a/src/libcglue/glue.c b/src/libcglue/glue.c index 46de43fc..8554ce0f 100755 --- a/src/libcglue/glue.c +++ b/src/libcglue/glue.c @@ -152,7 +152,8 @@ int _open(const char *buf, int flags, int mode) { return __set_errno(scefd); } } - +#else +int _open(const char *buf, int flags, int mode); #endif #ifdef F__close @@ -339,8 +340,6 @@ int lstat(const char *filename, struct stat *buf) #ifdef F__fstat int _fstat(int fd, struct stat *buf) { - int ret; - SceOff oldpos; if (!__IS_FD_VALID(fd)) { errno = EBADF; return -1; @@ -1070,6 +1069,8 @@ int statvfs (const char *__path, struct statvfs *__buf) __buf->f_bfree = inf.freeClusters; __buf->f_bavail = inf.freeClusters; __buf->f_namemax = MAXNAMLEN; + + return 0; } #endif /* F_statvfs */ diff --git a/src/libcglue/init.c b/src/libcglue/init.c index 6e04c94d..542368b8 100644 --- a/src/libcglue/init.c +++ b/src/libcglue/init.c @@ -92,7 +92,8 @@ void __libcglue_deinit(); #endif #ifdef F__exit -void _exit(int status) +__attribute__((__noreturn__)) +void _exit (int __status) { __libcglue_deinit(); @@ -101,9 +102,12 @@ void _exit(int status) } else { sceKernelExitGame(); } + + while (1); // Avoid warning } #else -void _exit(int status); +__attribute__((__noreturn__)) +void _exit (int __status); #endif #ifdef F_abort diff --git a/src/libcglue/lock.c b/src/libcglue/lock.c index 99f015cc..73bd7322 100644 --- a/src/libcglue/lock.c +++ b/src/libcglue/lock.c @@ -15,6 +15,7 @@ */ #include +#include #include #include diff --git a/src/libpthreadglue/tls-helper.c b/src/libpthreadglue/tls-helper.c index c2ae94cf..da8e6d60 100644 --- a/src/libpthreadglue/tls-helper.c +++ b/src/libpthreadglue/tls-helper.c @@ -12,6 +12,7 @@ #ifndef PSP_WITHOUT_PTHREAD #include #include +#include #include #include