Problem report: Struct aliasing problem causes Thread_Ready_Chain corruption in 4.6.99.3

Joel Sherrill joel.sherrill at oarcorp.com
Thu Dec 7 16:11:02 UTC 2006


>   
>>  What piece of work 
>> can i do, as a user with limited knowledge of kernel functonality?
>>     
> Good question.
>
> ATM, from my point of view, people being familiar with certain flavors
> of asm who could identify aliasing showing effects on RTEMS code would
> be helpful. I have been trying to identify files being affected by
> strict-aliasing and meanwhile have a list consisting of ca. 20000 object
> (Note: *.o not *.c!) files (out of ca. 70000) from RTEMS-4.8, which are
> affected by aliasing.
>
> Now, identifying those which really are broken by aliasing would be
> necessary. So far, apart of Peer's/Thomas's case [1], I haven't found
> any :)
>   

I haven't seen your script but know a bit of your procedure so am going 
to propose
something.  I know you are diffing .s files but any differences as a 1st 
order check.
Is it possible to could load and store instructions in the two generated 
.s files and see
if the count differed?

for all files and multilib variants and (eventually) all BSPs
  (a) compile with and without strict aliasing
  (b) objdump .o and diff generated .s files
  if diff shows no changes
     OK.. strict aliasing did not change output, go on to the next file
  else
     count load and store instructions in both .s files
    if counts are same
       the file is 
OK                                                               # is 
this true?
    else
       definitely a HIGH candidate for breakage check by hand

I think the role of the user community is to help review the candidates 
Ralf's automated
procedure identifies and suggest ways to lower the number of false 
positives.  We can't
realistically check 20K files every time gcc bumps a version.

If no different in .s OR ld/st counts are sufficient to say strict 
aliasing had no bad impact,
then it is much easier to check the code automatically.

A similar technique could also be used to verify that soft-float/integer 
only executables
have no FPU instructions.

--joel



 



More information about the users mailing list