[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#993644: Program search dirs contains many duplicated directories



Package: gcc-11
Version: 11.2.0-4
Severity: normal
X-Debbugs-Cc: josh@joshtriplett.org

The GCC program search dirs contain many duplicated directories. Every time GCC
has to search for a file, it's doing the same searches repeatedly, and
this adds up.

$ gcc-11 -print-search-dirs | grep '^programs:'
programs: =/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/bin/

The first five entries of this are:
/usr/lib/gcc/x86_64-linux-gnu/11/
/usr/lib/gcc/x86_64-linux-gnu/11/
/usr/lib/gcc/x86_64-linux-gnu/
/usr/lib/gcc/x86_64-linux-gnu/11/
/usr/lib/gcc/x86_64-linux-gnu/

Net result, as seen in strace from just one gcc invocation:
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/x86_64-linux-gnu-as", 0x7ffe844509a0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/as", 0x7ffe844509f0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/x86_64-linux-gnu-as", 0x7ffe844509a0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/as", 0x7ffe844509f0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/x86_64-linux-gnu-as", 0x7ffe844509a0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffe844509f0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/x86_64-linux-gnu-as", 0x7ffe844509a0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/11/as", 0x7ffe844509f0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/x86_64-linux-gnu-as", 0x7ffe844509a0) = -1 ENOENT (No such file or directory)
24060 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffe844509f0) = -1 ENOENT (No such file or directory)
...
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/real-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/real-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/real-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/real-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/real-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/collect-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/collect-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/collect-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/collect-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/collect-ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/ld", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
...
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gnm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gnm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/gnm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gnm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/gnm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
...
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/nm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/nm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/nm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/nm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/nm", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
...
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gstrip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gstrip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/gstrip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/gstrip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/gstrip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
...
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/strip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/strip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/strip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/11/strip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)
24063 stat("/usr/lib/gcc/x86_64-linux-gnu/strip", 0x7ffd16d67830) = -1 ENOENT (No such file or directory)


Removing the duplicate directories from the search path would eliminate
these duplicate searches, which add up over the course of a large build.


-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (500, 'testing'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: arm64

Kernel: Linux 5.13.0-trunk-amd64 (SMP w/8 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages gcc-11 depends on:
ii  binutils       2.37-5
ii  cpp-11         11.2.0-4
ii  gcc-11-base    11.2.0-4
ii  libc6          2.31-17
ii  libcc1-0       11.2.0-4
ii  libgcc-11-dev  11.2.0-4
ii  libgcc-s1      11.2.0-4
ii  libgmp10       2:6.2.1+dfsg-1
ii  libisl23       0.23-1
ii  libmpc3        1.2.0-1
ii  libmpfr6       4.1.0-3
ii  libstdc++6     11.2.0-4
ii  libzstd1       1.4.8+dfsg-2.1
ii  zlib1g         1:1.2.11.dfsg-2

Versions of packages gcc-11 recommends:
ii  libc6-dev  2.31-17

Versions of packages gcc-11 suggests:
pn  gcc-11-doc       <none>
pn  gcc-11-locales   <none>
pn  gcc-11-multilib  <none>

-- no debconf information


Reply to: