search for: dt_fini

Displaying 15 results from an estimated 15 matches for "dt_fini".

2014 Dec 08
3
[LLVMdev] [lld] Handling multiple -init/-fini command line options
On Mon, Dec 08, 2014 at 10:21:49AM -0600, Shankar Easwaran wrote: > The DT_INIT/DT_FINI correspond to one initializer function,where as > DT_INIT_ARRAY/DT_FINI_ARRAY is used when there is more than one > initalizer function/finalizer function respectively. This is not true. The difference is that the DT_INIT / DT_FINI function is responsible for calling into the .init / .fini b...
2014 Dec 08
5
[LLVMdev] [lld] Handling multiple -init/-fini command line options
...a); } % gcc -fPIC -shared -o libfoo.so -Wl,-init,foo -Wl,-init,bar foo.c % gcc main.c -L. -lfoo -Wl,-rpath,. % ./a.out 2 % gcc -fPIC -shared -o libfoo.so -Wl,-init,bar -Wl,-init,foo foo.c % ./a.out 1 What is the reason of this incompatibility? The question is caused by attempt to support DT_INIT/DT_FINI dynamic table tags. The table can contain no more than one DT_INIT/DT_FINI tags. The LD and Gold linker look up either default symbols (_init/_fini) or symbols specified by the -init/-fini options and put their values to the tags. -- Simon Atanasyan
2014 Dec 08
3
[LLVMdev] [lld] Handling multiple -init/-fini command line options
On Mon, Dec 8, 2014 at 8:39 PM, Shankar Easwaran <shankare at codeaurora.org> wrote: > On 12/8/2014 11:09 AM, Joerg Sonnenberger wrote: >> >> On Mon, Dec 08, 2014 at 10:21:49AM -0600, Shankar Easwaran wrote: >>> >>> The DT_INIT/DT_FINI correspond to one initializer function,where as >>> DT_INIT_ARRAY/DT_FINI_ARRAY is used when there is more than one >>> initalizer function/finalizer function respectively. >> >> This is not true. The difference is that the DT_INIT / DT_FINI function >> is respon...
2014 Dec 08
3
[LLVMdev] [lld] Handling multiple -init/-fini command line options
...n .init_array instead ? > > If that doesnot work, we can come up with a .init_array option but I am not > sure about how will you handle priority with init_array's ? Do you set > linker defined init/fini symbols the last in priority ? My idea: 1. -init/-fini options affects DT_INIT/DT_FINI tags only. If there is no any option, the linker searches _init/_finit symbols and configure DT_INIT/DT_FINI tags. This behaviour exactly corresponds to the GNU linker. By the way symbols specified in the -init/-fini options can be in any sections, not only .init/.fini. 2. -init-array/-fini-array...
2006 Jan 08
0
[PATCH] Fix DT_FINI function pass-in to _start on parisc
The PA-RISC ELF ABI puts the function pointer to be registered with atexit in %r23. Use this instead of passing in NULL. While it's unlikely to be used, doing the right thing is good. Signed-off-by: Kyle McMartin <kyle@parisc-linux.org> diff --git a/klibc/arch/parisc/crt0.S b/klibc/arch/parisc/crt0.S index 7428443..a9b6e96 100644 --- a/klibc/arch/parisc/crt0.S +++
2007 Apr 18
1
[RFC, PATCH 7/24] i386 Vmi memory hole
Create a configurable hole in the linear address space at the top of memory. A more advanced interface is needed to negotiate how much space the hypervisor is allowed to steal, but in the end, it seems most likely that a fixed constant size will be chosen for the compiled kernel, potentially propagated to an information page used by paravirtual initialization to determine interface compatibility.
2007 Apr 18
1
[RFC, PATCH 7/24] i386 Vmi memory hole
Create a configurable hole in the linear address space at the top of memory. A more advanced interface is needed to negotiate how much space the hypervisor is allowed to steal, but in the end, it seems most likely that a fixed constant size will be chosen for the compiled kernel, potentially propagated to an information page used by paravirtual initialization to determine interface compatibility.
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...n *dyn =3D (void *)hdr + sechdrs[i].sh_offset; + int tag; + while ((tag =3D (++dyn)->d_tag) !=3D DT_NULL) { + if (tag =3D=3D DT_PLTGOT || tag =3D=3D DT_HASH || + tag =3D=3D DT_STRTAB || tag =3D=3D DT_SYMTAB || + tag =3D=3D DT_RELA || tag =3D=3D DT_INIT || + tag =3D=3D DT_FINI || tag =3D=3D DT_REL || + tag =3D=3D DT_JMPREL || tag =3D=3D DT_VERSYM || + tag =3D=3D DT_VERDEF || tag =3D=3D DT_VERNEED) + dyn->d_un.d_val +=3D VSYSCALL_RELOCATION; + } + } else if (strcmp(secstrings+sechdrs[i].sh_name, ".useless") =3D=3D 0) { + uint32_t *got =...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...n *dyn =3D (void *)hdr + sechdrs[i].sh_offset; + int tag; + while ((tag =3D (++dyn)->d_tag) !=3D DT_NULL) { + if (tag =3D=3D DT_PLTGOT || tag =3D=3D DT_HASH || + tag =3D=3D DT_STRTAB || tag =3D=3D DT_SYMTAB || + tag =3D=3D DT_RELA || tag =3D=3D DT_INIT || + tag =3D=3D DT_FINI || tag =3D=3D DT_REL || + tag =3D=3D DT_JMPREL || tag =3D=3D DT_VERSYM || + tag =3D=3D DT_VERDEF || tag =3D=3D DT_VERNEED) + dyn->d_un.d_val +=3D VSYSCALL_RELOCATION; + } + } else if (strcmp(secstrings+sechdrs[i].sh_name, ".useless") =3D=3D 0) { + uint32_t *got =...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...mic") =3D=3D 0) { + Elf32_Dyn *dyn =3D (void *)hdr + sechdrs[i].sh_offset; + int tag; + while ((tag =3D (++dyn)->d_tag) !=3D DT_NULL) + switch(tag) { + case DT_PLTGOT: + case DT_HASH: + case DT_STRTAB: + case DT_SYMTAB: + case DT_RELA: + case DT_INIT: + case DT_FINI: + case DT_REL: + case DT_JMPREL: + case DT_VERSYM: + case DT_VERDEF: + case DT_VERNEED: + dyn->d_un.d_val +=3D VDSO_HIGH_BASE; + } + } else if (strcmp(secstrings+sechdrs[i].sh_name, ".useless") =3D=3D 0) { + /* This is demonic; see vsyscall.lds.S; it puts the +...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...mic") =3D=3D 0) { + Elf32_Dyn *dyn =3D (void *)hdr + sechdrs[i].sh_offset; + int tag; + while ((tag =3D (++dyn)->d_tag) !=3D DT_NULL) + switch(tag) { + case DT_PLTGOT: + case DT_HASH: + case DT_STRTAB: + case DT_SYMTAB: + case DT_RELA: + case DT_INIT: + case DT_FINI: + case DT_REL: + case DT_JMPREL: + case DT_VERSYM: + case DT_VERDEF: + case DT_VERNEED: + dyn->d_un.d_val +=3D VDSO_HIGH_BASE; + } + } else if (strcmp(secstrings+sechdrs[i].sh_name, ".useless") =3D=3D 0) { + /* This is demonic; see vsyscall.lds.S; it puts the +...
2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --