On Wed, Mar 26, 2014 at 02:31:11PM +0100, [email protected] wrote: > If the dynamic linker is built with LDSO_STANDALONE_SUPPORT=y, it can > load then run a dynamically linked program when explicitly invoked > from the command line. This is used for test and prelink purposes, > and also by other tools like PRoot to force the kernel to load the > right ELF interpreter. > > This feature is currently broken on x86_64 since the number of command > line arguments (ie. argc) passed from the kernel is an "elf_addr_t" > (64 bit on x86_64), whereas it is read as an "unsigned int" (32 bit on > x86_64).
so shouldn't this be ElfW(Addr) instead? thanks, > > Ref: https://github.com/cedric-vincent/PRoot/issues/45 > Signed-off-by: Cédric VINCENT <[email protected]> > --- > ldso/ldso/ldso.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c > index becabd3..89a0126 100644 > --- a/ldso/ldso/ldso.c > +++ b/ldso/ldso/ldso.c > @@ -526,8 +526,8 @@ void *_dl_get_ready_to_run(struct elf_resolve *tpnt, > DL_LOADADDR_TYPE load_addr, > > #ifdef __LDSO_STANDALONE_SUPPORT__ > if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) { > - unsigned int *aux_dat = (unsigned int *) argv; > - int argc = aux_dat[-1]; > + unsigned long *aux_dat = (unsigned long *) argv; > + long argc = aux_dat[-1]; > > tpnt->libname = argv[0]; > while (argc > 1) > -- > 1.8.4 > > _______________________________________________ > uClibc mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/uclibc _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
