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
--