Displaying 14 results from an estimated 14 matches for "dt_symtab".
2019 Jan 16
2
[RFC] Adding support for dynamic entries in yaml2obj
...strings that belong in .dynstr, the string itself can
be used as the value for an entry. (ex. DT_SONAME, DT_NEEDED, DT_RPATH, and
DT_RUNPATH)
2. A section name can be used in place of an address. In this case, the
value of the dynamic entry is the sh_addr of the specified section. (ex.
DT_STRTAB, DT_SYMTAB, DT_HASH, DT_RELA, and others)
3. A value can be specified using hexadecimal or decimal (or other bases
supported by `StringRef::to_integer()`). (ex. DT_STRSZ, DT_SYMENT,
DT_RELAENT, and others)
Here's an example to illustrate this design:
!ELF
FileHeader:
Class: ELFCLASS64...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...+ case PT_LOAD:
+ case PT_NOTE:
+ break;
+ case PT_DYNAMIC: {
+ Elf32_Dyn *dyn = (void *)(phdr->p_vaddr - new_base + (unsigned long)ehdr);
+ unsigned j;
+
+ for(j = 0; dyn[j].d_tag != DT_NULL; ++j) {
+ switch(dyn[j].d_tag) {
+ case DT_HASH:
+ case DT_STRTAB:
+ case DT_SYMTAB:
+ case 0x6ffffff0: /* DT_VERSYM */
+ case 0x6ffffffc: /* DT_VERDEF */
+ break;
+ case DT_SONAME:
+ case DT_STRSZ:
+ case 0x6ffffffd: /* DT_VERDEFNUM */
+ continue;
+ case DT_SYMENT:
+ szdynsym = dyn[j].d_un.d_val;
+ continue;
+ default:
+ if (dy...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...+ case PT_LOAD:
+ case PT_NOTE:
+ break;
+ case PT_DYNAMIC: {
+ Elf32_Dyn *dyn = (void *)(phdr->p_vaddr - new_base + (unsigned long)ehdr);
+ unsigned j;
+
+ for(j = 0; dyn[j].d_tag != DT_NULL; ++j) {
+ switch(dyn[j].d_tag) {
+ case DT_HASH:
+ case DT_STRTAB:
+ case DT_SYMTAB:
+ case 0x6ffffff0: /* DT_VERSYM */
+ case 0x6ffffffc: /* DT_VERDEF */
+ break;
+ case DT_SONAME:
+ case DT_STRSZ:
+ case 0x6ffffffd: /* DT_VERDEFNUM */
+ continue;
+ case DT_SYMENT:
+ szdynsym = dyn[j].d_un.d_val;
+ continue;
+ default:
+ if (dy...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...+ case PT_LOAD:
+ case PT_NOTE:
+ break;
+ case PT_DYNAMIC: {
+ Elf32_Dyn *dyn = (void *)(phdr->p_vaddr - new_base + (unsigned long)ehdr);
+ unsigned j;
+
+ for(j = 0; dyn[j].d_tag != DT_NULL; ++j) {
+ switch(dyn[j].d_tag) {
+ case DT_HASH:
+ case DT_STRTAB:
+ case DT_SYMTAB:
+ case 0x6ffffff0: /* DT_VERSYM */
+ case 0x6ffffffc: /* DT_VERDEF */
+ break;
+ case DT_SONAME:
+ case DT_STRSZ:
+ case 0x6ffffffd: /* DT_VERDEFNUM */
+ continue;
+ case DT_SYMENT:
+ szdynsym = dyn[j].d_un.d_val;
+ continue;
+ default:
+ if (dy...
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
...(strcmp(secstrings+sechdrs[i].sh_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) {
+ 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(...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...(strcmp(secstrings+sechdrs[i].sh_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) {
+ 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(...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...else if (strcmp(secstrings+sechdrs[i].sh_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) {...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...else if (strcmp(secstrings+sechdrs[i].sh_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) {...
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
--