]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
sparc: Remove _dl_skip_args usage
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 26 May 2022 16:14:37 +0000 (13:14 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 30 May 2022 19:33:31 +0000 (16:33 -0300)
Since ad43cac44a the generic code already shuffles the argv/envp/auxv
on the stack to remove the ld.so own arguments and thus _dl_skip_args
is always 0.   So there is no need to adjust the argc or argv.

Checked on sparc64-linux-gnu and sparcv9-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
sysdeps/sparc/sparc32/dl-machine.h
sysdeps/sparc/sparc64/dl-machine.h

index 8c2408b1e69eb478587818d335031b170f907216..8baf45be52f21a20c0fca5aa1836609329552a4b 100644 (file)
@@ -196,48 +196,9 @@ _dl_start_user:\n\
        add     %l7, %o7, %l7\n\
   /* Save the user entry point address in %l0 */\n\
        mov     %o0, %l0\n\
-  /* See if we were run as a command with the executable file name as an\n\
-     extra leading argument.  If so, adjust the contents of the stack.  */\n\
-       " RTLD_GOT_ADDRESS(%l7, %g2, _dl_skip_args) "\n\
-       ld      [%g2], %i0\n\
-       tst     %i0\n\
-       beq     3f\n\
-        ld     [%sp+22*4], %i5         /* load argc */\n\
-       /* Find out how far to shift.  */\n\
-       " RTLD_GOT_ADDRESS(%l7, %l3, _dl_argv) "\n\
-       sub     %i5, %i0, %i5\n\
-       ld      [%l3], %l4\n\
-       sll     %i0, 2, %i2\n\
-       st      %i5, [%sp+22*4]\n\
-       sub     %l4, %i2, %l4\n\
-       add     %sp, 23*4, %i1\n\
-       add     %i1, %i2, %i2\n\
-       st      %l4, [%l3]\n\
-       /* Copy down argv */\n\
-21:    ld      [%i2], %i3\n\
-       add     %i2, 4, %i2\n\
-       tst     %i3\n\
-       st      %i3, [%i1]\n\
-       bne     21b\n\
-        add    %i1, 4, %i1\n\
-       /* Copy down env */\n\
-22:    ld      [%i2], %i3\n\
-       add     %i2, 4, %i2\n\
-       tst     %i3\n\
-       st      %i3, [%i1]\n\
-       bne     22b\n\
-        add    %i1, 4, %i1\n\
-       /* Copy down auxiliary table.  */\n\
-23:    ld      [%i2], %i3\n\
-       ld      [%i2+4], %i4\n\
-       add     %i2, 8, %i2\n\
-       tst     %i3\n\
-       st      %i3, [%i1]\n\
-       st      %i4, [%i1+4]\n\
-       bne     23b\n\
-        add    %i1, 8, %i1\n\
+       ld      [%sp+22*4], %i5         /* load argc */\n\
   /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp.  */\n\
-3:     " RTLD_GOT_ADDRESS(%l7, %o0, _rtld_local) "\n\
+       " RTLD_GOT_ADDRESS(%l7, %o0, _rtld_local) "\n\
        add     %sp, 23*4, %o2\n\
        sll     %i5, 2, %o3\n\
        add     %o3, 4, %o3\n\
index 8c4bab14fc5c57320eaf40c51a12858504aa52a6..d34d9aa47006d46bdf51d50f4deb331ce804501e 100644 (file)
@@ -245,45 +245,9 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
 "      add     %l7, %o7, %l7\n"                                        \
 "   /* Save the user entry point address in %l0.  */\n"                        \
 "      mov     %o0, %l0\n"                                             \
-"   /* See if we were run as a command with the executable file name as an\n" \
-"      extra leading argument.  If so, we must shift things around since we\n" \
-"      must keep the stack doubleword aligned.  */\n"                  \
-       RTLD_GOT_ADDRESS(%l7, %g5, _dl_skip_args)                       \
-"      ld      [%g5], %i0\n"                                           \
-"      brz,pt  %i0, 2f\n"                                              \
-"       ldx    [%sp + " __S(STACK_BIAS) " + 22*8], %i5\n"              \
-"      /* Find out how far to shift.  */\n"                            \
-"      sub     %i5, %i0, %i5\n"                                        \
-"      sllx    %i0, 3, %l6\n"                                          \
-       RTLD_GOT_ADDRESS(%l7, %l4, _dl_argv)                            \
-"      stx     %i5, [%sp + " __S(STACK_BIAS) " + 22*8]\n"              \
-"      add     %sp, " __S(STACK_BIAS) " + 23*8, %i1\n"                 \
-"      add     %i1, %l6, %i2\n"                                        \
-"      ldx     [%l4], %l5\n"                                           \
-"      /* Copy down argv.  */\n"                                       \
-"12:   ldx     [%i2], %i3\n"                                           \
-"      add     %i2, 8, %i2\n"                                          \
-"      stx     %i3, [%i1]\n"                                           \
-"      brnz,pt %i3, 12b\n"                                             \
-"       add    %i1, 8, %i1\n"                                          \
-"      sub     %l5, %l6, %l5\n"                                        \
-"      /* Copy down envp.  */\n"                                       \
-"13:   ldx     [%i2], %i3\n"                                           \
-"      add     %i2, 8, %i2\n"                                          \
-"      stx     %i3, [%i1]\n"                                           \
-"      brnz,pt %i3, 13b\n"                                             \
-"       add    %i1, 8, %i1\n"                                          \
-"      /* Copy down auxiliary table.  */\n"                            \
-"14:   ldx     [%i2], %i3\n"                                           \
-"      ldx     [%i2 + 8], %i4\n"                                       \
-"      add     %i2, 16, %i2\n"                                         \
-"      stx     %i3, [%i1]\n"                                           \
-"      stx     %i4, [%i1 + 8]\n"                                       \
-"      brnz,pt %i3, 14b\n"                                             \
-"       add    %i1, 16, %i1\n"                                         \
-"      stx     %l5, [%l4]\n"                                           \
+"      ldx     [%sp + " __S(STACK_BIAS) " + 22*8], %i5\n"              \
 "  /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp.  */\n"     \
-"2:\t" RTLD_GOT_ADDRESS(%l7, %o0, _rtld_local)                         \
+""     RTLD_GOT_ADDRESS(%l7, %o0, _rtld_local)                         \
 "      sllx    %i5, 3, %o3\n"                                          \
 "      add     %sp, " __S(STACK_BIAS) " + 23*8, %o2\n"                 \
 "      add     %o3, 8, %o3\n"                                          \