GENERATE_SHLIB_SCRIPT vs. EMBEDDED.
authorAlan Modra <amodra@gmail.com>
Fri, 1 Nov 2019 03:15:25 +0000 (13:45 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 5 Nov 2019 04:02:19 +0000 (14:32 +1030)
A target that sets EMBEDDED non-empty is one that doesn't want to put
the ELF file header or program header in a memory image.  Likely the
target isn't interested in supporting dynamically loaded executables,
shared libraries, or PIEs, because loaders for such binaries generally
require program headers to be present.  This isn't 100% true though.
The target might be one where the loader accesses the file system in
order to retrieve headers.

Also, note that not all "shared libraries" require gcc -shared or the
shared library support in the linker.  I believe one implementation of
shared libraries on uclinux is like this.

So, this patch removes GENERATE_SHLIB_SCRIPT and GENERATE_PIE_SCRIPT
in most emulparams files where EMBEDDED is set, restoring the shared
lib and pie support in emulparams files that unset EMBEDDED after
including a file where the support is removed.

Exceptions to the general rule that EMBEDDED disables shared libs are:
  arm*-*-symbianelf*, where the OS wants shared library support
  without ELF program headers in the image, and

  sh*-*-uclinux*, where I've left things as they were, ie. both
  EMBEDDED and GENERATE_SHLIB_SCRIPT because I'm unsure as to the
  shared library scheme.

* emulparams/aarch64elf.sh (GENERATE_SHLIB_SCRIPT),
(GENERATE_PIE_SCRIPT): Don't set.
* emulparams/aarch64elf32.sh (GENERATE_SHLIB_SCRIPT),
(GENERATE_PIE_SCRIPT): Don't set.
* emulparams/arcelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
* emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT),
(GENERATE_PIE_SCRIPT): Don't set.
* emulparams/armelf_fbsd.sh (GENERATE_SHLIB_SCRIPT): Set.
* emulparams/armelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
(GENERATE_PIE_SCRIPT): Set.
* emulparams/armelf_vxworks.sh (GENERATE_SHLIB_SCRIPT): Set.
* emulparams/armsymbian.sh (GENERATE_SHLIB_SCRIPT): Set.
* emulparams/elf32bfin.sh (GENERATE_SHLIB_SCRIPT): Don't set.
* emulparams/elf32microblaze.sh (GENERATE_SHLIB_SCRIPT): Don't set.
* emulparams/score3_elf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
* emulparams/shelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
* emulparams/shelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
(GENERATE_PIE_SCRIPT): Set.
* emulparams/shelf_uclinux.sh (GENERATE_SHLIB_SCRIPT): Set.

15 files changed:
ld/ChangeLog
ld/emulparams/aarch64elf.sh
ld/emulparams/aarch64elf32.sh
ld/emulparams/arcelf.sh
ld/emulparams/armelf.sh
ld/emulparams/armelf_fbsd.sh
ld/emulparams/armelf_nbsd.sh
ld/emulparams/armelf_vxworks.sh
ld/emulparams/armsymbian.sh
ld/emulparams/elf32bfin.sh
ld/emulparams/elf32microblaze.sh
ld/emulparams/score3_elf.sh
ld/emulparams/shelf.sh
ld/emulparams/shelf_nbsd.sh
ld/emulparams/shelf_uclinux.sh

index 2741f877d0aff59207694d66695854dbef34b47c..431e5b62b1fc9d502a5848f59ab5edc5b011cc91 100644 (file)
@@ -1,3 +1,25 @@
+2019-11-05  Alan Modra  <amodra@gmail.com>
+
+       * emulparams/aarch64elf.sh (GENERATE_SHLIB_SCRIPT),
+       (GENERATE_PIE_SCRIPT): Don't set.
+       * emulparams/aarch64elf32.sh (GENERATE_SHLIB_SCRIPT),
+       (GENERATE_PIE_SCRIPT): Don't set.
+       * emulparams/arcelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
+       * emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT),
+       (GENERATE_PIE_SCRIPT): Don't set.
+       * emulparams/armelf_fbsd.sh (GENERATE_SHLIB_SCRIPT): Set.
+       * emulparams/armelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
+       (GENERATE_PIE_SCRIPT): Set.
+       * emulparams/armelf_vxworks.sh (GENERATE_SHLIB_SCRIPT): Set.
+       * emulparams/armsymbian.sh (GENERATE_SHLIB_SCRIPT): Set.
+       * emulparams/elf32bfin.sh (GENERATE_SHLIB_SCRIPT): Don't set.
+       * emulparams/elf32microblaze.sh (GENERATE_SHLIB_SCRIPT): Don't set.
+       * emulparams/score3_elf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
+       * emulparams/shelf.sh (GENERATE_SHLIB_SCRIPT): Don't set.
+       * emulparams/shelf_nbsd.sh (GENERATE_SHLIB_SCRIPT),
+       (GENERATE_PIE_SCRIPT): Set.
+       * emulparams/shelf_uclinux.sh (GENERATE_SHLIB_SCRIPT): Set.
+
 2019-11-05  Alan Modra  <amodra@gmail.com>
 
        * emulparams/elf32bfinfd.sh: Unset EMBEDDED rather assigning as empty.
index 8f68e517b455df42feada69748069e759dea3bed..5c70b556864bc493af69ab0c338291b16ce76727 100644 (file)
@@ -12,9 +12,6 @@ NO_REL_RELOCS=yes
 TEMPLATE_NAME=elf
 EXTRA_EM_FILE=aarch64elf
 
-GENERATE_SHLIB_SCRIPT=yes
-GENERATE_PIE_SCRIPT=yes
-
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 
 ENTRY=_start
index 5a08d9e29f1d1376438b2449698835cf76073799..a94025a139b514a20a1bf5923fa544ab93f8f617 100644 (file)
@@ -12,9 +12,6 @@ NO_REL_RELOCS=yes
 TEMPLATE_NAME=elf
 EXTRA_EM_FILE=aarch64elf
 
-GENERATE_SHLIB_SCRIPT=yes
-GENERATE_PIE_SCRIPT=yes
-
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 
 ENTRY=_start
index 625ec3977900773c25e597c0e7f4a1e1343f4436..b6d8f9fdf763fcd2bdd7f7ed71df9ccc6933a185 100644 (file)
@@ -19,5 +19,3 @@ SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
 JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
 EMBEDDED=yes
-
-GENERATE_SHLIB_SCRIPT=yes
index 0e3147c1f243a64cce4f05a0016aee8180fb6594..8977fd6fea8f6dcd059ead974c270b57dbd39a64 100644 (file)
@@ -32,9 +32,6 @@ OTHER_READONLY_SECTIONS="
 
 DATA_START_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__data_start = .${CREATE_SHLIB+)};"
 
-GENERATE_SHLIB_SCRIPT=yes
-GENERATE_PIE_SCRIPT=yes
-
 ARCH=arm
 MACHINE=
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
index be88c2f2e0eecc66224a4e97b7edb3bfb20bd953..4428b91a34f1d2299e4a0503ba83e5b2dc9bc008 100644 (file)
@@ -5,7 +5,7 @@ TEXT_START_ADDR=0x00010000
 
 TARGET2_TYPE=got-rel
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
+GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
-
 unset STACK_ADDR
 unset EMBEDDED
index 37e1a4afdd0e63cccf21d638c49b1daba2f798ba..45954597ee5d4a8bb56d7331295f820092993876 100644 (file)
@@ -3,5 +3,7 @@ MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 TEXT_START_ADDR=0x00008000
 TARGET2_TYPE=got-rel
 
+GENERATE_SHLIB_SCRIPT=yes
+GENERATE_PIE_SCRIPT=yes
 unset STACK_ADDR
 unset EMBEDDED
index 5f57535feed82431d4a68fab93597053c988d4a7..e344209905eff3b63373afe02f577fb6d125e15e 100644 (file)
@@ -4,3 +4,4 @@ BIG_OUTPUT_FORMAT="elf32-bigarm-vxworks"
 LITTLE_OUTPUT_FORMAT="$OUTPUT_FORMAT"
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 source_sh ${srcdir}/emulparams/vxworks.sh
+GENERATE_SHLIB_SCRIPT=yes
index 1959685f9b488925aef93bfddc01fcff66d888fe..183750a5647125a3f4fc3cceab5bebb01b0cb033 100644 (file)
@@ -8,6 +8,8 @@ TARGET1_IS_REL=1
 TARGET2_TYPE=abs
 # On BPABI systems, program headers should not be mapped.
 EMBEDDED=yes
+# Nonetheless, shared libraries are also supported
+GENERATE_SHLIB_SCRIPT=yes
 
 # As for armelf.sh, but add the SymbianOS-specific
 # .ARM.exidx$${Base,Limit} symbols.
index 8d298b467c9e4ef766396473e40ec10161486676..6e08035b6f34c12dd5befa72dfdce988f64e1688 100644 (file)
@@ -6,7 +6,6 @@ TARGET_PAGE_SIZE=0x1000
 ARCH=bfin
 MACHINE=
 TEMPLATE_NAME=elf
-GENERATE_SHLIB_SCRIPT=yes
 EMBEDDED=yes
 USER_LABEL_PREFIX=_
 EXTRA_EM_FILE=bfin
index f867018eb38fb72c9c294f4a66fcf5ddf457055f..698adb7cf830451ad037143aacb4c6fb4948695e 100644 (file)
@@ -21,6 +21,3 @@ NOP=0x80000000
 #OTHER_RELOCATING_SECTIONS='PROVIDE (_stack = _end + 0x1000);'
 
 TEMPLATE_NAME=elf
-#GENERATE_SHLIB_SCRIPT=yes
-
-
index 7be7883363e9af2b026f93237fbdab9ad92a40a6..78401876e5fcec287a5947267ae5157fee89d526 100644 (file)
@@ -26,4 +26,3 @@ ARCH=score3
 MACHINE=
 ENTRY=_start
 EMBEDDED=yes
-GENERATE_SHLIB_SCRIPT=yes
index 63c2ff19dc924220ddf5ae20ca36ace0ea1237e0..96c18c07502ce30b84ee8ba80d60dcae140cd83c 100644 (file)
@@ -9,7 +9,6 @@ MAXPAGESIZE=128
 ARCH=sh
 MACHINE=
 TEMPLATE_NAME=elf
-GENERATE_SHLIB_SCRIPT=yes
 EMBEDDED=yes
 # These are for compatibility with the COFF toolchain.
 ENTRY=start
index 391399660d8325b8c18467a589b4a8257bb3406d..57db803d0024f57596beb1c8fee23f3b42e6311b 100644 (file)
@@ -11,5 +11,7 @@ DATA_START_SYMBOLS='PROVIDE (__data_start = .);';
 
 ENTRY=_start
 
+GENERATE_SHLIB_SCRIPT=yes
+GENERATE_PIE_SCRIPT=yes
 unset EMBEDDED
 unset STACK_ADDR
index a22c35a9a8a1340c64b96df6033d9b1fe93d91ad..41044f028ce2a7561d7b4d4d2e392447f7635945 100644 (file)
@@ -2,3 +2,4 @@ source_sh ${srcdir}/emulparams/shelf.sh
 
 # We do not want a .stack section
 unset STACK_ADDR
+GENERATE_SHLIB_SCRIPT=yes