Hello,
Thanks for this!
Did you try to run make check?
Sergey Bugaev via Libc-alpha, le mer. 22 févr. 2023 00:19:29 +0300, a ecrit:
> This drops all of the return address rewriting kludges. The only
> remaining hack is the jump out of a call stack while adjusting the
> stack pointer.
Is this hack really still needed? Since we don't switch stack any more,
we could as well just return normally?
> --- a/sysdeps/mach/hurd/dl-sysdep.c
> +++ b/sysdeps/mach/hurd/dl-sysdep.c
> @@ -207,6 +207,9 @@ _dl_sysdep_start (void **start_argptr,
> }
> }
>
> + extern void _dl_init_first (void *data);
Please put extern function declaration into a header, dl-sysdep.h for
instance.
> diff --git a/sysdeps/mach/hurd/i386/init-first.c
> b/sysdeps/mach/hurd/i386/init-first.c
> index a558da16..34e8dcc0 100644
> --- a/sysdeps/mach/hurd/i386/init-first.c
> +++ b/sysdeps/mach/hurd/i386/init-first.c
> + {
> + /* Check if the stack we are now on is different from
> + the one described by _hurd_stack_{base,size}. */
>
> + char dummy;
> + const vm_address_t newsp = (vm_address_t) &dummy;
> +
> + if (d->stack_size != 0 && (newsp < d->stack_base
> + || newsp - d->stack_base > d->stack_size))
> + /* The new stack pointer does not intersect with the
> + stack the exec server set up for us, so free that stack. */
> + __vm_deallocate (__mach_task_self (), d->stack_base, d->stack_size);
> + }
Again, I don't think this is needed any more since we don't switch stack
any more?
Samuel