Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 1 | From 2155c1b2cf00e744e280c493eb74bf457dfcc3b1 Mon Sep 17 00:00:00 2001 |
| 2 | From: Randy MacLeod <Randy.MacLeod@windriver.com> |
| 3 | Date: Sun, 21 Oct 2018 15:09:31 -0400 |
| 4 | Subject: [PATCH] Make local functions static to avoid assembler error |
| 5 | |
| 6 | Avoid mips32 x-compiler warnings such as: |
| 7 | |
| 8 | | ../../../valgrind-3.14.0/helgrind/tests/annotate_hbefore.c:360:6: warning: no previous prototype for 'do_signal' [-Wmissing-prototypes] |
| 9 | | void do_signal ( UWord* w ) |
| 10 | | ^~~~~~~~~ |
| 11 | |
| 12 | by making functions and global variables that are file scope be static |
| 13 | and more importantly also avoid an assembler error: |
| 14 | |
| 15 | /tmp/cce22iiw.s: Assembler messages: |
| 16 | /tmp/cce22iiw.s:446: Error: symbol `exit_0' is already defined |
| 17 | /tmp/cce22iiw.s:448: Error: symbol `exit' is already defined |
| 18 | /tmp/cce22iiw.s:915: Error: symbol `exit_0' is already defined |
| 19 | /tmp/cce22iiw.s:917: Error: symbol `exit' is already defined |
| 20 | |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 21 | Upstream-Status: Submitted https://bugs.kde.org/show_bug.cgi?id=400164 |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 22 | |
| 23 | Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com> |
| 24 | --- |
| 25 | helgrind/tests/annotate_hbefore.c | 34 +++++++++++++++---------------- |
| 26 | 1 file changed, 17 insertions(+), 17 deletions(-) |
| 27 | |
| 28 | diff --git a/helgrind/tests/annotate_hbefore.c b/helgrind/tests/annotate_hbefore.c |
| 29 | index e311714f7..f55514e45 100644 |
| 30 | --- a/helgrind/tests/annotate_hbefore.c |
| 31 | +++ b/helgrind/tests/annotate_hbefore.c |
| 32 | @@ -24,7 +24,7 @@ typedef unsigned long int UWord; |
| 33 | |
| 34 | // ppc64 |
| 35 | /* return 1 if success, 0 if failure */ |
| 36 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 37 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 38 | { |
| 39 | UWord old, success; |
| 40 | |
| 41 | @@ -57,7 +57,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 42 | |
| 43 | // ppc32 |
| 44 | /* return 1 if success, 0 if failure */ |
| 45 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 46 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 47 | { |
| 48 | UWord old, success; |
| 49 | |
| 50 | @@ -90,7 +90,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 51 | |
| 52 | // amd64 |
| 53 | /* return 1 if success, 0 if failure */ |
| 54 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 55 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 56 | { |
| 57 | UWord block[4] = { (UWord)addr, expected, nyu, 2 }; |
| 58 | __asm__ __volatile__( |
| 59 | @@ -113,7 +113,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 60 | |
| 61 | // x86 |
| 62 | /* return 1 if success, 0 if failure */ |
| 63 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 64 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 65 | { |
| 66 | UWord block[4] = { (UWord)addr, expected, nyu, 2 }; |
| 67 | __asm__ __volatile__( |
| 68 | @@ -138,7 +138,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 69 | |
| 70 | // arm |
| 71 | /* return 1 if success, 0 if failure */ |
| 72 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 73 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 74 | { |
| 75 | UWord old, success; |
| 76 | UWord block[2] = { (UWord)addr, nyu }; |
| 77 | @@ -171,7 +171,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 78 | |
| 79 | // arm64 |
| 80 | /* return 1 if success, 0 if failure */ |
| 81 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 82 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 83 | { |
| 84 | UWord old, success; |
| 85 | UWord block[2] = { (UWord)addr, nyu }; |
| 86 | @@ -204,7 +204,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 87 | |
| 88 | // s390x |
| 89 | /* return 1 if success, 0 if failure */ |
| 90 | -UWord do_acasW(UWord* addr, UWord expected, UWord nyu ) |
| 91 | +static UWord do_acasW(UWord* addr, UWord expected, UWord nyu ) |
| 92 | { |
| 93 | int cc; |
| 94 | |
| 95 | @@ -223,7 +223,7 @@ UWord do_acasW(UWord* addr, UWord expected, UWord nyu ) |
| 96 | |
| 97 | // mips32 |
| 98 | /* return 1 if success, 0 if failure */ |
| 99 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 100 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 101 | { |
| 102 | UWord success; |
| 103 | UWord block[3] = { (UWord)addr, nyu, expected}; |
| 104 | @@ -256,7 +256,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 105 | |
| 106 | // mips64 |
| 107 | /* return 1 if success, 0 if failure */ |
| 108 | -UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 109 | +static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 110 | { |
| 111 | UWord success; |
| 112 | UWord block[3] = { (UWord)addr, nyu, expected}; |
| 113 | @@ -287,7 +287,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) |
| 114 | |
| 115 | #endif |
| 116 | |
| 117 | -void atomic_incW ( UWord* w ) |
| 118 | +static void atomic_incW ( UWord* w ) |
| 119 | { |
| 120 | while (1) { |
| 121 | UWord old = *w; |
| 122 | @@ -301,7 +301,7 @@ void atomic_incW ( UWord* w ) |
| 123 | |
| 124 | #define NNN 1000000 |
| 125 | |
| 126 | -void* thread_fn ( void* arg ) |
| 127 | +static void* thread_fn ( void* arg ) |
| 128 | { |
| 129 | UWord* w = (UWord*)arg; |
| 130 | int i; |
| 131 | @@ -331,10 +331,10 @@ int main ( void ) |
| 132 | |
| 133 | #endif |
| 134 | |
| 135 | -int shared_var = 0; // is not raced upon |
| 136 | +static int shared_var = 0; // is not raced upon |
| 137 | |
| 138 | |
| 139 | -void delayXms ( int i ) |
| 140 | +static void delayXms ( int i ) |
| 141 | { |
| 142 | struct timespec ts = { 0, 1 * 1000 * 1000 }; |
| 143 | // We do the sleep in small pieces to have scheduling |
| 144 | @@ -348,7 +348,7 @@ void delayXms ( int i ) |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | -void do_wait ( UWord* w ) |
| 149 | +static void do_wait ( UWord* w ) |
| 150 | { |
| 151 | UWord w0 = *w; |
| 152 | UWord volatile * wV = w; |
| 153 | @@ -357,7 +357,7 @@ void do_wait ( UWord* w ) |
| 154 | ANNOTATE_HAPPENS_AFTER(w); |
| 155 | } |
| 156 | |
| 157 | -void do_signal ( UWord* w ) |
| 158 | +static void do_signal ( UWord* w ) |
| 159 | { |
| 160 | ANNOTATE_HAPPENS_BEFORE(w); |
| 161 | atomic_incW(w); |
| 162 | @@ -365,7 +365,7 @@ void do_signal ( UWord* w ) |
| 163 | |
| 164 | |
| 165 | |
| 166 | -void* thread_fn1 ( void* arg ) |
| 167 | +static void* thread_fn1 ( void* arg ) |
| 168 | { |
| 169 | UWord* w = (UWord*)arg; |
| 170 | delayXms(500); // ensure t2 gets to its wait first |
| 171 | @@ -376,7 +376,7 @@ void* thread_fn1 ( void* arg ) |
| 172 | return NULL; |
| 173 | } |
| 174 | |
| 175 | -void* thread_fn2 ( void* arg ) |
| 176 | +static void* thread_fn2 ( void* arg ) |
| 177 | { |
| 178 | UWord* w = (UWord*)arg; |
| 179 | do_wait(w); // wait for h-b edge from first thread |
| 180 | -- |
| 181 | 2.17.0 |
| 182 | |