------- Comment #11 from pinskia at gcc dot gnu dot org 2010-08-11 03:52 ------- The ABI is not of concern here really. The issue comes down to you have: char *a; char **b = &a; use(b[1]);
It is undefined what happens when you access b[1]. It does not matter if the ABI defines that the arguments are passed via the stack in ascending order or not. It could pass them via descending order. Accessing an out of bounds array is causing the issue here. This is not about GCC vs MS Visual studio issue, this is a C/C++ standard issue saying what you are doing is undefined. >Another thing well defined in C is what happens when navigating an array out of its bounds. Kinda, you can go one past the array bounds for the address but you cannot access it. That is what the C/C++ standard says. I can quote the standard if needed. Anything else is undefined. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45249