System type: Microsoft Windows 2000 [Version 5.00.2195]
Sources file for reproducing the bug:
========= main.cpp (begin) =========
extern "C" void __cdecl _assert (const char*, const char*, int);
#define assert(e) ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
struct st_t {
int m_i;
char m_ch[260];
};
void foo(int *pInt, struct st_t st)
{
assert(*pInt == 123);
}
int main()
{
int i = 123;
struct st_t st;
st.m_i = 1;
st.m_ch[0] = 0;
foo(&i, st);
return 0;
}
========= main.cpp (end) =========
Error output when execute the object file(a.exe):
========= error (begin) ===========
Assertion failed: *pInt == 123, file main.cpp, line 11
abnormal program termination
========= error (end) ===========
The command line and other information:
========== compile information (begin) ============
>gcc -v -save-temps -march=i386 -mrtd main.cpp
Reading specs from
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --
host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --
enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-
shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x -
-enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-
synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.4 (mingw special)
D:/Elastos/extern/gnuSDK.x86/bin/../libexec/gcc/mingw32/3.4.4/cc1plus.exe -E -
quiet -v -iprefix D:\Elastos\extern\gnuSDK.x86\bin/../lib/gcc/mingw32/3.4.4/
main.cpp -march=i386 -mrtd -o main.ii
ignoring nonexistent
directory "D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../..
/mingw32/include"
ignoring nonexistent
directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.4"
ignoring nonexistent
directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.4/mingw32"
ignoring nonexistent
directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.4/backward"
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/3.4.4/include"
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c+
+/3.4.4
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c+
+/3.4.4/mingw32
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c+
+/3.4.4/backward
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../include
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/include
/mingw/lib/gcc/mingw32/../../../include
/mingw/include
/mingw/include
End of search list.
D:/Elastos/extern/gnuSDK.x86/bin/../libexec/gcc/mingw32/3.4.4/cc1plus.exe -
fpreprocessed main.ii -quiet -dumpbase main.cpp -march=i386 -mrtd -auxbase
main -version -o main.s
GNU C++ version 3.4.4 (mingw special) (mingw32)
compiled by GNU C version 3.4.4.
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32614
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../mingw32/bi
n/as.exe -o main.o main.s
D:/Elastos/extern/gnuSDK.x86/bin/../libexec/gcc/mingw32/3.4.4/collect2.exe -
Bdynamic /mingw/lib/crt2.o
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/crtbegin.o -
LD:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4 -
LD:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc -
LD:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../../../mingw32/l
ib -L/mingw/lib/gcc/mingw32/../../../mingw32/lib -L/mingw/lib -
LD:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/../../.. -
L/mingw/lib/gcc/mingw32/../.. main.o -lmingw32 -lgcc -lmoldname -lmingwex -
lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32 -lmingw32 -lgcc -lmoldname -
lmingwex -lmsvcrt
D:/Elastos/extern/gnuSDK.x86/bin/../lib/gcc/mingw32/3.4.4/crtend.o
========== compile information (end) ============
--
Summary: Error to pass struct parameter when compile with mingw's
gcc.exe using "-march=i386 -mrtd" flags
Product: gcc
Version: 3.4.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: lyuzhou at 21cn dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: Microsoft Windows 2000
GCC host triplet: --host=mingw32
GCC target triplet: --target=mingw32
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22017