about summary refs log tree commit diff
path: root/elf/dl-sysdep.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-11-04 17:39:39 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-11-04 17:39:39 +0000
commit4243cbea6d30ce32b58abd8f1103156f8df617fa (patch)
tree434ef397cb91424e48b123ca704e8176795f2161 /elf/dl-sysdep.c
parent2004e7fb76bd6806253436d63ab3bda7e24c9cc1 (diff)
downloadglibc-4243cbea6d30ce32b58abd8f1103156f8df617fa.tar.gz
glibc-4243cbea6d30ce32b58abd8f1103156f8df617fa.tar.xz
glibc-4243cbea6d30ce32b58abd8f1103156f8df617fa.zip
Don't use INTDEF/INTUSE with _dl_argv (bug 14132).
Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this
patch replaces its use for _dl_argv with rtld_hidden_data_def and
rtld_hidden_proto.  Some places in .S files that previously used
_dl_argv_internal or INTUSE(_dl_argv) now use __GI__dl_argv directly
(there are plenty of existing examples of such direct use of __GI_*).

A single place in rtld.c previously used _dl_argv without INTUSE,
apparently accidentally, while the rtld_hidden_proto mechanism avoids
such accidential omissions.  As a consequence, this patch *does*
change the contents of stripped ld.so.  However, the installed
stripped shared libraries are identical to those you get if instead of
this patch you change that single _dl_argv use to use INTUSE, without
any other changes.

Tested for x86_64 (testsuite as well as comparison of installed
stripped shared libraries as described above).

	[BZ #14132]
	* sysdeps/generic/ldsodefs.h (_dl_argv): Use rtld_hidden_proto.
	[IS_IN_rtld] (_dl_argv_internal): Do not declare.
	(rtld_progname): Make macro definition unconditional.
	* elf/rtld.c (_dl_argv): Use rtld_hidden_data_def instead of
	INTDEF.
	(dlmopen_doit): Do not use INTUSE with _dl_argv.
	(dl_main): Likewise.
	* elf/dl-sysdep.c (_dl_sysdep_start): Likewise.
	* sysdeps/alpha/dl-machine.h (RTLD_START): Use __GI__dl_argv
	instead of _dl_argv_internal.
	* sysdeps/powerpc/powerpc32/dl-start.S (_dl_start_user): Use
	__GI__dl_argv instead of INTUSE(_dl_argv).
	* sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Use
	__GI__dl_argv instead of _dl_argv_internal.
Diffstat (limited to 'elf/dl-sysdep.c')
-rw-r--r--elf/dl-sysdep.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index d1a2bd290d..ae24d5dc8d 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -108,7 +108,7 @@ _dl_sysdep_start (void **start_argptr,
 #endif
 
   __libc_stack_end = DL_STACK_END (start_argptr);
-  DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ,
+  DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, _dl_argv, _environ,
 			  GLRO(dl_auxv));
 
   user_entry = (ElfW(Addr)) ENTRY_POINT;