--- binutils.orig/ld/ldlang.c 2021-09-17 10:38:18.073366643 +0100 +++ binutils-2.37/ld/ldlang.c 2021-09-17 10:50:50.155450530 +0100 @@ -6978,7 +6978,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 .text section for executables. */ + else if bfd_link_executable (&link_info) { asection *ts; @@ -7004,6 +7005,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); + } } } diff -rup binutils.orig/ld/testsuite/ld-arm/tls-gdesc-got.d binutils-2.37/ld/testsuite/ld-arm/tls-gdesc-got.d --- binutils.orig/ld/testsuite/ld-arm/tls-gdesc-got.d 2021-09-29 13:17:21.501277341 +0100 +++ binutils-2.37/ld/testsuite/ld-arm/tls-gdesc-got.d 2021-09-29 13:20:04.481132127 +0100 @@ -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: diff -rup binutils.orig/ld/testsuite/ld-i386/tlsnopic.rd binutils-2.37/ld/testsuite/ld-i386/tlsnopic.rd --- binutils.orig/ld/testsuite/ld-i386/tlsnopic.rd 2021-09-29 13:17:21.588276729 +0100 +++ binutils-2.37/ld/testsuite/ld-i386/tlsnopic.rd 2021-09-29 13:20:59.456745814 +0100 @@ -26,7 +26,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: diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr14207.d binutils-2.37/ld/testsuite/ld-x86-64/pr14207.d --- binutils.orig/ld/testsuite/ld-x86-64/pr14207.d 2021-09-29 13:17:21.551276989 +0100 +++ binutils-2.37/ld/testsuite/ld-x86-64/pr14207.d 2021-09-29 13:21:27.632547838 +0100 @@ -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: diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlsdesc.rd binutils-2.37/ld/testsuite/ld-x86-64/tlsdesc.rd --- binutils.orig/ld/testsuite/ld-x86-64/tlsdesc.rd 2021-09-29 13:17:21.554276968 +0100 +++ binutils-2.37/ld/testsuite/ld-x86-64/tlsdesc.rd 2021-09-29 13:21:47.920405285 +0100 @@ -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: diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic.rd binutils-2.37/ld/testsuite/ld-x86-64/tlspic.rd --- binutils.orig/ld/testsuite/ld-x86-64/tlspic.rd 2021-09-29 13:17:21.546277025 +0100 +++ binutils-2.37/ld/testsuite/ld-x86-64/tlspic.rd 2021-09-29 13:22:04.224290720 +0100 @@ -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: diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd binutils-2.37/ld/testsuite/ld-x86-64/tlspic2.rd --- binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd 2021-09-29 13:17:21.552276982 +0100 +++ binutils-2.37/ld/testsuite/ld-x86-64/tlspic2.rd 2021-09-29 13:22:18.432190887 +0100 @@ -30,7 +30,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: