Jan Kratochvil 01d8c27e4f testsuite: i386 regression for funcargs.exp
3ca22649a6dfeb71058c33be4d0542b98f1f0ff5 is the first bad commit
commit 3ca22649a6dfeb71058c33be4d0542b98f1f0ff5
Author: Simon Marchi <simon.marchi@polymtl.ca>
Date:   Mon Dec 21 12:51:54 2015 -0500
    Remove HP-UX references fom testsuite
@@ -1013,13 +1013,6 @@ proc localvars_in_indirect_call { } {
     #

     gdb_test_multiple "finish" "finish from indirectly called function" {
-       -re "\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*First.*$gdb_prompt $" {
-           #On hppa2.0w-hp-hpux11.00, gdb finishes at one line earlier than
-           #hppa1.1-hp-hpux11.00. Therefore, an extra "step" is necessary
-           #to continue the test.
-           send_gdb "step\n"
-           exp_continue
-	}
        -re ".*\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*Second.*$gdb_prompt $" {
            pass "finish from indirectly called function"
       	}

->

 finish^M
 Run till exit from #0  call0a (c=97 'a', s=1, i=2, l=3) at ./gdb.base/funcargs.c:82^M
 0x0804a189 in main () at ./gdb.base/funcargs.c:583^M
 583	  (*pointer_to_call0a) (c, s, i, l);    /* First step into call0a.  */^M
-(gdb) step^M
-584	  (*pointer_to_call0a) (c, s, i, l);    /* Second step into call0a.  */^M
-(gdb) PASS: gdb.base/funcargs.exp: finish from indirectly called function
+(gdb) FAIL: gdb.base/funcargs.exp: finish from indirectly called function
 step^M
-call0a (c=97 'a', s=1, i=2, l=3) at ./gdb.base/funcargs.c:82^M
-82	  c = 'a';^M
-(gdb) PASS: gdb.base/funcargs.exp: stepping into indirectly called function
+584	  (*pointer_to_call0a) (c, s, i, l);    /* Second step into call0a.  */^M
+(gdb) FAIL: gdb.base/funcargs.exp: stepping into indirectly called function

At least on x86_64 with testsuite in -m32 (expecting native i386 would be the
same).

Pedro Alves:

The difference is that with newer GCC there's an extra instruction
after the call which is still assigned to line 583:

$ diff -up /tmp/4.8.3 /tmp/6.0.0 -U 1000
--- /tmp/4.8.3  2016-01-11 12:37:39.611089156 +0000
+++ /tmp/6.0.0  2016-01-11 13:21:00.021127976 +0000
@@ -1,27 +1,30 @@
 583       (*pointer_to_call0a) (c, s, i, l);    /* First step into call0a.  */
    mov    0x804d060,%ebx
    mov    0x804d050,%ecx
    movzwl 0x804d040,%eax
    movswl %ax,%edx
    movzbl 0x804d030,%eax
    movsbl %al,%eax
-   mov    %ebx,0xc(%esp)
-   mov    %ecx,0x8(%esp)
-   mov    %edx,0x4(%esp)
-   mov    %eax,(%esp)
-   mov    0x7c(%esp),%eax
+   push   %ebx
+   push   %ecx
+   push   %edx
+   push   %eax
+   mov    -0x1c(%ebp),%eax
    call   *%eax
+   add    $0x10,%esp

 584	   (*pointer_to_call0a) (c, s, i, l);    /* Second step into call0a.  */
    mov    0x804d060,%ebx
    mov    0x804d050,%ecx
    movzwl 0x804d040,%eax
    movswl %ax,%edx
    movzbl 0x804d030,%eax
    movsbl %al,%eax
-   mov    %ebx,0xc(%esp)
-   mov    %ecx,0x8(%esp)
-   mov    %edx,0x4(%esp)
-   mov    %eax,(%esp)
-   mov    0x7c(%esp),%eax
+   push   %ebx
+   push   %ecx
+   push   %edx
+   push   %eax
+   mov    -0x1c(%ebp),%eax
    call   *%eax
+   add    $0x10,%esp
+

I don't know why -m32 changed to push/add instead of mov while 64-bit hasn't.

This is most likely needed on non-x86 ports as well.

gdb/testsuite/ChangeLog
2016-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <palves@redhat.com>

	* gdb.base/funcargs.exp (finish from indirectly called function):
	Reintroduce the case for 'First'.
2016-01-11 22:27:15 +01:00
2016-01-11 00:00:08 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2015-08-31 12:53:36 +09:30
2014-11-16 13:43:48 +01:00
2015-07-27 07:49:05 -07:00
2014-11-16 13:43:48 +01:00
2014-11-16 13:43:48 +01:00
2014-11-24 09:14:09 -08:00
2014-02-06 11:01:57 +01:00
2014-11-16 13:43:48 +01:00
2014-11-16 13:43:48 +01:00
2014-11-16 13:43:48 +01:00

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.
Description
Unofficial mirror of sourceware binutils-gdb repository. Updated daily.
Readme 780 MiB
Languages
C 51.8%
Makefile 22.4%
Assembly 12.3%
C++ 6%
Roff 1.4%
Other 5.4%