diff options
author | Chen Gang <xili_gchen_5257@hotmail.com> | 2015-08-05 18:34:53 -0400 |
---|---|---|
committer | Jesper Nilsson <jespern@axis.com> | 2015-11-02 14:03:04 -0500 |
commit | c33fe4444395a6972b30cb91676d04af2a3dc1a5 (patch) | |
tree | 6ad372d9dfb4a773ebbfdcd1fcb63103e8d3e5a4 | |
parent | 8f40dcebefd4a9e8fa24d2ac5e3fd5e410eea58d (diff) |
cris: arch-v10: kgdb: Add '__used' for static variable is_dyn_brkp
Within one C file, current gcc can optimize the global static variables
according to the C code, but it will skip assembly code -- it will pass
them to gas directly.
if the static variable is used between C code and assembly code in one C
file (e.g. is_dyn_brkp in kgdb.c), it needs '__used' to let gcc know it
should be still used, or gcc may remove it for optimization.
The related error in this case:
LD init/built-in.o
arch/cris/arch-v10/kernel/built-in.o: In function `kgdb_handle_breakpoint':
(.text+0x2aca): undefined reference to `is_dyn_brkp'
arch/cris/arch-v10/kernel/built-in.o: In function `is_static':
kgdb.c:(.text+0x2ada): undefined reference to `is_dyn_brkp'
Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
Signed-off-by: Jesper Nilsson <jespern@axis.com>
-rw-r--r-- | arch/cris/arch-v10/kernel/kgdb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/cris/arch-v10/kernel/kgdb.c b/arch/cris/arch-v10/kernel/kgdb.c index 3b92c5c8fe58..ed71ade93a73 100644 --- a/arch/cris/arch-v10/kernel/kgdb.c +++ b/arch/cris/arch-v10/kernel/kgdb.c | |||
@@ -352,7 +352,7 @@ char internal_stack[INTERNAL_STACK_SIZE]; | |||
352 | breakpoint to be handled. A static breakpoint uses the content of register | 352 | breakpoint to be handled. A static breakpoint uses the content of register |
353 | BRP as it is whereas a dynamic breakpoint requires subtraction with 2 | 353 | BRP as it is whereas a dynamic breakpoint requires subtraction with 2 |
354 | in order to execute the instruction. The first breakpoint is static. */ | 354 | in order to execute the instruction. The first breakpoint is static. */ |
355 | static unsigned char is_dyn_brkp = 0; | 355 | static unsigned char __used is_dyn_brkp; |
356 | 356 | ||
357 | /********************************* String library ****************************/ | 357 | /********************************* String library ****************************/ |
358 | /* Single-step over library functions creates trap loops. */ | 358 | /* Single-step over library functions creates trap loops. */ |