Go to file
Mark Wielaard 1b08ada61e DWARF sort longer dirs before shorter ones in directory table.
When gcc dwarf2out generates the .debug_line table itself (for example
when generating one for a split DWARF .dwo) it uses natural sorting for
the directory table. Shorter directory paths come before longer directory
paths with the same prefix. This causes the files in the line table to
pick the shorter dir. Creating slightly ineffecient line tables because
the longer directory paths will never be used.

Fix this by changing file_info_cmp () to pick longer directory prefixes
before shorter ones. We still sort files (the compilation unit) without
any directory path before all entries with a directory path, so they
will still use dir entry 0 (the working directory).

A hello.c program would get the following dir and line table before:

Directory table:
 /opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/8.0.1/include
 /usr/include
 /usr/include/bits

File name table:
 Entry Dir   Time      Size      Name
 1     0     0         0         hello.c
 2     1     0         0         stddef.h
 3     2     0         0         bits/types.h
 4     2     0         0         libio.h
 5     2     0         0         stdio.h
 6     2     0         0         bits/sys_errlist.h

Note that the last directory table entry is never used.
After this patch it looks as follows:

Directory table:
 /opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/8.0.1/include
 /usr/include/bits
 /usr/include

File name table:
 Entry Dir   Time      Size      Name
 1     0     0         0         hello.c
 2     1     0         0         stddef.h
 3     2     0         0         types.h
 4     3     0         0         libio.h
 5     3     0         0         stdio.h
 6     2     0         0         sys_errlist.h

Which is similar to what gas would output.

gcc/ChangeLog:

	* dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
	shorter ones.

From-SVN: r259655
2018-04-25 17:34:00 +00:00
INSTALL README: Do not mention CVS. 2014-10-12 15:05:28 +00:00
config x86/CET: Add -fcf-protection to STAGE4_CFLAGS 2018-04-24 15:12:46 -07:00
contrib test_summary: handle single quotes 2018-03-21 09:47:12 +01:00
fixincludes re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
gcc DWARF sort longer dirs before shorter ones in directory table. 2018-04-25 17:34:00 +00:00
gnattools Update copyright years. 2018-01-03 11:03:58 +01:00
gotools Makefile.am (check-runtime): Pass -test.timeout with GOTOOLS_TEST_TIMEOUT. 2018-03-21 16:46:37 +01:00
include [IEPM] Introduce inline entry point markers 2018-02-09 02:22:11 +00:00
intl Require ngettext in test of system gettext implementation 2017-11-07 15:24:01 +10:30
libada re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
libatomic Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libbacktrace Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libcc1 PR c++/69560 - wrong alignof(double) on x86. 2018-04-23 16:49:38 -04:00
libcpp Regenerate .pot files. 2018-04-23 21:27:02 +01:00
libdecnumber Do not use bit and for conjunction of predicates (PR c/81272). 2018-02-19 18:29:20 +00:00
libffi re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
libgcc [NDS32] Fix incorrect settings in sfp-machine.h and t-nds32-newlib for hard fp. 2018-04-25 12:08:14 +00:00
libgfortran Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libgo gotest: only use [TD] on big-endian PPC64 non-AIX systems 2018-04-20 20:40:27 +00:00
libgomp Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libhsail-rt re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
libiberty Fix gcc.dg/debug/pr41893-1.c with Solaris ld (PR lto/81968) 2018-04-13 08:02:15 +00:00
libitm x86: Update __CET__ check 2018-04-24 15:15:51 -07:00
libmpx Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libobjc Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
liboffloadmic re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
libquadmath Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libsanitizer Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libssp Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libstdc++-v3 Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
libvtv Regenerate configure of target libraries 2018-04-24 09:45:26 -07:00
lto-plugin re PR jit/85384 (libgccjit does not work if --with-gcc-major-version is used) 2018-04-18 11:46:58 +02:00
maintainer-scripts * crontab: Enable snapshots from gcc-8-branch. 2018-04-25 09:46:31 +02:00
zlib re PR bootstrap/79771 (in-tree zlib breaks build) 2017-03-14 23:01:23 -06:00
.dir-locals.el
.gitattributes add basic .gitattributes files to notice whitespace issues 2016-04-23 02:37:43 +00:00
.gitignore .gitignore: Ignore in-tree prerequisites. 2016-09-09 17:20:55 -04:00
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog Add myself to MAINTAINERS. 2018-04-23 18:53:34 +00:00
ChangeLog.jit Merger of dmalcolm/jit branch from git 2014-11-11 21:55:52 +00:00
ChangeLog.tree-ssa
MAINTAINERS Add myself to MAINTAINERS. 2018-04-23 18:53:34 +00:00
Makefile.def Remove Cilk Plus support. 2017-11-28 11:35:37 +01:00
Makefile.in Remove Cilk Plus support. 2017-11-28 11:35:37 +01:00
Makefile.tpl Fix profiledbootstrap. 2017-10-27 13:13:05 +00:00
README * README: Document use of ranges of years in copyright notices. 2012-07-16 15:01:34 +01:00
compile Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
config-ml.in config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
config.guess config.guess: Import latest version. 2018-01-03 15:25:18 +11:00
config.rpath
config.sub config.guess: Import latest version. 2018-01-03 15:25:18 +11:00
configure WebAssembly: Disable subdirectory configuration for unsupported LD 2018-02-13 13:01:33 +00:00
configure.ac WebAssembly: Disable subdirectory configuration for unsupported LD 2018-02-13 13:01:33 +00:00
depcomp Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
install-sh Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
libtool-ldflags re PR sanitizer/56781 (boostrap-asan failure: fixincl fails to link (missing -lasan)) 2014-04-17 14:23:28 +02:00
libtool.m4 * libtool.m4 (export_symbols_cmds) [AIX]: Add global TLS "L" symbols. 2015-11-26 08:20:59 -05:00
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
mkdep
mkinstalldirs Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
move-if-change Update move-if-change from gnulib 2014-11-16 16:12:44 +00:00
symlink-tree
ylwrap Update from upstream Automake files. 2014-11-16 14:07:13 +00:00

README

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.