Browse Source

Change the linker's heuristic for computing the entry point for binaries so that shared libraries default to an entry point of 0.

* ldlang.c (lang_end): When computing the entry point, only
	try the start address of the entry section when creating an
	executable.
	* ld.texi (Entry point): Update description of heuristic used to
	choose the entry point.
	testsuite/ld-alpha/tlspic.rd: Update expected entry point address.
	testsuite/ld-arm/tls-gdesc-got.d: Likewise.
	testsuite/ld-i386/tlsnopic.rd: Likewise.
	testsuite/ld-ia64/tlspic.rd: Likewise.
	testsuite/ld-sparc/gotop32.rd: Likewise.
	testsuite/ld-sparc/gotop64.rd: Likewise.
	testsuite/ld-sparc/tlssunnopic32.rd: Likewise.
	testsuite/ld-sparc/tlssunnopic64.rd: Likewise.
	testsuite/ld-sparc/tlssunpic32.rd: Likewise.
	testsuite/ld-sparc/tlssunpic64.rd: Likewise.
	testsuite/ld-tic6x/shlib-1.rd: Likewise.
	testsuite/ld-tic6x/shlib-1b.rd: Likewise.
	testsuite/ld-tic6x/shlib-1r.rd: Likewise.
	testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
	testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
	testsuite/ld-x86-64/pr14207.d: Likewise.
	testsuite/ld-x86-64/tlsdesc.rd: Likewise.
	testsuite/ld-x86-64/tlspic.rd: Likewise.
	testsuite/ld-x86-64/tlspic2.rd: Likewise.
binutils-2_38-branch
Nick Clifton 5 years ago
parent
commit
5226a6a892
  1. 27
      ld/ChangeLog
  2. 4
      ld/ld.texi
  3. 10
      ld/ldlang.c
  4. 2
      ld/testsuite/ld-alpha/tlspic.rd
  5. 2
      ld/testsuite/ld-arm/tls-gdesc-got.d
  6. 2
      ld/testsuite/ld-i386/tlsnopic.rd
  7. 2
      ld/testsuite/ld-ia64/tlspic.rd
  8. 2
      ld/testsuite/ld-sparc/gotop32.rd
  9. 2
      ld/testsuite/ld-sparc/gotop64.rd
  10. 2
      ld/testsuite/ld-sparc/tlssunnopic32.rd
  11. 2
      ld/testsuite/ld-sparc/tlssunnopic64.rd
  12. 2
      ld/testsuite/ld-sparc/tlssunpic32.rd
  13. 2
      ld/testsuite/ld-sparc/tlssunpic64.rd
  14. 2
      ld/testsuite/ld-tic6x/shlib-1.rd
  15. 2
      ld/testsuite/ld-tic6x/shlib-1b.rd
  16. 2
      ld/testsuite/ld-tic6x/shlib-1r.rd
  17. 2
      ld/testsuite/ld-tic6x/shlib-1rb.rd
  18. 2
      ld/testsuite/ld-tic6x/shlib-noindex.rd
  19. 2
      ld/testsuite/ld-x86-64/pr14207.d
  20. 2
      ld/testsuite/ld-x86-64/tlsdesc.rd
  21. 2
      ld/testsuite/ld-x86-64/tlspic.rd
  22. 2
      ld/testsuite/ld-x86-64/tlspic2.rd

27
ld/ChangeLog

@ -1,3 +1,30 @@
2021-09-21 Nick Clifton <nickc@redhat.com>
* ldlang.c (lang_end): When computing the entry point, only
try the start address of the entry section when creating an
executable.
* ld.texi (Entry point): Update description of heuristic used to
choose the entry point.
testsuite/ld-alpha/tlspic.rd: Update expected entry point address.
testsuite/ld-arm/tls-gdesc-got.d: Likewise.
testsuite/ld-i386/tlsnopic.rd: Likewise.
testsuite/ld-ia64/tlspic.rd: Likewise.
testsuite/ld-sparc/gotop32.rd: Likewise.
testsuite/ld-sparc/gotop64.rd: Likewise.
testsuite/ld-sparc/tlssunnopic32.rd: Likewise.
testsuite/ld-sparc/tlssunnopic64.rd: Likewise.
testsuite/ld-sparc/tlssunpic32.rd: Likewise.
testsuite/ld-sparc/tlssunpic64.rd: Likewise.
testsuite/ld-tic6x/shlib-1.rd: Likewise.
testsuite/ld-tic6x/shlib-1b.rd: Likewise.
testsuite/ld-tic6x/shlib-1r.rd: Likewise.
testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
testsuite/ld-x86-64/pr14207.d: Likewise.
testsuite/ld-x86-64/tlsdesc.rd: Likewise.
testsuite/ld-x86-64/tlspic.rd: Likewise.
testsuite/ld-x86-64/tlspic2.rd: Likewise.
2021-09-15 Claudiu Zissulescu <claziss@synopsys.com> 2021-09-15 Claudiu Zissulescu <claziss@synopsys.com>
* testsuite/ld-arc/got-weak.d: Update file. * testsuite/ld-arc/got-weak.d: Update file.

4
ld/ld.texi

@ -3910,7 +3910,9 @@ the value of a target-specific symbol, if it is defined; For many
targets this is @code{start}, but PE- and BeOS-based systems for example targets this is @code{start}, but PE- and BeOS-based systems for example
check a list of possible entry symbols, matching the first one found. check a list of possible entry symbols, matching the first one found.
@item @item
the address of the first byte of the @samp{.text} section, if present; the address of the first byte of the code section, if present and an
executable is being created - the code section is usually
@samp{.text}, but can be something else;
@item @item
The address @code{0}. The address @code{0}.
@end itemize @end itemize

10
ld/ldlang.c

@ -6984,7 +6984,8 @@ lang_end (void)
if (!bfd_set_start_address (link_info.output_bfd, val)) if (!bfd_set_start_address (link_info.output_bfd, val))
einfo (_("%F%P: can't set start address\n")); einfo (_("%F%P: can't set start address\n"));
} }
else /* BZ 2004952: Only use the start of the entry section for executables. */
else if bfd_link_executable (&link_info)
{ {
asection *ts; asection *ts;
@ -7010,6 +7011,13 @@ lang_end (void)
entry_symbol.name); entry_symbol.name);
} }
} }
else
{
if (warn)
einfo (_("%P: warning: cannot find entry symbol %s;"
" not setting start address\n"),
entry_symbol.name);
}
} }
} }

2
ld/testsuite/ld-alpha/tlspic.rd

@ -29,7 +29,7 @@ Section Headers:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-arm/tls-gdesc-got.d

@ -2,7 +2,7 @@
.*/tls-lib2-got.so: file format elf32-.*arm.* .*/tls-lib2-got.so: file format elf32-.*arm.*
architecture: arm.*, flags 0x00000150: architecture: arm.*, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED HAS_SYMS, DYNAMIC, D_PAGED
start address 0x0+8(1e8|220) start address 0x[0-9a-f]+
Disassembly of section .got: Disassembly of section .got:

2
ld/testsuite/ld-i386/tlsnopic.rd

@ -26,7 +26,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-ia64/tlspic.rd

@ -31,7 +31,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/gotop32.rd

@ -23,7 +23,7 @@ Section Headers:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/gotop64.rd

@ -23,7 +23,7 @@ Section Headers:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/tlssunnopic32.rd

@ -23,7 +23,7 @@ Section Headers:
+\[[ 0-9]+\] .shstrtab +.* +\[[ 0-9]+\] .shstrtab +.*
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/tlssunnopic64.rd

@ -23,7 +23,7 @@ Section Headers:
+\[[ 0-9]+\] .shstrtab +.* +\[[ 0-9]+\] .shstrtab +.*
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/tlssunpic32.rd

@ -27,7 +27,7 @@ Section Headers:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-sparc/tlssunpic64.rd

@ -27,7 +27,7 @@ Section Headers:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-tic6x/shlib-1.rd

@ -23,7 +23,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x10000080 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 52 There are 4 program headers, starting at offset 52
Program Headers: Program Headers:

2
ld/testsuite/ld-tic6x/shlib-1b.rd

@ -23,7 +23,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x10000080 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 52 There are 4 program headers, starting at offset 52
Program Headers: Program Headers:

2
ld/testsuite/ld-tic6x/shlib-1r.rd

@ -23,7 +23,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x10000080 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 52 There are 4 program headers, starting at offset 52
Program Headers: Program Headers:

2
ld/testsuite/ld-tic6x/shlib-1rb.rd

@ -23,7 +23,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x10000080 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 52 There are 4 program headers, starting at offset 52
Program Headers: Program Headers:

2
ld/testsuite/ld-tic6x/shlib-noindex.rd

@ -24,7 +24,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x10000080 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 52 There are 4 program headers, starting at offset 52
Program Headers: Program Headers:

2
ld/testsuite/ld-x86-64/pr14207.d

@ -5,7 +5,7 @@
#target: x86_64-*-linux* #target: x86_64-*-linux*
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x149 Entry point 0x[0-9a-f]+
There are 4 program headers, starting at offset 64 There are 4 program headers, starting at offset 64
Program Headers: Program Headers:

2
ld/testsuite/ld-x86-64/tlsdesc.rd

@ -29,7 +29,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-x86-64/tlspic.rd

@ -29,7 +29,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

2
ld/testsuite/ld-x86-64/tlspic2.rd

@ -29,7 +29,7 @@ Key to Flags:
#... #...
Elf file type is DYN \(Shared object file\) Elf file type is DYN \(Shared object file\)
Entry point 0x1000 Entry point 0x[0-9a-f]+
There are [0-9]+ program headers, starting at offset [0-9]+ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers: Program Headers:

Loading…
Cancel
Save