Tom de Vries 658dadf0b0 [gdb] Don't set initial language using previous language
When language is set to auto, part of loading an executable is to update the
language accordingly.  This is implemented by set_initial_language.

In case of a c++ executable without DW_AT_main_subprogram,
set_initial_language finds "main" in the minimal symbols, and does a lookup of
"main" in the symbol tables to determine the language of the symbol, and uses
that as initial language.

The symbol lookup is done using lookup_symbol which is a wrapper around
lookup_symbol_in_language, using the current language.

So, consider two c++ executables a.out and b.out, which we'll load one after
another.  If we track the resulting lookup_symbol_in_language calls:
...
$ gdb -batch \
    -ex "b lookup_symbol_in_language" \
    -ex r -ex c -ex c \
    --args gdb
...
we find that indeed lookup_symbol_in_language is called once using language_c, and
once using language_c_plus:
...
(gdb) file a.out
Reading symbols from a.out...

Breakpoint 1, lookup_symbol_in_language (name=0x5555568c2050 "main", \
  block=0x0, domain=VAR_DOMAIN, lang=language_c, is_a_field_of_this=0x0) \
  at ../../gdb/symtab.c:1905
1905    {
(gdb) file b.out
Load new symbol table from "b.out"? (y or n) y
Reading symbols from b.out...

Breakpoint 1, lookup_symbol_in_language (name=0x5555568c2030 "main", \
  block=0x0, domain=VAR_DOMAIN, lang=language_cplus, is_a_field_of_this=0x0) \
  at ../../gdb/symtab.c:1905
1905    {
(gdb)
...

It seems like a bad idea to have the previous language play a role
in determining the executable language.

Fix this by using lookup_symbol_in_language in set_initial_language with the
default language c as argument.

Tested on x86_64-linux.

gdb/ChangeLog:

2020-02-28  Tom de Vries  <tdevries@suse.de>

	* symfile.c (set_initial_language): Use default language for lookup.
2020-02-28 16:14:53 +01:00
2020-02-28 13:27:42 +10:30
2020-02-22 20:37:18 -05:00
2020-02-20 13:02:24 +10:30
2020-02-26 10:37:25 +10:30
2019-12-26 06:54:58 +01:00
2020-02-17 10:03:15 -07:00
2020-02-17 10:03:15 -07:00
2020-02-17 10:03:15 -07:00
2020-02-07 08:42:25 -07:00
2020-02-07 08:42:25 -07: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%