Test libmudflap.c/fail27-frag.c has failed an output pattern test on
powerpc64-linux with -m64 since before GCC 4.0 was released.  I don't know
enough about mudflap to know if this is an actual bug for that target or if the
test is written incorrectly.

Output for powerpc64-linux with -m32, and for i686-linux, is something like:

    *******
1   mudflap violation 1 (check/write): time=1228849502.371858 ptr=0xffaf5e91
size=1
    pc=0xfefeaa0 location=`fail27-frag.c:17:1 (main)'  
          /home/janis/tools/gcc-trunk-patches/lib/libmudflap.so.0
              (__mf_check+0x50) [0xfefeaa0]
          ./a.out(main+0xc0) [0x10000944]        
          /home/janis/tools/gcc-trunk-patches/lib/libmudflap.so.0
              (__wrap_main+0x1f8) [0xfefe2d8]
2   Nearby object 1: checked region begins 771B before and ends 771B before
3   mudflap object 0x100911e8: name=`argv[]'
    bounds=[0xffaf6194,0xffaf619b] size=8 area=static check=0r/0w liveness=0
    alloc time=1228849502.371747 pc=0xfefe0b0
    Nearby object 2: checked region begins 779B before and ends 779B before
    mudflap object 0x10092d88: name=`environ[]'
    bounds=[0xffaf619c,0xffaf62a7] size=268 area=static check=0r/0w liveness=0
    alloc time=1228849502.371826 pc=0xfefe0b0
    Nearby object 3: checked region begins 5B into and ends 5B into
3   mudflap dead object 0x10092fb0: name=`fail27-frag.c:9:17 (foo) buffer'
    bounds=[0xffaf5e8c,0xffaf5e95] size=10 area=stack check=0r/0w liveness=0
3   alloc time=1228849502.371836 pc=0xfefe0b0
3   dealloc time=1228849502.371845 pc=0xfefdb88
    number of nearby objects: 3

The numbers at the left are mine to show what is matched by

1   /* { dg-output "mudflap violation 1.*" } */
2   /* { dg-output "Nearby object.*" } */
3   /* { dg-output "mudflap object.*buffer.*alloc.*dealloc" } */

Output for powerpc64-linux with -m64 is:

*******
mudflap violation 1 (check/write): time=1228849632.611370 ptr=0xfffff8109dd
size=1
pc=0x400000493dc location=`fail27-frag.c:17:1 (main)'
     
/home/janis/tools/gcc-trunk-patches/lib64/libmudflap.so.0(__mf_check-0x2367c)
[0x400000493dc]
      ./lmf64(main-0x10744) [0x10000b9c]
     
/home/janis/tools/gcc-trunk-patches/lib64/libmudflap.so.0(__wrap_main-0x23df8)
[0x40000048c30]
Nearby object 1: checked region begins 5B into and ends 5B into
mudflap dead object 0x10015a60: name=`fail27-frag.c:9:17 (foo) buffer'
bounds=[0xfffff8109d8,0xfffff8109e1] size=10 area=stack check=0r/0w liveness=0
alloc time=1228849632.611335 pc=0x400000489dc
dealloc time=1228849632.611347 pc=0x400000484a4
number of nearby objects: 1 

Here there is only one nearby object; argv[] and environ[] are missing.  The
third output pattern fails because there is no earlier "mudflap object".  In
both cases the line with "buffer" starts with "mudflap dead object", not
"mudflap object".

Should the objects argv and environ be reported in the -m64 output, or is the
test right in just looking for any non-dead mudflap object, and then "buffer"
sometime later?  Would it be correct for the test to instead look for "mudflap
dead object" before "buffer"?


-- 
           Summary: test libmudflap.c/fail27-frag.c fails output pattern
                    test for ppc64
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libmudflap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis at gcc dot gnu dot org
GCC target triplet: powerpc64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38462

Reply via email to