This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/12791] New: GDB is unable to do inf-call of vararg of type_Complex on arm-linux-gnu-eabi


http://sourceware.org/bugzilla/show_bug.cgi?id=12791

           Summary: GDB is unable to do inf-call of vararg of type
                    _Complex on arm-linux-gnu-eabi
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gdb
        AssignedTo: unassigned@sourceware.org
        ReportedBy: qiyao@gcc.gnu.org


Created attachment 5742
  --> http://sourceware.org/bugzilla/attachment.cgi?id=5742
test case

Native gdb configured as armv7l-linux-gnu-eabi can't handle varargs of type
_Complex {float, double, long double}.

Here are the steps to reproduce,

$ gcc -marm complex.c -g -o complex
$ ./gdb complex
(gdb) b main
Breakpoint 1 at 0x8368: file /home/yao/complex.c, line 25.
(gdb) run
Starting program: /home/yao/gdb/gdb-fsf-git/build/gdb/complex

Breakpoint 1, main () at /home/yao/complex.c:25
25        return 0;
(gdb) print find_max_float_real(4, fc1, fc2, fc3, fc4)
Program received signal SIGSEGV, Segmentation fault.
0x000083c8 in find_max_float_real (num_vals=1065353216) at
/home/yao/complex.c:39
39            x = va_arg (argp, float _Complex);
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(find_max_float_real) will be abandoned.
When the function is done executing, GDB will silently stop.

(gdb) print find_max_double_real(4, dc1, dc2, dc3, dc4)
Program received signal SIGSEGV, Segmentation fault.
0x00008504 in find_max_double_real (num_vals=-1098616824) at
/home/yao/complex.c:62
62        return max;
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(find_max_double_real) will be abandoned.
When the function is done executing, GDB will silently stop.

(gdb) print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4)
Program received signal SIGSEGV, Segmentation fault.
0x000085dc in find_max_long_double_real (num_vals=0) at /home/yao/complex.c:80
80        return max;
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(find_max_long_double_real) will be abandoned.
When the function is done executing, GDB will silently stop.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]