Re: Shared Library starter, ld.so

From: Richard Henderson (rth@twiddle.net)
Date: Fri Jun 06 2003 - 05:13:13 EST


On Thu, Jun 05, 2003 at 10:46:18AM -0400, Richard B. Johnson wrote:
> The dynamic linker, provided with RedHat 9 no longer
> compiles with the de facto standard of having register
> EDX point to function to be called before exit.

You're wrong. Indeed, the rh9 crt1.o still expects the value:

   8: 50 push %eax
   9: 54 push %esp
   a: 52 push %edx <<==== HERE
   b: 68 00 00 00 00 push $0x0
                        c: R_386_32 __libc_csu_fini
  10: 68 00 00 00 00 push $0x0
                        11: R_386_32 __libc_csu_init
  15: 51 push %ecx
  16: 56 push %esi
  17: 68 00 00 00 00 push $0x0
                        18: R_386_32 main
  1c: e8 fc ff ff ff call 1d <_start+0x1d>
                        1d: R_386_PC32 __libc_start_main

and ld.so provides the value here:

        # Pass our finalizer function to the user in %edx, as per ELF ABI.\n\
        leal _dl_fini@GOTOFF(%ebx), %edx\n\

r~
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Jun 07 2003 - 22:00:30 EST