Go to file
Alan Modra 51298b3303 PR28149, debug info with wrong file association
gcc-11 and gcc-12 pass -gdwarf-5 to gas, in order to prime gas for
DWARF 5 level debug info.  Unfortunately it seems there are cases
where the compiler does not emit a .file or .loc dwarf debug directive
before any machine instructions.  (Note that the .file directive
typically emitted as the first line of assembly output doesn't count as
a dwarf debug directive.  The dwarf .file has a file number before the
file name string.)

This patch delays allocation of file numbers for gas generated line
debug info until the end of assembly, thus avoiding any clashes with
compiler generated file numbers.  Two fixes for test case source are
necessary;  A .loc can't use a file number that hasn't already been
specified with .file.

A followup patch will remove all the gas generated line info on
seeing a .file directive.

	PR 28149
	* dwarf2dbg.c (num_of_auto_assigned): Delete.
	(current): Update initialisation.
	(set_or_check_view): Replace all accesses to view with u.view.
	(dwarf2_consume_line_info): Likewise.
	(dwarf2_directive_loc): Likewise.  Assert that we aren't generating
	line info.
	(dwarf2_gen_line_info_1): Don't call set_or_check_view on
	gas generated line entries.
	(dwarf2_gen_line_info): Set and track filenames for gas generated
	line entries.  Simplify generation of labels.
	(get_directory_table_entry): Use filename_cmp when comparing dirs.
	(do_allocate_filenum): New function.
	(dwarf2_where): Set u.filename and filenum to -1 for gas generated
	line entries.
	(dwarf2_directive_filename): Remove num_of_auto_assigned handling.
	(process_entries): Update view field access.  Call
	do_allocate_filenum.
	* dwarf2dbg.h (struct dwarf2_line_info): Add filename field in
	union aliasing view.
	* testsuite/gas/i386/dwarf2-line-3.s: Add .file directive.
	* testsuite/gas/i386/dwarf2-line-4.s: Likewise.
	* testsuite/gas/i386/dwarf2-line-4.d: Update expected output.
	* testsuite/gas/i386/dwarf4-line-1.d: Likewise.
	* testsuite/gas/i386/dwarf5-line-1.d: Likewise.
	* testsuite/gas/i386/dwarf5-line-2.d: Likewise.
2021-09-18 08:20:11 +09:30
bfd RISC-V: Merged extension string tables and their version tables into one. 2021-09-17 16:33:54 +08:00
binutils Revert: [AArch64] MTE corefile support 2021-09-07 11:03:20 -03:00
config Deprecate a.out support for NetBSD targets. 2021-08-11 13:17:54 +01:00
contrib
cpu Re: opcodes: constify & local meps macros 2021-07-05 21:40:49 +09:30
elfcpp PATCH [4/4] arm: Add Tag_PACRET_use build attribute 2021-08-17 14:49:42 +02:00
etc etc: switch to automake 2021-09-09 23:30:12 -04:00
gas PR28149, debug info with wrong file association 2021-09-18 08:20:11 +09:30
gdb Fix segfault when running ia16-elf-gdb 2021-09-17 13:36:51 -06:00
gdbserver Remove unused declaration from gdbserver/win32-low.h 2021-09-07 12:17:42 -06:00
gdbsupport gdbsupport: add debug assertions in gdb::optional::get 2021-08-03 08:50:56 -04:00
gnulib gnulib: import various network functions 2021-09-08 17:48:09 -04:00
gold [GOLD] PowerPC64 support for sym+addend GOT entries 2021-09-18 08:20:11 +09:30
gprof Add support for the haiku operating system. These are the os support patches we have been grooming and maintaining for quite a few years over on git.haiku-os.org. All of these architectures are working and most have been stable for quite some time. 2021-09-02 12:19:14 +01:00
include Revert: [AArch64] MTE corefile support 2021-09-07 11:03:20 -03:00
intl Deprecate a.out support for NetBSD targets. 2021-08-11 13:17:54 +01:00
ld arc: Fix got-weak linker test 2021-09-15 13:49:02 +03:00
libctf CC_FOR_TARGET et al 2021-09-03 16:26:09 +09:30
libdecnumber
libiberty Deprecate a.out support for NetBSD targets. 2021-08-11 13:17:54 +01:00
opcodes [gdb/tdep] Reset force_thumb in parse_arm_disassembler_options 2021-09-13 20:16:36 +02:00
readline
sim sim: bfin: add support for SDL2 2021-09-13 22:45:19 -04:00
texinfo
zlib haiku tidy 2021-09-03 11:45:58 +09:30
.cvsignore
.gitattributes
.gitignore
ar-lib
ChangeLog Add markers for 2.37 branch 2021-07-03 14:50:57 +01:00
compile
config-ml.in
config.guess
config.rpath
config.sub
configure Add support for the haiku operating system. These are the os support patches we have been grooming and maintaining for quite a few years over on git.haiku-os.org. All of these architectures are working and most have been stable for quite some time. 2021-09-02 12:19:14 +01:00
configure.ac Add support for the haiku operating system. These are the os support patches we have been grooming and maintaining for quite a few years over on git.haiku-os.org. All of these architectures are working and most have been stable for quite some time. 2021-09-02 12:19:14 +01:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4 Add support for the haiku operating system. These are the os support patches we have been grooming and maintaining for quite a few years over on git.haiku-os.org. All of these architectures are working and most have been stable for quite some time. 2021-09-02 12:19:14 +01:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def
Makefile.in
Makefile.tpl
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
test-driver
ylwrap

		   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.