2013-08-26 10:43:54

by Chen Gang

[permalink] [raw]
Subject: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.

Need add related prefix for h8300, or can not pass compiling by the
latest linker.

The related error (allmodconfig for h8300):

/usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
/usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output

The cross-compiler's information:

[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
GNU ld (GNU Binutils) 2.22
[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22

[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
Target: h8300-gchen-elf
Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
Thread model: single
gcc version 4.8.0 (GCC)


Signed-off-by: Chen Gang <[email protected]>
---
kernel/modsign_certificate.S | 7 +++++++
usr/initramfs_data.S | 7 +++++++
2 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
index 4a9a86d..d24acac 100644
--- a/kernel/modsign_certificate.S
+++ b/kernel/modsign_certificate.S
@@ -1,5 +1,12 @@
#include <linux/export.h>

+#if defined(CONFIG_CPU_H8300H)
+ .h8300h
+#endif
+#if defined(CONFIG_CPU_H8S)
+ .h8300s
+#endif
+
#define GLOBAL(name) \
.globl VMLINUX_SYMBOL(name); \
VMLINUX_SYMBOL(name):
diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
index c14322d..6a6c106 100644
--- a/usr/initramfs_data.S
+++ b/usr/initramfs_data.S
@@ -24,6 +24,13 @@
#include <linux/stringify.h>
#include <asm-generic/vmlinux.lds.h>

+#if defined(CONFIG_CPU_H8300H)
+ .h8300h
+#endif
+#if defined(CONFIG_CPU_H8S)
+ .h8300s
+#endif
+
.section .init.ramfs,"a"
__irf_start:
.incbin __stringify(INITRAMFS_IMAGE)
--
1.7.7.6


2013-08-26 10:47:15

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.


If this implementation is correct, the implementation still can be
improved (at least, it is not quite well to hard code the architecture
related code in "kernel/" and "usr/" sub-directory).

But it seems, I have no right to add or move files, so welcome any
members help do it.

And welcome any additional suggestions or completions.

Thanks.

On 08/26/2013 06:42 PM, Chen Gang wrote:
> Need add related prefix for h8300, or can not pass compiling by the
> latest linker.
>
> The related error (allmodconfig for h8300):
>
> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>
> The cross-compiler's information:
>
> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
> GNU ld (GNU Binutils) 2.22
> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>
> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
> Using built-in specs.
> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
> Target: h8300-gchen-elf
> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
> Thread model: single
> gcc version 4.8.0 (GCC)
>
>
> Signed-off-by: Chen Gang <[email protected]>
> ---
> kernel/modsign_certificate.S | 7 +++++++
> usr/initramfs_data.S | 7 +++++++
> 2 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
> index 4a9a86d..d24acac 100644
> --- a/kernel/modsign_certificate.S
> +++ b/kernel/modsign_certificate.S
> @@ -1,5 +1,12 @@
> #include <linux/export.h>
>
> +#if defined(CONFIG_CPU_H8300H)
> + .h8300h
> +#endif
> +#if defined(CONFIG_CPU_H8S)
> + .h8300s
> +#endif
> +
> #define GLOBAL(name) \
> .globl VMLINUX_SYMBOL(name); \
> VMLINUX_SYMBOL(name):
> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
> index c14322d..6a6c106 100644
> --- a/usr/initramfs_data.S
> +++ b/usr/initramfs_data.S
> @@ -24,6 +24,13 @@
> #include <linux/stringify.h>
> #include <asm-generic/vmlinux.lds.h>
>
> +#if defined(CONFIG_CPU_H8300H)
> + .h8300h
> +#endif
> +#if defined(CONFIG_CPU_H8S)
> + .h8300s
> +#endif
> +
> .section .init.ramfs,"a"
> __irf_start:
> .incbin __stringify(INITRAMFS_IMAGE)
>


--
Chen Gang

2013-08-27 02:15:36

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.

On 08/26/2013 06:46 PM, Chen Gang wrote:
>
> If this implementation is correct, the implementation still can be
> improved (at least, it is not quite well to hard code the architecture
> related code in "kernel/" and "usr/" sub-directory).
>
> But it seems, I have no right to add or move files, so welcome any
> members help do it.
>

Sorry, what I said above ("...have no right...") is not quite precise:

it is only my current feelings, maybe misunderstand something.
also maybe can find better fixing ways more than "add or move files".


Thanks.

> And welcome any additional suggestions or completions.
>
> Thanks.
>
> On 08/26/2013 06:42 PM, Chen Gang wrote:
>> Need add related prefix for h8300, or can not pass compiling by the
>> latest linker.
>>
>> The related error (allmodconfig for h8300):
>>
>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>>
>> The cross-compiler's information:
>>
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
>> GNU ld (GNU Binutils) 2.22
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
>> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>>
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
>> Target: h8300-gchen-elf
>> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
>> Thread model: single
>> gcc version 4.8.0 (GCC)
>>
>>
>> Signed-off-by: Chen Gang <[email protected]>
>> ---
>> kernel/modsign_certificate.S | 7 +++++++
>> usr/initramfs_data.S | 7 +++++++
>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>
>> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
>> index 4a9a86d..d24acac 100644
>> --- a/kernel/modsign_certificate.S
>> +++ b/kernel/modsign_certificate.S
>> @@ -1,5 +1,12 @@
>> #include <linux/export.h>
>>
>> +#if defined(CONFIG_CPU_H8300H)
>> + .h8300h
>> +#endif
>> +#if defined(CONFIG_CPU_H8S)
>> + .h8300s
>> +#endif
>> +
>> #define GLOBAL(name) \
>> .globl VMLINUX_SYMBOL(name); \
>> VMLINUX_SYMBOL(name):
>> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
>> index c14322d..6a6c106 100644
>> --- a/usr/initramfs_data.S
>> +++ b/usr/initramfs_data.S
>> @@ -24,6 +24,13 @@
>> #include <linux/stringify.h>
>> #include <asm-generic/vmlinux.lds.h>
>>
>> +#if defined(CONFIG_CPU_H8300H)
>> + .h8300h
>> +#endif
>> +#if defined(CONFIG_CPU_H8S)
>> + .h8300s
>> +#endif
>> +
>> .section .init.ramfs,"a"
>> __irf_start:
>> .incbin __stringify(INITRAMFS_IMAGE)
>>
>
>


--
Chen Gang

2013-08-27 05:25:53

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.



After check binutils-2.22 source code, can pass "-no-warn-mismatch" to
'ld' to avoid this error.

I will send patch v2 for it.

:-)

On 08/27/2013 10:14 AM, Chen Gang wrote:
> On 08/26/2013 06:46 PM, Chen Gang wrote:
>>
>> If this implementation is correct, the implementation still can be
>> improved (at least, it is not quite well to hard code the architecture
>> related code in "kernel/" and "usr/" sub-directory).
>>
>> But it seems, I have no right to add or move files, so welcome any
>> members help do it.
>>
>
> Sorry, what I said above ("...have no right...") is not quite precise:
>
> it is only my current feelings, maybe misunderstand something.
> also maybe can find better fixing ways more than "add or move files".
>
>
> Thanks.
>
>> And welcome any additional suggestions or completions.
>>
>> Thanks.
>>
>> On 08/26/2013 06:42 PM, Chen Gang wrote:
>>> Need add related prefix for h8300, or can not pass compiling by the
>>> latest linker.
>>>
>>> The related error (allmodconfig for h8300):
>>>
>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>>>
>>> The cross-compiler's information:
>>>
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
>>> GNU ld (GNU Binutils) 2.22
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
>>> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>>>
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
>>> Using built-in specs.
>>> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
>>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
>>> Target: h8300-gchen-elf
>>> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
>>> Thread model: single
>>> gcc version 4.8.0 (GCC)
>>>
>>>
>>> Signed-off-by: Chen Gang <[email protected]>
>>> ---
>>> kernel/modsign_certificate.S | 7 +++++++
>>> usr/initramfs_data.S | 7 +++++++
>>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
>>> index 4a9a86d..d24acac 100644
>>> --- a/kernel/modsign_certificate.S
>>> +++ b/kernel/modsign_certificate.S
>>> @@ -1,5 +1,12 @@
>>> #include <linux/export.h>
>>>
>>> +#if defined(CONFIG_CPU_H8300H)
>>> + .h8300h
>>> +#endif
>>> +#if defined(CONFIG_CPU_H8S)
>>> + .h8300s
>>> +#endif
>>> +
>>> #define GLOBAL(name) \
>>> .globl VMLINUX_SYMBOL(name); \
>>> VMLINUX_SYMBOL(name):
>>> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
>>> index c14322d..6a6c106 100644
>>> --- a/usr/initramfs_data.S
>>> +++ b/usr/initramfs_data.S
>>> @@ -24,6 +24,13 @@
>>> #include <linux/stringify.h>
>>> #include <asm-generic/vmlinux.lds.h>
>>>
>>> +#if defined(CONFIG_CPU_H8300H)
>>> + .h8300h
>>> +#endif
>>> +#if defined(CONFIG_CPU_H8S)
>>> + .h8300s
>>> +#endif
>>> +
>>> .section .init.ramfs,"a"
>>> __irf_start:
>>> .incbin __stringify(INITRAMFS_IMAGE)
>>>
>>
>>
>
>


--
Chen Gang

2013-08-27 05:36:21

by Chen Gang

[permalink] [raw]
Subject: [PATCH v2] h8300: Makefile: add "-no-warn-mismatch" to linker to avoid linking error.

Need add "-no-warn-mismatch" to avoid the linking error, or assembly
files which are outside of the "arch/h8300" can not pass compiling.

The related error (allmodconfig for h8300):

/usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
/usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output

The cross-compiler's information:

[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
GNU ld (GNU Binutils) 2.22
[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22

[root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
Target: h8300-gchen-elf
Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
Thread model: single
gcc version 4.8.0 (GCC)


Signed-off-by: Chen Gang <[email protected]>
---
arch/h8300/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/h8300/Makefile b/arch/h8300/Makefile
index a556447..3ad1369 100644
--- a/arch/h8300/Makefile
+++ b/arch/h8300/Makefile
@@ -26,7 +26,7 @@ model-$(CONFIG_ROMKERNEL) := rom
MODEL := $(model-y)

cflags-$(CONFIG_CPU_H8300H) := -mh
-ldflags-$(CONFIG_CPU_H8300H) := -mh8300helf
+ldflags-$(CONFIG_CPU_H8300H) := -mh8300helf -no-warn-mismatch
cflags-$(CONFIG_CPU_H8S) := -ms
ldflags-$(CONFIG_CPU_H8S) := -mh8300self

--
1.7.7.6

2013-08-27 05:48:04

by Rusty Russell

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.

Chen Gang <[email protected]> writes:
> If this implementation is correct, the implementation still can be
> improved (at least, it is not quite well to hard code the architecture
> related code in "kernel/" and "usr/" sub-directory).
>
> But it seems, I have no right to add or move files, so welcome any
> members help do it.
>
> And welcome any additional suggestions or completions.

Hmm, how about something like:

#ifdef CONFIG_ARCH_ASM_INCBIN_NEEDS_PREFIX
#include <asm/incbin_prefix.h>
ASM_INCBIN_PREFIX
#endif /* ARCH_ASM_INCBIN_NEEDS_PREFIX */

Then h8300 can define ARCH_ASM_INCBIN_NEEDS_PREFIX in Kconfig and define
ASM_INCBIN_PREFIX in arch/h8300/include/asm/incbin_prefix.h?

Cheers,
Rusty.

> On 08/26/2013 06:42 PM, Chen Gang wrote:
>> Need add related prefix for h8300, or can not pass compiling by the
>> latest linker.
>>
>> The related error (allmodconfig for h8300):
>>
>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>>
>> The cross-compiler's information:
>>
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
>> GNU ld (GNU Binutils) 2.22
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
>> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>>
>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
>> Target: h8300-gchen-elf
>> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
>> Thread model: single
>> gcc version 4.8.0 (GCC)
>>
>>
>> Signed-off-by: Chen Gang <[email protected]>
>> ---
>> kernel/modsign_certificate.S | 7 +++++++
>> usr/initramfs_data.S | 7 +++++++
>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>
>> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
>> index 4a9a86d..d24acac 100644
>> --- a/kernel/modsign_certificate.S
>> +++ b/kernel/modsign_certificate.S
>> @@ -1,5 +1,12 @@
>> #include <linux/export.h>
>>
>> +#if defined(CONFIG_CPU_H8300H)
>> + .h8300h
>> +#endif
>> +#if defined(CONFIG_CPU_H8S)
>> + .h8300s
>> +#endif
>> +
>> #define GLOBAL(name) \
>> .globl VMLINUX_SYMBOL(name); \
>> VMLINUX_SYMBOL(name):
>> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
>> index c14322d..6a6c106 100644
>> --- a/usr/initramfs_data.S
>> +++ b/usr/initramfs_data.S
>> @@ -24,6 +24,13 @@
>> #include <linux/stringify.h>
>> #include <asm-generic/vmlinux.lds.h>
>>
>> +#if defined(CONFIG_CPU_H8300H)
>> + .h8300h
>> +#endif
>> +#if defined(CONFIG_CPU_H8S)
>> + .h8300s
>> +#endif
>> +
>> .section .init.ramfs,"a"
>> __irf_start:
>> .incbin __stringify(INITRAMFS_IMAGE)
>>
>
>
> --
> Chen Gang

2013-08-27 06:23:41

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.

On 08/27/2013 01:12 PM, Rusty Russell wrote:
> Chen Gang <[email protected]> writes:
>> If this implementation is correct, the implementation still can be
>> improved (at least, it is not quite well to hard code the architecture
>> related code in "kernel/" and "usr/" sub-directory).
>>
>> But it seems, I have no right to add or move files, so welcome any
>> members help do it.
>>
>> And welcome any additional suggestions or completions.
>
> Hmm, how about something like:
>
> #ifdef CONFIG_ARCH_ASM_INCBIN_NEEDS_PREFIX
> #include <asm/incbin_prefix.h>
> ASM_INCBIN_PREFIX
> #endif /* ARCH_ASM_INCBIN_NEEDS_PREFIX */
>
> Then h8300 can define ARCH_ASM_INCBIN_NEEDS_PREFIX in Kconfig and define
> ASM_INCBIN_PREFIX in arch/h8300/include/asm/incbin_prefix.h?
>

Thank you for your reply firstly, I think your way is OK (valuable to
continue think of the details implementation).

And excuse me, I continued replying multiple times for this thread (I
am just continue improving it).

Current status:

after check the binutils-2.22 source code, we know if use "-no-warn-mismatch" for 'ld', it can avoid this issue.

and also for another 'ld' issue (which I occurs but not send mail), need use "-accept-unknown-input-arch" for 'ld':
"Relocatable linking with relocations from format elf32-h8300 (firmware/keyspan/mpr.fw.gen.o) to format elf32-h8300 (firmware/built-in.o) is not supported"

... maybe find more issues during compiling with 'allmodconfig'.


My opinion:

if h8300 is still one of important architecture, we need try to "let our binary match 'ld'"
else just use skipping parameters is OK.

In my current feeling, h8300 is not one of important architecture, so I choose 2nd.


Welcome additional suggestion or completions.


Thanks.


> Cheers,
> Rusty.
>
>> On 08/26/2013 06:42 PM, Chen Gang wrote:
>>> Need add related prefix for h8300, or can not pass compiling by the
>>> latest linker.
>>>
>>> The related error (allmodconfig for h8300):
>>>
>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>>>
>>> The cross-compiler's information:
>>>
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
>>> GNU ld (GNU Binutils) 2.22
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
>>> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>>>
>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
>>> Using built-in specs.
>>> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
>>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
>>> Target: h8300-gchen-elf
>>> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
>>> Thread model: single
>>> gcc version 4.8.0 (GCC)
>>>
>>>
>>> Signed-off-by: Chen Gang <[email protected]>
>>> ---
>>> kernel/modsign_certificate.S | 7 +++++++
>>> usr/initramfs_data.S | 7 +++++++
>>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
>>> index 4a9a86d..d24acac 100644
>>> --- a/kernel/modsign_certificate.S
>>> +++ b/kernel/modsign_certificate.S
>>> @@ -1,5 +1,12 @@
>>> #include <linux/export.h>
>>>
>>> +#if defined(CONFIG_CPU_H8300H)
>>> + .h8300h
>>> +#endif
>>> +#if defined(CONFIG_CPU_H8S)
>>> + .h8300s
>>> +#endif
>>> +
>>> #define GLOBAL(name) \
>>> .globl VMLINUX_SYMBOL(name); \
>>> VMLINUX_SYMBOL(name):
>>> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
>>> index c14322d..6a6c106 100644
>>> --- a/usr/initramfs_data.S
>>> +++ b/usr/initramfs_data.S
>>> @@ -24,6 +24,13 @@
>>> #include <linux/stringify.h>
>>> #include <asm-generic/vmlinux.lds.h>
>>>
>>> +#if defined(CONFIG_CPU_H8300H)
>>> + .h8300h
>>> +#endif
>>> +#if defined(CONFIG_CPU_H8S)
>>> + .h8300s
>>> +#endif
>>> +
>>> .section .init.ramfs,"a"
>>> __irf_start:
>>> .incbin __stringify(INITRAMFS_IMAGE)
>>>
>>
>>
>> --
>> Chen Gang
>
>


--
Chen Gang

2013-08-27 12:06:34

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] kernel: Assembly: need add prefix for h8300 architecture.

On 08/27/2013 02:22 PM, Chen Gang wrote:
> On 08/27/2013 01:12 PM, Rusty Russell wrote:
>> Chen Gang <[email protected]> writes:
>>> If this implementation is correct, the implementation still can be
>>> improved (at least, it is not quite well to hard code the architecture
>>> related code in "kernel/" and "usr/" sub-directory).
>>>
>>> But it seems, I have no right to add or move files, so welcome any
>>> members help do it.
>>>
>>> And welcome any additional suggestions or completions.
>>
>> Hmm, how about something like:
>>
>> #ifdef CONFIG_ARCH_ASM_INCBIN_NEEDS_PREFIX
>> #include <asm/incbin_prefix.h>
>> ASM_INCBIN_PREFIX
>> #endif /* ARCH_ASM_INCBIN_NEEDS_PREFIX */
>>
>> Then h8300 can define ARCH_ASM_INCBIN_NEEDS_PREFIX in Kconfig and define
>> ASM_INCBIN_PREFIX in arch/h8300/include/asm/incbin_prefix.h?
>>
>
> Thank you for your reply firstly, I think your way is OK (valuable to
> continue think of the details implementation).
>

The final result is: we have to use this way (mark 'h8300h' explicitly)
to fix this issue. (build-in.o requires "h8300h", but the default value
of the ".S" files are "h8300").

"-no-warn-mismatch" and "-accept-unknown-input-arch" have no effect with
the same issue under firmware sub-directory (after reading 'ld' code, we
know there are additional stricter checking for it).

After let 'h8300' pass allmodconfig, I will send patch v3 (may need some
days for waiting gcc issues).


Welcome any additional suggestions or completions (especially for
modifying the firmware files, I have no experience for it).


Thanks.


> And excuse me, I continued replying multiple times for this thread (I
> am just continue improving it).
>
> Current status:
>
> after check the binutils-2.22 source code, we know if use "-no-warn-mismatch" for 'ld', it can avoid this issue.
>
> and also for another 'ld' issue (which I occurs but not send mail), need use "-accept-unknown-input-arch" for 'ld':
> "Relocatable linking with relocations from format elf32-h8300 (firmware/keyspan/mpr.fw.gen.o) to format elf32-h8300 (firmware/built-in.o) is not supported"
>
> ... maybe find more issues during compiling with 'allmodconfig'.
>
>
> My opinion:
>
> if h8300 is still one of important architecture, we need try to "let our binary match 'ld'"
> else just use skipping parameters is OK.
>
> In my current feeling, h8300 is not one of important architecture, so I choose 2nd.
>
>
> Welcome additional suggestion or completions.
>
>
> Thanks.
>
>
>> Cheers,
>> Rusty.
>>
>>> On 08/26/2013 06:42 PM, Chen Gang wrote:
>>>> Need add related prefix for h8300, or can not pass compiling by the
>>>> latest linker.
>>>>
>>>> The related error (allmodconfig for h8300):
>>>>
>>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `usr/initramfs_data.o' is incompatible with h8300h output
>>>> /usr/local/bin/h8300-gchen-elf-ld: h8300 architecture of input file `kernel/modsign_certificate.o' is incompatible with h8300h output
>>>>
>>>> The cross-compiler's information:
>>>>
>>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-ld -v
>>>> GNU ld (GNU Binutils) 2.22
>>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-as -v
>>>> GNU assembler version 2.22 (h8300-gchen-elf) using BFD version (GNU Binutils) 2.22
>>>>
>>>> [root@dhcp122 linux-next]# /usr/local/bin/h8300-gchen-elf-gcc -v
>>>> Using built-in specs.
>>>> COLLECT_GCC=/usr/local/bin/h8300-gchen-elf-gcc
>>>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/h8300-gchen-elf/4.8.0/lto-wrapper
>>>> Target: h8300-gchen-elf
>>>> Configured with: ../gcc-4.8.0/configure --target=h8300-gchen-elf --without-header --disable-nls --enable-language=c --disable-threads --disable-shared --enable-werror=no
>>>> Thread model: single
>>>> gcc version 4.8.0 (GCC)
>>>>
>>>>
>>>> Signed-off-by: Chen Gang <[email protected]>
>>>> ---
>>>> kernel/modsign_certificate.S | 7 +++++++
>>>> usr/initramfs_data.S | 7 +++++++
>>>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/kernel/modsign_certificate.S b/kernel/modsign_certificate.S
>>>> index 4a9a86d..d24acac 100644
>>>> --- a/kernel/modsign_certificate.S
>>>> +++ b/kernel/modsign_certificate.S
>>>> @@ -1,5 +1,12 @@
>>>> #include <linux/export.h>
>>>>
>>>> +#if defined(CONFIG_CPU_H8300H)
>>>> + .h8300h
>>>> +#endif
>>>> +#if defined(CONFIG_CPU_H8S)
>>>> + .h8300s
>>>> +#endif
>>>> +
>>>> #define GLOBAL(name) \
>>>> .globl VMLINUX_SYMBOL(name); \
>>>> VMLINUX_SYMBOL(name):
>>>> diff --git a/usr/initramfs_data.S b/usr/initramfs_data.S
>>>> index c14322d..6a6c106 100644
>>>> --- a/usr/initramfs_data.S
>>>> +++ b/usr/initramfs_data.S
>>>> @@ -24,6 +24,13 @@
>>>> #include <linux/stringify.h>
>>>> #include <asm-generic/vmlinux.lds.h>
>>>>
>>>> +#if defined(CONFIG_CPU_H8300H)
>>>> + .h8300h
>>>> +#endif
>>>> +#if defined(CONFIG_CPU_H8S)
>>>> + .h8300s
>>>> +#endif
>>>> +
>>>> .section .init.ramfs,"a"
>>>> __irf_start:
>>>> .incbin __stringify(INITRAMFS_IMAGE)
>>>>
>>>
>>>
>>> --
>>> Chen Gang
>>
>>
>
>


--
Chen Gang