Displaying 14 results from an estimated 14 matches for "dt_init".
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
>> i...
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 /...
2014 Dec 08
3
[LLVMdev] [lld] Handling multiple -init/-fini command line options
On Mon, Dec 8, 2014 at 10:57 PM, Shankar Easwaran
<shankare at codeaurora.org> wrote:
> The dynamic loader handles only one entry for DT_INIT. If there is more than
> one init option, we could convert this as an .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...
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
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
...quot;) =3D=3D 0) {
+ Elf32_Dyn *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")...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...quot;) =3D=3D 0) {
+ Elf32_Dyn *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")...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...h_name, ".dynamic") =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.l...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...h_name, ".dynamic") =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.l...
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
--