search for: dt_verneed

Displaying 13 results from an estimated 13 matches for "dt_verneed".

2020 Nov 12
1
Targeting old glibc
...symbol versioning with llvm-objcopy: > > * llvm-objcopy -R .gnu.version -R .gnu.version_r in.so out.so > * However, llvm-objcopy zeroes out the section content so at runtime glibc ld.so will error > "unsupported version 0 of Verneed record". > Thus we need to drop the DT_VERNEED tag as well. > To achieve this, we can rewrite the DT_VERNEED tag to DT_NULL (0), terminating > the dynamic table, effectively deleting all DT_VER* tags. DT_RELACOUNT is also > deleted. Fortunately its absence does not affect correctness. > This requires binary patching >...
2020 Nov 11
2
Targeting old glibc
It did partially fix the issue but there is still one problem: llvm-objdump -sx gives: Version References: required from libpthread.so.0: 0x09691a75 0x00 05 GLIBC_2.2.5 0x09691972 0x00 09 GLIBC_2.3.2 0x09691973 0x00 07 GLIBC_2.3.3 0x06969192 0x00 12 GLIBC_2.12 required from libdl.so.2: 0x09691a75 0x00 21 GLIBC_2.2.5 required from libuuid.so.1: 0x09da27b0 0x00 19
2020 Nov 11
0
Targeting old glibc
...ue If you want to drop symbol versioning with llvm-objcopy: * llvm-objcopy -R .gnu.version -R .gnu.version_r in.so out.so * However, llvm-objcopy zeroes out the section content so at runtime glibc ld.so will error "unsupported version 0 of Verneed record". Thus we need to drop the DT_VERNEED tag as well. To achieve this, we can rewrite the DT_VERNEED tag to DT_NULL (0), terminating the dynamic table, effectively deleting all DT_VER* tags. DT_RELACOUNT is also deleted. Fortunately its absence does not affect correctness. This requires binary patching ... 0x000000006ff...
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
...D 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 =3D (void *)hdr + sechdrs[i].sh_offset; + *got +=3D VSYSCALL_RELOCATION; + } + } + phdr =3D (void *)hdr + hdr->e_phoff; + for (i =3...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...D 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 =3D (void *)hdr + sechdrs[i].sh_offset; + *got +=3D VSYSCALL_RELOCATION; + } + } + phdr =3D (void *)hdr + hdr->e_phoff; + for (i =3...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...hile ((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 + * .got in a section named .useless */ + uint32_t *got =3D (void *)hdr + sechdrs[i].sh_offset; +...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...hile ((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 + * .got in a section named .useless */ + uint32_t *got =3D (void *)hdr + sechdrs[i].sh_offset; +...
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 --