Messages in this thread | | | Date | Mon, 27 Jun 2005 16:04:53 +0200 | From | Paolo Ornati <> | Subject | Re: A Bug in gcc or asm/string.h ? |
| |
On Mon, 27 Jun 2005 01:05:28 +0200 Andreas Kies <andikies@t-online.de> wrote:
> Hello, > > When running a kernel module compiled with gcc 3.3.5, I think I've found a > bug in either the compiler or the kernel definition of strcmp in > asm-i386/string.h . The exact compiler version is : > > Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.5/specs > Configured with: ../configure --enable-threads=posix --prefix=/usr > --with-local-prefix=/usr/local --infodir=/usr/share/info > --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada > --disable-checking --libdir=/usr/lib --enable-libgcj --with-slibdir=/lib > --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux > Thread model: posix > gcc version 3.3.5 20050117 (prerelease) (SUSE Linux) > > I was able to construct a small pure usermode program. > If you compile the included test program with optimization level 1 or less > it works, if compiled with level 2 it fails. Failing means the strcmp > result is != 0 because char ptr has valid contents at the time strcmp is > expanded. Other platforms besides i386 might be affected, too. > In the case of a failure you get "Unrecognized" as output on stdout. > > So, here are my questions : > - Is this a bug in the compiler ? > In Documentation/Changes version 2.95.x is still recommended, I guess this > is outdated. > - Is it a bug in the definition of strcmp ? Maybe an addition volatile is > missing. > > Thanks for reading. > ... > > int oem; > > int main(void) > { > char ptr[2];
what happens if you change "char ptr[2]" to "volatile char ptr[2]" ?
-- Paolo Ornati Linux 2.6.12.1 on x86_64 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |