[David Mosberger <davidm@hpl.hp.com>] problem with unwind info for .init/.fini sections

David Mosberger davidm@napali.hpl.hp.com
Sat Mar 2 13:57:00 GMT 2002


>>>>> On Sat, 2 Mar 2002 13:43:44 -0800, "H . J . Lu" <hjl@lucon.org> said:

  HJ> I noticed 2 problems:

  HJ> 1. glibc doesn't support .*_array in executales. elf/dl-init.c is not
  HJ> used on executables. However, sysdeps/generic/libc-start.c doesn't
  HJ> know how to do it. Glibc needs to be modified to call those functions
  HJ> with __*_array_start/__*_array_end.

Yes, I noticed that, too.  Wouldn't libc-start.c also have to call the
preinit array if the program is statically linked?

  HJ> We can use

  HJ> +  { ".init_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE         }, 
  HJ> +  { ".fini_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE         },
  HJ> +  { ".preinit_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE   }, 

  HJ> in gas and let bfd to set the section type. Or we can teach gcc about
  HJ> those special sections.

The latter seems better.  On targets where this is supported, we'll
want gcc to use the arrays at any rate (it's certainly true for ia64,
due to the unwind issues that started this discussion).

	--david



More information about the Libc-alpha mailing list