mirror of
https://github.com/upx/upx
synced 2025-10-05 19:20:23 +08:00
Some atari/tos cleanups.
This commit is contained in:
parent
8146e9cbcd
commit
cd0efe3edb
|
@ -117,9 +117,13 @@ void PackTos::buildLoader(const Filter *ft)
|
|||
initLoader(nrv_loader, sizeof(nrv_loader));
|
||||
//linker->dumpSymbols();
|
||||
|
||||
//
|
||||
// part 1a
|
||||
//
|
||||
|
||||
addLoader("entry");
|
||||
|
||||
if (symbols.up21_a6 > 0 && symbols.up21_a6 <= 32767)
|
||||
if (symbols.up21_a6 <= 32767)
|
||||
addLoader("set_up21_a6.w");
|
||||
else if (symbols.up21_d4 <= 32767)
|
||||
addLoader("set_up21_d4.w");
|
||||
|
@ -167,17 +171,22 @@ void PackTos::buildLoader(const Filter *ft)
|
|||
|
||||
symbols.up31_d4 = symbols.up31_base_d4 + getDecomprOffset(ph.method, opt->small);
|
||||
symbols.up31_a6 = symbols.up31_base_a6 + getDecomprOffset(ph.method, opt->small);
|
||||
if (symbols.up31_a6 > 0 && symbols.up31_a6 <= 32767)
|
||||
if (symbols.up31_a6 <= 32767)
|
||||
addLoader("jmp_decompressor_a6.w");
|
||||
else if (symbols.up31_d4 <= 32767)
|
||||
addLoader("jmp_decompressor_d4.w");
|
||||
else if (symbols.up31_a6 >= 32768 && symbols.up31_a6 <= 65534)
|
||||
else if (symbols.up31_a6 <= 65534)
|
||||
addLoader("jmp_decompressor_a6.w2");
|
||||
else
|
||||
addLoader("jmp_decompressor_d4.l");
|
||||
|
||||
addLoader("clear_bss");
|
||||
//
|
||||
// part 1b
|
||||
//
|
||||
|
||||
addLoader("code_on_stack");
|
||||
|
||||
addLoader("clear_dirty_bss");
|
||||
addLoader("loop3_label");
|
||||
addLoader(opt->small ? "loop3.small" : "loop3.fast");
|
||||
if (symbols.loop3.mode == symbols.LOOP_SUBQ_L)
|
||||
|
@ -190,11 +199,18 @@ void PackTos::buildLoader(const Filter *ft)
|
|||
throwBadLoader();
|
||||
|
||||
addLoader("flush_cache");
|
||||
addLoader("restore_stack");
|
||||
#if 0
|
||||
addLoader("clear_dirty_stack");
|
||||
#endif
|
||||
addLoader("start_program");
|
||||
|
||||
addLoader("IDENTSTR,+40D,UPX1HEAD,CUTPOINT");
|
||||
|
||||
//
|
||||
// part 2
|
||||
//
|
||||
|
||||
if (M_IS_NRV2B(ph.method)) {
|
||||
addLoader(opt->small ? "nrv2b_8.small" : "nrv2b_8.fast");
|
||||
} else if (M_IS_NRV2D(ph.method)) {
|
||||
|
@ -514,7 +530,7 @@ void PackTos::pack(OutputFile *fo)
|
|||
d_len = lsize - e_len;
|
||||
assert((e_len & 3) == 0 && (d_len & 1) == 0);
|
||||
|
||||
// compute addresses
|
||||
// compute section sizes
|
||||
o_text = e_len;
|
||||
o_data = ph.c_len;
|
||||
o_bss = i_bss;
|
||||
|
@ -528,6 +544,7 @@ void PackTos::pack(OutputFile *fo)
|
|||
|
||||
// append decompressor (part 2 of loader)
|
||||
d_off = o_data;
|
||||
////memcpy(obuf + d_off, getLoader() + e_len, d_len); // must be done after relocation
|
||||
o_data += d_len;
|
||||
|
||||
// dword align the len of the final data segment
|
||||
|
@ -577,13 +594,16 @@ void PackTos::pack(OutputFile *fo)
|
|||
symbols.up31_base_d4 = d_off + offset;
|
||||
symbols.up21_a6 = symbols.up21_d4 - (i_text + i_data);
|
||||
symbols.up31_base_a6 = symbols.up31_base_d4 - (i_text + i_data);
|
||||
assert((int)symbols.up21_a6 > 0);
|
||||
assert((int)symbols.up31_base_a6 > 0);
|
||||
|
||||
const unsigned c = linker->getSymbolOffset("code_on_stack");
|
||||
unsigned d;
|
||||
d = linker->getSymbolOffset("flush_cache_rts") - linker->getSymbolOffset("clear_bss");
|
||||
d = linker->getSymbolOffset("flush_cache_rts") - c;
|
||||
symbols.flush_cache_rts_offset = d;
|
||||
d = linker->getSymbolOffset("clear_dirty_stack_loop") - linker->getSymbolOffset("clear_bss");
|
||||
d = linker->getSymbolOffset("clear_dirty_stack_loop") - c;
|
||||
symbols.clear_dirty_stack_len = (d + 3) / 4 + 32 - 1;
|
||||
d = linker->getSymbolOffset("clear_bss_end") - linker->getSymbolOffset("clear_bss");
|
||||
d = linker->getSymbolOffset("code_on_stack_end") - c;
|
||||
symbols.copy_to_stack_len = d / 2 - 1;
|
||||
|
||||
// now re-build loader
|
||||
|
@ -611,16 +631,16 @@ void PackTos::pack(OutputFile *fo)
|
|||
linker->defineSymbol("orig_p_dlen", i_data);
|
||||
linker->defineSymbol("orig_p_blen", i_bss);
|
||||
|
||||
if (symbols.up21_a6 > 0 && symbols.up21_a6 <= 32767)
|
||||
if (symbols.up21_a6 <= 32767)
|
||||
linker->defineSymbol("up21_a6", symbols.up21_a6);
|
||||
else
|
||||
linker->defineSymbol("up21_d4", symbols.up21_d4);
|
||||
|
||||
if (symbols.up31_a6 > 0 && symbols.up31_a6 <= 32767)
|
||||
if (symbols.up31_a6 <= 32767)
|
||||
linker->defineSymbol("up31_a6", symbols.up31_a6);
|
||||
else if (symbols.up31_d4 <= 32767)
|
||||
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
||||
else if (symbols.up31_a6 >= 32768 && symbols.up31_a6 <= 65534)
|
||||
else if (symbols.up31_a6 <= 65534)
|
||||
linker->defineSymbol("up31_a6", symbols.up31_a6 - 32767);
|
||||
else
|
||||
linker->defineSymbol("up31_d4", symbols.up31_d4);
|
||||
|
@ -675,13 +695,13 @@ void PackTos::pack(OutputFile *fo)
|
|||
MemBuffer loader(o_text);
|
||||
memcpy(loader, getLoader(), o_text);
|
||||
patchPackHeader(loader, o_text);
|
||||
memcpy(obuf+d_off, getLoader() + e_len, d_len);
|
||||
|
||||
// write new file header, loader and compressed file
|
||||
fo->write(&oh, FH_SIZE);
|
||||
fo->write(loader, o_text); // entry
|
||||
if (opt->debug.dump_stub_loader)
|
||||
OutputFile::dump(opt->debug.dump_stub_loader, loader, o_text);
|
||||
memcpy(obuf + d_off, getLoader() + e_len, d_len); // copy decompressor
|
||||
fo->write(obuf, o_data); // compressed + decompressor
|
||||
|
||||
// write empty relocation fixup
|
||||
|
|
|
@ -620,7 +620,7 @@ tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
|
|||
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
||||
|
||||
m68k-atari.tos.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68040,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
||||
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h) --ident=nrv_loader tmp/$T.bin $@
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -294,10 +294,10 @@ section copy_to_stack
|
|||
// Copy the final startup code below the stack. This will get
|
||||
// called via "jmp (ASTACK)" after decompression and relocation.
|
||||
|
||||
lea.l clear_bss_end:w(pc),a0
|
||||
lea.l code_on_stack_end:w(pc),a0
|
||||
move.l d4,-(ASTACK) // entry point for final jmp
|
||||
|
||||
//moveq.l #((clear_bss_end-clear_bss)/2-1),d5
|
||||
////moveq.l #((code_on_stack_end-code_on_stack)/2-1),d5
|
||||
moveq.l #copy_to_stack_len,d5
|
||||
1: move.w -(a0),-(ASTACK)
|
||||
subq.l #1,d5
|
||||
|
@ -307,7 +307,7 @@ section copy_to_stack
|
|||
|
||||
#ifdef FLUSH_CACHE
|
||||
// patch code: on the stack, the 'rts' becomes a 'nop'
|
||||
//move.w #0x4e71,(flush_cache_rts-clear_bss):w(ASTACK)
|
||||
////move.w #0x4e71,(flush_cache_rts-code_on_stack):w(ASTACK)
|
||||
move.w #0x4e71,flush_cache_rts_offset:w(ASTACK)
|
||||
|
||||
bsrs flush_cache
|
||||
|
@ -366,17 +366,18 @@ section jmp_decompressor_d4.l
|
|||
// this is the final part of the startup code which runs in the stack
|
||||
**************************************************************************/
|
||||
|
||||
// ------------- clear dirty bss
|
||||
|
||||
section clear_bss
|
||||
section code_on_stack
|
||||
|
||||
// on entry:
|
||||
// ASTACK == pc == clear_bss (on stack)
|
||||
// ASTACK == pc == code_on_stack (on stack)
|
||||
// a6 start of dirty bss [long living register]
|
||||
// d6.l number of clr loops
|
||||
// d6 number of clr loops for clear_dirty_bss
|
||||
// d3.l 0
|
||||
|
||||
|
||||
// ------------- clear dirty bss
|
||||
|
||||
section clear_dirty_bss
|
||||
section loop3_label
|
||||
section loop3.small
|
||||
move.l d3,(a6)+
|
||||
|
@ -413,20 +414,19 @@ GL(flush_cache_rts) // for flush_cache_rts_offset
|
|||
#endif
|
||||
|
||||
|
||||
// ------------- restore ASTACK
|
||||
// ------------- restore stack
|
||||
|
||||
section clear_dirty_stack
|
||||
section restore_stack
|
||||
|
||||
//lea clear_bss_size+4:w(ASTACK),sp
|
||||
lea clear_bss_end+4:w(pc),sp
|
||||
|
||||
// assert sp == clear_bss_end(pc)+4
|
||||
lea code_on_stack_end+4:w(pc),sp
|
||||
|
||||
|
||||
// ------------- clear the dirty stack
|
||||
|
||||
// clear down to clear_bss(pc) + 32 extra longs
|
||||
////moveq.l #((clear_dirty_stack_loop-clear_bss+3)/4+32-1),d0
|
||||
section clear_dirty_stack
|
||||
|
||||
// clear down to code_on_stack(pc) + 32 extra longs
|
||||
////moveq.l #((clear_dirty_stack_loop-code_on_stack+3)/4+32-1),d0
|
||||
moveq.l #clear_dirty_stack_len,d0
|
||||
lea 1f(pc),a0
|
||||
GL(clear_dirty_stack_loop) // for clear_dirty_stack_len
|
||||
|
@ -445,7 +445,7 @@ section start_program
|
|||
1: dc.w 0x4ef9 // jmp $xxxxxxxx - jmp to text segment
|
||||
|
||||
|
||||
GL(clear_bss_end) // for copy_to_stack_len
|
||||
GL(code_on_stack_end) // for copy_to_stack_len
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -549,7 +549,7 @@ section reloc
|
|||
// note: d3.l is still 0
|
||||
|
||||
move.l a6,a0 // a0 = start of relocations
|
||||
moveq.l #1,d5
|
||||
moveq.l #1,d1
|
||||
|
||||
move.l d4,a1
|
||||
add.l (a0)+,a1 // get initial fixup
|
||||
|
@ -558,12 +558,14 @@ section reloc
|
|||
add.l d4,(a1) // reloc one address
|
||||
2: move.b (a0)+,d3
|
||||
beqs 3f
|
||||
cmp.b d5,d3 // note: d5.b is #1 from above
|
||||
cmp.b d1,d3 // note: d1.b is #1 from above
|
||||
bnes 1b
|
||||
lea 254(a1),a1 // d3 == 1 -> add 254, don't reloc
|
||||
bras 2b
|
||||
3:
|
||||
|
||||
// note: d3.l is still 0
|
||||
|
||||
|
||||
// ------------- clear dirty bss & start program
|
||||
|
||||
|
@ -581,7 +583,7 @@ section jmp_stack
|
|||
// We are currently running in the dirty bss.
|
||||
// Jump to the code we copied below the stack.
|
||||
|
||||
jmp (ASTACK) // jmp clear_bss (on stack)
|
||||
jmp (ASTACK) // jmp code_on_stack (on stack)
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
|
|
|
@ -25,34 +25,36 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||
20 jmp_decompressor_d4.w 00000006 00000000 00000000 00000100 2**0 CONTENTS, RELOC, READONLY
|
||||
21 jmp_decompressor_a6.w2 00000008 00000000 00000000 00000106 2**0 CONTENTS, RELOC, READONLY
|
||||
22 jmp_decompressor_d4.l 0000000a 00000000 00000000 0000010e 2**0 CONTENTS, RELOC, READONLY
|
||||
23 clear_bss 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
24 loop3_label 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
25 loop3.small 00000002 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
26 loop3.fast 00000008 00000000 00000000 0000011a 2**0 CONTENTS, READONLY
|
||||
27 loop3_subql 00000004 00000000 00000000 00000122 2**0 CONTENTS, RELOC, READONLY
|
||||
28 loop3_subqw 00000004 00000000 00000000 00000126 2**0 CONTENTS, RELOC, READONLY
|
||||
29 loop3_dbra 00000004 00000000 00000000 0000012a 2**0 CONTENTS, RELOC, READONLY
|
||||
30 flush_cache 00000078 00000000 00000000 0000012e 2**0 CONTENTS, READONLY
|
||||
31 clear_dirty_stack 00000010 00000000 00000000 000001a6 2**0 CONTENTS, RELOC, READONLY
|
||||
32 start_program 0000000c 00000000 00000000 000001b6 2**0 CONTENTS, READONLY
|
||||
33 UPX1HEAD 00000020 00000000 00000000 000001c2 2**0 CONTENTS, READONLY
|
||||
34 CUTPOINT 00000000 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||
35 nrv2b_8.fast 0000007c 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||
36 nrv2d_8.fast 00000090 00000000 00000000 0000025e 2**0 CONTENTS, READONLY
|
||||
37 nrv2e_8.fast 00000098 00000000 00000000 000002ee 2**0 CONTENTS, READONLY
|
||||
38 nrv2b_8.small 00000076 00000000 00000000 00000386 2**0 CONTENTS, READONLY
|
||||
39 nrv2d_8.small 0000008a 00000000 00000000 000003fc 2**0 CONTENTS, READONLY
|
||||
40 nrv2e_8.small 00000092 00000000 00000000 00000486 2**0 CONTENTS, READONLY
|
||||
41 lzma.init 0000002e 00000000 00000000 00000518 2**0 CONTENTS, RELOC, READONLY
|
||||
42 lzma.fast 000008ca 00000000 00000000 00000546 2**0 CONTENTS, RELOC, READONLY
|
||||
43 lzma.small 000008ca 00000000 00000000 00000e10 2**0 CONTENTS, RELOC, READONLY
|
||||
44 lzma.finish 00000012 00000000 00000000 000016da 2**0 CONTENTS, READONLY
|
||||
45 reloc 0000001a 00000000 00000000 000016ec 2**0 CONTENTS, READONLY
|
||||
46 loop3_set_count.b 00000002 00000000 00000000 00001706 2**0 CONTENTS, RELOC, READONLY
|
||||
47 loop3_set_count.w 00000004 00000000 00000000 00001708 2**0 CONTENTS, RELOC, READONLY
|
||||
48 loop3_set_count.l 00000006 00000000 00000000 0000170c 2**0 CONTENTS, RELOC, READONLY
|
||||
49 jmp_stack 00000002 00000000 00000000 00001712 2**0 CONTENTS, READONLY
|
||||
50 __mulsi3 0000001c 00000000 00000000 00001714 2**0 CONTENTS, READONLY
|
||||
23 code_on_stack 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
24 clear_dirty_bss 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
25 loop3_label 00000000 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
26 loop3.small 00000002 00000000 00000000 00000118 2**0 CONTENTS, READONLY
|
||||
27 loop3.fast 00000008 00000000 00000000 0000011a 2**0 CONTENTS, READONLY
|
||||
28 loop3_subql 00000004 00000000 00000000 00000122 2**0 CONTENTS, RELOC, READONLY
|
||||
29 loop3_subqw 00000004 00000000 00000000 00000126 2**0 CONTENTS, RELOC, READONLY
|
||||
30 loop3_dbra 00000004 00000000 00000000 0000012a 2**0 CONTENTS, RELOC, READONLY
|
||||
31 flush_cache 00000078 00000000 00000000 0000012e 2**0 CONTENTS, READONLY
|
||||
32 restore_stack 00000004 00000000 00000000 000001a6 2**0 CONTENTS, RELOC, READONLY
|
||||
33 clear_dirty_stack 0000000c 00000000 00000000 000001aa 2**0 CONTENTS, RELOC, READONLY
|
||||
34 start_program 0000000c 00000000 00000000 000001b6 2**0 CONTENTS, READONLY
|
||||
35 UPX1HEAD 00000020 00000000 00000000 000001c2 2**0 CONTENTS, READONLY
|
||||
36 CUTPOINT 00000000 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||
37 nrv2b_8.fast 0000007c 00000000 00000000 000001e2 2**0 CONTENTS, READONLY
|
||||
38 nrv2d_8.fast 00000090 00000000 00000000 0000025e 2**0 CONTENTS, READONLY
|
||||
39 nrv2e_8.fast 00000098 00000000 00000000 000002ee 2**0 CONTENTS, READONLY
|
||||
40 nrv2b_8.small 00000076 00000000 00000000 00000386 2**0 CONTENTS, READONLY
|
||||
41 nrv2d_8.small 0000008a 00000000 00000000 000003fc 2**0 CONTENTS, READONLY
|
||||
42 nrv2e_8.small 00000092 00000000 00000000 00000486 2**0 CONTENTS, READONLY
|
||||
43 lzma.init 0000002e 00000000 00000000 00000518 2**0 CONTENTS, RELOC, READONLY
|
||||
44 lzma.fast 000008ca 00000000 00000000 00000546 2**0 CONTENTS, RELOC, READONLY
|
||||
45 lzma.small 000008ca 00000000 00000000 00000e10 2**0 CONTENTS, RELOC, READONLY
|
||||
46 lzma.finish 00000012 00000000 00000000 000016da 2**0 CONTENTS, READONLY
|
||||
47 reloc 0000001a 00000000 00000000 000016ec 2**0 CONTENTS, READONLY
|
||||
48 loop3_set_count.b 00000002 00000000 00000000 00001706 2**0 CONTENTS, RELOC, READONLY
|
||||
49 loop3_set_count.w 00000004 00000000 00000000 00001708 2**0 CONTENTS, RELOC, READONLY
|
||||
50 loop3_set_count.l 00000006 00000000 00000000 0000170c 2**0 CONTENTS, RELOC, READONLY
|
||||
51 jmp_stack 00000002 00000000 00000000 00001712 2**0 CONTENTS, READONLY
|
||||
52 __mulsi3 0000001c 00000000 00000000 00001714 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d loop1_label 00000000 loop1_label
|
||||
00000000 l d flush_cache 00000000 flush_cache
|
||||
|
@ -80,12 +82,14 @@ SYMBOL TABLE:
|
|||
00000000 l d jmp_decompressor_d4.w 00000000 jmp_decompressor_d4.w
|
||||
00000000 l d jmp_decompressor_a6.w2 00000000 jmp_decompressor_a6.w2
|
||||
00000000 l d jmp_decompressor_d4.l 00000000 jmp_decompressor_d4.l
|
||||
00000000 l d clear_bss 00000000 clear_bss
|
||||
00000000 l d code_on_stack 00000000 code_on_stack
|
||||
00000000 l d clear_dirty_bss 00000000 clear_dirty_bss
|
||||
00000000 l d loop3.small 00000000 loop3.small
|
||||
00000000 l d loop3.fast 00000000 loop3.fast
|
||||
00000000 l d loop3_subql 00000000 loop3_subql
|
||||
00000000 l d loop3_subqw 00000000 loop3_subqw
|
||||
00000000 l d loop3_dbra 00000000 loop3_dbra
|
||||
00000000 l d restore_stack 00000000 restore_stack
|
||||
00000000 l d clear_dirty_stack 00000000 clear_dirty_stack
|
||||
00000000 l d start_program 00000000 start_program
|
||||
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||
|
@ -112,14 +116,14 @@ SYMBOL TABLE:
|
|||
00000000 *UND* 00000000 up21_d4
|
||||
00000000 *UND* 00000000 loop1_count
|
||||
00000000 *UND* 00000000 loop2_count
|
||||
0000000c g start_program 00000000 clear_bss_end
|
||||
0000000c g start_program 00000000 code_on_stack_end
|
||||
00000000 *UND* 00000000 copy_to_stack_len
|
||||
00000000 *UND* 00000000 flush_cache_rts_offset
|
||||
00000000 *UND* 00000000 up31_a6
|
||||
00000000 *UND* 00000000 up31_d4
|
||||
00000076 g flush_cache 00000000 flush_cache_rts
|
||||
00000000 *UND* 00000000 clear_dirty_stack_len
|
||||
0000000a g clear_dirty_stack 00000000 clear_dirty_stack_loop
|
||||
00000006 g clear_dirty_stack 00000000 clear_dirty_stack_loop
|
||||
00000002 g nrv2b_8.fast 00000000 nrv2b_8_fast_decompr_start
|
||||
00000002 g nrv2d_8.fast 00000000 nrv2d_8_fast_decompr_start
|
||||
00000002 g nrv2e_8.fast 00000000 nrv2e_8_fast_decompr_start
|
||||
|
@ -180,7 +184,7 @@ OFFSET TYPE VALUE
|
|||
|
||||
RELOCATION RECORDS FOR [copy_to_stack]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_68K_PC16 clear_bss_end
|
||||
00000002 R_68K_PC16 code_on_stack_end
|
||||
00000007 R_68K_8 copy_to_stack_len
|
||||
00000012 R_68K_16 flush_cache_rts_offset
|
||||
00000015 R_68K_PC8 flush_cache+0xffffffff
|
||||
|
@ -213,10 +217,13 @@ RELOCATION RECORDS FOR [loop3_dbra]:
|
|||
OFFSET TYPE VALUE
|
||||
00000002 R_68K_PC16 loop3_label
|
||||
|
||||
RELOCATION RECORDS FOR [restore_stack]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_68K_PC16 code_on_stack_end+0x00000004
|
||||
|
||||
RELOCATION RECORDS FOR [clear_dirty_stack]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_68K_PC16 clear_bss_end+0x00000004
|
||||
00000005 R_68K_8 clear_dirty_stack_len
|
||||
00000001 R_68K_8 clear_dirty_stack_len
|
||||
|
||||
RELOCATION RECORDS FOR [lzma.init]:
|
||||
OFFSET TYPE VALUE
|
||||
|
|
Loading…
Reference in New Issue
Block a user