linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] cris: arch-v10: kgdb: Add '__used' for static variable is_dyn_brkp
@ 2015-08-05 22:34 Chen Gang
  2015-10-01 19:15 ` Jesper Nilsson
  0 siblings, 1 reply; 2+ messages in thread
From: Chen Gang @ 2015-08-05 22:34 UTC (permalink / raw)
  To: starvik, jesper.nilsson, Hans-Peter Nilsson
  Cc: linux-cris-kernel, linux-kernel

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>
---
 arch/cris/arch-v10/kernel/kgdb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/cris/arch-v10/kernel/kgdb.c b/arch/cris/arch-v10/kernel/kgdb.c
index 5b61335..d554ae7 100644
--- a/arch/cris/arch-v10/kernel/kgdb.c
+++ b/arch/cris/arch-v10/kernel/kgdb.c
@@ -351,7 +351,7 @@ char internal_stack[INTERNAL_STACK_SIZE];
    breakpoint to be handled. A static breakpoint uses the content of register
    BRP as it is whereas a dynamic breakpoint requires subtraction with 2
    in order to execute the instruction. The first breakpoint is static. */
-static unsigned char is_dyn_brkp = 0;
+static unsigned char __used is_dyn_brkp;
 
 /********************************* String library ****************************/
 /* Single-step over library functions creates trap loops. */
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] cris: arch-v10: kgdb: Add '__used' for static variable is_dyn_brkp
  2015-08-05 22:34 [PATCH v3] cris: arch-v10: kgdb: Add '__used' for static variable is_dyn_brkp Chen Gang
@ 2015-10-01 19:15 ` Jesper Nilsson
  0 siblings, 0 replies; 2+ messages in thread
From: Jesper Nilsson @ 2015-10-01 19:15 UTC (permalink / raw)
  To: Chen Gang
  Cc: Mikael Starvik, Jesper Nilsson, Hans-Peter Nilsson,
	linux-cris-kernel, linux-kernel

On Thu, Aug 06, 2015 at 12:34:53AM +0200, Chen Gang wrote:
> 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>

Added to the cris tree, thanks!

/^JN - Jesper Nilsson
-- 
               Jesper Nilsson -- jesper.nilsson@axis.com

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-10-01 19:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-05 22:34 [PATCH v3] cris: arch-v10: kgdb: Add '__used' for static variable is_dyn_brkp Chen Gang
2015-10-01 19:15 ` Jesper Nilsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).