about summary refs log tree commit diff
path: root/sysdeps/x86_64/localplt.data
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-03-09 13:22:01 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-03-11 09:40:28 -0700
commit688e958c81f230b5860b57590f45f1bc729ba2cf (patch)
tree889e0d4d54134c351c6c3510021c846dd0f497ae /sysdeps/x86_64/localplt.data
parenta2d4cf72c0ab07d4e58b42c01ac3ed2b95ca8d9b (diff)
downloadglibc-688e958c81f230b5860b57590f45f1bc729ba2cf.tar.gz
glibc-688e958c81f230b5860b57590f45f1bc729ba2cf.tar.xz
glibc-688e958c81f230b5860b57590f45f1bc729ba2cf.zip
Extend local PLT reference check hjl/pr18078
On x86, linker in binutils 2.26 and newer consolidates R_*_JUMP_SLOT with
R_*_GLOB_DAT relocation against the same symbol.  This patch extends
local PLT reference check to support alternate relocations.

	[BZ #18078]
	* scripts/check-localplt.awk: Support alternate relocations.
	* scripts/localplt.awk: Also check relocations in DT_RELA/DT_REL
	sections.
	* sysdeps/unix/sysv/linux/i386/localplt.data: Mark free and
	malloc entries with + REL R_386_GLOB_DAT.
	* sysdeps/x86_64/localplt.data: New file.
Diffstat (limited to 'sysdeps/x86_64/localplt.data')
-rw-r--r--sysdeps/x86_64/localplt.data19
1 files changed, 19 insertions, 0 deletions
diff --git a/sysdeps/x86_64/localplt.data b/sysdeps/x86_64/localplt.data
new file mode 100644
index 0000000000..d140476dfe
--- /dev/null
+++ b/sysdeps/x86_64/localplt.data
@@ -0,0 +1,19 @@
+# See scripts/check-localplt.awk for how this file is processed.
+# PLT use is required for the malloc family and for matherr because
+# users can define their own functions and have library internals call them.
+# Linker in binutils 2.26 and newer consolidates R_X86_64_JUMP_SLOT
+# relocation with R_X86_64_GLOB_DAT relocation against the same symbol.
+libc.so: calloc
+libc.so: free + RELA R_X86_64_GLOB_DAT
+libc.so: malloc + RELA R_X86_64_GLOB_DAT
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr
+# The dynamic loader uses __libc_memalign internally to allocate aligned
+# TLS storage. The other malloc family of functions are expected to allow
+# user symbol interposition.
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free + RELA R_X86_64_GLOB_DAT