From 872e1ebda05cb1699d2ee52a384ff7bc45516e76 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Wed, 6 May 2015 11:45:23 -0700 Subject: [PATCH] GCC fixes for warnings GCC was more picky about prototypes for inlines being required. The generate_listener.py script used incorrect printf formats and was casting %f params to float, but printf casts all %f params to double per the spec. Signed-off-by: Mark Charlebois --- Tools/generate_listener.py | 8 ++++---- makefiles/toolchain_native.mk | 3 ++- src/modules/simulator/simulator.cpp | 15 ++++++++------- .../posix/drivers/tonealrmsim/tone_alarm.cpp | 3 ++- src/platforms/posix/px4_layer/work_lock.h | 2 ++ 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Tools/generate_listener.py b/Tools/generate_listener.py index 50fc17267c..e52d3cd26f 100755 --- a/Tools/generate_listener.py +++ b/Tools/generate_listener.py @@ -127,17 +127,17 @@ for index,m in enumerate(messages[1:]): print "\t\t\torb_copy(ID,sub,&container);" for item in message_elements[index+1]: if item[0] == "float": - print "\t\t\tprintf(\"%s: %%f\\n \",container.%s);" % (item[1], item[1]) + print "\t\t\tprintf(\"%s: %%f\\n \",(double)container.%s);" % (item[1], item[1]) elif item[0] == "float_array": print "\t\t\tprintf(\"%s:\");" % item[1] print "\t\t\tfor (int j=0;j<%d;j++) {" % item[2] - print "\t\t\t\tprintf(\"%%f \",container.%s[j]);" % item[1] + print "\t\t\t\tprintf(\"%%f \",(double)container.%s[j]);" % item[1] print "\t\t\t}" print "\t\t\tprintf(\"\\n\");" elif item[0] == "uint64": - print "\t\t\tprintf(\"%s: %%f\\n \",(float)container.%s);" % (item[1], item[1]) + print "\t\t\tprintf(\"%s: %%lu\\n \",container.%s);" % (item[1], item[1]) elif item[0] == "uint8": - print "\t\t\tprintf(\"%s: %%f\\n \",(float)container.%s);" % (item[1], item[1]) + print "\t\t\tprintf(\"%s: %%u\\n \",container.%s);" % (item[1], item[1]) elif item[0] == "bool": print "\t\t\tprintf(\"%s: %%s\\n \",container.%s ? \"True\" : \"False\");" % (item[1], item[1]) print "\t\t\t}" diff --git a/makefiles/toolchain_native.mk b/makefiles/toolchain_native.mk index dd80e9a6ea..2455cda4c4 100644 --- a/makefiles/toolchain_native.mk +++ b/makefiles/toolchain_native.mk @@ -157,7 +157,6 @@ ARCHWARNINGS = -Wall \ -Wmissing-declarations \ -Wpacked \ -Wno-unused-parameter \ - -Wno-gnu-array-member-paren-init \ -Wno-packed \ -Werror=format-security \ -Werror=array-bounds \ @@ -176,6 +175,8 @@ ARCHWARNINGS += -Wdouble-promotion \ -Werror=unused-but-set-variable \ -Werror=double-promotion ARCHOPTIMIZATION += -fno-strength-reduce +else +ARCHWARNINGS += -Wno-gnu-array-member-paren-init endif # -Werror=float-conversion - works, just needs to be phased in with some effort and needs GCC 4.9+ diff --git a/src/modules/simulator/simulator.cpp b/src/modules/simulator/simulator.cpp index e6cecbb08b..9f7b0c9597 100644 --- a/src/modules/simulator/simulator.cpp +++ b/src/modules/simulator/simulator.cpp @@ -363,6 +363,14 @@ static void usage() PX4_WARN("Publish sensors combined: simulator start -p"); } +__BEGIN_DECLS +extern int simulator_main(int argc, char *argv[]); +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +extern void led_toggle(int led); +__END_DECLS + extern "C" { int simulator_main(int argc, char *argv[]) @@ -418,13 +426,6 @@ int simulator_main(int argc, char *argv[]) } -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -extern void led_toggle(int led); -__END_DECLS - bool static _led_state[2] = { false , false }; __EXPORT void led_init() diff --git a/src/platforms/posix/drivers/tonealrmsim/tone_alarm.cpp b/src/platforms/posix/drivers/tonealrmsim/tone_alarm.cpp index def293ea4c..232da9cb2d 100644 --- a/src/platforms/posix/drivers/tonealrmsim/tone_alarm.cpp +++ b/src/platforms/posix/drivers/tonealrmsim/tone_alarm.cpp @@ -788,7 +788,8 @@ tone_alarm_main(int argc, char *argv[]) PX4_WARN("not enough memory memory"); return 1; } - fread(buffer, sz, 1, fd); + // FIXME - Make GCC happy + if (fread(buffer, sz, 1, fd)) { } /* terminate the string */ buffer[sz] = 0; ret = play_string(buffer, true); diff --git a/src/platforms/posix/px4_layer/work_lock.h b/src/platforms/posix/px4_layer/work_lock.h index 89e8b65eca..f77f228b36 100644 --- a/src/platforms/posix/px4_layer/work_lock.h +++ b/src/platforms/posix/px4_layer/work_lock.h @@ -37,12 +37,14 @@ #pragma once extern sem_t _work_lock[]; +inline void work_lock(int id); inline void work_lock(int id) { //printf("work_lock %d\n", id); sem_wait(&_work_lock[id]); } +inline void work_unlock(int id); inline void work_unlock(int id) { //printf("work_unlock %d\n", id);