Change the linker's heuristic for computing the entry point for binaries so that...
authorNick Clifton <nickc@redhat.com>
Tue, 21 Sep 2021 12:21:41 +0000 (13:21 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 21 Sep 2021 12:21:41 +0000 (13:21 +0100)
* 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.

22 files changed:
ld/ChangeLog
ld/ld.texi
ld/ldlang.c
ld/testsuite/ld-alpha/tlspic.rd
ld/testsuite/ld-arm/tls-gdesc-got.d
ld/testsuite/ld-i386/tlsnopic.rd
ld/testsuite/ld-ia64/tlspic.rd
ld/testsuite/ld-sparc/gotop32.rd
ld/testsuite/ld-sparc/gotop64.rd
ld/testsuite/ld-sparc/tlssunnopic32.rd
ld/testsuite/ld-sparc/tlssunnopic64.rd
ld/testsuite/ld-sparc/tlssunpic32.rd
ld/testsuite/ld-sparc/tlssunpic64.rd
ld/testsuite/ld-tic6x/shlib-1.rd
ld/testsuite/ld-tic6x/shlib-1b.rd
ld/testsuite/ld-tic6x/shlib-1r.rd
ld/testsuite/ld-tic6x/shlib-1rb.rd
ld/testsuite/ld-tic6x/shlib-noindex.rd
ld/testsuite/ld-x86-64/pr14207.d
ld/testsuite/ld-x86-64/tlsdesc.rd
ld/testsuite/ld-x86-64/tlspic.rd
ld/testsuite/ld-x86-64/tlspic2.rd

index 2733da1f08e2d69d25fec5eccf9974024591f815..9be239d4d812bd23282708d52b70f2a6a112be52 100644 (file)
@@ -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>
 
        * testsuite/ld-arc/got-weak.d: Update file.
index 72b5c373ba10d92512c6d8aafd9d938c16b9ee01..db410f0bf2d63e08d4b6532de0fc38de83b95e1c 100644 (file)
@@ -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
 check a list of possible entry symbols, matching the first one found.
 @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
 The address @code{0}.
 @end itemize
index 2610be995cad0e960a494dffe77bf511efc4dd26..bc3f8b76d355e952a1036c3ff712e5f51863839e 100644 (file)
@@ -6984,7 +6984,8 @@ lang_end (void)
          if (!bfd_set_start_address (link_info.output_bfd, val))
            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;
 
@@ -7010,6 +7011,13 @@ lang_end (void)
                       entry_symbol.name);
            }
        }
+      else
+       {
+         if (warn)
+           einfo (_("%P: warning: cannot find entry symbol %s;"
+                    " not setting start address\n"),
+                  entry_symbol.name);
+       }
     }
 }
 
index b79fc71463d4adc78ba3c3dea545fefb66232195..a19df375b7c3df5a59530c49f7609267fae16d67 100644 (file)
@@ -29,7 +29,7 @@ Section Headers:
 #...
 
 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]+
 
 Program Headers:
index 873d11f3328b7b1ecfa77fb03650f3114ea261e2..38efaa88f5cdfa29bfec33d0098a84e09f480003 100644 (file)
@@ -2,7 +2,7 @@
 .*/tls-lib2-got.so:     file format elf32-.*arm.*
 architecture: arm.*, flags 0x00000150:
 HAS_SYMS, DYNAMIC, D_PAGED
-start address 0x0+8(1e8|220)
+start address 0x[0-9a-f]+
 
 
 Disassembly of section .got:
index 229ce23a9af214515e44c7d9fa766b1dc69462b0..719e44d0e0ff6a6202b4abb453788842aea377a3 100644 (file)
@@ -26,7 +26,7 @@ Key to Flags:
 #...
 
 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]+
 
 Program Headers:
index 02c98006ea04976a0b7efb8a4681bcf35a9abaec..4b6e76e594329a6d7b006fb5d485a2a20f430d88 100644 (file)
@@ -31,7 +31,7 @@ Key to Flags:
 #...
 
 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]+
 
 Program Headers:
index 0f02e9191cc6383108e2859840c2abab1dd03492..a6b7107dee6b8dd43a77999e640ab2a381ddc14f 100644 (file)
@@ -23,7 +23,7 @@ Section Headers:
 #...
 
 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]+
 
 Program Headers:
index 249d7312a47b187aa7e7697d8c3cf375497c1943..22b3769292b7ce9b1a8b71d0b25f487ceff16845 100644 (file)
@@ -23,7 +23,7 @@ Section Headers:
 #...
 
 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]+
 
 Program Headers:
index 01f893345872a0c5c73948ea6d34276eff5f78c4..5574868393f3ec60acf76c6af85c1d9db95be7f4 100644 (file)
@@ -23,7 +23,7 @@ Section Headers:
  +\[[ 0-9]+\] .shstrtab +.*
 #...
 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]+
 
 Program Headers:
index 8104c67c8a1a2373e1ec08c836de5f5b97b0c9c1..cadc77c344fb33311df6e50dcc2ad13c22959b97 100644 (file)
@@ -23,7 +23,7 @@ Section Headers:
  +\[[ 0-9]+\] .shstrtab +.*
 #...
 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]+
 
 Program Headers:
index d4012626a498690b7364c10feeacf4e584794e09..7ad8c99d1340ae8f55dc9a3066c37c273b32de16 100644 (file)
@@ -27,7 +27,7 @@ Section Headers:
 #...
 
 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]+
 
 Program Headers:
index 58162057f9b2264ecef42951840d8ec10131166c..61f84c580f2c767ecba2b5d4e5ac84e643dafa65 100644 (file)
@@ -27,7 +27,7 @@ Section Headers:
 #...
 
 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]+
 
 Program Headers:
index 6b64d01271b75b638a483e0661f70c2d576df0d1..9ad2396170e68e4866d13ff8ec7295966d851e58 100644 (file)
@@ -23,7 +23,7 @@ Key to Flags:
 #...
 
 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
 
 Program Headers:
index 6b64d01271b75b638a483e0661f70c2d576df0d1..9ad2396170e68e4866d13ff8ec7295966d851e58 100644 (file)
@@ -23,7 +23,7 @@ Key to Flags:
 #...
 
 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
 
 Program Headers:
index 6b64d01271b75b638a483e0661f70c2d576df0d1..9ad2396170e68e4866d13ff8ec7295966d851e58 100644 (file)
@@ -23,7 +23,7 @@ Key to Flags:
 #...
 
 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
 
 Program Headers:
index 6b64d01271b75b638a483e0661f70c2d576df0d1..9ad2396170e68e4866d13ff8ec7295966d851e58 100644 (file)
@@ -23,7 +23,7 @@ Key to Flags:
 #...
 
 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
 
 Program Headers:
index 38934ba2b5fe9ae0627e8992a56076d1812a8f60..f087d15bffd1b0760cca2391e392734bd71a6736 100644 (file)
@@ -24,7 +24,7 @@ Key to Flags:
 #...
 
 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
 
 Program Headers:
index 1713888ff7110e83c83e7c9bda3c91a3651f7498..f330600b9163bbed7e602a980d92877274d374ee 100644 (file)
@@ -5,7 +5,7 @@
 #target: x86_64-*-linux*
 
 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
 
 Program Headers:
index 58feb20e55acd59349a40086f66bccbc6fe42852..98bda5b2a39197ae0e8e51fa660e3a670909e24b 100644 (file)
@@ -29,7 +29,7 @@ Key to Flags:
 #...
 
 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]+
 
 Program Headers:
index 2e44dc6ac6b31e847ace569ace5a04bee6e0196a..e5d991ab32389448bff4e6919e869dbf110408dd 100644 (file)
@@ -29,7 +29,7 @@ Key to Flags:
 #...
 
 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]+
 
 Program Headers:
index 60decd2787be65bc6be3e7e53a52415229a7fc73..4c20f3b4252bfb9d862d08c16b2c8d22764f7e61 100644 (file)
@@ -29,7 +29,7 @@ Key to Flags:
 #...
 
 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]+
 
 Program Headers: