mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
Compress shared library for armel-eabi-linux.
This commit is contained in:
parent
ad0dc88a33
commit
63da091d36
|
@ -271,8 +271,8 @@ void PackLinuxElf32::pack3(OutputFile *fo, Filter &ft)
|
|||
}
|
||||
ehdri.e_shnum = 0;
|
||||
ehdri.e_shoff = old_dtinit; // easy to find for unpacking
|
||||
//ehdri.e_shentsize = 0;
|
||||
//ehdri.e_shstrndx = 0;
|
||||
ehdri.e_shentsize = 0;
|
||||
ehdri.e_shstrndx = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -691,7 +691,8 @@ PackLinuxElf32::buildLinuxLoader(
|
|||
|
||||
addStubEntrySections(ft);
|
||||
|
||||
defineSymbols(ft);
|
||||
if (0==xct_off)
|
||||
defineSymbols(ft); // main program only, not for shared lib
|
||||
relocateLoader();
|
||||
}
|
||||
|
||||
|
@ -739,16 +740,14 @@ PackLinuxElf64::buildLinuxLoader(
|
|||
|
||||
addStubEntrySections(ft);
|
||||
|
||||
defineSymbols(ft);
|
||||
if (0==xct_off)
|
||||
defineSymbols(ft); // main program only, not for shared lib
|
||||
relocateLoader();
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf64amd::defineSymbols(Filter const *)
|
||||
{
|
||||
if (0!=xct_va) { // is shared lib
|
||||
return; // no symbols needed
|
||||
}
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
|
||||
// We want to know if compressed data, plus stub, plus a couple pages,
|
||||
|
@ -920,11 +919,15 @@ static const
|
|||
#include "stub/armel-eabi-linux.elf-entry.h"
|
||||
static const
|
||||
#include "stub/armel-eabi-linux.elf-fold.h"
|
||||
static const
|
||||
#include "stub/armel-eabi-linux.shlib-init.h"
|
||||
|
||||
static const
|
||||
#include "stub/arm-linux.elf-entry.h"
|
||||
static const
|
||||
#include "stub/arm-linux.elf-fold.h"
|
||||
static const
|
||||
#include "stub/arm-linux.shlib-init.h"
|
||||
|
||||
static const
|
||||
#include "stub/armeb-linux.elf-entry.h"
|
||||
|
@ -945,6 +948,13 @@ void
|
|||
PackLinuxElf32armLe::buildLoader(Filter const *ft)
|
||||
{
|
||||
if (Elf32_Ehdr::ELFOSABI_LINUX==ei_osabi) {
|
||||
|
||||
if (0!=xct_off) { // shared library
|
||||
buildLinuxLoader(
|
||||
stub_armel_eabi_linux_shlib_init, sizeof(stub_armel_eabi_linux_shlib_init),
|
||||
NULL, 0, ft );
|
||||
return;
|
||||
}
|
||||
buildLinuxLoader(
|
||||
stub_armel_eabi_linux_elf_entry, sizeof(stub_armel_eabi_linux_elf_entry),
|
||||
stub_armel_eabi_linux_elf_fold, sizeof(stub_armel_eabi_linux_elf_fold), ft);
|
||||
|
@ -1502,17 +1512,6 @@ PackLinuxElf32::generateElfHdr(
|
|||
set_te32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||
|
||||
Elf32_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD32 == get_te32(&phdr->p_type)) {
|
||||
unsigned x = get_te32(&phdr->p_align) >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u<<lg2_page;
|
||||
page_mask = ~0u<<lg2_page;
|
||||
for (unsigned j=0; j < 3; ++j) {
|
||||
set_te32(&h3->phdr[j].p_align, page_size);
|
||||
}
|
||||
|
@ -1626,17 +1625,6 @@ PackLinuxElf64::generateElfHdr(
|
|||
set_te64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||
|
||||
Elf64_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD64 == get_te64(&phdr->p_type)) {
|
||||
unsigned x = get_te64(&phdr->p_align) >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u <<lg2_page;
|
||||
page_mask = ~0ull<<lg2_page;
|
||||
for (unsigned j=0; j < 3; ++j) {
|
||||
set_te64(&h3->phdr[j].p_align, page_size);
|
||||
}
|
||||
|
@ -1676,22 +1664,34 @@ void PackLinuxElf32::pack1(OutputFile */*fo*/, Filter &/*ft*/)
|
|||
fi->seek(e_phoff, SEEK_SET);
|
||||
fi->readx(phdri, sz_phdrs);
|
||||
|
||||
Elf32_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD32 == get_te32(&phdr->p_type)) {
|
||||
unsigned x = get_te32(&phdr->p_align) >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u<<lg2_page;
|
||||
page_mask = ~0u<<lg2_page;
|
||||
|
||||
progid = 0; // getRandomId(); not useful, so do not clutter
|
||||
}
|
||||
|
||||
void PackLinuxElf32x86::pack1(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack1(fo, ft);
|
||||
if (0==xct_off) // main executable
|
||||
generateElfHdr(fo, stub_i386_linux_elf_fold,
|
||||
getbrk(phdri, e_phnum) );
|
||||
else { // shared library
|
||||
if (0!=xct_off) { // shared library
|
||||
fi->seek(0, SEEK_SET);
|
||||
fi->readx(ibuf, xct_off);
|
||||
|
||||
sz_elf_hdrs = xct_off - sizeof(l_info);
|
||||
fo->write(ibuf, xct_off);
|
||||
return;
|
||||
}
|
||||
generateElfHdr(fo, stub_i386_linux_elf_fold,
|
||||
getbrk(phdri, e_phnum) );
|
||||
}
|
||||
|
||||
void PackBSDElf32x86::pack1(OutputFile *fo, Filter &ft)
|
||||
|
@ -1703,6 +1703,14 @@ void PackBSDElf32x86::pack1(OutputFile *fo, Filter &ft)
|
|||
void PackLinuxElf32armLe::pack1(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack1(fo, ft);
|
||||
if (0!=xct_off) { // shared library
|
||||
fi->seek(0, SEEK_SET);
|
||||
fi->readx(ibuf, xct_off);
|
||||
|
||||
sz_elf_hdrs = xct_off - sizeof(l_info);
|
||||
fo->write(ibuf, xct_off);
|
||||
return;
|
||||
}
|
||||
cprElfHdr3 h3;
|
||||
if (Elf32_Ehdr::ELFOSABI_LINUX==ei_osabi) {
|
||||
memcpy(&h3, stub_armel_eabi_linux_elf_fold, sizeof(Elf32_Ehdr) + 2*sizeof(Elf32_Phdr));
|
||||
|
@ -1758,6 +1766,18 @@ void PackLinuxElf64::pack1(OutputFile */*fo*/, Filter &/*ft*/)
|
|||
fi->seek(e_phoff, SEEK_SET);
|
||||
fi->readx(phdri, sz_phdrs);
|
||||
|
||||
Elf64_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD64 == get_te64(&phdr->p_type)) {
|
||||
unsigned x = get_te64(&phdr->p_align) >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u <<lg2_page;
|
||||
page_mask = ~0ull<<lg2_page;
|
||||
|
||||
progid = 0; // getRandomId(); not useful, so do not clutter
|
||||
}
|
||||
|
||||
|
|
|
@ -57,12 +57,14 @@ STUBS += amd64-linux.kernel.vmlinux-head.h
|
|||
STUBS += amd64-linux.shlib-init.h
|
||||
STUBS += armel-eabi-linux.elf-entry.h
|
||||
STUBS += armel-eabi-linux.elf-fold.h
|
||||
STUBS += armel-eabi-linux.shlib-init.h
|
||||
STUBS += arm-darwin.macho-entry.h
|
||||
STUBS += arm-darwin.macho-fold.h
|
||||
STUBS += arm-linux.elf-entry.h
|
||||
STUBS += arm-linux.elf-fold.h
|
||||
STUBS += arm-linux.kernel.vmlinux.h
|
||||
STUBS += arm-linux.kernel.vmlinux-head.h
|
||||
STUBS += arm-linux.shlib-init.h
|
||||
STUBS += armeb-linux.elf-entry.h
|
||||
STUBS += armeb-linux.elf-fold.h
|
||||
STUBS += armeb-linux.kernel.vmlinux.h
|
||||
|
@ -379,6 +381,19 @@ tmp/armel-linux.elf-main.o : $(srcdir)/src/$$T.c
|
|||
$(call tc,f-objstrip,$@)
|
||||
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
# /***********************************************************************
|
||||
# // armel-eabi-linux.shlib
|
||||
# ************************************************************************/
|
||||
|
||||
armel-eabi-linux.shlib%.h : tc_list = armel-eabi-linux.elf default
|
||||
armel-eabi-linux.shlib%.h : tc_bfdname = elf32-littlearm
|
||||
|
||||
armel-eabi-linux.shlib%.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // arm-darwin.macho
|
||||
# ************************************************************************/
|
||||
|
@ -463,6 +478,19 @@ arm-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
|||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // arm-linux.shlib
|
||||
# ************************************************************************/
|
||||
|
||||
arm-linux.shlib%.h : tc_list = armel-eabi-linux.elf default
|
||||
arm-linux.shlib%.h : tc_bfdname = elf32-littlearm
|
||||
|
||||
arm-linux.shlib%.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // armeb-linux.kernel.vmlinux
|
||||
# // armeb-linux.kernel.vmlinux-head
|
||||
|
|
1015
src/stub/arm-linux.shlib-init.h
Normal file
1015
src/stub/arm-linux.shlib-init.h
Normal file
File diff suppressed because it is too large
Load Diff
1024
src/stub/armel-eabi-linux.shlib-init.h
Normal file
1024
src/stub/armel-eabi-linux.shlib-init.h
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -34,6 +34,7 @@
|
|||
.section \name
|
||||
.endm
|
||||
|
||||
/* The order of #if-#elif matters: ARMEL_EABI4 takes precedence over ARM_OLDABI */
|
||||
#if defined(ARMEL_DARWIN) /*{*/
|
||||
__NR_SYSCALL_BASE = 0
|
||||
.macro do_sys N
|
||||
|
|
418
src/stub/src/arm-linux.shlib-init.S
Normal file
418
src/stub/src/arm-linux.shlib-init.S
Normal file
|
@ -0,0 +1,418 @@
|
|||
/* arm-linux.shlib-init.S -- Linux Elf shared library init & decompressor
|
||||
*
|
||||
* This file is part of the UPX executable compressor.
|
||||
*
|
||||
* Copyright (C) 1996-2009 Markus Franz Xaver Johannes Oberhumer
|
||||
* Copyright (C) 1996-2009 Laszlo Molnar
|
||||
* Copyright (C) 2000-2009 John F. Reiser
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* UPX and the UCL library are free software; you can redistribute them
|
||||
* and/or modify them under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
* <markus@oberhumer.com> <ml1050@users.sourceforge.net>
|
||||
*
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#define ARM_OLDABI 1
|
||||
#include "arch/arm/v5a/macros.S"
|
||||
|
||||
#define bkpt .long 0xe7f001f0 /* reserved instr; Linux GNU eabi breakpoint */
|
||||
sz_Elf32_Ehdr = 13*4
|
||||
sz_Elf32_Phdr = 8*4
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
b_method= 8
|
||||
sz_l_info= 12
|
||||
sz_p_info= 12
|
||||
|
||||
PROT_READ= 1
|
||||
PROT_WRITE= 2
|
||||
PROT_EXEC= 4
|
||||
|
||||
MAP_PRIVATE= 2
|
||||
MAP_FIXED= 0x10
|
||||
MAP_ANONYMOUS= 0x20
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_MASK= (~0<<PAGE_SHIFT)
|
||||
PAGE_SIZE= -PAGE_MASK
|
||||
|
||||
__NR_exit = 1 + __NR_SYSCALL_BASE
|
||||
__NR_write = 4 + __NR_SYSCALL_BASE
|
||||
__NR_mmap64 = 0xc0 + __NR_SYSCALL_BASE
|
||||
__NR_mprotect =125 + __NR_SYSCALL_BASE
|
||||
__NR_munmap = 91 + __NR_SYSCALL_BASE
|
||||
|
||||
__ARM_NR_BASE = 0xf0000 + __NR_SYSCALL_BASE
|
||||
__ARM_NR_cacheflush = 2 + __ARM_NR_BASE
|
||||
|
||||
#define arg1 r0
|
||||
#define arg2 r1
|
||||
#define arg3 r2
|
||||
#define arg4 r3
|
||||
#define arg5 r4
|
||||
|
||||
#define edi r0
|
||||
#define esi r1
|
||||
#define edx r2
|
||||
#define tmp r3
|
||||
#define eax r4
|
||||
#define ecx r5
|
||||
|
||||
section ELFMAINX
|
||||
// .long offset(.) // detect relocation
|
||||
// .long offset(user DT_INIT)
|
||||
// .long offset(escape_hatch)
|
||||
// .long offset({p_info; b_info; compressed data})
|
||||
|
||||
_start: .globl _start
|
||||
|
||||
stmdb sp!,{arg1,arg2,arg3, eax,ecx,r6,r7, fp,lr,pc}
|
||||
o_uinit= (3+4+2)*4
|
||||
|
||||
//hatch:
|
||||
// syscall // munmap
|
||||
// ldmia sp!,{arg1,arg2,arg3, eax,ecx,r6,r7, fp,lr,pc}
|
||||
|
||||
mov fp,sp
|
||||
sub sp,sp,#4
|
||||
o_hatch= -1*4
|
||||
bl main // push &f_decompress
|
||||
f_decompress:
|
||||
#define LINUX_ARM_CACHEFLUSH 1
|
||||
|
||||
section NRV_HEAD
|
||||
// empty
|
||||
section NRV_TAIL
|
||||
// empty
|
||||
|
||||
section NRV2E
|
||||
#include "arch/arm/v4a/nrv2e_d8.S"
|
||||
|
||||
section NRV2D
|
||||
#include "arch/arm/v4a/nrv2d_d8.S"
|
||||
|
||||
section NRV2B
|
||||
#include "arch/arm/v4a/nrv2b_d8.S"
|
||||
|
||||
#include "arch/arm/v4a/lzma_d.S"
|
||||
|
||||
section ELFMAINY
|
||||
end_decompress: .globl end_decompress
|
||||
|
||||
msg_SELinux:
|
||||
mov r2,#L71 - L70 // length
|
||||
adr r1,L70 // message text
|
||||
mov r0,#2 // fd stderr
|
||||
#if defined(ARMEL_EABI4) /*{*/
|
||||
mov r7,#__NR_write
|
||||
swi 0
|
||||
#else /*}{*/
|
||||
swi __NR_write
|
||||
#endif /*}*/
|
||||
die:
|
||||
mov r0,#127
|
||||
#if defined(ARMEL_EABI4) /*{*/
|
||||
mov r7,#__NR_exit
|
||||
swi 0
|
||||
#else /*}{*/
|
||||
swi __NR_exit
|
||||
#endif /*}*/
|
||||
L70:
|
||||
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
/* IDENTSTR goes here */
|
||||
|
||||
section ELFMAINZ
|
||||
.macro push reg
|
||||
str \reg,[sp,#-4]!
|
||||
.endm
|
||||
.macro pop reg
|
||||
ldr \reg,[sp],#4
|
||||
.endm
|
||||
.macro lsl dst,src,cnt
|
||||
mov \dst,\src,lsl \cnt
|
||||
.endm
|
||||
.macro lsr dst,src,cnt
|
||||
mov \dst,\src,lsr \cnt
|
||||
.endm
|
||||
|
||||
#define lodsl ldr eax,[esi],#4
|
||||
#define lodslu bl get4u
|
||||
|
||||
main:
|
||||
// 1. allocate temporary pages
|
||||
// 2. copy to temporary pages:
|
||||
// fragment of page below dst; compressed src;
|
||||
// decompress+unfilter; supervise
|
||||
// 3. mmap destination pages for decompressed data
|
||||
// 4. create escape hatch
|
||||
// 5. jump to temporary pages
|
||||
// 6. uncompress
|
||||
// 7. unfilter
|
||||
// 8. mprotect decompressed pages
|
||||
// 9 setup args for unmap of temp pages
|
||||
// 10. jump to escape hatch
|
||||
// 11. unmap temporary pages
|
||||
// 12. goto user DT_INIT
|
||||
|
||||
mov edx,lr // &f_decompress
|
||||
|
||||
add esi,edx,# _start - f_decompress - 4*4
|
||||
mov ecx,esi
|
||||
lodsl; sub ecx,ecx,eax; //str ecx,[fp,#o_reloc]
|
||||
lodsl; add eax,ecx,eax; str eax,[fp,#o_uinit] // reloc DT_INIT for step 12
|
||||
lodsl; add eax,ecx,eax; str eax,[fp,#o_hatch] // reloc &hatch for step 10
|
||||
lodsl; add edi,ecx,eax // &p_info; also destination for decompress
|
||||
add esi,edi,#sz_p_info // &b_info
|
||||
|
||||
sub sp,sp,#2*4 // param space: munmap temp pages step 9
|
||||
p_unmap= -3*4
|
||||
|
||||
ldr eax,[esi,#4]; add esi,esi,#3*4 // sz_cpr
|
||||
add esi,esi,eax // skip unpack helper block
|
||||
|
||||
lodslu // eax=dstlen
|
||||
lsl ecx,edi,# (32-PAGE_SHIFT)
|
||||
lsr ecx,ecx,#2+(32-PAGE_SHIFT) // ecx= w_fragment
|
||||
add eax,eax,ecx,lsl #2; push eax // params: mprotect restored pages step 8
|
||||
sub edi,edi,ecx,lsl #2; push edi
|
||||
p_mprot= -5*4
|
||||
sub eax,eax,ecx,lsl #2 // dstlen
|
||||
add edi,edi,ecx,lsl #2 // dst
|
||||
push ecx // w_fragment
|
||||
o_wfrag= -6*4
|
||||
|
||||
bl L610
|
||||
f_unfilter: // (char *ptr, uint len, uint cto, uint fid)
|
||||
#define ptr r0
|
||||
#define len r1
|
||||
#define cto r2
|
||||
#define fid r3
|
||||
|
||||
#define t1 r2
|
||||
#define t2 r3
|
||||
|
||||
#ifndef FILTER_ID /*{*/
|
||||
#define FILTER_ID 0x50 /* little-endian */
|
||||
#endif /*}*/
|
||||
and fid,fid,#0xff
|
||||
cmp fid,#FILTER_ID // last use of fid
|
||||
movne pc,lr // no-op if not filter 0x50
|
||||
|
||||
movs len,len,lsr #2 // word count
|
||||
cmpne ptr,#0
|
||||
moveq pc,lr // no-op if either len or ptr is 0
|
||||
|
||||
top_unf:
|
||||
sub len,len,#1
|
||||
ldr t1,[ptr,len,lsl #2]
|
||||
and t2,t1,#0x0f<<24
|
||||
cmp t2, #0x0b<<24; bne tst_unf // not 'bl' subroutine call
|
||||
and t2,t1,#0xff<<24 // all the non-displacement bits
|
||||
sub t1,t1,len // convert to word-relative displacement
|
||||
bic t1,t1,#0xff<<24 // restrict to displacement field
|
||||
orr t1,t1,t2 // re-combine
|
||||
str t1,[ptr,len,lsl #2]
|
||||
tst_unf:
|
||||
cmp len,#0
|
||||
bne top_unf
|
||||
mov pc,lr
|
||||
|
||||
#undef ptr
|
||||
#undef len
|
||||
#undef cto
|
||||
#undef fid
|
||||
|
||||
#undef t1
|
||||
#undef t2
|
||||
|
||||
L610:
|
||||
push lr
|
||||
o_unflt= -7*4
|
||||
ldrb tmp,[esi,#b_method-4+1]; push tmp // ftid
|
||||
ldrb tmp,[esi,#b_method-4+2]; push tmp // cto8
|
||||
push eax // dstlen also for unfilter step 7
|
||||
push edi // dst param for unfilter step 7
|
||||
p_unflt= -11*4
|
||||
|
||||
lodslu; mov ecx,eax // ecx= srclen
|
||||
lodslu; push eax // method,filter,cto,junk
|
||||
push edx // &decompress
|
||||
o_uncpr= -13*4
|
||||
add tmp,fp,#p_unflt+1*4; push tmp // &dstlen
|
||||
push edi // dst
|
||||
push ecx // srclen
|
||||
push esi // src; arglist ready for decompress step 6
|
||||
p_uncpr= -17*4
|
||||
|
||||
ldr tmp,[fp,#o_wfrag]; add edx,tmp,ecx,lsr #2 // w_srclen + w_frag
|
||||
ldr tmp,[fp,#o_uncpr]; bl wlen_subr
|
||||
ldr tmp,[fp,#o_unflt]; bl wlen_subr
|
||||
|
||||
bl L220
|
||||
supervise:
|
||||
// Allocate pages for result of decompressing.
|
||||
// These replace the compressed source and the following hole.
|
||||
mvn arg5,#0 // -1; cater to *BSD for fd of MAP_ANON
|
||||
mov arg4,#MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED
|
||||
mov arg3,#PROT_READ|PROT_WRITE
|
||||
ldr arg2,[fp,#p_mprot+4] // dstlen
|
||||
ldr arg1,[fp,#p_mprot ] // dst
|
||||
do_sys __NR_mmap64; cmn r0,#4096; bcc 0f; bkpt; 0:
|
||||
|
||||
// Restore fragment of page below dst
|
||||
ldr ecx,[fp,#o_wfrag]
|
||||
mov edi,r0
|
||||
ldr esi,[fp,#p_unmap]
|
||||
bl movsl
|
||||
|
||||
ldmia sp!,{arg1,arg2,arg3,arg4, eax}
|
||||
blx eax // decompress
|
||||
add sp,sp,#4 // toss arg5
|
||||
//p_unflt
|
||||
ldmia sp!,{arg1,arg2,arg3,arg4, eax}
|
||||
tst arg4,arg4; beq 0f // 0==ftid ==> no filter
|
||||
blx eax // unfilter
|
||||
0:
|
||||
add sp,sp,#4 // toss w_fragment
|
||||
//p_mprot
|
||||
ldr arg1,[sp,#0*4] // lo(dst)
|
||||
ldr arg2,[sp,#1*4] // len
|
||||
mov arg3,#0
|
||||
add arg2,arg2,arg1 // hi(dst)
|
||||
do_sys2 __ARM_NR_cacheflush
|
||||
|
||||
ldmia sp!,{arg1,arg2}
|
||||
mov arg3,#PROT_READ|PROT_EXEC
|
||||
do_sys __NR_mprotect
|
||||
|
||||
//p_unmap
|
||||
//ldmia sp!,{arg1,arg2, pc}
|
||||
add sp,sp,#-p_unmap
|
||||
|
||||
ldmia sp!,{arg1,arg2,arg3, eax,ecx,r6,r7, fp,lr,pc}
|
||||
|
||||
movsl_subr:
|
||||
ldr ecx,[esi,#-4] // 'bl <over>' instruction word
|
||||
bic ecx,ecx,#0xff<<24 // displacment field
|
||||
add ecx,ecx,#1 // displ omits one word
|
||||
//b movsl
|
||||
movsl: // FIXME: bug when 0==ecx
|
||||
ldr tmp,[esi],#4; subs ecx,ecx,#1
|
||||
str tmp,[edi],#4; bne movsl
|
||||
ret
|
||||
|
||||
L220:
|
||||
push lr // &supervise
|
||||
o_super= -18*4
|
||||
mov tmp,lr; bl wlen_subr // wlen_supervise
|
||||
lsl arg2,edx,#2 // convert to bytes
|
||||
|
||||
// Allocate pages to hold temporary copy.
|
||||
mvn arg5,#0 // -1; cater to *BSD for fd of MAP_ANON
|
||||
mov arg4,#MAP_PRIVATE|MAP_ANONYMOUS
|
||||
mov arg3,#PROT_READ|PROT_WRITE|PROT_EXEC
|
||||
str arg2,[fp,#p_unmap+1*4] // length to unmap
|
||||
mov arg1,#0 // any addr
|
||||
do_sys __NR_mmap64; cmn r0,#4096; bcc 0f; bkpt; 0:
|
||||
str r0,[fp,#p_unmap+0*4] // address to unmap
|
||||
|
||||
ldr esi,[fp,#p_mprot]
|
||||
mov edi,r0 // edi= dst
|
||||
ldr ecx,[fp,#o_wfrag] // w_fragment
|
||||
bl movsl // copy the fragment
|
||||
|
||||
ldr ecx,[fp,#p_uncpr+1*4] // len
|
||||
ldr esi,[fp,#p_uncpr+0*4] // src
|
||||
str edi,[fp,#p_uncpr+0*4] // dst
|
||||
bl memcpyW // copy compressed data
|
||||
|
||||
mov edx,edi // lo(dst) of copied code
|
||||
|
||||
ldr esi,[fp,#o_uncpr]
|
||||
str edi,[fp,#o_uncpr]
|
||||
bl movsl_subr // copy decompressor
|
||||
|
||||
ldr esi,[fp,#o_unflt]
|
||||
str edi,[fp,#o_unflt]
|
||||
bl movsl_subr // copy unfilter
|
||||
|
||||
pop esi // &supervise
|
||||
push edi // &copied
|
||||
bl movsl_subr // copy supervisor
|
||||
|
||||
mov arg2,edi // hi(dst) of copied code
|
||||
mov arg1,edx // lo(dst) of copied code
|
||||
mov arg3,#0
|
||||
do_sys2 __ARM_NR_cacheflush
|
||||
|
||||
pop pc // goto copied supervisor
|
||||
|
||||
get4u:
|
||||
ldrb eax,[esi],#1;
|
||||
ldrb tmp,[esi],#1; orr eax,eax,tmp,lsl # 8
|
||||
ldrb tmp,[esi],#1; orr eax,eax,tmp,lsl #16
|
||||
ldrb tmp,[esi],#1; orr eax,eax,tmp,lsl #24
|
||||
ret
|
||||
|
||||
wlen_subr: // edx+= nwords of inline subr at *tmp
|
||||
ldr tmp,[tmp,#-4] // 'bl <over>' instruction word
|
||||
bic tmp,tmp,#0xff<<24 // displacment field
|
||||
add tmp,tmp,#1 // displ omits one word
|
||||
add edx,edx,tmp
|
||||
ret
|
||||
|
||||
// dst (edi) is 4-byte aligned.
|
||||
// src (esi) is unknown aligned
|
||||
// cnt (ecx) is bytes
|
||||
// Round up count to full words.
|
||||
memcpyW:
|
||||
add ecx,ecx,#3
|
||||
lsr ecx,ecx,#2
|
||||
tst esi,#3; beq movsl // 4-byte aligned
|
||||
tst esi,#1; beq movsw2 // 2-byte aligned
|
||||
movsb4:
|
||||
ldrb tmp,[esi],#1
|
||||
ldrb r6, [esi],#1
|
||||
ldrb r12,[esi],#1
|
||||
ldrb r7, [esi],#1
|
||||
|
||||
orr tmp,tmp,r6,lsl #8
|
||||
orr r12,r12,r7,lsl #8
|
||||
subs ecx,ecx,#1
|
||||
orr tmp,tmp,r12,lsl #16
|
||||
str tmp,[edi],#4
|
||||
bne movsb4
|
||||
ret
|
||||
movsw2:
|
||||
ldrh tmp,[esi],#2
|
||||
ldrh r12,[esi],#2
|
||||
subs ecx,ecx,#1
|
||||
orr tmp,tmp,r12,lsl #16
|
||||
str tmp,[edi],#4
|
||||
bne movsw2
|
||||
ret
|
||||
|
||||
/*__XTHEENDX__*/
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
2
src/stub/src/armel-eabi-linux.shlib-init.S
Normal file
2
src/stub/src/armel-eabi-linux.shlib-init.S
Normal file
|
@ -0,0 +1,2 @@
|
|||
#define ARMEL_EABI4 1
|
||||
#include "arm-linux.shlib-init.S"
|
271
src/stub/tmp/arm-linux.shlib-init.bin.dump
Normal file
271
src/stub/tmp/arm-linux.shlib-init.bin.dump
Normal file
|
@ -0,0 +1,271 @@
|
|||
file format elf32-littlearm
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 00000010 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 NRV_HEAD 00000000 00000000 00000000 00000044 2**0 CONTENTS, READONLY
|
||||
2 NRV_TAIL 00000000 00000000 00000000 00000044 2**0 CONTENTS, READONLY
|
||||
3 NRV2E 0000012c 00000000 00000000 00000044 2**0 CONTENTS, RELOC, READONLY
|
||||
4 NRV2D 00000118 00000000 00000000 00000170 2**0 CONTENTS, RELOC, READONLY
|
||||
5 NRV2B 000000dc 00000000 00000000 00000288 2**0 CONTENTS, RELOC, READONLY
|
||||
6 LZMA_ELF00 000000a8 00000000 00000000 00000364 2**0 CONTENTS, RELOC, READONLY
|
||||
7 LZMA_DEC20 00000938 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
|
||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d44 2**0 CONTENTS, RELOC, READONLY
|
||||
9 LZMA_DEC30 00000000 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||
10 ELFMAINY 00000036 00000000 00000000 000011bc 2**0 CONTENTS, READONLY
|
||||
11 ELFMAINZ 000002e4 00000000 00000000 000011f2 2**0 CONTENTS, RELOC, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d NRV2E 00000000 NRV2E
|
||||
00000000 l d NRV2D 00000000 NRV2D
|
||||
00000000 l d NRV2B 00000000 NRV2B
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||
00000000 g ELFMAINX 00000000 _start
|
||||
00000000 g F NRV2E 0000012c ucl_nrv2e_decompress_8
|
||||
00000000 g F NRV2D 00000118 ucl_nrv2d_decompress_8
|
||||
00000000 g F NRV2B 000000dc ucl_nrv2b_decompress_8
|
||||
00000000 g LZMA_DEC10 00000000 LzmaDecode
|
||||
00000000 g ELFMAINY 00000000 end_decompress
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_ARM_PC24 ELFMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2E
|
||||
0000005c R_ARM_PC24 NRV2E
|
||||
00000060 R_ARM_PC24 NRV2E
|
||||
00000068 R_ARM_PC24 NRV2E
|
||||
00000074 R_ARM_PC24 NRV2E
|
||||
00000080 R_ARM_PC24 NRV2E
|
||||
0000008c R_ARM_PC24 NRV2E
|
||||
00000090 R_ARM_PC24 NRV2E
|
||||
0000009c R_ARM_PC24 NRV2E
|
||||
000000ac R_ARM_PC24 NRV2E
|
||||
000000b4 R_ARM_PC24 NRV2E
|
||||
000000b8 R_ARM_PC24 NRV2E
|
||||
000000c0 R_ARM_PC24 NRV2E
|
||||
000000c4 R_ARM_PC24 NRV2E
|
||||
000000d0 R_ARM_PC24 NRV2E
|
||||
000000d4 R_ARM_PC24 NRV2E
|
||||
000000dc R_ARM_PC24 NRV2E
|
||||
000000e8 R_ARM_PC24 NRV2E
|
||||
000000ec R_ARM_PC24 NRV2E
|
||||
000000f4 R_ARM_PC24 NRV2E
|
||||
000000fc R_ARM_PC24 NRV2E
|
||||
00000124 R_ARM_PC24 NRV2E
|
||||
00000128 R_ARM_PC24 NRV2E
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2D
|
||||
0000005c R_ARM_PC24 NRV2D
|
||||
00000060 R_ARM_PC24 NRV2D
|
||||
00000068 R_ARM_PC24 NRV2D
|
||||
00000074 R_ARM_PC24 NRV2D
|
||||
00000080 R_ARM_PC24 NRV2D
|
||||
0000008c R_ARM_PC24 NRV2D
|
||||
00000090 R_ARM_PC24 NRV2D
|
||||
0000009c R_ARM_PC24 NRV2D
|
||||
000000ac R_ARM_PC24 NRV2D
|
||||
000000b4 R_ARM_PC24 NRV2D
|
||||
000000bc R_ARM_PC24 NRV2D
|
||||
000000c8 R_ARM_PC24 NRV2D
|
||||
000000d0 R_ARM_PC24 NRV2D
|
||||
000000dc R_ARM_PC24 NRV2D
|
||||
000000e8 R_ARM_PC24 NRV2D
|
||||
000000ec R_ARM_PC24 NRV2D
|
||||
00000110 R_ARM_PC24 NRV2D
|
||||
00000114 R_ARM_PC24 NRV2D
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2B
|
||||
00000060 R_ARM_PC24 NRV2B
|
||||
00000068 R_ARM_PC24 NRV2B
|
||||
0000006c R_ARM_PC24 NRV2B
|
||||
0000007c R_ARM_PC24 NRV2B
|
||||
00000080 R_ARM_PC24 NRV2B
|
||||
00000084 R_ARM_PC24 NRV2B
|
||||
00000090 R_ARM_PC24 NRV2B
|
||||
000000a0 R_ARM_PC24 NRV2B
|
||||
000000a4 R_ARM_PC24 NRV2B
|
||||
000000ac R_ARM_PC24 NRV2B
|
||||
000000b4 R_ARM_PC24 NRV2B
|
||||
000000b8 R_ARM_PC24 NRV2B
|
||||
000000d4 R_ARM_PC24 NRV2B
|
||||
000000d8 R_ARM_PC24 NRV2B
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_ARM_PC24 LZMA_DEC30
|
||||
0000004c R_ARM_PC24 LZMA_ELF00
|
||||
00000080 R_ARM_PC24 LZMA_ELF00
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000074 R_ARM_PC24 LZMA_DEC20
|
||||
00000090 R_ARM_PC24 LZMA_DEC20
|
||||
000000b8 R_ARM_PC24 LZMA_DEC20
|
||||
000000cc R_ARM_PC24 LZMA_DEC20
|
||||
000000f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000100 R_ARM_PC24 LZMA_DEC20
|
||||
00000108 R_ARM_PC24 LZMA_DEC20
|
||||
00000144 R_ARM_PC24 LZMA_DEC20
|
||||
00000190 R_ARM_PC24 LZMA_DEC20
|
||||
000001cc R_ARM_PC24 LZMA_DEC20
|
||||
000001d8 R_ARM_PC24 LZMA_DEC20
|
||||
00000204 R_ARM_PC24 LZMA_DEC20
|
||||
00000218 R_ARM_PC24 LZMA_DEC20
|
||||
00000220 R_ARM_PC24 LZMA_DEC20
|
||||
00000234 R_ARM_PC24 LZMA_DEC20
|
||||
0000023c R_ARM_PC24 LZMA_DEC20
|
||||
00000240 R_ARM_PC24 LZMA_DEC20
|
||||
0000024c R_ARM_PC24 LZMA_DEC20
|
||||
00000258 R_ARM_PC24 LZMA_DEC20
|
||||
000002a4 R_ARM_PC24 LZMA_DEC20
|
||||
000002c8 R_ARM_PC24 LZMA_DEC20
|
||||
000002e8 R_ARM_PC24 LZMA_DEC20
|
||||
00000304 R_ARM_PC24 LZMA_DEC20
|
||||
0000030c R_ARM_PC24 LZMA_DEC20
|
||||
0000033c R_ARM_PC24 LZMA_DEC20
|
||||
00000388 R_ARM_PC24 LZMA_DEC20
|
||||
000003a0 R_ARM_PC24 LZMA_DEC20
|
||||
000003a8 R_ARM_PC24 LZMA_DEC20
|
||||
000003cc R_ARM_PC24 LZMA_DEC20
|
||||
000003e0 R_ARM_PC24 LZMA_DEC20
|
||||
000003e8 R_ARM_PC24 LZMA_DEC20
|
||||
00000424 R_ARM_PC24 LZMA_DEC20
|
||||
00000438 R_ARM_PC24 LZMA_DEC20
|
||||
0000046c R_ARM_PC24 LZMA_DEC20
|
||||
00000484 R_ARM_PC24 LZMA_DEC20
|
||||
0000048c R_ARM_PC24 LZMA_DEC20
|
||||
000004b0 R_ARM_PC24 LZMA_DEC20
|
||||
000004d4 R_ARM_PC24 LZMA_DEC20
|
||||
000004ec R_ARM_PC24 LZMA_DEC20
|
||||
000004f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000518 R_ARM_PC24 LZMA_DEC20
|
||||
0000053c R_ARM_PC24 LZMA_DEC20
|
||||
00000598 R_ARM_PC24 LZMA_DEC20
|
||||
000005a0 R_ARM_PC24 LZMA_DEC20
|
||||
000005c0 R_ARM_PC24 LZMA_DEC20
|
||||
000005e4 R_ARM_PC24 LZMA_DEC20
|
||||
000005fc R_ARM_PC24 LZMA_DEC20
|
||||
00000604 R_ARM_PC24 LZMA_DEC20
|
||||
00000624 R_ARM_PC24 LZMA_DEC20
|
||||
00000648 R_ARM_PC24 LZMA_DEC20
|
||||
00000680 R_ARM_PC24 LZMA_DEC20
|
||||
0000068c R_ARM_PC24 LZMA_DEC20
|
||||
000006d0 R_ARM_PC24 LZMA_DEC20
|
||||
000006ec R_ARM_PC24 LZMA_DEC20
|
||||
0000071c R_ARM_PC24 LZMA_DEC20
|
||||
00000728 R_ARM_PC24 LZMA_DEC20
|
||||
0000076c R_ARM_PC24 LZMA_DEC20
|
||||
0000077c R_ARM_PC24 LZMA_DEC20
|
||||
0000079c R_ARM_PC24 LZMA_DEC20
|
||||
000007b8 R_ARM_PC24 LZMA_DEC20
|
||||
000007c4 R_ARM_PC24 LZMA_DEC20
|
||||
000007d0 R_ARM_PC24 LZMA_DEC20
|
||||
000007f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000820 R_ARM_PC24 LZMA_DEC20
|
||||
0000082c R_ARM_PC24 LZMA_DEC20
|
||||
0000087c R_ARM_PC24 LZMA_DEC20
|
||||
00000888 R_ARM_PC24 LZMA_DEC20
|
||||
000008a0 R_ARM_PC24 LZMA_DEC20
|
||||
000008e8 R_ARM_PC24 LZMA_DEC20
|
||||
000008f4 R_ARM_PC24 LZMA_DEC20
|
||||
000008fc R_ARM_PC24 LZMA_DEC20
|
||||
00000904 R_ARM_PC24 LZMA_DEC20
|
||||
00000928 R_ARM_PC24 LZMA_DEC20
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000078 R_ARM_PC24 LZMA_DEC10
|
||||
00000080 R_ARM_PC24 LZMA_DEC10
|
||||
00000088 R_ARM_PC24 LZMA_DEC10
|
||||
000000a8 R_ARM_PC24 LZMA_DEC10
|
||||
000000ac R_ARM_PC24 LZMA_DEC10
|
||||
000000e4 R_ARM_PC24 LZMA_DEC10
|
||||
00000100 R_ARM_PC24 LZMA_DEC10
|
||||
0000010c R_ARM_PC24 LZMA_DEC10
|
||||
00000114 R_ARM_PC24 LZMA_DEC10
|
||||
00000118 R_ARM_PC24 LZMA_DEC10
|
||||
00000120 R_ARM_PC24 LZMA_DEC10
|
||||
00000128 R_ARM_PC24 LZMA_DEC10
|
||||
00000144 R_ARM_PC24 LZMA_DEC10
|
||||
0000014c R_ARM_PC24 LZMA_DEC10
|
||||
00000150 R_ARM_PC24 LZMA_DEC10
|
||||
00000180 R_ARM_PC24 LZMA_DEC10
|
||||
00000188 R_ARM_PC24 LZMA_DEC10
|
||||
0000018c R_ARM_PC24 LZMA_DEC10
|
||||
0000019c R_ARM_PC24 LZMA_DEC10
|
||||
000001a0 R_ARM_PC24 LZMA_DEC10
|
||||
000001c0 R_ARM_PC24 LZMA_DEC10
|
||||
000001cc R_ARM_PC24 LZMA_DEC10
|
||||
000001d4 R_ARM_PC24 LZMA_DEC10
|
||||
000001dc R_ARM_PC24 LZMA_DEC10
|
||||
000001e4 R_ARM_PC24 LZMA_DEC10
|
||||
000001ec R_ARM_PC24 LZMA_DEC10
|
||||
00000228 R_ARM_PC24 LZMA_DEC10
|
||||
0000022c R_ARM_PC24 LZMA_DEC10
|
||||
00000244 R_ARM_PC24 LZMA_DEC10
|
||||
0000024c R_ARM_PC24 LZMA_DEC10
|
||||
00000250 R_ARM_PC24 LZMA_DEC10
|
||||
00000268 R_ARM_PC24 LZMA_DEC10
|
||||
00000284 R_ARM_PC24 LZMA_DEC10
|
||||
0000028c R_ARM_PC24 LZMA_DEC10
|
||||
000002a4 R_ARM_PC24 LZMA_DEC10
|
||||
000002c8 R_ARM_PC24 LZMA_DEC10
|
||||
000002d0 R_ARM_PC24 LZMA_DEC10
|
||||
000002dc R_ARM_PC24 LZMA_DEC10
|
||||
000002f4 R_ARM_PC24 LZMA_DEC10
|
||||
0000030c R_ARM_PC24 LZMA_DEC10
|
||||
00000314 R_ARM_PC24 LZMA_DEC10
|
||||
0000032c R_ARM_PC24 LZMA_DEC10
|
||||
00000350 R_ARM_PC24 LZMA_DEC10
|
||||
00000358 R_ARM_PC24 LZMA_DEC10
|
||||
00000370 R_ARM_PC24 LZMA_DEC10
|
||||
00000378 R_ARM_PC24 LZMA_DEC10
|
||||
0000039c R_ARM_PC24 LZMA_DEC10
|
||||
000003b0 R_ARM_PC24 LZMA_DEC10
|
||||
000003b8 R_ARM_PC24 LZMA_DEC10
|
||||
000003c8 R_ARM_PC24 LZMA_DEC10
|
||||
000003cc R_ARM_PC24 LZMA_DEC10
|
||||
00000400 R_ARM_PC24 LZMA_DEC10
|
||||
00000418 R_ARM_PC24 LZMA_DEC10
|
||||
00000440 R_ARM_PC24 LZMA_DEC10
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
00000048 R_ARM_PC24 ELFMAINZ
|
||||
00000070 R_ARM_PC24 ELFMAINZ
|
||||
0000009c R_ARM_PC24 ELFMAINZ
|
||||
000000b8 R_ARM_PC24 ELFMAINZ
|
||||
000000dc R_ARM_PC24 ELFMAINZ
|
||||
000000e4 R_ARM_PC24 ELFMAINZ
|
||||
00000110 R_ARM_PC24 ELFMAINZ
|
||||
00000118 R_ARM_PC24 ELFMAINZ
|
||||
0000011c R_ARM_PC24 ELFMAINZ
|
||||
0000013c R_ARM_PC24 ELFMAINZ
|
||||
00000150 R_ARM_PC24 ELFMAINZ
|
||||
00000168 R_ARM_PC24 ELFMAINZ
|
||||
000001b4 R_ARM_PC24 ELFMAINZ
|
||||
000001c4 R_ARM_PC24 ELFMAINZ
|
||||
000001e8 R_ARM_PC24 ELFMAINZ
|
||||
00000200 R_ARM_PC24 ELFMAINZ
|
||||
00000210 R_ARM_PC24 ELFMAINZ
|
||||
00000220 R_ARM_PC24 ELFMAINZ
|
||||
0000022c R_ARM_PC24 ELFMAINZ
|
||||
00000238 R_ARM_PC24 ELFMAINZ
|
||||
00000290 R_ARM_PC24 ELFMAINZ
|
||||
00000298 R_ARM_PC24 ELFMAINZ
|
||||
000002c0 R_ARM_PC24 ELFMAINZ
|
||||
000002dc R_ARM_PC24 ELFMAINZ
|
271
src/stub/tmp/armel-eabi-linux.shlib-init.bin.dump
Normal file
271
src/stub/tmp/armel-eabi-linux.shlib-init.bin.dump
Normal file
|
@ -0,0 +1,271 @@
|
|||
file format elf32-littlearm
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 00000010 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 NRV_HEAD 00000000 00000000 00000000 00000044 2**0 CONTENTS, READONLY
|
||||
2 NRV_TAIL 00000000 00000000 00000000 00000044 2**0 CONTENTS, READONLY
|
||||
3 NRV2E 0000013c 00000000 00000000 00000044 2**0 CONTENTS, RELOC, READONLY
|
||||
4 NRV2D 00000128 00000000 00000000 00000180 2**0 CONTENTS, RELOC, READONLY
|
||||
5 NRV2B 000000ec 00000000 00000000 000002a8 2**0 CONTENTS, RELOC, READONLY
|
||||
6 LZMA_ELF00 000000b8 00000000 00000000 00000394 2**0 CONTENTS, RELOC, READONLY
|
||||
7 LZMA_DEC20 00000938 00000000 00000000 0000044c 2**0 CONTENTS, RELOC, READONLY
|
||||
8 LZMA_DEC10 00000478 00000000 00000000 00000d84 2**0 CONTENTS, RELOC, READONLY
|
||||
9 LZMA_DEC30 00000000 00000000 00000000 000011fc 2**0 CONTENTS, READONLY
|
||||
10 ELFMAINY 0000003e 00000000 00000000 000011fc 2**0 CONTENTS, READONLY
|
||||
11 ELFMAINZ 00000328 00000000 00000000 0000123a 2**0 CONTENTS, RELOC, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d NRV2E 00000000 NRV2E
|
||||
00000000 l d NRV2D 00000000 NRV2D
|
||||
00000000 l d NRV2B 00000000 NRV2B
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||
00000000 l d NRV_HEAD 00000000 NRV_HEAD
|
||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||
00000000 g ELFMAINX 00000000 _start
|
||||
00000000 g F NRV2E 0000013c ucl_nrv2e_decompress_8
|
||||
00000000 g F NRV2D 00000128 ucl_nrv2d_decompress_8
|
||||
00000000 g F NRV2B 000000ec ucl_nrv2b_decompress_8
|
||||
00000000 g LZMA_DEC10 00000000 LzmaDecode
|
||||
00000000 g ELFMAINY 00000000 end_decompress
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_ARM_PC24 ELFMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2E
|
||||
0000006c R_ARM_PC24 NRV2E
|
||||
00000070 R_ARM_PC24 NRV2E
|
||||
00000078 R_ARM_PC24 NRV2E
|
||||
00000084 R_ARM_PC24 NRV2E
|
||||
00000090 R_ARM_PC24 NRV2E
|
||||
0000009c R_ARM_PC24 NRV2E
|
||||
000000a0 R_ARM_PC24 NRV2E
|
||||
000000ac R_ARM_PC24 NRV2E
|
||||
000000bc R_ARM_PC24 NRV2E
|
||||
000000c4 R_ARM_PC24 NRV2E
|
||||
000000c8 R_ARM_PC24 NRV2E
|
||||
000000d0 R_ARM_PC24 NRV2E
|
||||
000000d4 R_ARM_PC24 NRV2E
|
||||
000000e0 R_ARM_PC24 NRV2E
|
||||
000000e4 R_ARM_PC24 NRV2E
|
||||
000000ec R_ARM_PC24 NRV2E
|
||||
000000f8 R_ARM_PC24 NRV2E
|
||||
000000fc R_ARM_PC24 NRV2E
|
||||
00000104 R_ARM_PC24 NRV2E
|
||||
0000010c R_ARM_PC24 NRV2E
|
||||
00000134 R_ARM_PC24 NRV2E
|
||||
00000138 R_ARM_PC24 NRV2E
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2D
|
||||
0000006c R_ARM_PC24 NRV2D
|
||||
00000070 R_ARM_PC24 NRV2D
|
||||
00000078 R_ARM_PC24 NRV2D
|
||||
00000084 R_ARM_PC24 NRV2D
|
||||
00000090 R_ARM_PC24 NRV2D
|
||||
0000009c R_ARM_PC24 NRV2D
|
||||
000000a0 R_ARM_PC24 NRV2D
|
||||
000000ac R_ARM_PC24 NRV2D
|
||||
000000bc R_ARM_PC24 NRV2D
|
||||
000000c4 R_ARM_PC24 NRV2D
|
||||
000000cc R_ARM_PC24 NRV2D
|
||||
000000d8 R_ARM_PC24 NRV2D
|
||||
000000e0 R_ARM_PC24 NRV2D
|
||||
000000ec R_ARM_PC24 NRV2D
|
||||
000000f8 R_ARM_PC24 NRV2D
|
||||
000000fc R_ARM_PC24 NRV2D
|
||||
00000120 R_ARM_PC24 NRV2D
|
||||
00000124 R_ARM_PC24 NRV2D
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_ARM_PC24 NRV2B
|
||||
00000070 R_ARM_PC24 NRV2B
|
||||
00000078 R_ARM_PC24 NRV2B
|
||||
0000007c R_ARM_PC24 NRV2B
|
||||
0000008c R_ARM_PC24 NRV2B
|
||||
00000090 R_ARM_PC24 NRV2B
|
||||
00000094 R_ARM_PC24 NRV2B
|
||||
000000a0 R_ARM_PC24 NRV2B
|
||||
000000b0 R_ARM_PC24 NRV2B
|
||||
000000b4 R_ARM_PC24 NRV2B
|
||||
000000bc R_ARM_PC24 NRV2B
|
||||
000000c4 R_ARM_PC24 NRV2B
|
||||
000000c8 R_ARM_PC24 NRV2B
|
||||
000000e4 R_ARM_PC24 NRV2B
|
||||
000000e8 R_ARM_PC24 NRV2B
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_ARM_PC24 LZMA_DEC30
|
||||
0000004c R_ARM_PC24 LZMA_ELF00
|
||||
00000080 R_ARM_PC24 LZMA_ELF00
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000074 R_ARM_PC24 LZMA_DEC20
|
||||
00000090 R_ARM_PC24 LZMA_DEC20
|
||||
000000b8 R_ARM_PC24 LZMA_DEC20
|
||||
000000cc R_ARM_PC24 LZMA_DEC20
|
||||
000000f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000100 R_ARM_PC24 LZMA_DEC20
|
||||
00000108 R_ARM_PC24 LZMA_DEC20
|
||||
00000144 R_ARM_PC24 LZMA_DEC20
|
||||
00000190 R_ARM_PC24 LZMA_DEC20
|
||||
000001cc R_ARM_PC24 LZMA_DEC20
|
||||
000001d8 R_ARM_PC24 LZMA_DEC20
|
||||
00000204 R_ARM_PC24 LZMA_DEC20
|
||||
00000218 R_ARM_PC24 LZMA_DEC20
|
||||
00000220 R_ARM_PC24 LZMA_DEC20
|
||||
00000234 R_ARM_PC24 LZMA_DEC20
|
||||
0000023c R_ARM_PC24 LZMA_DEC20
|
||||
00000240 R_ARM_PC24 LZMA_DEC20
|
||||
0000024c R_ARM_PC24 LZMA_DEC20
|
||||
00000258 R_ARM_PC24 LZMA_DEC20
|
||||
000002a4 R_ARM_PC24 LZMA_DEC20
|
||||
000002c8 R_ARM_PC24 LZMA_DEC20
|
||||
000002e8 R_ARM_PC24 LZMA_DEC20
|
||||
00000304 R_ARM_PC24 LZMA_DEC20
|
||||
0000030c R_ARM_PC24 LZMA_DEC20
|
||||
0000033c R_ARM_PC24 LZMA_DEC20
|
||||
00000388 R_ARM_PC24 LZMA_DEC20
|
||||
000003a0 R_ARM_PC24 LZMA_DEC20
|
||||
000003a8 R_ARM_PC24 LZMA_DEC20
|
||||
000003cc R_ARM_PC24 LZMA_DEC20
|
||||
000003e0 R_ARM_PC24 LZMA_DEC20
|
||||
000003e8 R_ARM_PC24 LZMA_DEC20
|
||||
00000424 R_ARM_PC24 LZMA_DEC20
|
||||
00000438 R_ARM_PC24 LZMA_DEC20
|
||||
0000046c R_ARM_PC24 LZMA_DEC20
|
||||
00000484 R_ARM_PC24 LZMA_DEC20
|
||||
0000048c R_ARM_PC24 LZMA_DEC20
|
||||
000004b0 R_ARM_PC24 LZMA_DEC20
|
||||
000004d4 R_ARM_PC24 LZMA_DEC20
|
||||
000004ec R_ARM_PC24 LZMA_DEC20
|
||||
000004f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000518 R_ARM_PC24 LZMA_DEC20
|
||||
0000053c R_ARM_PC24 LZMA_DEC20
|
||||
00000598 R_ARM_PC24 LZMA_DEC20
|
||||
000005a0 R_ARM_PC24 LZMA_DEC20
|
||||
000005c0 R_ARM_PC24 LZMA_DEC20
|
||||
000005e4 R_ARM_PC24 LZMA_DEC20
|
||||
000005fc R_ARM_PC24 LZMA_DEC20
|
||||
00000604 R_ARM_PC24 LZMA_DEC20
|
||||
00000624 R_ARM_PC24 LZMA_DEC20
|
||||
00000648 R_ARM_PC24 LZMA_DEC20
|
||||
00000680 R_ARM_PC24 LZMA_DEC20
|
||||
0000068c R_ARM_PC24 LZMA_DEC20
|
||||
000006d0 R_ARM_PC24 LZMA_DEC20
|
||||
000006ec R_ARM_PC24 LZMA_DEC20
|
||||
0000071c R_ARM_PC24 LZMA_DEC20
|
||||
00000728 R_ARM_PC24 LZMA_DEC20
|
||||
0000076c R_ARM_PC24 LZMA_DEC20
|
||||
0000077c R_ARM_PC24 LZMA_DEC20
|
||||
0000079c R_ARM_PC24 LZMA_DEC20
|
||||
000007b8 R_ARM_PC24 LZMA_DEC20
|
||||
000007c4 R_ARM_PC24 LZMA_DEC20
|
||||
000007d0 R_ARM_PC24 LZMA_DEC20
|
||||
000007f4 R_ARM_PC24 LZMA_DEC20
|
||||
00000820 R_ARM_PC24 LZMA_DEC20
|
||||
0000082c R_ARM_PC24 LZMA_DEC20
|
||||
0000087c R_ARM_PC24 LZMA_DEC20
|
||||
00000888 R_ARM_PC24 LZMA_DEC20
|
||||
000008a0 R_ARM_PC24 LZMA_DEC20
|
||||
000008e8 R_ARM_PC24 LZMA_DEC20
|
||||
000008f4 R_ARM_PC24 LZMA_DEC20
|
||||
000008fc R_ARM_PC24 LZMA_DEC20
|
||||
00000904 R_ARM_PC24 LZMA_DEC20
|
||||
00000928 R_ARM_PC24 LZMA_DEC20
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000078 R_ARM_PC24 LZMA_DEC10
|
||||
00000080 R_ARM_PC24 LZMA_DEC10
|
||||
00000088 R_ARM_PC24 LZMA_DEC10
|
||||
000000a8 R_ARM_PC24 LZMA_DEC10
|
||||
000000ac R_ARM_PC24 LZMA_DEC10
|
||||
000000e4 R_ARM_PC24 LZMA_DEC10
|
||||
00000100 R_ARM_PC24 LZMA_DEC10
|
||||
0000010c R_ARM_PC24 LZMA_DEC10
|
||||
00000114 R_ARM_PC24 LZMA_DEC10
|
||||
00000118 R_ARM_PC24 LZMA_DEC10
|
||||
00000120 R_ARM_PC24 LZMA_DEC10
|
||||
00000128 R_ARM_PC24 LZMA_DEC10
|
||||
00000144 R_ARM_PC24 LZMA_DEC10
|
||||
0000014c R_ARM_PC24 LZMA_DEC10
|
||||
00000150 R_ARM_PC24 LZMA_DEC10
|
||||
00000180 R_ARM_PC24 LZMA_DEC10
|
||||
00000188 R_ARM_PC24 LZMA_DEC10
|
||||
0000018c R_ARM_PC24 LZMA_DEC10
|
||||
0000019c R_ARM_PC24 LZMA_DEC10
|
||||
000001a0 R_ARM_PC24 LZMA_DEC10
|
||||
000001c0 R_ARM_PC24 LZMA_DEC10
|
||||
000001cc R_ARM_PC24 LZMA_DEC10
|
||||
000001d4 R_ARM_PC24 LZMA_DEC10
|
||||
000001dc R_ARM_PC24 LZMA_DEC10
|
||||
000001e4 R_ARM_PC24 LZMA_DEC10
|
||||
000001ec R_ARM_PC24 LZMA_DEC10
|
||||
00000228 R_ARM_PC24 LZMA_DEC10
|
||||
0000022c R_ARM_PC24 LZMA_DEC10
|
||||
00000244 R_ARM_PC24 LZMA_DEC10
|
||||
0000024c R_ARM_PC24 LZMA_DEC10
|
||||
00000250 R_ARM_PC24 LZMA_DEC10
|
||||
00000268 R_ARM_PC24 LZMA_DEC10
|
||||
00000284 R_ARM_PC24 LZMA_DEC10
|
||||
0000028c R_ARM_PC24 LZMA_DEC10
|
||||
000002a4 R_ARM_PC24 LZMA_DEC10
|
||||
000002c8 R_ARM_PC24 LZMA_DEC10
|
||||
000002d0 R_ARM_PC24 LZMA_DEC10
|
||||
000002dc R_ARM_PC24 LZMA_DEC10
|
||||
000002f4 R_ARM_PC24 LZMA_DEC10
|
||||
0000030c R_ARM_PC24 LZMA_DEC10
|
||||
00000314 R_ARM_PC24 LZMA_DEC10
|
||||
0000032c R_ARM_PC24 LZMA_DEC10
|
||||
00000350 R_ARM_PC24 LZMA_DEC10
|
||||
00000358 R_ARM_PC24 LZMA_DEC10
|
||||
00000370 R_ARM_PC24 LZMA_DEC10
|
||||
00000378 R_ARM_PC24 LZMA_DEC10
|
||||
0000039c R_ARM_PC24 LZMA_DEC10
|
||||
000003b0 R_ARM_PC24 LZMA_DEC10
|
||||
000003b8 R_ARM_PC24 LZMA_DEC10
|
||||
000003c8 R_ARM_PC24 LZMA_DEC10
|
||||
000003cc R_ARM_PC24 LZMA_DEC10
|
||||
00000400 R_ARM_PC24 LZMA_DEC10
|
||||
00000418 R_ARM_PC24 LZMA_DEC10
|
||||
00000440 R_ARM_PC24 LZMA_DEC10
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINZ]:
|
||||
OFFSET TYPE VALUE
|
||||
00000048 R_ARM_PC24 ELFMAINZ
|
||||
00000070 R_ARM_PC24 ELFMAINZ
|
||||
0000009c R_ARM_PC24 ELFMAINZ
|
||||
000000b8 R_ARM_PC24 ELFMAINZ
|
||||
000000dc R_ARM_PC24 ELFMAINZ
|
||||
000000e4 R_ARM_PC24 ELFMAINZ
|
||||
00000110 R_ARM_PC24 ELFMAINZ
|
||||
00000118 R_ARM_PC24 ELFMAINZ
|
||||
0000011c R_ARM_PC24 ELFMAINZ
|
||||
00000148 R_ARM_PC24 ELFMAINZ
|
||||
0000015c R_ARM_PC24 ELFMAINZ
|
||||
00000174 R_ARM_PC24 ELFMAINZ
|
||||
000001dc R_ARM_PC24 ELFMAINZ
|
||||
000001ec R_ARM_PC24 ELFMAINZ
|
||||
0000021c R_ARM_PC24 ELFMAINZ
|
||||
00000234 R_ARM_PC24 ELFMAINZ
|
||||
00000244 R_ARM_PC24 ELFMAINZ
|
||||
00000254 R_ARM_PC24 ELFMAINZ
|
||||
00000260 R_ARM_PC24 ELFMAINZ
|
||||
0000026c R_ARM_PC24 ELFMAINZ
|
||||
000002d4 R_ARM_PC24 ELFMAINZ
|
||||
000002dc R_ARM_PC24 ELFMAINZ
|
||||
00000304 R_ARM_PC24 ELFMAINZ
|
||||
00000320 R_ARM_PC24 ELFMAINZ
|
Loading…
Reference in New Issue
Block a user