Age | Commit message (Collapse) | Author | Files | Lines |
|
GDB's compile subsystem is deeply tied to GDB's ability to understand
DWARF. A future patch will add the option to disable DWARF at configure
time, but for that to work, the compile subsystem will need to be
entirely disabled as well, so this patch adds that possibility.
I also think there is motive for a security conscious user to disable
compile for it's own sake. Considering that the code is quite
unmaintained, and depends on an equally unmaintained gcc plugin, there
is a case to be made that this is an unnecessary increase in the attack
surface if a user knows they won't use the subsystem. Additionally, this
can make compilation slightly faster and the final binary is around 3Mb
smaller. But these are all secondary to the main goal of being able to
disable dwarf at configure time.
To be able to achieve optional compilation, some of the code that
interfaces with compile had to be changed. All parts that directly
called compile things have been wrapped by ifdefs checking for compile
support. The file compile/compile.c has been setup in a similar way to
how python's and guile's main file has been setup, still being compiled
but only for with placeholder command.
Finally, to avoid several new errors, a new TCL proc was introduced to
gdb.exp, allow_compile_tests, which checks if the "compile" command is
recognized before the inferior is started and otherwise skips the compile
tests. All tests in the gdb.compile subfolder have been updated to use
that, and the test gdb.base/filename-completion also uses this. The proc
skip_compile_feature_tests to recognize when the subsystem has been
disabled at compile time.
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Tom Tromey <tom@tromey.com>
|
|
This commit changes how GDB processes command arguments for the
following commands:
compile file
maint print c-tdesc
save gdb-index
After this commit these commands will now expect their single filename
argument to be (optionally) quoted if it contains any special
characters (e.g. whit space or quotes).
If the filename does not contain any special characters then nothing
changes. As an example:
(gdb) save gdb-index /path/to/some/directory/
will work before and after this patch. However, if the directory
name contains a white space then before this patch a user would write:
(gdb) save gdb-index /path/to some/directory/
But this will now fail as GDB will consider this as two arguments,
'/path/to' and 'some/directory/'. To pass this single directory name
a user must now do one of these:
(gdb) save gdb-index "/path/to some/directory/"
(gdb) save gdb-index '/path/to some/directory/'
(gdb) save gdb-index /path/to\ some/directory/
This brings these commands into line with commands like 'file' and
'symbol-file', which have supported quoted filenames for a while.
The motivation for this change is to make handling of filename
arguments consistent throughout GDB. We can't move to all commands
taking non-quoted filenames as the non-quoted style only allows for a
single argument. Additionally, the non-quoted style doesn't allow for
filenames that end in white space (though this is probably pretty
rare). So, if we want to have consistency the only choice is to move
towards supporting quote filenames.
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
|
|
We now have unwind-on-timeout and unwind-on-terminating-exception, and
then the odd one out unwindonsignal.
I'm not a great fan of these squashed together command names, so in
this commit I propose renaming this to unwind-on-signal.
Obviously I've added the hidden alias unwindonsignal so any existing
GDB scripts will keep working.
There's one test that I've extended to test the alias works, but in
most of the other test scripts I've changed over to use the new name.
The docs are updated to reference the new name.
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Tested-By: Luis Machado <luis.machado@arm.com>
Tested-By: Keith Seitz <keiths@redhat.com>
|
|
When the GCC compiler plugin responds with GCC_C_FE_VERSION_2, gdb can
use the new 'finish_record_with_alignment' method. This lets gdb pass
alignment information to the compiler, which in turn fixes the test
case included in this patch.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31397
|
|
This commit is the result of the following actions:
- Running gdb/copyright.py to update all of the copyright headers to
include 2024,
- Manually updating a few files the copyright.py script told me to
update, these files had copyright headers embedded within the
file,
- Regenerating gdbsupport/Makefile.in to refresh it's copyright
date,
- Using grep to find other files that still mentioned 2023. If
these files were updated last year from 2022 to 2023 then I've
updated them this year to 2024.
I'm sure I've probably missed some dates. Feel free to fix them up as
you spot them.
|
|
compile.exp generally does not work for me on Fedora 38. However, I
sent a GCC patch to fix the plugin crash. With that patch, I get this
error from one test in compile.exp:
gdb command line:1:22: warning: initialization of 'int (*)(int)' from incompatible pointer type 'int (*)()' [-Wincompatible-pointer-types]
This patch adds a cast to compile.exp. This makes the test pass.
Reviewed-by: Keith Seitz <keiths@redhat.com>
|
|
This recent commit:
commit b1c0ab20809a502b2d2224fecb0dca3ada2e9b22
Date: Wed Jul 12 21:56:50 2023 +0100
gdb: avoid double stop after failed breakpoint condition check
Addressed a problem where two MI stopped events would be reported if a
breakpoint condition failed due to a signal, this commit was a
replacement for this commit:
commit 2e411b8c68eb2b035b31d5b00d940d4be1a0928b
Date: Fri Oct 14 14:53:15 2022 +0100
gdb: don't always print breakpoint location after failed condition check
which solved the two stop problem, but only for the CLI. Before both
of these commits, if a b/p condition failed due to a signal then the
user would see two stops reported, the first at the location where the
signal occurred, and the second at the location of the breakpoint.
By default GDB remains at the location where the signal occurred, so
the second reported stop can be confusing, this is the problem that
commit 2e411b8c68eb tried to solve (for the CLI) and b1c0ab20809a
extended also address the issue for MI too.
However, while working on another patch I realised that there was a
problem with GDB after the above commits. Neither of the above
commits considered 'set unwindonsignal on'. With this setting on,
when an inferior function call fails with a signal GDB will unwind the
stack back to the location where the inferior function call started.
In the b/p case we're looking at, the stop should be reported at the
location of the breakpoint, not at the location where the signal
occurred, and this isn't what happens.
This commit fixes this by ensuring that when unwindonsignal is 'on',
GDB reports a single stop event at the location of the breakpoint,
this fixes things for both CLI and MI.
The function call_thread_fsm::should_notify_stop is called when the
inferior function call completes and GDB is figuring out if the user
should be notified about this stop event by calling normal_stop from
fetch_inferior_event in infrun.c. If normal_stop is called, then this
notification will be for the location where the inferior call stopped,
which will be the location at which the signal occurred.
Prior to this commit, the only time that normal_stop was not called,
was if the inferior function call completed successfully, this was
controlled by ::should_notify_stop, which only turns false when the
inferior function call has completed successfully.
In this commit I have extended the logic in ::should_notify_stop. Now
there are three cases in which ::should_notify_stop will return false,
and we will not announce the first stop (by calling normal_stop).
These three reasons are:
1. If the inferior function call completes successfully, this is
unchanged behaviour,
2. If the inferior function call stopped due to a signal and 'set
unwindonsignal on' is in effect, and
3. If the inferior function call stopped due to an uncaught C++
exception, and 'set unwind-on-terminating-exception on' is in
effect.
However, if we don't call normal_stop then we need to call
async_enable_stdin in call_thread_fsm::should_stop. Prior to this
commit this was only done for the case where the inferior function
call completed successfully.
In this commit I now call ::should_notify_stop and use this to
determine if we need to call async_enable_stdin. With this done we
now call async_enable_stdin for each of the three cases listed above,
which means that GDB will exit wait_sync_command_done correctly (see
run_inferior_call in infcall.c).
With these two changes the problem is mostly resolved. However, the
solution isn't ideal, we've still lost some information.
Here is how GDB 13.1 behaves, this is before commits b1c0ab20809a and
2e411b8c68eb:
$ gdb -q /tmp/mi-condbreak-fail \
-ex 'set unwindonsignal on' \
-ex 'break 30 if (cond_fail())' \
-ex 'run'
Reading symbols from /tmp/mi-condbreak-fail...
Breakpoint 1 at 0x40111e: file /tmp/mi-condbreak-fail.c, line 30.
Starting program: /tmp/mi-condbreak-fail
Program received signal SIGSEGV, Segmentation fault.
0x0000000000401116 in cond_fail () at /tmp/mi-condbreak-fail.c:24
24 return *p; /* Crash here. */
Error in testing breakpoint condition:
The program being debugged was signaled while in a function called from GDB.
GDB has restored the context to what it was before the call.
To change this behavior use "set unwindonsignal off".
Evaluation of the expression containing the function
(cond_fail) will be abandoned.
Breakpoint 1, foo () at /tmp/mi-condbreak-fail.c:30
30 global_counter += 1; /* Set breakpoint here. */
(gdb)
In this state we see two stop notifications, the first is where the
signal occurred, while the second is where the breakpoint is located.
As GDB has unwound the stack (thanks to unwindonsignal) the second
stop notification reflects where the inferior is actually located.
Then after commits b1c0ab20809a and 2e411b8c68eb the behaviour changed
to this:
$ gdb -q /tmp/mi-condbreak-fail \
-ex 'set unwindonsignal on' \
-ex 'break 30 if (cond_fail())' \
-ex 'run'
Reading symbols from /tmp/mi-condbreak-fail...
Breakpoint 1 at 0x40111e: file /tmp/mi-condbreak-fail.c, line 30.
Starting program: /tmp/mi-condbreak-fail
Program received signal SIGSEGV, Segmentation fault.
0x0000000000401116 in cond_fail () at /tmp/mi-condbreak-fail.c:24
24 return *p; /* Crash here. */
Error in testing condition for breakpoint 1:
The program being debugged was signaled while in a function called from GDB.
GDB has restored the context to what it was before the call.
To change this behavior use "set unwindonsignal off".
Evaluation of the expression containing the function
(cond_fail) will be abandoned.
(gdb) bt 1
#0 foo () at /tmp/mi-condbreak-fail.c:30
(More stack frames follow...)
(gdb)
This is the broken state. GDB is reports the SIGSEGV location, but
not the unwound breakpoint location. The final 'bt 1' shows that the
inferior is not located in cond_fail, which is the only location GDB
reported, so this is clearly wrong.
After implementing the fixes described above we now get this
behaviour:
$ gdb -q /tmp/mi-condbreak-fail \
-ex 'set unwindonsignal on' \
-ex 'break 30 if (cond_fail())' \
-ex 'run'
Reading symbols from /tmp/mi-condbreak-fail...
Breakpoint 1 at 0x40111e: file /tmp/mi-condbreak-fail.c, line 30.
Starting program: /tmp/mi-condbreak-fail
Error in testing breakpoint condition for breakpoint 1:
The program being debugged was signaled while in a function called from GDB.
GDB has restored the context to what it was before the call.
To change this behavior use "set unwindonsignal off".
Evaluation of the expression containing the function
(cond_fail) will be abandoned.
Breakpoint 1, foo () at /tmp/mi-condbreak-fail.c:30
30 global_counter += 1; /* Set breakpoint here. */
(gdb)
This is better. GDB now reports a single stop at the location of the
breakpoint, which is where the inferior is actually located. However,
by removing the first stop notification we have lost some potentially
useful information about which signal caused the inferior to stop.
To address this I've reworked the message that is printed to include
the signal information. GDB now reports this:
$ gdb -q /tmp/mi-condbreak-fail \
-ex 'set unwindonsignal on' \
-ex 'break 30 if (cond_fail())' \
-ex 'run'
Reading symbols from /tmp/mi-condbreak-fail...
Breakpoint 1 at 0x40111e: file /tmp/mi-condbreak-fail.c, line 30.
Starting program: /tmp/mi-condbreak-fail
Error in testing condition for breakpoint 1:
The program being debugged received signal SIGSEGV, Segmentation fault
while in a function called from GDB. GDB has restored the context
to what it was before the call. To change this behavior use
"set unwindonsignal off". Evaluation of the expression containing
the function (cond_fail) will be abandoned.
Breakpoint 1, foo () at /tmp/mi-condbreak-fail.c:30
30 global_counter += 1; /* Set breakpoint here. */
(gdb)
This is better, the user now sees a single stop notification at the
correct location, and the error message describes which signal caused
the inferior function call to stop.
However, we have lost the information about where the signal
occurred. I did consider trying to include this information in the
error message, but, in the end, I opted not too. I wasn't sure it was
worth the effort. If the user has selected to unwind on signal, then
surely this implies they maybe aren't interested in debugging failed
inferior calls, so, hopefully, just knowing the signal name will be
enough. I figure we can always add this information in later if
there's a demand for it.
|
|
Attempting to test the gdb.compile with clang as the compiler results in
over 300 unexpected errors, due to a segmentation fault and several
handshake failures. Since the whole feature is designed around a gcc
plugin, and even the gcc testing is shaky at best, this commit restricts
those tests to only running under gcc. If that gets fixed, this commit
can be reverted.
Approved-By: Tom Tromey <tom@tromey.com>
|
|
Many gdb.compile C++ tests fail for me on Fedora 36. I think these
are largely bugs in the plugin, though I didn't investigate too
deeply. Once one failure is seen, this often cascades and sometimes
there are many timeouts.
For example, this can happen:
(gdb) compile code var = a->get_var ()
warning: Could not find symbol "_ZZ9_gdb_exprP10__gdb_regsE1a" for compiled module "/tmp/gdbobj-0xdI6U/out2.o".
1 symbols were missing, cannot continue.
I think this is probably a plugin bug because, IIRC, in theory these
symbols should be exempt from a lookup via gdb.
This patch arranges to catch any catastrophic failure and then simply
exit the entire .exp file.
|
|
Add new proc is_x86_64_m64_target and use it where appropriate.
Tested on x86_64-linux.
|
|
This changes skip_shlib_tests to invert the sense, and renames it to
allow_shlib_tests.
|
|
This changes skip_ifunc_tests to invert the sense, and renames it to
allow_ifunc_tests.
|
|
This changes skip_cplus_tests to invert the sense, and renames it to
allow_cplus_tests. This one also converts skip_stl_tests to
allow_stl_tests, as that was convenient to do at the same time.
|
|
This changes some tests to use "require !skip_ifunc_tests".
|
|
This changes some tests to use "require !skip_shlib_tests".
|
|
This changes some tests to use "require !skip_cplus_tests".
|
|
This changes some tests to use "require dwarf2_support".
|
|
This commit is the result of running the gdb/copyright.py script,
which automated the update of the copyright year range for all
source files managed by the GDB project to be updated to include
year 2023.
|
|
PR compile/29541 points out that some of the C++ tests in gdb.compile
will time out when the glibc debuginfo is installed. This was
interfering with my hacking on gdb by making test runs extremely long,
so I looked into it.
Internally the bug seems to be that gdb tries to convert multiple
symbols named "var" via the compiler interface; one such symbol (I
didn't track it down too far) causes the C++ compiler plugin to crash.
Unfortunately, the crash is reported as a timeout, as the gdb side of
the plugin simply hangs. This seems like a bug in the plugin RPC
mechanism and, worse, apparently when I wrote this stuff I didn't
really consider error reporting very much at all, so gdb can't really
detect failures in the first place.
Anyway... this patch works around the timeout by compiling a simple
test that should provoke this bug, and then using "untested" if it
notices a GCC crash.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29541
|
|
I noticed that there are two identical copies of
skip_compile_feature_tests in the test suite. This removes one from
gdb.exp, in favor of the one in compile-support.exp.
|
|
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.
This commit removes all use of the 'then' keyword from the remaining
gdb.*/*.exp scripts. Previous commits have done the bulk of this
removal, this commit just handles the remaining directories that each
contain a low number of instances.
There should be no changes in what is tested after this commit.
|
|
I noticed that the gdb.compile/compile-ops.exp test was failing when
run with Clang as the compiler.
This test makes use of the DWARF assembler, and, it turns out, uses
a technique which is not portable to Clang. This problem is
described in the comment on the function_range proc in lib/dwarf.exp,
the explanation is:
# If the compiler is gcc, we can do the following to get function start
# and end address too:
#
# asm ("func_start: .globl func_start");
# static void func (void) {}
# asm ("func_end: .globl func_end");
#
# however, this isn't portable, because other compilers, such as clang,
# may not guarantee the order of global asms and function. The code
# becomes:
#
# asm ("func_start: .globl func_start");
# asm ("func_end: .globl func_end");
# static void func (void) {}
These start/end labels are used for computing the function start, end,
and length. The portable solution is to place a label within the
function, like this:
# int main (void)
# {
# asm ("main_label: .globl main_label");
# return 0;
# }
And make use of 'proc function_range' (from lib/dwarf.exp).
So, that's what I do in this commit.
One consequence of this change is that we need to compile the source
file, and have it loaded into a GDB session, before calling
function_range, so I've added an early call to prepare_for_testing.
Additionally, this test script was generating the DWARF assembler into
a file called gdbjit-ops.S, I suspect a copy and paste issue there, so
I've switched this to use compile-ops-dbg.S instead, which is more
inline with what other DWARF assembler tests do.
The only other change, which might be a problem, is that I also
deleted these two lines from the source file:
asm (".section \".text\"");
asm (".balign 8");
These lines were setting the alignment of the .text section. What I
don't know is whether this was significant or not. If it is
significant, then I can't see why.
On x86-64, the test still passes fine without these lines, but that
doesn't mean the test wont start failing on some other architecture.
Still, I figure, lets remove them, then, if/when we find a test that
starts failing, we can add the lines back, along with an explanation
for why the extra alignment is required.
But, if people would prefer to be more conservative, then I'm happy to
just add the lines back.
Reviewed-By: Lancelot SIX <lancelot.six@amd.com>
|
|
On openSUSE Tumbleweed I run into this for the dwarf assembly test-cases, and
some hardcoded assembly test-cases:
...
Running gdb.dwarf2/fission-absolute-dwo.exp ...
gdb compile failed, ld: warning: fission-absolute-dwo.o: \
missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future \
version of the linker
=== gdb Summary ===
# of untested testcases 1
...
Fix the dwarf assembly test-cases by adding the missing .note.GNU-stack in
proc Dwarf::assemble.
Fix the hard-coded test-cases using this command:
...
$ for f in $(find gdb/testsuite/gdb.* -name *.S); do
if ! grep -q note.GNU-stack $f; then
echo -e "\t.section\t.note.GNU-stack,\"\",@progbits" >> $f;
fi;
done
...
Likewise for .s files, and gdb/testsuite/lib/my-syscalls.S.
The idiom for arm seems to be to use %progbits instead, see commit 9a5911c08be
("gdb/testsuite/gdb.dwarf2: Replace @ with % for ARM compatability"), so
hand-edit gdb/testsuite/gdb.arch/arm-disp-step.S to use %progbits instead.
Note that dwarf assembly testcases use %progbits as decided by proc _section.
Tested on x86_64-linux.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29674
|
|
It is not necessary to call get_compiler_info before calling
test_compiler_info, and, after recent commits that removed setting up
the gcc_compiled, true, and false globals from get_compiler_info,
there is now no longer any need for any test script to call
get_compiler_info directly.
As a result every call to get_compiler_info outside of lib/gdb.exp is
redundant, and this commit removes them all.
There should be no change in what is tested after this commit.
|
|
This commit brings all the changes made by running gdb/copyright.py
as per GDB's Start of New Year Procedure.
For the avoidance of doubt, all changes in this commits were
performed by the script.
|
|
As follow-up to this discussion:
https://sourceware.org/pipermail/gdb-patches/2020-August/171385.html
... make runto_main not pass no-message to runto. This means that if we
fail to run to main, for some reason, we'll emit a FAIL. This is the
behavior we want the majority of (if not all) the time.
Without this, we rely on tests logging a failure if runto_main fails,
otherwise. They do so in a very inconsisteny mannet, sometimes using
"fail", "unsupported" or "untested". The messages also vary widly.
This patch removes all these messages as well.
Also, remove a few "fail" where we call runto (and not runto_main). by
default (without an explicit no-message argument), runto prints a
failure already. In two places, gdb.multi/multi-re-run.exp and
gdb.python/py-pp-registration.exp, remove "message" passed to runto.
This removes a few PASSes that we don't care about (but FAILs will still
be printed if we fail to run to where we want to). This aligns their
behavior with the rest of the testsuite.
Change-Id: Ib763c98c5f4fb6898886b635210d7c34bd4b9023
|
|
[PATCH] GDB Testsuite, update compile-cplus.exp
Update the gdb.compile/compile-cplus.exp test to
handle errors generated when passing bad arguments
into the gdb-compile command.
This matches changes made to gdb.compile/compile.exp
in the past as part of
"Migrate rest of compile commands to new options framework"
e6ed716cd5514c08b9d7c469d185b1aa177dbc22
|
|
This commits the result of running gdb/copyright.py as per our Start
of New Year procedure...
gdb/ChangeLog
Update copyright year range in copyright header of all GDB files.
|
|
The file lib/dwarf.exp contains:
...
# Declare a global label. This is typically used to refer to
# labels defined in other files, for example a function defined in
# a .c file.
proc extern {args} {
foreach name $args {
_op .global $name
}
}
...
The assembler directive to refer to labels defined in other files is
not .global, but .extern, and that one is ignored by gas.
Since we require gas for all dwarf assembly test-cases, remove the proc and
all it's uses.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2020-07-17 Tom de Vries <tdevries@suse.de>
* lib/dwarf.exp (Dwarf::extern): Remove.
* gdb.compile/compile-ops.exp: Remove use of Dwarf::extern.
* gdb.dlang/circular.exp: Same.
* gdb.dwarf2/comp-unit-lang.exp: Same.
* gdb.dwarf2/dw2-ifort-parameter.exp: Same.
* gdb.dwarf2/dw2-symtab-includes.exp: Same.
* gdb.dwarf2/dwz.exp: Same.
* gdb.dwarf2/imported-unit-abstract-const-value.exp: Same.
* gdb.dwarf2/imported-unit-runto-main.exp: Same.
* gdb.dwarf2/imported-unit.exp: Same.
* gdb.dwarf2/opaque-type-lookup.exp: Same.
|
|
Some testcases want to compile .c files with a C++ compiler. So they
pass the "c++" option to gdb_compile. That works fine with GCC, but
with Clang, it results in:
gdb compile failed, clang-5.0: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
and the testcase is skipped with UNTESTED.
A previous patch fixed a case like that in
gdb.compile/compile-cplus.exp, by adding -Wno-deprecated to the build
options. However, there are other testcases that use the same
pattern, and all fail for the same reason. For example:
gdb.base/info-types-c++.exp
gdb.base/max-depth-c++.exp
gdb.base/msym-lang.exp
gdb.base/whatis-ptype-typedefs.exp
gdb.btrace/rn-dl-bind.exp
Fix this in a central place, within gdb_compile, by passing "-x c++"
to the compiler driver when we're compiling/linking C++.
This revealed that gdb.compile/compile-cplus.exp and
gdb.arch/amd64-entry-value-paramref.exp tests are compiling an
assembly file with the "c++" option, which would now fail to compile,
with the C++ compiler not grokking the assembly, of course. We just
need to not pass "c++" and all the other related C++ options when
compiling an assembly file.
gdb/testsuite/ChangeLog:
2020-06-24 Pedro Alves <palves@redhat.com>
* gdb.arch/amd64-entry-value-paramref.exp: Use
prepare_for_testing_full and don't pass "c++" for the .S file
build spec.
* gdb.compile/compile-cplus.exp: Don't compile $srcfile3 with
$options, since it's an assembly file. Remove -Wno-deprecated.
* lib/gdb.exp (gdb_compile): Pass "-x c++" explicitly when
compiling C++ programs.
|
|
Clang fails to compile the file, with the following error:
fatal error: 'iostream' file not found
This prevents the following testcase from executing:
gdb.compile/compile-cplus.exp
The testcase sets additional_flags when building with GCC, which
this commit causes to also be set when building with clang. This
makes the testcase fail to build with a different error:
warning: treating 'c' input as 'c++' when in C++ mode, this behavior
is deprecated [-Wdeprecated]
so this commit adds -Wno-deprecated in two places to sidestep this.
Note that, while allowing the testcase to build, this commit reveals
failures when the testsuite is built using clang.
gdb/testsuite/ChangeLog:
* gdb.compile/compile-cplus.exp (additional_flags): Also
set when building with clang.
(additional_flags, srcfilesoptions): Pass -Wno-deprecated
when building with clang.
|
|
Consider the following test-case:
...
$ cat 1.c
typedef int (*final_t) (int arg);
int final (int arg)
{ return arg + 1; }
final_t gnu_ifunc (void)
{ return final; }
int gnu_ifunc_alias (int) __attribute__ ((ifunc ("gnu_ifunc")));
int main (void)
{ return gnu_ifunc_alias (10); }
...
with result:
...
$ gcc 1.c
$ ./a.out; echo $?
11
...
The test-case uses the ifunc attribute, but there's another solution using
%gnu_indirect_function. Consider 2.c and 3.c:
...
$ cat 2.c
typedef int (*final_t) (int arg);
int final (int arg)
{ return arg + 1; }
asm (".type gnu_ifunc, %gnu_indirect_function");
final_t gnu_ifunc (void)
{ return final; }
$ cat 3.c
extern int gnu_ifunc (int);
int main (void)
{ return gnu_ifunc (10); }
...
However, it can be inconvenient to have seperate files for the incompatible
decls of gnu_ifunc, so we can use this in a single file like this:
...
$ cat 4.c
typedef int (*final_t) (int arg);
int final (int arg)
{ return arg + 1; }
asm (".type gnu_ifunc, %gnu_indirect_function");
final_t gnu_ifunc (void)
{ return final; }
extern int gnu_ifunc_alias (int arg) __attribute__ ((alias ("gnu_ifunc")));
int main (void)
{ return gnu_ifunc_alias (10); }
...
This alias trick works ok at -O0, but not at -O2:
...
$ gcc 4.c
$ ./a.out; echo $?
11
$ gcc 4.c
$ ./a.out; echo $?
176
...
and produces a warning with gcc-8 and later:
...
$ gcc-8 4.c
4.c:7:12: warning: 'gnu_ifunc_alias' alias between functions of incompatible \
types 'int(int)' and 'int (*(void))(int)' [-Wattribute-alias]
extern int gnu_ifunc_alias (int arg) __attribute__ ((alias ("gnu_ifunc")));
^~~~~~~~~~~~~~~
4.c:5:9: note: aliased declaration here
final_t gnu_ifunc (void)
^~~~~~~~~
...
The warning is correct, but the mismatch is intentional.
The last variant (%gnu_indirect_function + alias) is used in
gdb.compile/compile-ifunc.c, so we run into the warning with recent gcc.
Fix the warning by compiling with -Wno-attribute-alias.
Tested the test-case on x86_64-linux with gcc-10, and observed I no longer see
the warning:
...
Running src/gdb/testsuite/gdb.compile/compile-ifunc.exp ...
=== gdb Summary ===
nr of untested testcases 1
...
gdb/testsuite/ChangeLog:
2020-05-06 Tom de Vries <tdevries@suse.de>
* gdb.compile/compile-ifunc.exp: Use -Wno-attribute-alias.
|
|
GCC accepts the "i" suffix for complex numbers. I think this is nicer
to read than the current output, so this patch changes the C code to
print complex numbers this way.
gdb/ChangeLog
2020-04-01 Tom Tromey <tom@tromey.com>
* c-valprint.c (c_decorations): Change complex suffix to "i".
gdb/testsuite/ChangeLog
2020-04-01 Tom Tromey <tom@tromey.com>
* gdb.compile/compile.exp: Update.
* gdb.compile/compile-cplus.exp: Update.
* gdb.base/varargs.exp: Update.
* gdb.base/floatn.exp: Update.
* gdb.base/endianity.exp: Update.
* gdb.base/callfuncs.exp (do_function_calls): Update.
* gdb.base/funcargs.exp (complex_args, complex_integral_args)
(complex_float_integral_args): Update.
* gdb.base/complex.exp: Update.
* gdb.base/complex-parts.exp: Update.
|
|
gdb/ChangeLog:
Update copyright year range in all GDB files.
|
|
As I was in the neighbourhood, I converted the other "compile"
subcommands to the new options framework too. Specifically, "compile
code" and "compile file".
The user-visible changes are:
- All abbreviations of "-raw" are accepted now, instead of just -r.
Obviously that means "-ra" is now accepted.
- Option completion now works.
- "compile file" did not have a completer yet, and now it knows to
complete on filenames.
- You couldn't use "compile file" with a file named "-something".
You can now, with "compile file -- -something".
gdb/ChangeLog:
2019-06-13 Pedro Alves <palves@redhat.com>
* compile/compile.c (struct compile_options): New.
(compile_flag_option_def, compile_command_option_defs)
(make_compile_options_def_group): New.
(compile_file_command): Handle options with
gdb::option::process_options.
(compile_file_command_completer): New function.
(compile_code_command): Handle options with
gdb::option::process_options.
(compile_code_command_completer): New function.
(_initialize_compiler): Install completers for "compile code" and
"compile file". Mention available options in "compile code" and
"compile code"'s help.
* completer.c (advance_to_completion_word): New, factored out from
...
(advance_to_expression_complete_word_point): ... this.
(advance_to_filename_complete_word_point): New.
* completer.h (advance_to_filename_complete_word_point): New
declaration.
gdb/testsuite/ChangeLog:
2019-06-13 Pedro Alves <palves@redhat.com>
* gdb.compile/compile.exp: Adjust expected output to option
processing changes.
|
|
When building gdb on ubuntu 16.04 with gcc 5.4.0, and running the gdb
testsuite we run into failures due test-cases requiring at least c++1.
Fix this by adding -std=c++11 to those test-cases.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2019-05-21 Tom de Vries <tdevries@suse.de>
* gdb.arch/amd64-eval.exp: Require c++11.
* gdb.base/max-depth.exp: Same.
* gdb.compile/compile-cplus-array-decay.exp: Same.
* gdb.cp/meth-typedefs.exp: Same.
* gdb.cp/subtypes.exp: Same.
* gdb.cp/temargs.exp: Same.
|
|
This commit applies all changes made after running the gdb/copyright.py
script.
Note that one file was flagged by the script, due to an invalid
copyright header
(gdb/unittests/basic_string_view/element_access/char/empty.cc).
As the file was copied from GCC's libstdc++-v3 testsuite, this commit
leaves this file untouched for the time being; a patch to fix the header
was sent to gcc-patches first.
gdb/ChangeLog:
Update copyright year range in all GDB files.
|
|
skip_compile_feature_tests is only valid if the inferior has already
been started (see proc comments). Move the runto_main earlier.
2018-10-18 Alan Hayward <alan.hayward@arm.com>
* gdb.compile/compile-cplus-print.exp: Start inferior earlier.
|
|
2018-10-03 Sandra Loosemore <sandra@codesourcery.com>
* lib/gdb.exp (skip_ifunc_tests): New.
* gdb.base/gnu-ifunc.exp: Skip if no ifunc support. Handle
other compile failures.
* gdb.compile/compile-ifunc.exp: Skip if no ifunc support.
|
|
This patch adds *basic* support for C++ to the compile feature. It does
most simple type conversions, including everything that C compile does and
your basic "with-classes" type of C++.
I've written a new compile-support.exp support file which adds a new test
facility for automating and simplifying "compile print" vs "compile code"
testing. See testsuite/lib/compile-support.exp and CompileExpression
for more on that. The tests use this facility extensively.
This initial support has several glaring omissions:
- No template support at all
I have follow-on patches for this, but they add much complexity
to this "basic" support. Consequently, they will be submitted separately.
- Cannot print functions
The code template needs tweaking, and I simply haven't gotten to it yet.
- So-called "special function" support is not included
Using constructors, destructors, operators, etc will not work. I have
follow-on patches for that, but they require some work because of the
recent churn in symbol searching.
- There are several test suite references to "compile/1234" bugs.
I will file bugs and update the test suite's bug references before pushing
these patches.
The test suite started as a copy of the original C-language support, but
I have written tests to exercise the basic functionality of the plug-in.
I've added a new option for outputting debug messages for C++ type-conversion
("debug compile-cplus-types").
gdb/ChangeLog:
* Makefile.in (SUBDIR_GCC_COMPILE_SRCS): Add compile-cplus-symbols.c
and compile-cplus-types.c.
(HFILES_NO_SRCDIR): Add gcc-cp-plugin.h.
* c-lang.c (cplus_language_defn): Set C++ compile functions.
* c-lang.h (cplus_get_compile_context, cplus_compute_program):
Declare.
* compile/compile-c-support.c: Include compile-cplus.h.
(load_libcompile): Templatize.
(get_compile_context): "New" function.
(c_get_compile_context): Use get_compile_context.
(cplus_get_compile_context): New function.
(cplus_push_user_expression, cplus_pop_user_expression)
(cplus_add_code_header, cplus_add_input, cplus_compile_program)
(cplus_compute_program): Define new structs/functions.
* compile/compile-cplus-symmbols.c: New file.
* compile/compile-cplus-types.c: New file.
* compile/compile-cplus.h: New file.
* compile/compile-internal.h (debug_compile_oracle, GCC_TYPE_NONE):
Declare.
* compile/compile-object-load.c (get_out_value_type): Use
strncmp_iw when comparing symbol names.
(compile_object_load): Add mst_bss and mst_data.
* compile/compile.c (_initialize_compile): Remove
-Wno-implicit-function-declaration from `compile_args'.
* compile/gcc-cp-plugin.h: New file.
* NEWS: Mention C++ compile support and new debug options.
gdb/testsuite/ChangeLog:
* gdb.compile/compile-cplus-anonymous.cc: New file.
* gdb.compile/compile-cplus-anonymous.exp: New file.
* gdb.compile/compile-cplus-array-decay.cc: New file.
* gdb.compile/compile-cplus-array-decay.exp: New file.
* gdb.compile/compile-cplus-inherit.cc: New file.
* gdb.compile/compile-cplus-inherit.exp: New file.
* gdb.compile/compile-cplus-member.cc: New file.
* gdb.compile/compile-cplus-member.exp: New file.
* gdb.compile/compile-cplus-method.cc: New file.
* gdb.compile/compile-cplus-method.exp: New file.
* gdb.compile/compile-cplus-mod.c: "New" file.
* gdb.compile/compile-cplus-namespace.cc: New file.
* gdb.compile/compile-cplus-namespace.exp: New file.
* gdb.compile/compile-cplus-nested.cc: New file.
* gdb.compile/compile-cplus-nested.exp: New file.
* gdb.compile/compile-cplus-print.c: "New" file.
* gdb.compile/compile-cplus-print.exp: "New" file.
* gdb.compile/compile-cplus-virtual.cc: New file.
* gdb.compile/compile-cplus-virtual.exp: New file.
* gdb.compile/compile-cplus.c: "New" file.
* gdb.compile/compile-cplus.exp: "New" file.
* lib/compile-support.exp: New file.
doc/ChangeLog:
* gdb.texinfo (Compiling and injecting code in GDB): Document
set/show "compile-oracle" and "compile-cplus-types" commands.
|
|
There is a small think-o in compile.exp:
if { $srcfile3 != "" } {
gdb_test "p constvar" " = 3"
gdb_test "info addr constvar" {Symbol "constvar" is constant\.}
gdb_test "compile code globalvar = constvar;"; # INCORRECT
gdb_test "print globalvar" " = 3" "print constvar value"
} else {
untested "print constvar value"
}
The line marked INCORRECT runs a simple "compile code" which is expected
to succeed. When this happens, the compile plug-in and GDB will not
output anything. The use of gdb_test matches against anything.
This is certainly not the intent, and this patch corrects the two instances
of this in the file. [The rest of gdb.compile looks okay.]
testsuite/ChangeLog:
* gdb.compile/compile.exp: Use gdb_test_no_output for "compile code"
tests expected to pass.
|
|
After the previous patch, on Fedora 27 (glibc 2.26), if you try
calling strlen in the inferior, you now get:
(top-gdb) p strlen ("hello")
'__strlen_avx2' has unknown return type; cast the call to its declared return type
This is correct, because __strlen_avx2 is written in assembly.
We can improve on this though -- if the final ifunc resolved/target
function has no debug info, but the ifunc _resolver_ does have debug
info, we can try extracting the final function's type from the type
that the resolver returns. E.g.,:
typedef size_t (*strlen_t) (const char*);
size_t my_strlen (const char *) { /* some implementation */ }
strlen_t strlen_resolver (unsigned long hwcap) { return my_strlen; }
extern size_t strlen (const char *s);
__typeof (strlen) strlen __attribute__ ((ifunc ("strlen_resolver")));
In the strlen example above, the resolver returns strlen_t, which is a
typedef for pointer to a function that returns size_t. "strlen_t" is
the type of both the user-visible "strlen", and of the the target
function that implements it.
This patch teaches GDB to extract that type.
This is done for actual inferior function calls (in infcall.c), and
for ptype (in eval_call). By the time we get to either of these
places, we've already lost the original symbol/minsym, and only have
values and types to work with. Hence the changes to c-exp.y and
evaluate_var_msym_value, to ensure that we propagate the ifunc
minsymbol's info.
The change to make ifunc symbols have no/unknown return type exposes a
latent problem -- gdb.compile/compile-ifunc.exp calls a no-debug-info
function, but we did not warn about it. The test is fixed by this
commit too.
gdb/ChangeLog:
2018-04-26 Pedro Alves <palves@redhat.com>
* blockframe.c (find_gnu_ifunc_target_type): New function.
(find_function_type): New.
* eval.c (evaluate_var_msym_value): For GNU ifunc types, always
return a value with a memory address.
(eval_call): For calls to GNU ifunc functions, try to find the
type of the target function from the type that the resolver
returns.
* gdbtypes.c (objfile_type): Don't install a return type for ifunc
symbols.
* infcall.c (find_function_return_type): Delete.
(find_function_addr): Add 'function_type' parameter. For calls to
GNU ifunc functions, try to find the type of the target function
from the type that the resolver returns, and return it via
FUNCTION_TYPE.
(call_function_by_hand_dummy): Adjust to use the function type
returned by find_function_addr.
(find_function_addr): Add 'function_type' parameter and move
description here.
* symtab.h (find_function_type, find_gnu_ifunc_target_type): New
declarations.
gdb/testsuite/ChangeLog:
2018-04-26 Pedro Alves <palves@redhat.com>
* gdb.compile/compile-ifunc.exp: Also expect "function has unknown
return type" warnings.
|
|
One test in gdb.compile/compile.exp passes on one fedora builder,
bt
#0 0x00007ffff7ff43f6 in _gdb_expr (__regs=0x7ffff7ff2000) at gdb
command line:1^M
#1 <function called from gdb>^M
#2 main () at /home/gdb-buildbot/fedora-x86-64-1/fedora-x86-64/build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.compile/compile.c:106^M
(gdb) PASS: gdb.compile/compile.exp: bt
but fails on my machine with gcc trunk,
bt^M
#0 _gdb_expr (__regs=0x7ffff7ff3000) at gdb command line:1^M
#1 <function called from gdb>^M
#2 main () at gdb/testsuite/gdb.compile/compile.c:106^M
(gdb) FAIL: gdb.compile/compile.exp: bt
The test should be tweaked to match both cases (pc in the start of line
vs pc in the middle of line). Note that I am not clear that why libcc1
emits debug info this way so that the address is in the middle of line.
gdb/testsuite:
2018-01-17 Yao Qi <yao.qi@linaro.org>
* gdb.compile/compile.exp: Match the address printed for
frame in the output of command "bt".
|
|
gdb/ChangeLog:
Update copyright year range in all GDB files
|
|
An earlier commit made GDB no longer assume no-debug-info functions
return int. This commit gives the same treatment to variables.
Currently, you can end misled by GDB over output like this:
(gdb) p var
$1 = -1
(gdb) p /x var
$2 = 0xffffffff
until you realize that GDB is assuming that the variable is an "int",
because:
(gdb) ptype var
type = <data variable, no debug info>
You may try to fix it by casting, but that doesn't really help:
(gdb) p /x (unsigned long long) var
$3 = 0xffffffffffffffff # incorrect
^^
That's incorrect output, because the variable was defined like this:
uint64_t var = 0x7fffffffffffffff;
^^
What happened is that with the cast, GDB did an int -> 'unsigned long
long' conversion instead of reinterpreting the variable as the cast-to
type. To get at the variable properly you have to reinterpret the
variable's address manually instead, with either:
(gdb) p /x *(unsigned long long *) &var
$4 = 0x7fffffffffffffff
(gdb) p /x {unsigned long long} &var
$5 = 0x7fffffffffffffff
After this commit GDB does it for you. This is what you'll get
instead:
(gdb) p var
'var' has unknown type; cast it to its declared type
(gdb) p /x (unsigned long long) var
$1 = 0x7fffffffffffffff
As in the functions patch, the "compile" machinery doesn't currently
have the cast-to type handy, so it continues assuming no-debug
variables have int type, though now at least it warns.
The change to gdb.cp/m-static.exp deserves an explanation:
- gdb_test "print 'gnu_obj_1::method()::sintvar'" "\\$\[0-9\]+ = 4" \
+ gdb_test "print (int) 'gnu_obj_1::method()::sintvar'" "\\$\[0-9\]+ = 4" \
That's printing the "sintvar" function local static of the
"gnu_obj_1::method()" method.
The problem with that test is that that "'S::method()::static_var'"
syntax doesn't really work in C++ as you'd expect. The way to make it
work correctly currently is to quote the method part, not the whole
expression, like:
(gdb) print 'gnu_obj_1::method()'::sintvar
If you wrap the whole expression in quotes, like in m-static.exp, what
really happens is that the parser considers the whole string as a
symbol name, but there's no debug symbol with that name. However,
local statics have linkage and are given a mangled name that demangles
to the same string as the full expression, so that's what GDB prints.
After this commit, and without the cast, the print in m-static.exp
would error out saying that the variable has unknown type:
(gdb) p 'gnu_obj_1::method()::sintvar'
'gnu_obj_1::method()::sintvar' has unknown type; cast it to its declared type
TBC, if currently (even before this series) you try to print any
function local static variable of type other than int, you'll get
bogus results. You can see that with m-static.cc as is, even.
Printing the "svar" local, which is a boolean (1 byte) still prints as
"int" (4 bytes):
(gdb) p 'gnu_obj_1::method()::svar'
$1 = 1
(gdb) ptype 'gnu_obj_1::method()::svar'
type = <data variable, no debug info>
This probably prints some random bogus value on big endian machines.
If 'svar' was of some aggregate type (etc.) we'd still print it as
int, so the problem would have been more obvious... After this
commit, you'll get instead:
(gdb) p 'gnu_obj_1::method()::svar'
'gnu_obj_1::method()::svar' has unknown type; cast it to its declared type
... so at least GDB is no longer misleading. Making GDB find the real
local static debug symbol is the subject of the following patches. In
the end, it'll all "Just Work".
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ax-gdb.c: Include "typeprint.h".
(gen_expr_for_cast): New function.
(gen_expr) <OP_CAST, OP_CAST_TYPE>: Use it.
<OP_VAR_VALUE, OP_MSYM_VAR_VALUE>: Error out if the variable's
type is unknown.
* dwarf2read.c (new_symbol_full): Fallback to int instead of
nodebug_data_symbol.
* eval.c: Include "typeprint.h".
(evaluate_subexp_standard) <OP_VAR_VALUE, OP_VAR_MSYM_VALUE>:
Error out if symbol has unknown type.
<UNOP_CAST, UNOP_CAST_TYPE>: Common bits factored out to
evaluate_subexp_for_cast.
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof): Handle
OP_VAR_MSYM_VALUE.
(evaluate_subexp_for_cast): New function.
* gdbtypes.c (init_nodebug_var_type): New function.
(objfile_type): Use it to initialize types of variables with no
debug info.
* typeprint.c (error_unknown_type): New.
* typeprint.h (error_unknown_type): New declaration.
* compile/compile-c-types.c (convert_type_basic): Handle
TYPE_CODE_ERROR; warn and fallback to int for variables with
unknown type.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.asm/asm-source.exp: Add casts to int.
* gdb.base/nodebug.c (dataglobal8, dataglobal32_1, dataglobal32_2)
(dataglobal64_1, dataglobal64_2): New globals.
* gdb.base/nodebug.exp: Test different expressions involving the
new globals, with print, whatis and ptype. Add casts to int.
* gdb.base/solib-display.exp: Add casts to int.
* gdb.compile/compile-ifunc.exp: Expect warning. Add cast to int.
* gdb.cp/m-static.exp: Add cast to int.
* gdb.dwarf2/dw2-skip-prologue.exp: Add cast to int.
* gdb.threads/tls-nodebug.exp: Check that gdb errors out printing
tls variable with no debug info without a cast. Test with a cast
to int too.
* gdb.trace/entry-values.exp: Add casts.
|
|
The fact that GDB defaults to assuming that functions return int, when
it has no debug info for the function has been a recurring source of
user confusion. Recently this came up on the errno pretty printer
discussions. Shortly after, it came up again on IRC, with someone
wondering why does getenv() in GDB return a negative int:
(gdb) p getenv("PATH")
$1 = -6185
This question (with s/getenv/random-other-C-runtime-function) is a FAQ
on IRC.
The reason for the above is:
(gdb) p getenv
$2 = {<text variable, no debug info>} 0x7ffff7751d80 <getenv>
(gdb) ptype getenv
type = int ()
... which means that GDB truncated the 64-bit pointer that is actually
returned from getent to 32-bit, and then sign-extended it:
(gdb) p /x -6185
$6 = 0xffffe7d7
The workaround is to cast the function to the right type, like:
(gdb) p ((char *(*) (const char *)) getenv) ("PATH")
$3 = 0x7fffffffe7d7 "/usr/local/bin:/"...
IMO, we should do better than this.
I see the "assume-int" issue the same way I see printing bogus values
for optimized-out variables instead of "<optimized out>" -- I'd much
rather that the debugger tells me "I don't know" and tells me how to
fix it than showing me bogus misleading results, making me go around
tilting at windmills.
If GDB prints a signed integer when you're expecting a pointer or
aggregate, you at least have some sense that something is off, but
consider the case of the function actually returning a 64-bit integer.
For example, compile this without debug info:
unsigned long long
function ()
{
return 0x7fffffffffffffff;
}
Currently, with pristine GDB, you get:
(gdb) p function ()
$1 = -1 # incorrect
(gdb) p /x function ()
$2 = 0xffffffff # incorrect
maybe after spending a few hours debugging you suspect something is
wrong with that -1, and do:
(gdb) ptype function
type = int ()
and maybe, just maybe, you realize that the function actually returns
unsigned long long. And you try to fix it with:
(gdb) p /x (unsigned long long) function ()
$3 = 0xffffffffffffffff # incorrect
... which still produces the wrong result, because GDB simply applied
int to unsigned long long conversion. Meaning, it sign-extended the
integer that it extracted from the return of the function, to 64-bits.
and then maybe, after asking around on IRC, you realize you have to
cast the function to a pointer of the right type, and call that. It
won't be easy, but after a few missteps, you'll get to it:
..... (gdb) p /x ((unsigned long long(*) ()) function) ()
$666 = 0x7fffffffffffffff # finally! :-)
So to improve on the user experience, this patch does the following
(interrelated) things:
- makes no-debug-info functions no longer default to "int" as return
type. Instead, they're left with NULL/"<unknown return type>"
return type.
(gdb) ptype getenv
type = <unknown return type> ()
- makes calling a function with unknown return type an error.
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
- and then to make it easier to call the function, makes it possible
to _only_ cast the return of the function to the right type,
instead of having to cast the function to a function pointer:
(gdb) p (char *) getenv ("PATH") # now Just Works
$3 = 0x7fffffffe7d7 "/usr/local/bin:/"...
(gdb) p ((char *(*) (const char *)) getenv) ("PATH") # continues working
$4 = 0x7fffffffe7d7 "/usr/local/bin:/"...
I.e., it makes GDB default the function's return type to the type
of the cast, and the function's parameters to the type of the
arguments passed down.
After this patch, here's what you'll get for the "unsigned long long"
example above:
(gdb) p function ()
'function' has unknown return type; cast the call to its declared return type
(gdb) p /x (unsigned long long) function ()
$4 = 0x7fffffffffffffff # correct!
Note that while with "print" GDB shows the name of the function that
has the problem:
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
which can by handy in more complicated expressions, "ptype" does not:
(gdb) ptype getenv ("PATH")
function has unknown return type; cast the call to its declared return type
This will be fixed in the next patch.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_evaluate_subexp) <TYPE_CODE_FUNC>: Don't handle
TYPE_GNU_IFUNC specially here. Throw error if return type is
unknown.
* ada-typeprint.c (print_func_type): Handle functions with unknown
return type.
* c-typeprint.c (c_type_print_base): Handle functions and methods
with unknown return type.
* compile/compile-c-symbols.c (convert_symbol_bmsym)
<mst_text_gnu_ifunc>: Use nodebug_text_gnu_ifunc_symbol.
* compile/compile-c-types.c: Include "objfiles.h".
(convert_func): For functions with unknown return type, warn and
default to int.
* compile/compile-object-run.c (compile_object_run): Adjust call
to call_function_by_hand_dummy.
* elfread.c (elf_gnu_ifunc_resolve_addr): Adjust call to
call_function_by_hand.
* eval.c (evaluate_subexp_standard): Adjust calls to
call_function_by_hand. Handle functions and methods with unknown
return type. Pass expect_type to call_function_by_hand.
* f-typeprint.c (f_type_print_base): Handle functions with unknown
return type.
* gcore.c (call_target_sbrk): Adjust call to
call_function_by_hand.
* gdbtypes.c (objfile_type): Leave nodebug text symbol with NULL
return type instead of int. Make nodebug_text_gnu_ifunc_symbol be
an integer address type instead of nodebug.
* guile/scm-value.c (gdbscm_value_call): Adjust call to
call_function_by_hand.
* infcall.c (error_call_unknown_return_type): New function.
(call_function_by_hand): New "default_return_type" parameter.
Pass it down.
(call_function_by_hand_dummy): New "default_return_type"
parameter. Use it instead of defaulting to int. If there's no
default and the return type is unknown, throw an error. If
there's a default return type, and the called function has no
debug info, then assume the function is prototyped.
* infcall.h (call_function_by_hand, call_function_by_hand_dummy):
New "default_return_type" parameter.
(error_call_unknown_return_type): New declaration.
* linux-fork.c (call_lseek): Cast return type of lseek.
(inferior_call_waitpid, checkpoint_command): Adjust calls to
call_function_by_hand.
* linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap): Adjust
calls to call_function_by_hand.
* m2-typeprint.c (m2_procedure): Handle functions with unknown
return type.
* objc-lang.c (lookup_objc_class, lookup_child_selector)
(value_nsstring, print_object_command): Adjust calls to
call_function_by_hand.
* p-typeprint.c (pascal_type_print_varspec_prefix): Handle
functions with unknown return type.
(pascal_type_print_func_varspec_suffix): New function.
(pascal_type_print_varspec_suffix) <TYPE_CODE_FUNC,
TYPE_CODE_METHOD>: Use it.
* python/py-value.c (valpy_call): Adjust call to
call_function_by_hand.
* rust-lang.c (rust_evaluate_funcall): Adjust call to
call_function_by_hand.
* valarith.c (value_x_binop, value_x_unop): Adjust calls to
call_function_by_hand.
* valops.c (value_allocate_space_in_inferior): Adjust call to
call_function_by_hand.
* typeprint.c (type_print_unknown_return_type): New function.
* typeprint.h (type_print_unknown_return_type): New declaration.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/break-main-file-remove-fail.exp (test_remove_bp): Cast
return type of munmap in infcall.
* gdb.base/break-probes.exp: Cast return type of foo in infcall.
* gdb.base/checkpoint.exp: Simplify using for loop. Cast return
type of ftell in infcall.
* gdb.base/dprintf-detach.exp (dprintf_detach_test): Cast return
type of getpid in infcall.
* gdb.base/infcall-exec.exp: Cast return type of execlp in
infcall.
* gdb.base/info-os.exp: Cast return type of getpid in infcall.
Bail on failure to extract the pid.
* gdb.base/nodebug.c: #include <stdint.h>.
(multf, multf_noproto, mult, mult_noproto, add8, add8_noproto):
New functions.
* gdb.base/nodebug.exp (test_call_promotion): New procedure.
Change expected output of print/whatis/ptype with functions with
no debug info. Test all supported languages. Call
test_call_promotion.
* gdb.compile/compile.exp: Adjust expected output to expect
warning.
* gdb.threads/siginfo-threads.exp: Likewise.
|
|
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.
gdb/ChangeLog:
Update copyright year range in all GDB files.
|
|
I noticed more occurrences of improper test names. The rather mechanical,
tedious and large patch below addresses, hopefully, most of the leftover cases.
As usual, another pair of eyes is welcome to check if missed something or did
an invalid substitution.
This patch also fixes the prepare_for_testing calls to pass proper test names.
gdb/testsuite/ChangeLog:
2016-12-23 Luis Machado <lgustavo@codesourcery.com>
Fix test names for the following files:
* gdb.ada/exec_changed.exp
* gdb.ada/info_types.exp
* gdb.arch/aarch64-atomic-inst.exp
* gdb.arch/aarch64-fp.exp
* gdb.arch/altivec-abi.exp
* gdb.arch/altivec-regs.exp
* gdb.arch/amd64-byte.exp
* gdb.arch/amd64-disp-step.exp
* gdb.arch/amd64-dword.exp
* gdb.arch/amd64-entry-value-inline.exp
* gdb.arch/amd64-entry-value-param.exp
* gdb.arch/amd64-entry-value-paramref.exp
* gdb.arch/amd64-entry-value.exp
* gdb.arch/amd64-i386-address.exp
* gdb.arch/amd64-invalid-stack-middle.exp
* gdb.arch/amd64-invalid-stack-top.exp
* gdb.arch/amd64-optimout-repeat.exp
* gdb.arch/amd64-prologue-skip.exp
* gdb.arch/amd64-prologue-xmm.exp
* gdb.arch/amd64-stap-special-operands.exp
* gdb.arch/amd64-stap-wrong-subexp.exp
* gdb.arch/amd64-tailcall-cxx.exp
* gdb.arch/amd64-tailcall-noret.exp
* gdb.arch/amd64-tailcall-ret.exp
* gdb.arch/amd64-tailcall-self.exp
* gdb.arch/amd64-word.exp
* gdb.arch/arm-bl-branch-dest.exp
* gdb.arch/arm-disp-step.exp
* gdb.arch/arm-neon.exp
* gdb.arch/arm-single-step-kernel-helper.exp
* gdb.arch/avr-flash-qualifier.exp
* gdb.arch/disp-step-insn-reloc.exp
* gdb.arch/e500-abi.exp
* gdb.arch/e500-regs.exp
* gdb.arch/ftrace-insn-reloc.exp
* gdb.arch/i386-avx512.exp
* gdb.arch/i386-bp_permanent.exp
* gdb.arch/i386-byte.exp
* gdb.arch/i386-cfi-notcurrent.exp
* gdb.arch/i386-disp-step.exp
* gdb.arch/i386-dr3-watch.exp
* gdb.arch/i386-float.exp
* gdb.arch/i386-gnu-cfi.exp
* gdb.arch/i386-mpx-map.exp
* gdb.arch/i386-mpx-sigsegv.exp
* gdb.arch/i386-mpx-simple_segv.exp
* gdb.arch/i386-mpx.exp
* gdb.arch/i386-permbkpt.exp
* gdb.arch/i386-prologue.exp
* gdb.arch/i386-signal.exp
* gdb.arch/i386-size-overlap.exp
* gdb.arch/i386-unwind.exp
* gdb.arch/i386-word.exp
* gdb.arch/mips-fcr.exp
* gdb.arch/powerpc-d128-regs.exp
* gdb.arch/powerpc-stackless.exp
* gdb.arch/ppc64-atomic-inst.exp
* gdb.arch/s390-stackless.exp
* gdb.arch/s390-tdbregs.exp
* gdb.arch/s390-vregs.exp
* gdb.arch/sparc-sysstep.exp
* gdb.arch/thumb-bx-pc.exp
* gdb.arch/thumb-singlestep.exp
* gdb.arch/thumb2-it.exp
* gdb.arch/vsx-regs.exp
* gdb.asm/asm-source.exp
* gdb.base/a2-run.exp
* gdb.base/advance.exp
* gdb.base/all-bin.exp
* gdb.base/anon.exp
* gdb.base/args.exp
* gdb.base/arithmet.exp
* gdb.base/async-shell.exp
* gdb.base/async.exp
* gdb.base/attach-pie-noexec.exp
* gdb.base/attach-twice.exp
* gdb.base/auto-load.exp
* gdb.base/bang.exp
* gdb.base/bitfields.exp
* gdb.base/break-always.exp
* gdb.base/break-caller-line.exp
* gdb.base/break-entry.exp
* gdb.base/break-inline.exp
* gdb.base/break-on-linker-gcd-function.exp
* gdb.base/break-probes.exp
* gdb.base/break.exp
* gdb.base/breakpoint-shadow.exp
* gdb.base/call-ar-st.exp
* gdb.base/call-sc.exp
* gdb.base/call-signal-resume.exp
* gdb.base/call-strs.exp
* gdb.base/callfuncs.exp
* gdb.base/catch-fork-static.exp
* gdb.base/catch-gdb-caused-signals.exp
* gdb.base/catch-load.exp
* gdb.base/catch-signal-fork.exp
* gdb.base/catch-signal.exp
* gdb.base/catch-syscall.exp
* gdb.base/charset.exp
* gdb.base/checkpoint.exp
* gdb.base/chng-syms.exp
* gdb.base/code-expr.exp
* gdb.base/code_elim.exp
* gdb.base/commands.exp
* gdb.base/completion.exp
* gdb.base/complex.exp
* gdb.base/cond-expr.exp
* gdb.base/condbreak.exp
* gdb.base/consecutive.exp
* gdb.base/continue-all-already-running.exp
* gdb.base/coredump-filter.exp
* gdb.base/corefile.exp
* gdb.base/dbx.exp
* gdb.base/debug-expr.exp
* gdb.base/define.exp
* gdb.base/del.exp
* gdb.base/disabled-location.exp
* gdb.base/disasm-end-cu.exp
* gdb.base/disasm-optim.exp
* gdb.base/display.exp
* gdb.base/duplicate-bp.exp
* gdb.base/ena-dis-br.exp
* gdb.base/ending-run.exp
* gdb.base/enumval.exp
* gdb.base/environ.exp
* gdb.base/eu-strip-infcall.exp
* gdb.base/eval-avoid-side-effects.exp
* gdb.base/eval-skip.exp
* gdb.base/exitsignal.exp
* gdb.base/expand-psymtabs.exp
* gdb.base/filesym.exp
* gdb.base/find-unmapped.exp
* gdb.base/finish.exp
* gdb.base/float.exp
* gdb.base/foll-exec-mode.exp
* gdb.base/foll-exec.exp
* gdb.base/foll-fork.exp
* gdb.base/fortran-sym-case.exp
* gdb.base/freebpcmd.exp
* gdb.base/func-ptr.exp
* gdb.base/func-ptrs.exp
* gdb.base/funcargs.exp
* gdb.base/gcore-buffer-overflow.exp
* gdb.base/gcore-relro-pie.exp
* gdb.base/gcore-relro.exp
* gdb.base/gcore.exp
* gdb.base/gdb1090.exp
* gdb.base/gdb11530.exp
* gdb.base/gdb11531.exp
* gdb.base/gdb1821.exp
* gdb.base/gdbindex-stabs.exp
* gdb.base/gdbvars.exp
* gdb.base/hbreak.exp
* gdb.base/hbreak2.exp
* gdb.base/included.exp
* gdb.base/infcall-input.exp
* gdb.base/inferior-died.exp
* gdb.base/infnan.exp
* gdb.base/info-macros.exp
* gdb.base/info-os.exp
* gdb.base/info-proc.exp
* gdb.base/info-shared.exp
* gdb.base/info-target.exp
* gdb.base/infoline.exp
* gdb.base/interp.exp
* gdb.base/interrupt.exp
* gdb.base/jit-reader.exp
* gdb.base/jit-simple.exp
* gdb.base/kill-after-signal.exp
* gdb.base/kill-detach-inferiors-cmd.exp
* gdb.base/label.exp
* gdb.base/langs.exp
* gdb.base/ldbl_e308.exp
* gdb.base/line-symtabs.exp
* gdb.base/linespecs.exp
* gdb.base/list.exp
* gdb.base/long_long.exp
* gdb.base/longest-types.exp
* gdb.base/maint.exp
* gdb.base/max-value-size.exp
* gdb.base/memattr.exp
* gdb.base/mips_pro.exp
* gdb.base/morestack.exp
* gdb.base/moribund-step.exp
* gdb.base/multi-forks.exp
* gdb.base/nested-addr.exp
* gdb.base/nextoverexit.exp
* gdb.base/noreturn-finish.exp
* gdb.base/noreturn-return.exp
* gdb.base/nostdlib.exp
* gdb.base/offsets.exp
* gdb.base/opaque.exp
* gdb.base/pc-fp.exp
* gdb.base/permissions.exp
* gdb.base/print-symbol-loading.exp
* gdb.base/prologue-include.exp
* gdb.base/psymtab.exp
* gdb.base/ptype.exp
* gdb.base/random-signal.exp
* gdb.base/randomize.exp
* gdb.base/range-stepping.exp
* gdb.base/readline-ask.exp
* gdb.base/recpar.exp
* gdb.base/recurse.exp
* gdb.base/relational.exp
* gdb.base/restore.exp
* gdb.base/return-nodebug.exp
* gdb.base/return.exp
* gdb.base/run-after-attach.exp
* gdb.base/save-bp.exp
* gdb.base/scope.exp
* gdb.base/sect-cmd.exp
* gdb.base/set-lang-auto.exp
* gdb.base/set-noassign.exp
* gdb.base/setvar.exp
* gdb.base/sigall.exp
* gdb.base/sigbpt.exp
* gdb.base/siginfo-addr.exp
* gdb.base/siginfo-infcall.exp
* gdb.base/siginfo-obj.exp
* gdb.base/siginfo.exp
* gdb.base/signals-state-child.exp
* gdb.base/signest.exp
* gdb.base/sigstep.exp
* gdb.base/sizeof.exp
* gdb.base/skip.exp
* gdb.base/solib-corrupted.exp
* gdb.base/solib-nodir.exp
* gdb.base/solib-search.exp
* gdb.base/stack-checking.exp
* gdb.base/stale-infcall.exp
* gdb.base/stap-probe.exp
* gdb.base/start.exp
* gdb.base/step-break.exp
* gdb.base/step-bt.exp
* gdb.base/step-line.exp
* gdb.base/step-over-exit.exp
* gdb.base/step-over-syscall.exp
* gdb.base/step-resume-infcall.exp
* gdb.base/step-test.exp
* gdb.base/store.exp
* gdb.base/structs3.exp
* gdb.base/sym-file.exp
* gdb.base/symbol-without-target_section.exp
* gdb.base/term.exp
* gdb.base/testenv.exp
* gdb.base/ui-redirect.exp
* gdb.base/until.exp
* gdb.base/unwindonsignal.exp
* gdb.base/value-double-free.exp
* gdb.base/vla-datatypes.exp
* gdb.base/vla-ptr.exp
* gdb.base/vla-sideeffect.exp
* gdb.base/volatile.exp
* gdb.base/watch-cond-infcall.exp
* gdb.base/watch-cond.exp
* gdb.base/watch-non-mem.exp
* gdb.base/watch-read.exp
* gdb.base/watch-vfork.exp
* gdb.base/watchpoint-cond-gone.exp
* gdb.base/watchpoint-delete.exp
* gdb.base/watchpoint-hw-hit-once.exp
* gdb.base/watchpoint-hw.exp
* gdb.base/watchpoint-stops-at-right-insn.exp
* gdb.base/watchpoints.exp
* gdb.base/wchar.exp
* gdb.base/whatis-exp.exp
* gdb.btrace/buffer-size.exp
* gdb.btrace/data.exp
* gdb.btrace/delta.exp
* gdb.btrace/dlopen.exp
* gdb.btrace/enable.exp
* gdb.btrace/exception.exp
* gdb.btrace/function_call_history.exp
* gdb.btrace/gcore.exp
* gdb.btrace/instruction_history.exp
* gdb.btrace/nohist.exp
* gdb.btrace/reconnect.exp
* gdb.btrace/record_goto-step.exp
* gdb.btrace/record_goto.exp
* gdb.btrace/rn-dl-bind.exp
* gdb.btrace/segv.exp
* gdb.btrace/step.exp
* gdb.btrace/stepi.exp
* gdb.btrace/tailcall-only.exp
* gdb.btrace/tailcall.exp
* gdb.btrace/tsx.exp
* gdb.btrace/unknown_functions.exp
* gdb.btrace/vdso.exp
* gdb.compile/compile-ifunc.exp
* gdb.compile/compile-ops.exp
* gdb.compile/compile-print.exp
* gdb.compile/compile-setjmp.exp
* gdb.cp/abstract-origin.exp
* gdb.cp/ambiguous.exp
* gdb.cp/annota2.exp
* gdb.cp/annota3.exp
* gdb.cp/anon-ns.exp
* gdb.cp/anon-struct.exp
* gdb.cp/anon-union.exp
* gdb.cp/arg-reference.exp
* gdb.cp/baseenum.exp
* gdb.cp/bool.exp
* gdb.cp/breakpoint.exp
* gdb.cp/bs15503.exp
* gdb.cp/call-c.exp
* gdb.cp/casts.exp
* gdb.cp/chained-calls.exp
* gdb.cp/class2.exp
* gdb.cp/classes.exp
* gdb.cp/cmpd-minsyms.exp
* gdb.cp/converts.exp
* gdb.cp/cp-relocate.exp
* gdb.cp/cpcompletion.exp
* gdb.cp/cpexprs.exp
* gdb.cp/cplabel.exp
* gdb.cp/cplusfuncs.exp
* gdb.cp/cpsizeof.exp
* gdb.cp/ctti.exp
* gdb.cp/derivation.exp
* gdb.cp/destrprint.exp
* gdb.cp/dispcxx.exp
* gdb.cp/enum-class.exp
* gdb.cp/exception.exp
* gdb.cp/exceptprint.exp
* gdb.cp/expand-psymtabs-cxx.exp
* gdb.cp/expand-sals.exp
* gdb.cp/extern-c.exp
* gdb.cp/filename.exp
* gdb.cp/formatted-ref.exp
* gdb.cp/fpointer.exp
* gdb.cp/gdb1355.exp
* gdb.cp/gdb2495.exp
* gdb.cp/hang.exp
* gdb.cp/impl-this.exp
* gdb.cp/infcall-dlopen.exp
* gdb.cp/inherit.exp
* gdb.cp/iostream.exp
* gdb.cp/koenig.exp
* gdb.cp/local.exp
* gdb.cp/m-data.exp
* gdb.cp/m-static.exp
* gdb.cp/mb-ctor.exp
* gdb.cp/mb-inline.exp
* gdb.cp/mb-templates.exp
* gdb.cp/member-name.exp
* gdb.cp/member-ptr.exp
* gdb.cp/meth-typedefs.exp
* gdb.cp/method.exp
* gdb.cp/method2.exp
* gdb.cp/minsym-fallback.exp
* gdb.cp/misc.exp
* gdb.cp/namelessclass.exp
* gdb.cp/namespace-enum.exp
* gdb.cp/namespace-nested-import.exp
* gdb.cp/namespace.exp
* gdb.cp/nextoverthrow.exp
* gdb.cp/no-dmgl-verbose.exp
* gdb.cp/non-trivial-retval.exp
* gdb.cp/noparam.exp
* gdb.cp/nsdecl.exp
* gdb.cp/nsimport.exp
* gdb.cp/nsnested.exp
* gdb.cp/nsnoimports.exp
* gdb.cp/nsrecurs.exp
* gdb.cp/nsstress.exp
* gdb.cp/nsusing.exp
* gdb.cp/operator.exp
* gdb.cp/oranking.exp
* gdb.cp/overload-const.exp
* gdb.cp/overload.exp
* gdb.cp/ovldbreak.exp
* gdb.cp/ovsrch.exp
* gdb.cp/paren-type.exp
* gdb.cp/parse-lang.exp
* gdb.cp/pass-by-ref.exp
* gdb.cp/pr-1023.exp
* gdb.cp/pr-1210.exp
* gdb.cp/pr-574.exp
* gdb.cp/pr10687.exp
* gdb.cp/pr12028.exp
* gdb.cp/pr17132.exp
* gdb.cp/pr17494.exp
* gdb.cp/pr9067.exp
* gdb.cp/pr9167.exp
* gdb.cp/pr9631.exp
* gdb.cp/printmethod.exp
* gdb.cp/psmang.exp
* gdb.cp/psymtab-parameter.exp
* gdb.cp/ptype-cv-cp.exp
* gdb.cp/ptype-flags.exp
* gdb.cp/re-set-overloaded.exp
* gdb.cp/ref-types.exp
* gdb.cp/rtti.exp
* gdb.cp/scope-err.exp
* gdb.cp/shadow.exp
* gdb.cp/smartp.exp
* gdb.cp/static-method.exp
* gdb.cp/static-print-quit.exp
* gdb.cp/temargs.exp
* gdb.cp/templates.exp
* gdb.cp/try_catch.exp
* gdb.cp/typedef-operator.exp
* gdb.cp/typeid.exp
* gdb.cp/userdef.exp
* gdb.cp/using-crash.exp
* gdb.cp/var-tag.exp
* gdb.cp/virtbase.exp
* gdb.cp/virtfunc.exp
* gdb.cp/virtfunc2.exp
* gdb.cp/vla-cxx.exp
* gdb.disasm/t01_mov.exp
* gdb.disasm/t02_mova.exp
* gdb.disasm/t03_add.exp
* gdb.disasm/t04_sub.exp
* gdb.disasm/t05_cmp.exp
* gdb.disasm/t06_ari2.exp
* gdb.disasm/t07_ari3.exp
* gdb.disasm/t08_or.exp
* gdb.disasm/t09_xor.exp
* gdb.disasm/t10_and.exp
* gdb.disasm/t11_logs.exp
* gdb.disasm/t12_bit.exp
* gdb.disasm/t13_otr.exp
* gdb.dlang/circular.exp
* gdb.dwarf2/arr-stride.exp
* gdb.dwarf2/arr-subrange.exp
* gdb.dwarf2/atomic-type.exp
* gdb.dwarf2/bad-regnum.exp
* gdb.dwarf2/bitfield-parent-optimized-out.exp
* gdb.dwarf2/callframecfa.exp
* gdb.dwarf2/clztest.exp
* gdb.dwarf2/corrupt.exp
* gdb.dwarf2/data-loc.exp
* gdb.dwarf2/dup-psym.exp
* gdb.dwarf2/dw2-anon-mptr.exp
* gdb.dwarf2/dw2-anonymous-func.exp
* gdb.dwarf2/dw2-bad-mips-linkage-name.exp
* gdb.dwarf2/dw2-bad-unresolved.exp
* gdb.dwarf2/dw2-basic.exp
* gdb.dwarf2/dw2-canonicalize-type.exp
* gdb.dwarf2/dw2-case-insensitive.exp
* gdb.dwarf2/dw2-common-block.exp
* gdb.dwarf2/dw2-compdir-oldgcc.exp
* gdb.dwarf2/dw2-compressed.exp
* gdb.dwarf2/dw2-const.exp
* gdb.dwarf2/dw2-cp-infcall-ref-static.exp
* gdb.dwarf2/dw2-cu-size.exp
* gdb.dwarf2/dw2-dup-frame.exp
* gdb.dwarf2/dw2-entry-value.exp
* gdb.dwarf2/dw2-icycle.exp
* gdb.dwarf2/dw2-ifort-parameter.exp
* gdb.dwarf2/dw2-inline-break.exp
* gdb.dwarf2/dw2-inline-param.exp
* gdb.dwarf2/dw2-intercu.exp
* gdb.dwarf2/dw2-intermix.exp
* gdb.dwarf2/dw2-lexical-block-bare.exp
* gdb.dwarf2/dw2-linkage-name-trust.exp
* gdb.dwarf2/dw2-minsym-in-cu.exp
* gdb.dwarf2/dw2-noloc.exp
* gdb.dwarf2/dw2-op-call.exp
* gdb.dwarf2/dw2-op-out-param.exp
* gdb.dwarf2/dw2-opt-structptr.exp
* gdb.dwarf2/dw2-param-error.exp
* gdb.dwarf2/dw2-producer.exp
* gdb.dwarf2/dw2-ranges-base.exp
* gdb.dwarf2/dw2-ref-missing-frame.exp
* gdb.dwarf2/dw2-reg-undefined.exp
* gdb.dwarf2/dw2-regno-invalid.exp
* gdb.dwarf2/dw2-restore.exp
* gdb.dwarf2/dw2-restrict.exp
* gdb.dwarf2/dw2-single-line-discriminators.exp
* gdb.dwarf2/dw2-strp.exp
* gdb.dwarf2/dw2-undefined-ret-addr.exp
* gdb.dwarf2/dw2-unresolved.exp
* gdb.dwarf2/dw2-var-zero-addr.exp
* gdb.dwarf2/dw4-sig-types.exp
* gdb.dwarf2/dwz.exp
* gdb.dwarf2/dynarr-ptr.exp
* gdb.dwarf2/enum-type.exp
* gdb.dwarf2/gdb-index.exp
* gdb.dwarf2/implptr-64bit.exp
* gdb.dwarf2/implptr-optimized-out.exp
* gdb.dwarf2/implptr.exp
* gdb.dwarf2/implref-array.exp
* gdb.dwarf2/implref-const.exp
* gdb.dwarf2/implref-global.exp
* gdb.dwarf2/implref-struct.exp
* gdb.dwarf2/mac-fileno.exp
* gdb.dwarf2/main-subprogram.exp
* gdb.dwarf2/member-ptr-forwardref.exp
* gdb.dwarf2/method-ptr.exp
* gdb.dwarf2/missing-sig-type.exp
* gdb.dwarf2/nonvar-access.exp
* gdb.dwarf2/opaque-type-lookup.exp
* gdb.dwarf2/pieces-optimized-out.exp
* gdb.dwarf2/pieces.exp
* gdb.dwarf2/pr10770.exp
* gdb.dwarf2/pr13961.exp
* gdb.dwarf2/staticvirtual.exp
* gdb.dwarf2/subrange.exp
* gdb.dwarf2/symtab-producer.exp
* gdb.dwarf2/trace-crash.exp
* gdb.dwarf2/typeddwarf.exp
* gdb.dwarf2/valop.exp
* gdb.dwarf2/watch-notconst.exp
* gdb.fortran/array-element.exp
* gdb.fortran/charset.exp
* gdb.fortran/common-block.exp
* gdb.fortran/complex.exp
* gdb.fortran/derived-type-function.exp
* gdb.fortran/derived-type.exp
* gdb.fortran/logical.exp
* gdb.fortran/module.exp
* gdb.fortran/multi-dim.exp
* gdb.fortran/nested-funcs.exp
* gdb.fortran/print-formatted.exp
* gdb.fortran/subarray.exp
* gdb.fortran/vla-alloc-assoc.exp
* gdb.fortran/vla-datatypes.exp
* gdb.fortran/vla-history.exp
* gdb.fortran/vla-ptr-info.exp
* gdb.fortran/vla-ptype-sub.exp
* gdb.fortran/vla-ptype.exp
* gdb.fortran/vla-sizeof.exp
* gdb.fortran/vla-type.exp
* gdb.fortran/vla-value-sub-arbitrary.exp
* gdb.fortran/vla-value-sub-finish.exp
* gdb.fortran/vla-value-sub.exp
* gdb.fortran/vla-value.exp
* gdb.fortran/whatis_type.exp
* gdb.go/chan.exp
* gdb.go/handcall.exp
* gdb.go/hello.exp
* gdb.go/integers.exp
* gdb.go/methods.exp
* gdb.go/package.exp
* gdb.go/strings.exp
* gdb.go/types.exp
* gdb.go/unsafe.exp
* gdb.guile/scm-arch.exp
* gdb.guile/scm-block.exp
* gdb.guile/scm-breakpoint.exp
* gdb.guile/scm-cmd.exp
* gdb.guile/scm-disasm.exp
* gdb.guile/scm-equal.exp
* gdb.guile/scm-frame-args.exp
* gdb.guile/scm-frame-inline.exp
* gdb.guile/scm-frame.exp
* gdb.guile/scm-iterator.exp
* gdb.guile/scm-math.exp
* gdb.guile/scm-objfile.exp
* gdb.guile/scm-ports.exp
* gdb.guile/scm-symbol.exp
* gdb.guile/scm-symtab.exp
* gdb.guile/scm-value-cc.exp
* gdb.guile/types-module.exp
* gdb.linespec/break-ask.exp
* gdb.linespec/cpexplicit.exp
* gdb.linespec/explicit.exp
* gdb.linespec/keywords.exp
* gdb.linespec/linespec.exp
* gdb.linespec/ls-dollar.exp
* gdb.linespec/ls-errs.exp
* gdb.linespec/skip-two.exp
* gdb.linespec/thread.exp
* gdb.mi/mi-async.exp
* gdb.mi/mi-basics.exp
* gdb.mi/mi-break.exp
* gdb.mi/mi-catch-load.exp
* gdb.mi/mi-cli.exp
* gdb.mi/mi-cmd-param-changed.exp
* gdb.mi/mi-console.exp
* gdb.mi/mi-detach.exp
* gdb.mi/mi-disassemble.exp
* gdb.mi/mi-eval.exp
* gdb.mi/mi-file-transfer.exp
* gdb.mi/mi-file.exp
* gdb.mi/mi-fill-memory.exp
* gdb.mi/mi-inheritance-syntax-error.exp
* gdb.mi/mi-linespec-err-cp.exp
* gdb.mi/mi-logging.exp
* gdb.mi/mi-memory-changed.exp
* gdb.mi/mi-read-memory.exp
* gdb.mi/mi-record-changed.exp
* gdb.mi/mi-reg-undefined.exp
* gdb.mi/mi-regs.exp
* gdb.mi/mi-return.exp
* gdb.mi/mi-reverse.exp
* gdb.mi/mi-simplerun.exp
* gdb.mi/mi-solib.exp
* gdb.mi/mi-stack.exp
* gdb.mi/mi-stepi.exp
* gdb.mi/mi-syn-frame.exp
* gdb.mi/mi-until.exp
* gdb.mi/mi-var-block.exp
* gdb.mi/mi-var-child.exp
* gdb.mi/mi-var-cmd.exp
* gdb.mi/mi-var-cp.exp
* gdb.mi/mi-var-display.exp
* gdb.mi/mi-var-invalidate.exp
* gdb.mi/mi-var-list-children-invalid-grandchild.exp
* gdb.mi/mi-vla-fortran.exp
* gdb.mi/mi-watch.exp
* gdb.mi/mi2-var-child.exp
* gdb.mi/user-selected-context-sync.exp
* gdb.modula2/unbounded-array.exp
* gdb.multi/dummy-frame-restore.exp
* gdb.multi/multi-arch-exec.exp
* gdb.multi/multi-arch.exp
* gdb.multi/tids.exp
* gdb.multi/watchpoint-multi.exp
* gdb.opencl/callfuncs.exp
* gdb.opencl/convs_casts.exp
* gdb.opencl/datatypes.exp
* gdb.opencl/operators.exp
* gdb.opencl/vec_comps.exp
* gdb.opt/clobbered-registers-O2.exp
* gdb.opt/inline-break.exp
* gdb.opt/inline-bt.exp
* gdb.opt/inline-cmds.exp
* gdb.opt/inline-locals.exp
* gdb.pascal/case-insensitive-symbols.exp
* gdb.pascal/floats.exp
* gdb.pascal/gdb11492.exp
* gdb.python/lib-types.exp
* gdb.python/py-arch.exp
* gdb.python/py-as-string.exp
* gdb.python/py-bad-printers.exp
* gdb.python/py-block.exp
* gdb.python/py-breakpoint-create-fail.exp
* gdb.python/py-breakpoint.exp
* gdb.python/py-caller-is.exp
* gdb.python/py-cmd.exp
* gdb.python/py-explore-cc.exp
* gdb.python/py-explore.exp
* gdb.python/py-finish-breakpoint.exp
* gdb.python/py-finish-breakpoint2.exp
* gdb.python/py-frame-args.exp
* gdb.python/py-frame-inline.exp
* gdb.python/py-frame.exp
* gdb.python/py-framefilter-mi.exp
* gdb.python/py-infthread.exp
* gdb.python/py-lazy-string.exp
* gdb.python/py-linetable.exp
* gdb.python/py-mi-events.exp
* gdb.python/py-mi-objfile.exp
* gdb.python/py-mi.exp
* gdb.python/py-objfile.exp
* gdb.python/py-pp-integral.exp
* gdb.python/py-pp-maint.exp
* gdb.python/py-pp-re-notag.exp
* gdb.python/py-pp-registration.exp
* gdb.python/py-recurse-unwind.exp
* gdb.python/py-strfns.exp
* gdb.python/py-symbol.exp
* gdb.python/py-symtab.exp
* gdb.python/py-sync-interp.exp
* gdb.python/py-typeprint.exp
* gdb.python/py-unwind-maint.exp
* gdb.python/py-unwind.exp
* gdb.python/py-value-cc.exp
* gdb.python/py-xmethods.exp
* gdb.reverse/amd64-tailcall-reverse.exp
* gdb.reverse/break-precsave.exp
* gdb.reverse/break-reverse.exp
* gdb.reverse/consecutive-precsave.exp
* gdb.reverse/consecutive-reverse.exp
* gdb.reverse/finish-precsave.exp
* gdb.reverse/finish-reverse-bkpt.exp
* gdb.reverse/finish-reverse.exp
* gdb.reverse/fstatat-reverse.exp
* gdb.reverse/getresuid-reverse.exp
* gdb.reverse/i386-precsave.exp
* gdb.reverse/i386-reverse.exp
* gdb.reverse/i386-sse-reverse.exp
* gdb.reverse/i387-env-reverse.exp
* gdb.reverse/i387-stack-reverse.exp
* gdb.reverse/insn-reverse.exp
* gdb.reverse/machinestate-precsave.exp
* gdb.reverse/machinestate.exp
* gdb.reverse/next-reverse-bkpt-over-sr.exp
* gdb.reverse/pipe-reverse.exp
* gdb.reverse/readv-reverse.exp
* gdb.reverse/recvmsg-reverse.exp
* gdb.reverse/rerun-prec.exp
* gdb.reverse/s390-mvcle.exp
* gdb.reverse/step-precsave.exp
* gdb.reverse/step-reverse.exp
* gdb.reverse/time-reverse.exp
* gdb.reverse/until-precsave.exp
* gdb.reverse/until-reverse.exp
* gdb.reverse/waitpid-reverse.exp
* gdb.reverse/watch-precsave.exp
* gdb.reverse/watch-reverse.exp
* gdb.rust/generics.exp
* gdb.rust/methods.exp
* gdb.rust/modules.exp
* gdb.rust/simple.exp
* gdb.server/connect-with-no-symbol-file.exp
* gdb.server/ext-attach.exp
* gdb.server/ext-restart.exp
* gdb.server/ext-wrapper.exp
* gdb.server/file-transfer.exp
* gdb.server/server-exec-info.exp
* gdb.server/server-kill.exp
* gdb.server/server-mon.exp
* gdb.server/wrapper.exp
* gdb.stabs/exclfwd.exp
* gdb.stabs/gdb11479.exp
* gdb.threads/clone-new-thread-event.exp
* gdb.threads/corethreads.exp
* gdb.threads/current-lwp-dead.exp
* gdb.threads/dlopen-libpthread.exp
* gdb.threads/gcore-thread.exp
* gdb.threads/sigstep-threads.exp
* gdb.threads/watchpoint-fork.exp
* gdb.trace/actions-changed.exp
* gdb.trace/backtrace.exp
* gdb.trace/change-loc.exp
* gdb.trace/circ.exp
* gdb.trace/collection.exp
* gdb.trace/disconnected-tracing.exp
* gdb.trace/ftrace.exp
* gdb.trace/mi-trace-frame-collected.exp
* gdb.trace/mi-trace-unavailable.exp
* gdb.trace/mi-traceframe-changed.exp
* gdb.trace/mi-tsv-changed.exp
* gdb.trace/no-attach-trace.exp
* gdb.trace/passc-dyn.exp
* gdb.trace/qtro.exp
* gdb.trace/range-stepping.exp
* gdb.trace/read-memory.exp
* gdb.trace/save-trace.exp
* gdb.trace/signal.exp
* gdb.trace/status-stop.exp
* gdb.trace/tfile.exp
* gdb.trace/trace-break.exp
* gdb.trace/trace-buffer-size.exp
* gdb.trace/trace-condition.exp
* gdb.trace/tracefile-pseudo-reg.exp
* gdb.trace/tstatus.exp
* gdb.trace/unavailable.exp
* gdb.trace/while-dyn.exp
* gdb.trace/while-stepping.exp
|
|
This fixes offender testcases that have test names starting with uppercase
when using gdb_test_no_output in a multi-line construct.
gdb/testsuite/ChangeLog
2016-12-01 Luis Machado <lgustavo@codesourcery.com>
Fix test names starting with uppercase throughout the files.
* gdb.ada/assign_1.exp
* gdb.ada/boolean_expr.exp
* gdb.base/arrayidx.exp
* gdb.base/del.exp
* gdb.base/gcore-buffer-overflow.exp
* gdb.base/testenv.exp
* gdb.compile/compile.exp
* gdb.python/py-framefilter-invalidarg.exp
* gdb.python/py-framefilter.exp
|
|
This fixes offender testcases that have test names starting with uppercase
when using gdb_test/mi_gdb_test in a multi-line construct.
gdb/testsuite/ChangeLog
2016-12-01 Luis Machado <lgustavo@codesourcery.com>
Fix test names starting with uppercase throughout the files.
* gdb.ada/array_return.exp
* gdb.ada/expr_delims.exp
* gdb.ada/mi_dyn_arr.exp
* gdb.ada/mi_interface.exp
* gdb.ada/mi_var_array.exp
* gdb.ada/watch_arg.exp
* gdb.arch/alpha-step.exp
* gdb.arch/altivec-regs.exp
* gdb.arch/e500-regs.exp
* gdb.arch/powerpc-d128-regs.exp
* gdb.base/arrayidx.exp
* gdb.base/break.exp
* gdb.base/checkpoint.exp
* gdb.base/debug-expr.exp
* gdb.base/dmsym.exp
* gdb.base/radix.exp
* gdb.base/sepdebug.exp
* gdb.base/testenv.exp
* gdb.base/watch_thread_num.exp
* gdb.base/watchpoint-cond-gone.exp
* gdb.cell/break.exp
* gdb.cell/ea-cache.exp
* gdb.compile/compile.exp
* gdb.cp/gdb2495.exp
* gdb.gdb/selftest.exp
* gdb.gdb/xfullpath.exp
* gdb.go/hello.exp
* gdb.go/integers.exp
* gdb.objc/basicclass.exp
* gdb.pascal/hello.exp
* gdb.pascal/integers.exp
* gdb.python/py-breakpoint.exp
* gdb.python/py-cmd.exp
* gdb.python/py-linetable.exp
* gdb.python/py-xmethods.exp
* gdb.python/python.exp
* gdb.reverse/consecutive-precsave.exp
* gdb.reverse/finish-precsave.exp
* gdb.reverse/i386-precsave.exp
* gdb.reverse/machinestate-precsave.exp
* gdb.reverse/sigall-precsave.exp
* gdb.reverse/solib-precsave.exp
* gdb.reverse/step-precsave.exp
* gdb.reverse/until-precsave.exp
* gdb.reverse/watch-precsave.exp
* gdb.threads/leader-exit.exp
* gdb.threads/pthreads.exp
* gdb.threads/wp-replication.exp
* gdb.trace/actions.exp
* gdb.trace/mi-tsv-changed.exp
* gdb.trace/tsv.exp
|