diff mbox

m68k: binfmt flat configuration fixes

Message ID 20160703170819.GA15135@waldemar-brodkorb.de
State Changes Requested
Headers show

Commit Message

Waldemar Brodkorb July 3, 2016, 5:08 p.m. UTC
The situation looks like following for elf2flt and binfmt FLAT:

Only gcc for m68k implements -msep-data (BR2_BINFMT_FLAT_SEP_DATA)
so we should depend on m68k.  When the default (BR2_BINFMT_FLAT_ONE)
is used on m68k, broken binaries are produced, which mainly end up
in SIGILL, so do not use it for m68k.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 arch/Config.in | 2 ++
 1 file changed, 2 insertions(+)

Comments

Thomas Petazzoni July 3, 2016, 6:25 p.m. UTC | #1
Hello,

On Sun, 3 Jul 2016 19:08:19 +0200, Waldemar Brodkorb wrote:

> diff --git a/arch/Config.in b/arch/Config.in
> index 1fdd36a..92b094a 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -360,11 +360,13 @@ choice
>  
>  config BR2_BINFMT_FLAT_ONE
>  	bool "One memory region"
> +	depends on !BR2_m68k
>  	help
>  	  All segments are linked into one memory region.
>  
>  config BR2_BINFMT_FLAT_SEP_DATA
>  	bool "Separate data and code region"
> +	depends on BR2_m68k

Are you sure? I think sep-data is also available on Blackfin. From the
gcc documentation:

     _Blackfin Options_
          -mcpu=CPU[-SIREVISION]
          -msim -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer
          -mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly  -mno-csync-anomaly
          -mlow-64k -mno-low64k  -mstack-check-l1  -mid-shared-library
          -mno-id-shared-library  -mshared-library-id=N
          -mleaf-id-shared-library  -mno-leaf-id-shared-library
          -msep-data  -mno-sep-data  -mlong-calls  -mno-long-calls
          -mfast-fp -minline-plt -mmulticore  -mcorea  -mcoreb  -msdram
          -micplb

Also, what about ARM noMMU ?

Best regards,

Thomas
Waldemar Brodkorb July 4, 2016, 6:54 p.m. UTC | #2
Hi Thomas,
Thomas Petazzoni wrote,

> Hello,
> 
> On Sun, 3 Jul 2016 19:08:19 +0200, Waldemar Brodkorb wrote:
> 
> > diff --git a/arch/Config.in b/arch/Config.in
> > index 1fdd36a..92b094a 100644
> > --- a/arch/Config.in
> > +++ b/arch/Config.in
> > @@ -360,11 +360,13 @@ choice
> >  
> >  config BR2_BINFMT_FLAT_ONE
> >  	bool "One memory region"
> > +	depends on !BR2_m68k
> >  	help
> >  	  All segments are linked into one memory region.
> >  
> >  config BR2_BINFMT_FLAT_SEP_DATA
> >  	bool "Separate data and code region"
> > +	depends on BR2_m68k
> 
> Are you sure? I think sep-data is also available on Blackfin. From the
> gcc documentation:

You are right, sorry I somehow remembered the situation wrongly.
 
>      _Blackfin Options_
>           -mcpu=CPU[-SIREVISION]
>           -msim -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer
>           -mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly  -mno-csync-anomaly
>           -mlow-64k -mno-low64k  -mstack-check-l1  -mid-shared-library
>           -mno-id-shared-library  -mshared-library-id=N
>           -mleaf-id-shared-library  -mno-leaf-id-shared-library
>           -msep-data  -mno-sep-data  -mlong-calls  -mno-long-calls
>           -mfast-fp -minline-plt -mmulticore  -mcorea  -mcoreb  -msdram
>           -micplb
> 
> Also, what about ARM noMMU ?

No -msep-data :)

best regards
 Waldemar
diff mbox

Patch

diff --git a/arch/Config.in b/arch/Config.in
index 1fdd36a..92b094a 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -360,11 +360,13 @@  choice
 
 config BR2_BINFMT_FLAT_ONE
 	bool "One memory region"
+	depends on !BR2_m68k
 	help
 	  All segments are linked into one memory region.
 
 config BR2_BINFMT_FLAT_SEP_DATA
 	bool "Separate data and code region"
+	depends on BR2_m68k
 	help
 	  Allow for the data and text segments to be separated and placed in
 	  different regions of memory.