> Date: Tue, 27 Feb 2018 22:30:43 +0100 (CET)
> From: Mark Kettenis <mark.kette...@xs4all.nl>
> 
> > From: Brandon Bergren <open...@bdragon.rtk0.net>
> > Date: Tue, 27 Feb 2018 15:05:43 -0600
> > 
> > Oh geez, I just figured out what my own crash was -- svcstk is not
> > being aligned properly in sys/arch/arm/arm/locore.S, so depending on
> > the link order, the address of the service stack could be in some
> > random place in .bss. I *think* it's supposed to be .align 8 anyway
> > to be standards-compliant.
> 
> The stack needs 8-byte alignment, so .align 3.  In a "bad" kernel I
> have lying around the stack is properly aligned though.  But esym
> isn't because .data isn't aligned properly.
> 
> The diff below fixes both issues.  I'll go through the other assembly
> files and make sure the alignment of the .data and .bss is correct
> there as well and I'll send a new diff if I find any further issues.
> 
> ok?

And thanks for the cluestick.  I have been banging my head on this bug
for days...

> Index: arch/arm/arm/locore.S
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm/arm/locore.S,v
> retrieving revision 1.13
> diff -u -p -r1.13 locore.S
> --- arch/arm/arm/locore.S     6 Jan 2017 00:06:02 -0000       1.13
> +++ arch/arm/arm/locore.S     27 Feb 2018 21:27:10 -0000
> @@ -101,6 +101,7 @@ ASENTRY_NP(start)
>       .align  2
>  
>       .bss
> +     .align  3
>  svcstk:
>       .space  INIT_ARM_STACK_SIZE
>  
> @@ -179,6 +180,7 @@ ENTRY(longjmp)
>       mov     pc, lr
>  
>       .data
> +     .align  2
>       .global _C_LABEL(esym)
>  _C_LABEL(esym):      .word   _C_LABEL(end)
>  
> 
> 

Reply via email to