about summary refs log tree commit diff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-06-08 10:28:38 -0700
committerH.J. Lu <hjl.tools@gmail.com>2018-06-08 10:28:52 -0700
commit67c0579669ba1fc265d770252fab31babf887329 (patch)
tree34059924ead164f11bc21fd73ccab758153bd9f7 /sysdeps/powerpc
parent1c09524e4db3efd797ebcfcd8241bdb78f0b06f0 (diff)
downloadglibc-67c0579669ba1fc265d770252fab31babf887329.tar.gz
glibc-67c0579669ba1fc265d770252fab31babf887329.tar.xz
glibc-67c0579669ba1fc265d770252fab31babf887329.zip
Mark _init and _fini as hidden [BZ #23145]
_init and _fini are special functions provided by glibc for linker to
define DT_INIT and DT_FINI in executable and shared library.  They
should never be put in dynamic symbol table.  This patch marks them as
hidden to remove them from dynamic symbol table.

Tested with build-many-glibcs.py.

	[BZ #23145]
	* elf/Makefile (tests-special): Add $(objpfx)check-initfini.out.
	($(all-built-dso:=.dynsym): New target.
	(common-generated): Add $(all-built-dso:$(common-objpfx)%=%.dynsym).
	($(objpfx)check-initfini.out): New target.
	(generated): Add check-initfini.out.
	* scripts/check-initfini.awk: New file.
	* sysdeps/aarch64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/alpha/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/arm/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/hppa/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/i386/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/ia64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/m68k/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/microblaze/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/mips/mips32/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/mips/mips64/n32/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/mips/mips64/n64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/nios2/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/powerpc/powerpc32/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/powerpc/powerpc64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/s390/s390-32/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/s390/s390-64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/sh/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/sparc/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
	* sysdeps/x86_64/crti.S (_init): Mark as hidden.
	(_fini): Likewise.
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/powerpc32/crti.S2
-rw-r--r--sysdeps/powerpc/powerpc64/crti.S2
2 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc32/crti.S b/sysdeps/powerpc/powerpc32/crti.S
index a30e33a75e..e4ee8dd484 100644
--- a/sysdeps/powerpc/powerpc32/crti.S
+++ b/sysdeps/powerpc/powerpc32/crti.S
@@ -58,6 +58,7 @@
 	.section .init,"ax",@progbits
 	.align	2
 	.globl	_init
+	.hidden	_init
 	.type	_init, @function
 _init:
 	stwu r1, -16(r1)
@@ -80,6 +81,7 @@ _init:
 	.section .fini,"ax",@progbits
 	.align	2
 	.globl	_fini
+	.hidden	_fini
 	.type	_fini, @function
 _fini:
 	stwu r1, -16(r1)
diff --git a/sysdeps/powerpc/powerpc64/crti.S b/sysdeps/powerpc/powerpc64/crti.S
index 61b1409a33..2242deb3dd 100644
--- a/sysdeps/powerpc/powerpc64/crti.S
+++ b/sysdeps/powerpc/powerpc64/crti.S
@@ -62,6 +62,7 @@
 #endif
 	.section ".init", "ax", @progbits
 	ENTRY_2(_init)
+	.hidden _init
 	.align ALIGNARG (2)
 BODY_LABEL (_init):
 	LOCALENTRY(_init)
@@ -80,6 +81,7 @@ BODY_LABEL (_init):
 
 	.section ".fini", "ax", @progbits
 	ENTRY_2(_fini)
+	.hidden _fini
 	.align ALIGNARG (2)
 BODY_LABEL (_fini):
 	LOCALENTRY(_fini)