2008-02-16 06:14:30

by Yoshinori Sato

[permalink] [raw]
Subject: [PATCH 4/6] h8300 CONFIG_KALLSYMS fix

Please comment "C_SYMBOL_PREFIX".

Makefile | 3 ++-
arch/h8300/Kconfig | 4 ++++
2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index c162370..745e31f 100644
--- a/Makefile
+++ b/Makefile
@@ -751,7 +751,8 @@ endef
# Generate .S file with all kernel symbols
quiet_cmd_kallsyms = KSYM $@
cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
- $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
+ $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) \
+ $(if $(CONFIG_C_SYMBOL_PREFIX),--symbol-prefix='_') > $@

.tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
$(call if_changed_dep,as_o_S)
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 085dc6e..2804edd 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -87,6 +87,10 @@ config HZ
int
default 100

+config C_SYMBOL_PREFIX
+ bool
+ default y
+
source "init/Kconfig"

source "arch/h8300/Kconfig.cpu"
--
1.5.4.1

--
Yoshinori Sato
<[email protected]>


2008-02-16 06:24:54

by Yoshinori Sato

[permalink] [raw]
Subject: Re: [PATCH 4/6] h8300 CONFIG_KALLSYMS fix

Signed-off-by: Yoshinori Sato <[email protected]>

At Sat, 16 Feb 2008 01:13:47 -0500,
Yoshinori Sato wrote:
>
> Please comment "C_SYMBOL_PREFIX".
>
> Makefile | 3 ++-
> arch/h8300/Kconfig | 4 ++++
> 2 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index c162370..745e31f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -751,7 +751,8 @@ endef
> # Generate .S file with all kernel symbols
> quiet_cmd_kallsyms = KSYM $@
> cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
> - $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
> + $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) \
> + $(if $(CONFIG_C_SYMBOL_PREFIX),--symbol-prefix='_') > $@
>
> .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
> $(call if_changed_dep,as_o_S)
> diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
> index 085dc6e..2804edd 100644
> --- a/arch/h8300/Kconfig
> +++ b/arch/h8300/Kconfig
> @@ -87,6 +87,10 @@ config HZ
> int
> default 100
>
> +config C_SYMBOL_PREFIX
> + bool
> + default y
> +
> source "init/Kconfig"
>
> source "arch/h8300/Kconfig.cpu"
> --
> 1.5.4.1
>
> --
> Yoshinori Sato
> <[email protected]>

2008-02-16 06:32:31

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 4/6] h8300 CONFIG_KALLSYMS fix

On Sat, 16 Feb 2008 01:13:47 -0500 Yoshinori Sato <[email protected]> wrote:

> Please comment "C_SYMBOL_PREFIX".
>
> Makefile | 3 ++-
> arch/h8300/Kconfig | 4 ++++
> 2 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index c162370..745e31f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -751,7 +751,8 @@ endef
> # Generate .S file with all kernel symbols
> quiet_cmd_kallsyms = KSYM $@
> cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
> - $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
> + $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) \
> + $(if $(CONFIG_C_SYMBOL_PREFIX),--symbol-prefix='_') > $@
>
> .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
> $(call if_changed_dep,as_o_S)
> diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
> index 085dc6e..2804edd 100644
> --- a/arch/h8300/Kconfig
> +++ b/arch/h8300/Kconfig
> @@ -87,6 +87,10 @@ config HZ
> int
> default 100
>
> +config C_SYMBOL_PREFIX
> + bool
> + default y
> +
> source "init/Kconfig"
>
> source "arch/h8300/Kconfig.cpu"
> --

Sam looks after that code.

None of these patches added your Signed-off-by:. Please confirm that it
is OK if I add it.

2008-02-16 10:46:49

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH 4/6] h8300 CONFIG_KALLSYMS fix

On Fri, Feb 15, 2008 at 10:32:01PM -0800, Andrew Morton wrote:
> On Sat, 16 Feb 2008 01:13:47 -0500 Yoshinori Sato <[email protected]> wrote:
>
> > Please comment "C_SYMBOL_PREFIX".
> >
> > Makefile | 3 ++-
> > arch/h8300/Kconfig | 4 ++++
> > 2 files changed, 6 insertions(+), 1 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index c162370..745e31f 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -751,7 +751,8 @@ endef
> > # Generate .S file with all kernel symbols
> > quiet_cmd_kallsyms = KSYM $@
> > cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
> > - $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
> > + $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) \
> > + $(if $(CONFIG_C_SYMBOL_PREFIX),--symbol-prefix='_') > $@
> >
> > .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
> > $(call if_changed_dep,as_o_S)
> > diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
> > index 085dc6e..2804edd 100644
> > --- a/arch/h8300/Kconfig
> > +++ b/arch/h8300/Kconfig
> > @@ -87,6 +87,10 @@ config HZ
> > int
> > default 100
> >
> > +config C_SYMBOL_PREFIX
> > + bool
> > + default y
> > +
> > source "init/Kconfig"
> >
> > source "arch/h8300/Kconfig.cpu"
> > --

The intent with this patch is fine but we should go for
another implementation.

In arch/Kconfig we should put the general config symbol
that says if we use '_' or not - where the default is to
not use underscore.

Something like this:
diff --git a/arch/Kconfig b/arch/Kconfig
index 3d72dc3..f2928c5 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -29,3 +29,8 @@ config KPROBES

config HAVE_KPROBES
def_bool n
+
+# Architectures where binutils prefix C symbols with
+# underscore '_' shall select this symbol.
+config SYMBOL_C_PREFIX
+ bool


Then in the relevant architectures we should do a

config H8300
+ select SYMBOL_C_PREFIX # We prefix C symbols with '_'

And we should do this for all the relevant architectures:
blackfin, v850 springs to my mind.
For the other archs as separate patches via the respective
maintainers.

Sam

2008-02-17 06:11:28

by Paul Mundt

[permalink] [raw]
Subject: Re: [PATCH 4/6] h8300 CONFIG_KALLSYMS fix

On Sat, Feb 16, 2008 at 11:46:47AM +0100, Sam Ravnborg wrote:
> Something like this:
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 3d72dc3..f2928c5 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -29,3 +29,8 @@ config KPROBES
>
> config HAVE_KPROBES
> def_bool n
> +
> +# Architectures where binutils prefix C symbols with
> +# underscore '_' shall select this symbol.
> +config SYMBOL_C_PREFIX
> + bool
>
>
> Then in the relevant architectures we should do a
>
> config H8300
> + select SYMBOL_C_PREFIX # We prefix C symbols with '_'
>
> And we should do this for all the relevant architectures:
> blackfin, v850 springs to my mind.
> For the other archs as separate patches via the respective
> maintainers.
>
It's really a product of the toolchain, not the architecture. For SH also
we have some toolchains that do this, and others that don't. (Usually
sh-elf insteatd of sh-linux, the -elf toolchains in general are pretty
common for the nommu targets). In general we've just not supported the
symbol prefixing toolchains, but if there's a way we can handle this
cleanly at compile time then it's certainly worth trying to support.