Module Name:    src
Committed By:   joerg
Date:           Sun Dec  5 00:56:07 UTC 2010

Modified Files:
        src/libexec/ld.elf_so: Makefile rtld.h
        src/libexec/ld.elf_so/arch/i386: rtld_start.S
        src/libexec/ld.elf_so/arch/x86_64: rtld_start.S

Log Message:
Build ld.elf_so with -fvisibility=hidden. Exploit this for i386/x86_64
to simplify the assembler code.


To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 src/libexec/ld.elf_so/Makefile
cvs rdiff -u -r1.95 -r1.96 src/libexec/ld.elf_so/rtld.h
cvs rdiff -u -r1.10 -r1.11 src/libexec/ld.elf_so/arch/i386/rtld_start.S
cvs rdiff -u -r1.7 -r1.8 src/libexec/ld.elf_so/arch/x86_64/rtld_start.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/ld.elf_so/Makefile
diff -u src/libexec/ld.elf_so/Makefile:1.98 src/libexec/ld.elf_so/Makefile:1.99
--- src/libexec/ld.elf_so/Makefile:1.98	Fri Oct 29 15:08:17 2010
+++ src/libexec/ld.elf_so/Makefile	Sun Dec  5 00:56:06 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.98 2010/10/29 15:08:17 christos Exp $
+#	$NetBSD: Makefile,v 1.99 2010/12/05 00:56:06 joerg Exp $
 #
 # NOTE: when changing ld.so, ensure that ldd still compiles.
 #
@@ -40,6 +40,7 @@
 
 LDFLAGS+=	-shared -symbolic -nostartfiles
 LDFLAGS+=	-Wl,-static
+CFLAGS+=	-fvisibility=hidden
 
 # Adds SRCS, CPPFLAGS, LDFLAGS, etc.  Must go first so MD startup source
 # is first.

Index: src/libexec/ld.elf_so/rtld.h
diff -u src/libexec/ld.elf_so/rtld.h:1.95 src/libexec/ld.elf_so/rtld.h:1.96
--- src/libexec/ld.elf_so/rtld.h:1.95	Sat Oct 16 10:27:07 2010
+++ src/libexec/ld.elf_so/rtld.h	Sun Dec  5 00:56:06 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld.h,v 1.95 2010/10/16 10:27:07 skrll Exp $	 */
+/*	$NetBSD: rtld.h,v 1.96 2010/12/05 00:56:06 joerg Exp $	 */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -254,13 +254,13 @@
 /* rtld.c */
 
 /* We export these symbols using _rtld_symbol_lookup and is_exported. */
-char *dlerror(void);
-void *dlopen(const char *, int);
-void *dlsym(void *, const char *);
-int dlclose(void *);
-int dladdr(const void *, Dl_info *);
-int dlinfo(void *, int, void *);
-int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *),
+__dso_public char *dlerror(void);
+__dso_public void *dlopen(const char *, int);
+__dso_public void *dlsym(void *, const char *);
+__dso_public int dlclose(void *);
+__dso_public int dladdr(const void *, Dl_info *);
+__dso_public int dlinfo(void *, int, void *);
+__dso_public int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *),
     void *);
 
 /* These aren't exported */

Index: src/libexec/ld.elf_so/arch/i386/rtld_start.S
diff -u src/libexec/ld.elf_so/arch/i386/rtld_start.S:1.10 src/libexec/ld.elf_so/arch/i386/rtld_start.S:1.11
--- src/libexec/ld.elf_so/arch/i386/rtld_start.S:1.10	Mon Apr 28 20:23:03 2008
+++ src/libexec/ld.elf_so/arch/i386/rtld_start.S	Sun Dec  5 00:56:07 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld_start.S,v 1.10 2008/04/28 20:23:03 martin Exp $	*/
+/*	$NetBSD: rtld_start.S,v 1.11 2010/12/05 00:56:07 joerg Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
@@ -34,6 +34,7 @@
 	.text
 	.align	4
 	.globl	.rtld_start
+	.hidden	.rtld_start
 	.type	.rtld_start,@function
 .rtld_start:
 	subl	$8,%esp			# make room of obj_main and exit proc
@@ -48,12 +49,12 @@
 
 	pushl	%ebx			# relocbase
 	pushl	%ecx			# &_DYNAMIC
-	call	_rtld_relocate_nonplt_s...@plt
+	call	_rtld_relocate_nonplt_self
 
 	leal	12(%esp),%eax		# &cleanup
 	pushl	%ebx			# relocbase
 	pushl	%eax			# sp
-	call	_r...@plt		# _rtld(sp, relocbase)
+	call	_rtld			# _rtld(sp, relocbase)
 
 	addl	$16,%esp		# pop args
 
@@ -64,6 +65,7 @@
 
 	.align	4
 	.globl	_rtld_bind_start
+	.hidden	_rtld_bind_start
 	.type	_rtld_bind_start,@function
 _rtld_bind_start:	# (obj, reloff)
 	pushf				# save registers
@@ -73,7 +75,7 @@
 
 	pushl	20(%esp)		# Copy of reloff
 	pushl	20(%esp)		# Copy of obj
-	call	_rtld_b...@plt		# Call the binder
+	call	_rtld_bind		# Call the binder
 	addl	$8,%esp			# pop binder args
 	movl	%eax,20(%esp)		# Store function to be called in obj
 

Index: src/libexec/ld.elf_so/arch/x86_64/rtld_start.S
diff -u src/libexec/ld.elf_so/arch/x86_64/rtld_start.S:1.7 src/libexec/ld.elf_so/arch/x86_64/rtld_start.S:1.8
--- src/libexec/ld.elf_so/arch/x86_64/rtld_start.S:1.7	Fri Dec  3 22:48:25 2010
+++ src/libexec/ld.elf_so/arch/x86_64/rtld_start.S	Sun Dec  5 00:56:07 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld_start.S,v 1.7 2010/12/03 22:48:25 joerg Exp $	*/
+/*	$NetBSD: rtld_start.S,v 1.8 2010/12/05 00:56:07 joerg Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -40,6 +40,7 @@
 	.text
 	.align	16
 	.globl	.rtld_start
+	.hidden	.rtld_start
 	.type	.rtld_start,@function
 .rtld_start:
 	subq	$16,%rsp		# make room of obj_main and exit proc
@@ -52,11 +53,11 @@
 	subq	(%rax),%rbx		# relocbase
 
 	movq	%rbx,%rsi
-	call	_rtld_relocate_nonplt_s...@plt
+	call	_rtld_relocate_nonplt_self
 
 	movq	%r12,%rdi
 	movq	%rbx,%rsi
-	call	_r...@plt		# _rtld(sp, relocbase)
+	call	_rtld			# _rtld(sp, relocbase)
 
 	popq	%rbx			# %rbx = ps_strings
 	popq	%rdx			# %rdx = cleanup
@@ -65,6 +66,7 @@
 
 	.align	4
 	.globl	_rtld_bind_start
+	.hidden	_rtld_bind_start
 	.type	_rtld_bind_start,@function
 _rtld_bind_start:	# (obj, reloff)
 	# This function is called with a misaligned stack from the PLT
@@ -84,7 +86,7 @@
 	movq	80(%rsp),%rdi
 	movq	88(%rsp),%rsi
 
-	call	_rtld_b...@plt		# call the binder
+	call	_rtld_bind		# call the binder
 	movq	%rax,88(%rsp)		# store function in obj
 
 	popq	%r11

Reply via email to