Compile with -Wreturn-type
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 26 Jan 2017 22:47:04 +0000 (17:47 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 8 Feb 2017 21:36:32 +0000 (16:36 -0500)
I can't believe we've been going without this for so long.  I finally ran
into a problem that was because of a missing "return 0."  At least the
kernel was in good shape.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
16 files changed:
Makefile
tests/futex_timeout.c
tests/vmm/vmrunkernel.c
user/benchutil/alarm.c
user/benchutil/pvcalarm.c
user/parlib/event.c
user/parlib/include/parlib/x86/trap.h
user/parlib/vcore.c
user/pthread/pthread.c
user/utest/cv.c
user/utest/example.c
user/utest/include/utest.h
user/utest/pvcalarm.c
user/utest/signal.c
user/vmm/apic.c
user/vmm/ioapic.c

index 6ac95d4..f571941 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -363,7 +363,7 @@ CFLAGS_KERNEL += -O2 -pipe -MD
 CFLAGS_KERNEL += -std=gnu99 -fgnu89-inline
 CFLAGS_KERNEL += -fno-strict-aliasing -fno-omit-frame-pointer
 CFLAGS_KERNEL += -fno-stack-protector
-CFLAGS_KERNEL += -Wall -Wno-format -Wno-unused -Werror
+CFLAGS_KERNEL += -Wall -Wno-format -Wno-unused -Werror -Wreturn-type
 CFLAGS_KERNEL += -DROS_KERNEL 
 CFLAGS_KERNEL += -include include/generated/autoconf.h -include include/common.h
 CFLAGS_KERNEL += -fplan9-extensions
@@ -396,7 +396,7 @@ export NOSTDINC_FLAGS XCC_TARGET_ROOT XCC_TARGET_LIB XCC_TARGET_INCLUDE
 export KBUILD_BUILTIN KBUILD_CHECKSRC
 
 CFLAGS_USER += -O2 -std=gnu99 -fno-stack-protector -fgnu89-inline \
-               -Wsystem-headers -Werror
+               -Wsystem-headers -Werror -Wreturn-type
 CXXFLAGS_USER += -O2
 CFLAGS_USER_LIBS += -fPIC -static -fno-omit-frame-pointer -g
 
index 4f64fec..370bb0f 100644 (file)
@@ -18,6 +18,7 @@ void *handler(void *arg) {
        printf("Begin thread: %d\n", id);
     futex(&var, FUTEX_WAIT, 0, &timeout, NULL, 0);
        printf("End thread: %d\n", id);
+       return 0;
 }
 
 int main(int argc, char **argv)
index c944099..1abad85 100644 (file)
@@ -576,7 +576,7 @@ void *init_madt_local_x2apic(void *start)
 /* We map the APIC-access page, the per core Virtual APIC page and the
  * per core Posted Interrupt Descriptors.
  * Note: check if the PID/PIR needs to be a 4k page. */
-int alloc_intr_pages(void)
+void alloc_intr_pages(void)
 {
        void *a_page;
        void *pages, *pir;
index e7ecc14..48fb217 100644 (file)
@@ -367,6 +367,7 @@ static bool __insert_awaiter(struct timer_chain *tchain,
                }
        }
        printf("Could not find a spot for awaiter %p\n", waiter);
+       assert(0);
 }
 
 /* Sets the alarm.  If it is a kthread-style alarm (func == 0), sleep on it
index 62c403b..b43c1b9 100644 (file)
@@ -61,7 +61,7 @@ static void handle_alarm_prof(struct event_msg *ev_msg, unsigned int ev_type,
                               void *data);
 
 /* Initialize the pvcalarm service. Only call this function once */
-static int init_global_pvcalarm()
+static void init_global_pvcalarm(void)
 {
        global_pvcalarm.interval = 0;
        global_pvcalarm.callback = NULL;
@@ -167,6 +167,7 @@ int disable_pvcalarms()
                stop_pvcalarm(&global_pvcalarm.data[i]);
 
        atomic_set(&global_pvcalarm.state, S_DISABLED);
+       return 0;
 }
 
 /* Initialize a specific pvcalarm.  This happens once per vcore as it comes
index 64dfaa0..46b9e26 100644 (file)
@@ -289,6 +289,7 @@ int deregister_ev_handler(unsigned int ev_type, handle_event_t handler,
 {
        /* TODO: User-level RCU */
        printf("Failed to dereg handler, not supported yet!\n");
+       return -1;
 }
 
 static void run_ev_handlers(unsigned int ev_type, struct event_msg *ev_msg)
index 541fd04..26a8ac5 100644 (file)
@@ -7,6 +7,7 @@
 #pragma once
 
 #include <parlib/common.h>
+#include <parlib/assert.h>
 #include <ros/trapframe.h>
 
 __BEGIN_DECLS
@@ -25,6 +26,7 @@ static bool has_refl_fault(struct user_context *ctx)
        case ROS_VM_CTX:
                return ctx->tf.vm_tf.tf_flags & VMCTX_FL_HAS_FAULT ? TRUE : FALSE;
        }
+       assert(0);
 }
 
 static void clear_refl_fault(struct user_context *ctx)
index d39267e..0380de6 100644 (file)
@@ -145,10 +145,9 @@ static void prep_vcore_0(void)
        __prep_vcore(0, mmap_block);
 }
 
-static int prep_remaining_vcores(void)
+static void prep_remaining_vcores(void)
 {
        uintptr_t mmap_block;
-       int ret;
 
        mmap_block = (uintptr_t)mmap(0, PGSIZE * 4 * (max_vcores() - 1),
                                     PROT_WRITE | PROT_READ,
@@ -207,8 +206,7 @@ void vcore_change_to_m(void)
 {
        int ret;
 
-       ret = prep_remaining_vcores();
-       assert(!ret);
+       prep_remaining_vcores();
        __procdata.res_req[RES_CORES].amt_wanted = 1;
        __procdata.res_req[RES_CORES].amt_wanted_min = 1;       /* whatever */
        assert(!in_multi_mode());
index 9a6691e..59faf38 100644 (file)
@@ -998,12 +998,14 @@ int pthread_condattr_getclock(const pthread_condattr_t *attr,
                               clockid_t *clock_id)
 {
        *clock_id = attr->clock;
+       return 0;
 }
 
 int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id)
 {
        printf("Warning: we don't do pthread condvar clock stuff\n");
        attr->clock = clock_id;
+       return 0;
 }
 
 pthread_t pthread_self()
index a95a525..bc29041 100644 (file)
@@ -28,6 +28,7 @@ bool test_signal_no_wait(void)
        uth_cond_var_signal(cv);
        pthread_yield();
        uth_cond_var_free(cv);
+       return TRUE;
 }
 
 void *__cv_signaller(void *arg)
@@ -109,6 +110,7 @@ bool test_signal(void)
 
        uth_cond_var_free(args->cv);
        uth_mutex_free(args->mtx);
+       return TRUE;
 }
 
 bool test_broadcast(void)
@@ -143,6 +145,7 @@ bool test_broadcast(void)
 
        uth_cond_var_free(args->cv);
        uth_mutex_free(args->mtx);
+       return TRUE;
 }
 /* <--- End definition of test cases ---> */
 
index 673b74c..e2094d5 100644 (file)
@@ -6,14 +6,17 @@ TEST_SUITE("EXAMPLE");
 
 bool test_one(void) {
        UT_ASSERT_M("One plus one should equal 2", 1+1 == 2);
+       return TRUE;
 }
 
 bool test_two(void) {
        UT_ASSERT_M("One minus one should equal 0", 1-1 == 0);
+       return TRUE;
 }
 
 bool test_three(void) {
        UT_ASSERT_M("1 should equal 1", 1 == 1);
+       return TRUE;
 }
 
 /* <--- End definition of test cases ---> */
index ceddcb6..1a4e03a 100644 (file)
@@ -89,7 +89,8 @@ static void apply_whitelist(char *whitelist[], int whitelist_len,
        }
 }
 
-static int run_utests(char *suite_name, struct utest tests[], int num_tests) {
+static void run_utests(char *suite_name, struct utest tests[], int num_tests)
+{
        extern char utest_msg[];
        printf("<-- BEGIN_USERSPACE_%s_TESTS -->\n", suite_name);
 
index cb9f554..b310e02 100644 (file)
@@ -58,6 +58,7 @@ bool test_sigperf(void)
                        old_count = new_count;
                        pthread_yield();
                }
+               return 0;
        }
        void signal_handler(int signo)
        {
index a893aa5..9656d8e 100644 (file)
@@ -16,6 +16,7 @@ bool test_sigmask(void) {
                pthread_sigmask(SIG_BLOCK, &s, NULL);
                for (int i=0; i<100000; i++)
                        pthread_yield();
+               return 0;
        }
        void signal_handler(int signo)
        {
index 2153edb..49eeb06 100644 (file)
@@ -192,7 +192,7 @@ int __apic_access(struct guest_thread *vm_thread, uint64_t gpa, int destreg,
                *regp = apic_read(offset);
                DPRINTF("Read: Set %s from %s @%p to %p\n", regname(destreg), apicregs[offset].name, gpa, *regp);
        }
-
+       return 0;
 }
 
 void vapic_status_dump(FILE *f, void *vapic)
index bd0ed0e..20e1a89 100644 (file)
@@ -162,5 +162,5 @@ int do_ioapic(struct guest_thread *vm_thread, uint64_t gpa, int destreg,
        } else {
                *regp = ioapic_read(vm_thread, ix, offset);
        }
-
+       return 0;
 }