mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00

Remove an inconsistency in linker error message processing causing that it depends on the ability to infer the name of the originating source file whether or not the name of the offending function is repeated by clever formatters for each issue reported within the function. Taking the `ld/testsuite/ld-powerpc/tocopt7.s' test case source as an example and the `powerpc-linux' target we have: $ as -gdwarf2 -o tocopt.o -a64 tocopt.s $ ld -o tocopt -melf64ppc tocopt.o tocopt.o: In function `_start': tocopt.s:35:(.text+0x14): toc optimization is not supported for 0x3fa00000 instruction. tocopt.s:49:(.text+0x34): toc optimization is not supported for 0x3fa00000 instruction. $ vs: $ as -o tocopt.o -a64 tocopt.s $ ld -o tocopt -melf64ppc tocopt.o tocopt.o: In function `_start': (.text+0x14): toc optimization is not supported for 0x3fa00000 instruction. tocopt.o: In function `_start': (.text+0x34): toc optimization is not supported for 0x3fa00000 instruction. $ Similarly with the `mips-linux' target and this source: $ cat jal-global-multi-overflow.s .text .set noreorder .space 0x2000 .align 4 .globl foo .ent foo foo: jal bar nor $0, $0 jal bar nor $0, $0 .end foo .space 0x1ff0 .align 4 .globl bar .ent bar bar: jal foo nor $0, $0 jal foo nor $0, $0 .end bar $ as -o jal-global-multi-overflow.o jal-global-multi-overflow.s $ ld -Ttext 0x1fffd000 -e foo -o jal-global-multi-overflow jal-global-multi-overflow.o jal-global-multi-overflow.o: In function `foo': (.text+0x2000): relocation truncated to fit: R_MIPS_26 against `bar' jal-global-multi-overflow.o: In function `foo': (.text+0x2008): relocation truncated to fit: R_MIPS_26 against `bar' jal-global-multi-overflow.o: In function `bar': (.text+0x4000): relocation truncated to fit: R_MIPS_26 against `foo' jal-global-multi-overflow.o: In function `bar': (.text+0x4008): relocation truncated to fit: R_MIPS_26 against `foo' $ Not only this is inconsistent, but it causes output clutter as well with redundant information. The cause for this is a check in `vfinfo' the intent of which is to print the function heading whenever (among others) the name of the source file has changed, which however does not take into account a situation where the name couldn't have been established both now and previously. Adjust the check then for this situation, yielding: $ as -o tocopt.o -a64 tocopt.s $ ld -o tocopt -melf64ppc tocopt.o tocopt.o: In function `_start': (.text+0x14): toc optimization is not supported for 0x3fa00000 instruction. (.text+0x34): toc optimization is not supported for 0x3fa00000 instruction. $ and: $ as -o jal-global-multi-overflow.o jal-global-multi-overflow.s $ ld -Ttext 0x1fffd000 -e foo -o jal-global-multi-overflow jal-global-multi-overflow.o jal-global-multi-overflow.o: In function `foo': (.text+0x2000): relocation truncated to fit: R_MIPS_26 against `bar' (.text+0x2008): relocation truncated to fit: R_MIPS_26 against `bar' jal-global-multi-overflow.o: In function `bar': (.text+0x4000): relocation truncated to fit: R_MIPS_26 against `foo' (.text+0x4008): relocation truncated to fit: R_MIPS_26 against `foo' $ respectively instead. Adjust the test suite accordingly. ld/ * ldmisc.c (vfinfo): Don't print the function name again either if no source file name has been found both now and previously. * testsuite/ld-cris/tls-err-20x.d: Adjust accordingly. * testsuite/ld-mips-elf/mode-change-error-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-mips16.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-micromips.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-r6-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-2.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-r6-2.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-ignore-2.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-ignore-mips16.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-ignore-micromips.d: Likewise. * testsuite/ld-mips-elf/unaligned-branch-ignore-r6-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-addend-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-addend-mips16-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-addend-micromips-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-addend-3.d: Likewise. * testsuite/ld-mips-elf/unaligned-jump.d: Likewise. * testsuite/ld-mips-elf/unaligned-jump-mips16.d: Likewise. * testsuite/ld-mips-elf/unaligned-jump-micromips.d: Likewise. * testsuite/ld-mips-elf/unaligned-lwpc-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-ldpc-1.d: Likewise. * testsuite/ld-powerpc/tocopt.out: Likewise. * testsuite/ld-powerpc/tocopt7.out: Likewise.
…
…
…
…
…
…
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
Languages
C
51.8%
Makefile
22.4%
Assembly
12.3%
C++
6%
Roff
1.4%
Other
5.4%