diff options
Diffstat (limited to 'modules/objfmts/bin/tests')
78 files changed, 17435 insertions, 0 deletions
diff --git a/modules/objfmts/bin/tests/Makefile.inc b/modules/objfmts/bin/tests/Makefile.inc new file mode 100644 index 0000000..e29ed72 --- /dev/null +++ b/modules/objfmts/bin/tests/Makefile.inc @@ -0,0 +1,34 @@ +TESTS += modules/objfmts/bin/tests/bin_test.sh + +EXTRA_DIST += modules/objfmts/bin/tests/bin_test.sh +EXTRA_DIST += modules/objfmts/bin/tests/abs.asm +EXTRA_DIST += modules/objfmts/bin/tests/abs.hex +EXTRA_DIST += modules/objfmts/bin/tests/bigorg.asm +EXTRA_DIST += modules/objfmts/bin/tests/bigorg.hex +EXTRA_DIST += modules/objfmts/bin/tests/bigorg.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/bin-farabs.asm +EXTRA_DIST += modules/objfmts/bin/tests/bin-farabs.hex +EXTRA_DIST += modules/objfmts/bin/tests/bin-rip.asm +EXTRA_DIST += modules/objfmts/bin/tests/bin-rip.hex +EXTRA_DIST += modules/objfmts/bin/tests/bintest.asm +EXTRA_DIST += modules/objfmts/bin/tests/bintest.hex +EXTRA_DIST += modules/objfmts/bin/tests/float-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/float-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/float.asm +EXTRA_DIST += modules/objfmts/bin/tests/float.hex +EXTRA_DIST += modules/objfmts/bin/tests/integer-warn.asm +EXTRA_DIST += modules/objfmts/bin/tests/integer-warn.hex +EXTRA_DIST += modules/objfmts/bin/tests/integer-warn.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/integer.asm +EXTRA_DIST += modules/objfmts/bin/tests/integer.hex +EXTRA_DIST += modules/objfmts/bin/tests/levelop.asm +EXTRA_DIST += modules/objfmts/bin/tests/levelop.hex +EXTRA_DIST += modules/objfmts/bin/tests/reserve.asm +EXTRA_DIST += modules/objfmts/bin/tests/reserve.hex +EXTRA_DIST += modules/objfmts/bin/tests/reserve.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/shr.asm +EXTRA_DIST += modules/objfmts/bin/tests/shr.hex + +EXTRA_DIST += modules/objfmts/bin/tests/multisect/Makefile.inc + +include modules/objfmts/bin/tests/multisect/Makefile.inc diff --git a/modules/objfmts/bin/tests/abs.asm b/modules/objfmts/bin/tests/abs.asm new file mode 100644 index 0000000..e34b14a --- /dev/null +++ b/modules/objfmts/bin/tests/abs.asm @@ -0,0 +1,5 @@ +[absolute 0f0000000h] +foo: resb 1 +[section .data] +bar dd foo +baz db (foo>>24) diff --git a/modules/objfmts/bin/tests/abs.hex b/modules/objfmts/bin/tests/abs.hex new file mode 100644 index 0000000..a5612f0 --- /dev/null +++ b/modules/objfmts/bin/tests/abs.hex @@ -0,0 +1,5 @@ +00 +00 +00 +f0 +f0 diff --git a/modules/objfmts/bin/tests/bigorg.asm b/modules/objfmts/bin/tests/bigorg.asm new file mode 100644 index 0000000..a02ed32 --- /dev/null +++ b/modules/objfmts/bin/tests/bigorg.asm @@ -0,0 +1,9 @@ +[bits 64] +[org 0x000ffff100000000] +dd end-start +start: +mov rax, $ +mov rbx, $ +mov rax, qword $ +mov rbx, qword $ +end: diff --git a/modules/objfmts/bin/tests/bigorg.errwarn b/modules/objfmts/bin/tests/bigorg.errwarn new file mode 100644 index 0000000..30f590d --- /dev/null +++ b/modules/objfmts/bin/tests/bigorg.errwarn @@ -0,0 +1,2 @@ +-:5: warning: value does not fit in 32 bit field +-:6: warning: value does not fit in 32 bit field diff --git a/modules/objfmts/bin/tests/bigorg.hex b/modules/objfmts/bin/tests/bigorg.hex new file mode 100644 index 0000000..f26abd8 --- /dev/null +++ b/modules/objfmts/bin/tests/bigorg.hex @@ -0,0 +1,38 @@ +22 +00 +00 +00 +48 +c7 +c0 +04 +00 +00 +00 +48 +c7 +c3 +0b +00 +00 +00 +48 +b8 +12 +00 +00 +00 +f1 +ff +0f +00 +48 +bb +1c +00 +00 +00 +f1 +ff +0f +00 diff --git a/modules/objfmts/bin/tests/bin-farabs.asm b/modules/objfmts/bin/tests/bin-farabs.asm new file mode 100644 index 0000000..4d931c1 --- /dev/null +++ b/modules/objfmts/bin/tests/bin-farabs.asm @@ -0,0 +1,53 @@ +keybuf equ 0040h:001Eh + +absolute 5000h +label: + +section .text +absval equ 1000h + +org 0x100 +; Using seg should yield the segment part. +mov ax, seg keybuf +mov ax, seg (0040h:001Eh) ; NASM doesn't understand this syntax +mov es, ax + +; Use without seg should yield just the offset part. +mov bx, keybuf +;mov bx, 0040h:001Eh ; Illegal + +; Each of the below pairs should be equivalent (and legal) in Yasm. +; There are some differences from NASM here! + +; Defaults to near jump (on both NASM and Yasm) +jmp keybuf + +; Direct far jump. +jmp 0040h:001Eh + +; Force near (non-far) jump (just offset, no segment). +jmp near keybuf +jmp near 0040h:001Eh ; Illegal in NASM ("mismatch in operand sizes") + +; A couple of jumps to "normal" absolute addresses. +jmp 0x1e +jmp 0 +jmp absval +jmp label + +; Non-absolute jump +label2: +jmp label2 + +; Non-relative access +mov ax, [0] +mov ax, [label] + +; Direct far, explicitly. +jmp far keybuf ; Illegal in NASM ("value referenced by FAR is not relocatable") +jmp far 0040h:001Eh ; Illegal in NASM ("mismatch in operand sizes") + +keybufptr: +dw keybuf ; offset part +dw seg keybuf ; segment part + diff --git a/modules/objfmts/bin/tests/bin-farabs.hex b/modules/objfmts/bin/tests/bin-farabs.hex new file mode 100644 index 0000000..5ebd422 --- /dev/null +++ b/modules/objfmts/bin/tests/bin-farabs.hex @@ -0,0 +1,59 @@ +b8 +40 +00 +b8 +40 +00 +8e +c0 +bb +1e +00 +e9 +10 +ff +ea +1e +00 +40 +00 +e9 +08 +ff +e9 +05 +ff +e9 +02 +ff +e9 +e1 +fe +e9 +de +0e +e9 +db +4e +eb +fe +a1 +00 +00 +a1 +00 +50 +ea +1e +00 +40 +00 +ea +1e +00 +40 +00 +1e +00 +40 +00 diff --git a/modules/objfmts/bin/tests/bin-rip.asm b/modules/objfmts/bin/tests/bin-rip.asm new file mode 100644 index 0000000..2211054 --- /dev/null +++ b/modules/objfmts/bin/tests/bin-rip.asm @@ -0,0 +1,20 @@ +bits 64 +org 0x100 +foo_equ equ 0x12345678 + +section .text +nop +foo_text: +nop +mov rax,[foo_equ wrt rip] +mov rax,[foo_text wrt rip] +mov rax,[foo_data wrt rip] +mov rbx,[foo_equ wrt rip] +mov rbx,[foo_text wrt rip] +mov rbx,[foo_data wrt rip] + +section .data +db 0 +foo_data: +db 0 + diff --git a/modules/objfmts/bin/tests/bin-rip.hex b/modules/objfmts/bin/tests/bin-rip.hex new file mode 100644 index 0000000..d56601d --- /dev/null +++ b/modules/objfmts/bin/tests/bin-rip.hex @@ -0,0 +1,46 @@ +90 +90 +48 +8b +05 +6f +55 +34 +12 +48 +8b +05 +f1 +ff +ff +ff +48 +8b +05 +16 +00 +00 +00 +48 +8b +1d +5a +55 +34 +12 +48 +8b +1d +dc +ff +ff +ff +48 +8b +1d +01 +00 +00 +00 +00 +00 diff --git a/modules/objfmts/bin/tests/bin_test.sh b/modules/objfmts/bin/tests/bin_test.sh new file mode 100755 index 0000000..9ab7e41 --- /dev/null +++ b/modules/objfmts/bin/tests/bin_test.sh @@ -0,0 +1,3 @@ +#! /bin/sh +${srcdir}/out_test.sh bin_test modules/objfmts/bin/tests "bin objfmt" "-f bin" "" +exit $? diff --git a/modules/objfmts/bin/tests/bintest.asm b/modules/objfmts/bin/tests/bintest.asm new file mode 100644 index 0000000..c434ce9 --- /dev/null +++ b/modules/objfmts/bin/tests/bintest.asm @@ -0,0 +1,56 @@ +; test source file for assembling to binary files +; build with: +; yasm -f bin -o bintest.com bintest.asm + +; When run (as a DOS .COM file), this program should print +; hello, world +; on two successive lines, then exit cleanly. + +; This file should test the following: +; [1] Define a text-section symbol +; [2] Define a data-section symbol +; [3] Define a BSS-section symbol +; [4] Define a NASM local label +; [5] Reference a NASM local label +; [6] Reference a text-section symbol in the text section +; [7] Reference a data-section symbol in the text section +; [8] Reference a BSS-section symbol in the text section +; [9] Reference a text-section symbol in the data section +; [10] Reference a data-section symbol in the data section +; [11] Reference a BSS-section symbol in the data section + +[BITS 16] +[ORG 0x100] + +[SECTION .text] + + jmp start ; [6] + +endX mov ax,0x4c00 ; [1] + int 0x21 + +start mov byte [bss_sym],',' ; [1] [8] + mov bx,[bssptr] ; [7] + mov al,[bx] + mov bx,[dataptr] ; [7] + mov [bx],al + mov cx,2 +.loop mov dx,datasym ; [1] [4] [7] + mov ah,9 + push cx + int 0x21 + pop cx + loop .loop ; [5] [6] + mov bx,[textptr] ; [7] + jmp bx + +[SECTION .data] + +datasym db 'hello world', 13, 10, '$' ; [2] +bssptr dw bss_sym ; [2] [11] +dataptr dw datasym+5 ; [2] [10] +textptr dw endX ; [2] [9] + +[SECTION .bss] + +bss_sym resb 1 ; [3] diff --git a/modules/objfmts/bin/tests/bintest.hex b/modules/objfmts/bin/tests/bintest.hex new file mode 100644 index 0000000..3a53e37 --- /dev/null +++ b/modules/objfmts/bin/tests/bintest.hex @@ -0,0 +1,65 @@ +eb +05 +b8 +00 +4c +cd +21 +c6 +06 +44 +01 +2c +8b +1e +3b +01 +8a +07 +8b +1e +3d +01 +88 +07 +b9 +02 +00 +ba +2c +01 +b4 +09 +51 +cd +21 +59 +e2 +f5 +8b +1e +3f +01 +ff +e3 +68 +65 +6c +6c +6f +20 +20 +77 +6f +72 +6c +64 +0d +0a +24 +44 +01 +31 +01 +02 +01 diff --git a/modules/objfmts/bin/tests/float-err.asm b/modules/objfmts/bin/tests/float-err.asm new file mode 100644 index 0000000..7c608ba --- /dev/null +++ b/modules/objfmts/bin/tests/float-err.asm @@ -0,0 +1,12 @@ +; Tests illegal float handling +db 1.2 +dw 3.14e500 +dd 5.12e100000 +dq 3.141592653589793e-158105 +dt 5653894745.318293470142875104710284019245e-1999 + +db -1.5 +dw -5593824513450897123075109385109385019324871093470134710984.34981 +dd -47102940.46710358135703124751034875109875103294510984019324 +dq -45102571092751092341095.5827509174509178450917845019e15555 +dt -1.e-100000 diff --git a/modules/objfmts/bin/tests/float-err.errwarn b/modules/objfmts/bin/tests/float-err.errwarn new file mode 100644 index 0000000..4aaa940 --- /dev/null +++ b/modules/objfmts/bin/tests/float-err.errwarn @@ -0,0 +1,8 @@ +-:2: error: invalid floating point constant size +-:3: warning: overflow in floating point expression +-:4: warning: overflow in floating point expression +-:5: warning: underflow in floating point expression +-:8: error: invalid floating point constant size +-:9: warning: overflow in floating point expression +-:11: warning: overflow in floating point expression +-:12: warning: underflow in floating point expression diff --git a/modules/objfmts/bin/tests/float.asm b/modules/objfmts/bin/tests/float.asm new file mode 100644 index 0000000..32d2777 --- /dev/null +++ b/modules/objfmts/bin/tests/float.asm @@ -0,0 +1,10 @@ +; Tests float handling +dw 3.14 +dd 5.12 +dq 3.141592653589793 +dt 5653894745.318293470142875104710284019245e335 + +dw -62000.0 +dd -47102940.467103581 +dq -45102571092751092341095.5827509174509178450917845019 +dt -1.e-1000 diff --git a/modules/objfmts/bin/tests/float.hex b/modules/objfmts/bin/tests/float.hex new file mode 100644 index 0000000..33b0d97 --- /dev/null +++ b/modules/objfmts/bin/tests/float.hex @@ -0,0 +1,48 @@ +48 +42 +0a +d7 +a3 +40 +18 +2d +44 +54 +fb +21 +09 +40 +75 +4e +ef +f1 +30 +25 +6e +97 +78 +44 +92 +fb +f7 +ae +33 +cc +4d +63 +8a +d2 +07 +1a +a3 +c4 +67 +14 +9e +a8 +88 +91 +8a +86 +05 +b3 diff --git a/modules/objfmts/bin/tests/integer-warn.asm b/modules/objfmts/bin/tests/integer-warn.asm new file mode 100644 index 0000000..31c0f41 --- /dev/null +++ b/modules/objfmts/bin/tests/integer-warn.asm @@ -0,0 +1,6 @@ +; Tests warnings with integer constant handling (for output, not parsing) +db 0x51a +dw 0x3875bc +dd 0x35783134affff +dq 0xABCDEF012345678989abb +dt 0xa907bc890d0e907f0134afb8adee diff --git a/modules/objfmts/bin/tests/integer-warn.errwarn b/modules/objfmts/bin/tests/integer-warn.errwarn new file mode 100644 index 0000000..dfce6c5 --- /dev/null +++ b/modules/objfmts/bin/tests/integer-warn.errwarn @@ -0,0 +1,5 @@ +-:2: warning: value does not fit in 8 bit field +-:3: warning: value does not fit in 16 bit field +-:4: warning: value does not fit in 32 bit field +-:5: warning: value does not fit in 64 bit field +-:6: warning: value does not fit in 80 bit field diff --git a/modules/objfmts/bin/tests/integer-warn.hex b/modules/objfmts/bin/tests/integer-warn.hex new file mode 100644 index 0000000..82c4bfa --- /dev/null +++ b/modules/objfmts/bin/tests/integer-warn.hex @@ -0,0 +1,25 @@ +1a +bc +75 +ff +ff +4a +13 +bb +9a +98 +78 +56 +34 +12 +f0 +ee +ad +b8 +af +34 +01 +7f +90 +0e +0d diff --git a/modules/objfmts/bin/tests/integer.asm b/modules/objfmts/bin/tests/integer.asm new file mode 100644 index 0000000..469887c --- /dev/null +++ b/modules/objfmts/bin/tests/integer.asm @@ -0,0 +1,8 @@ +; Tests integer constant handling (for output, not parsing) + +db 0x51 +dw 0x3875 +dd 0x35783134 +dq 0xABCDEF0123456789 +dt 0xa907bc890d0e907f0134 + diff --git a/modules/objfmts/bin/tests/integer.hex b/modules/objfmts/bin/tests/integer.hex new file mode 100644 index 0000000..baad38f --- /dev/null +++ b/modules/objfmts/bin/tests/integer.hex @@ -0,0 +1,25 @@ +51 +75 +38 +34 +31 +78 +35 +89 +67 +45 +23 +01 +ef +cd +ab +34 +01 +7f +90 +0e +0d +89 +bc +07 +a9 diff --git a/modules/objfmts/bin/tests/levelop.asm b/modules/objfmts/bin/tests/levelop.asm new file mode 100644 index 0000000..ee67eef --- /dev/null +++ b/modules/objfmts/bin/tests/levelop.asm @@ -0,0 +1,4 @@ +test1: +mov word [0x0010 + (test2 - test1)], 0x0000 +mov word [0x0010 + test2 - test1], 0x0000 +test2: diff --git a/modules/objfmts/bin/tests/levelop.hex b/modules/objfmts/bin/tests/levelop.hex new file mode 100644 index 0000000..4e70f4b --- /dev/null +++ b/modules/objfmts/bin/tests/levelop.hex @@ -0,0 +1,12 @@ +c7 +06 +1c +00 +00 +00 +c7 +06 +1c +00 +00 +00 diff --git a/modules/objfmts/bin/tests/multisect/Makefile.inc b/modules/objfmts/bin/tests/multisect/Makefile.inc new file mode 100644 index 0000000..dcb7d62 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/Makefile.inc @@ -0,0 +1,51 @@ +TESTS += modules/objfmts/bin/tests/multisect/bin_multi_test.sh + +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin_multi_test.sh +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-align.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-align.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-align.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-align.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-ssym.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-ssym.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/bin-ssym.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-loop1-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-loop1-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-loop2-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-loop2-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-notfound-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/follows-notfound-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/initbss.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/initbss.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/initbss.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/initbss.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/ldlinux-sects.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/ldlinux-sects.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/ldlinux-sects.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect1.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect1.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect1.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect2.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect2.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect2.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect3.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect3.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect3.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect4.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect4.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect4.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect5.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect5.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/multisect5.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect1.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect1.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect1.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect2.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect2.hex +EXTRA_DIST += modules/objfmts/bin/tests/multisect/nomultisect2.map +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-loop1-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-loop1-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-loop2-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-loop2-err.errwarn +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-notfound-err.asm +EXTRA_DIST += modules/objfmts/bin/tests/multisect/vfollows-notfound-err.errwarn + diff --git a/modules/objfmts/bin/tests/multisect/bin-align.asm b/modules/objfmts/bin/tests/multisect/bin-align.asm new file mode 100644 index 0000000..e355aac --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-align.asm @@ -0,0 +1,12 @@ +[map all binalign.map] +section .text +db 1 +align 8 +db 0 +section .data +align 8 +db 0 +section .foo align=4 +align 8 +section .bar valign=4 +align 8 diff --git a/modules/objfmts/bin/tests/multisect/bin-align.errwarn b/modules/objfmts/bin/tests/multisect/bin-align.errwarn new file mode 100644 index 0000000..e13f89d --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-align.errwarn @@ -0,0 +1,3 @@ +-: warning: section `.foo' internal align of 8 is greater than `align' of 4; using `align' +-: warning: section `.bar' internal align of 8 is greater than `valign' of 4; using `valign' +-:1: warning: map file already specified diff --git a/modules/objfmts/bin/tests/multisect/bin-align.hex b/modules/objfmts/bin/tests/multisect/bin-align.hex new file mode 100644 index 0000000..dd133f7 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-align.hex @@ -0,0 +1,17 @@ +01 +8d +74 +00 +8d +bd +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 diff --git a/modules/objfmts/bin/tests/multisect/bin-align.map b/modules/objfmts/bin/tests/multisect/bin-align.map new file mode 100644 index 0000000..3031bd1 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-align.map @@ -0,0 +1,66 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/bin-align + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000009 00000000 00000009 00000009 progbits .text +00000010 00000011 00000010 00000011 00000001 progbits .data +00000014 00000014 00000014 00000014 00000000 progbits .foo +00000018 00000018 00000018 00000018 00000000 progbits .bar + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000009 +start: 00000000 +align: 00000008 +follows: not defined +vstart: 00000000 +valign: 00000008 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000001 +start: 00000010 +align: 00000008 +follows: not defined +vstart: 00000010 +valign: 00000008 +vfollows: not defined + +---- Section .foo ------------------------------------------------------------- + +class: progbits +length: 00000000 +start: 00000014 +align: 00000004 +follows: not defined +vstart: 00000014 +valign: 00000004 +vfollows: not defined + +---- Section .bar ------------------------------------------------------------- + +class: progbits +length: 00000000 +start: 00000018 +align: 00000008 +follows: not defined +vstart: 00000018 +valign: 00000004 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + diff --git a/modules/objfmts/bin/tests/multisect/bin-ssym.asm b/modules/objfmts/bin/tests/multisect/bin-ssym.asm new file mode 100644 index 0000000..8c5608c --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-ssym.asm @@ -0,0 +1,5 @@ +section foo start=0x10 vstart=0x6000 +mov si, section.foo.start +mov di, section.foo.vstart +mov cx, section.foo.length +;mov dx, section.foo.vstart-section.foo.start diff --git a/modules/objfmts/bin/tests/multisect/bin-ssym.hex b/modules/objfmts/bin/tests/multisect/bin-ssym.hex new file mode 100644 index 0000000..e89a7e2 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-ssym.hex @@ -0,0 +1,25 @@ +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +be +10 +00 +bf +00 +60 +b9 +09 +00 diff --git a/modules/objfmts/bin/tests/multisect/bin-ssym.map b/modules/objfmts/bin/tests/multisect/bin-ssym.map new file mode 100644 index 0000000..9ddfe16 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin-ssym.map @@ -0,0 +1,16 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/bin-ssym + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000000 00000000 00000000 00000000 progbits .text +00006000 00006009 00000010 00000019 00000009 progbits foo + diff --git a/modules/objfmts/bin/tests/multisect/bin_multi_test.sh b/modules/objfmts/bin/tests/multisect/bin_multi_test.sh new file mode 100755 index 0000000..aa3f616 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/bin_multi_test.sh @@ -0,0 +1,113 @@ +#! /bin/sh + +YASM_TEST_SUITE=1 +export YASM_TEST_SUITE + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +mkdir results >/dev/null 2>&1 + +# +# Verify that all test cases match +# + +passedct=0 +failedct=0 + +echo $ECHO_N "Test bin_multi_test: $ECHO_C" +for asm in ${srcdir}/modules/objfmts/bin/tests/multisect/*.asm +do + a=`echo ${asm} | sed 's,^.*/,,;s,.asm$,,'` + o=${a} + oh=${a}.hx + og=`echo ${asm} | sed 's,.asm$,.hex,'` + e=${a}.ew + eg=`echo ${asm} | sed 's,.asm$,.errwarn,'` + m=${a}.map + mg=`echo ${asm} | sed 's,.asm$,.map,'` + if test \! -f ${eg}; then + eg=/dev/null + fi + + # Run within a subshell to prevent signal messages from displaying. + sh -c "cat ${asm} | ./yasm -f bin --mapfile=results/${m} -o results/${o} - 2>results/${e}" >/dev/null 2>/dev/null + status=$? + if test $status -gt 128; then + # We should never get a coredump! + echo $ECHO_N "C$ECHO_C" + eval "failed$failedct='C: ${a} crashed!'" + failedct=`expr $failedct + 1` + elif test $status -gt 0; then + echo ${asm} | grep err >/dev/null + if test $? -gt 0; then + # YASM detected errors but shouldn't have! + echo $ECHO_N "E$ECHO_C" + eval "failed$failedct='E: ${a} returned an error code!'" + failedct=`expr $failedct + 1` + else + # We got errors, check to see if they match: + if diff -w ${eg} results/${e} >/dev/null; then + # Error/warnings match, it passes! + echo $ECHO_N ".$ECHO_C" + passedct=`expr $passedct + 1` + else + # Error/warnings don't match. + echo $ECHO_N "W$ECHO_C" + eval "failed$failedct='W: ${a} did not match errors and warnings!'" + failedct=`expr $failedct + 1` + fi + fi + else + echo ${asm} | grep -v err >/dev/null + if test $? -gt 0; then + # YASM didn't detect errors but should have! + echo $ECHO_N "E$ECHO_C" + eval "failed$failedct='E: ${a} did not return an error code!'" + failedct=`expr $failedct + 1` + else + ./test_hd results/${o} > results/${oh} + if diff -w ${og} results/${oh} >/dev/null; then + if diff -w ${eg} results/${e} >/dev/null; then + if diff -w ${mg} results/${m} >/dev/null; then + # All match, it passes! + echo $ECHO_N ".$ECHO_C" + passedct=`expr $passedct + 1` + else + # Map file doesn't match. + echo $ECHO_N "M$ECHO_C" + eval "failed$failedct='M: ${a} did not match map file!'" + failedct=`expr $failedct + 1` + fi + else + # Error/warnings don't match. + echo $ECHO_N "W$ECHO_C" + eval "failed$failedct='W: ${a} did not match errors and warnings!'" + failedct=`expr $failedct + 1` + fi + else + # Object file doesn't match. + echo $ECHO_N "O$ECHO_C" + eval "failed$failedct='O: ${a} did not match object file!'" + failedct=`expr $failedct + 1` + fi + fi + fi +done + +ct=`expr $failedct + $passedct` +per=`expr 100 \* $passedct / $ct` + +echo " +$passedct-$failedct/$ct $per%" +i=0 +while test $i -lt $failedct; do + eval "failure=\$failed$i" + echo " ** $failure" + i=`expr $i + 1` +done + +exit $failedct diff --git a/modules/objfmts/bin/tests/multisect/follows-loop1-err.asm b/modules/objfmts/bin/tests/multisect/follows-loop1-err.asm new file mode 100644 index 0000000..ad7fef1 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-loop1-err.asm @@ -0,0 +1,2 @@ +section sect1 follows=sect2 +section sect2 follows=sect1 diff --git a/modules/objfmts/bin/tests/multisect/follows-loop1-err.errwarn b/modules/objfmts/bin/tests/multisect/follows-loop1-err.errwarn new file mode 100644 index 0000000..613280e --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-loop1-err.errwarn @@ -0,0 +1 @@ +-: error: follows loop between section `sect2' and section `sect1' diff --git a/modules/objfmts/bin/tests/multisect/follows-loop2-err.asm b/modules/objfmts/bin/tests/multisect/follows-loop2-err.asm new file mode 100644 index 0000000..9b15f46 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-loop2-err.asm @@ -0,0 +1 @@ +section sect follows=sect diff --git a/modules/objfmts/bin/tests/multisect/follows-loop2-err.errwarn b/modules/objfmts/bin/tests/multisect/follows-loop2-err.errwarn new file mode 100644 index 0000000..bc832e0 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-loop2-err.errwarn @@ -0,0 +1 @@ +-: error: follows loop between section `sect' and section `sect' diff --git a/modules/objfmts/bin/tests/multisect/follows-notfound-err.asm b/modules/objfmts/bin/tests/multisect/follows-notfound-err.asm new file mode 100644 index 0000000..36361d5 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-notfound-err.asm @@ -0,0 +1,2 @@ +section foo follows=bar + diff --git a/modules/objfmts/bin/tests/multisect/follows-notfound-err.errwarn b/modules/objfmts/bin/tests/multisect/follows-notfound-err.errwarn new file mode 100644 index 0000000..53d29d8 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/follows-notfound-err.errwarn @@ -0,0 +1 @@ +-: error: section `foo' follows an invalid or unknown section `bar' diff --git a/modules/objfmts/bin/tests/multisect/initbss.asm b/modules/objfmts/bin/tests/multisect/initbss.asm new file mode 100644 index 0000000..8fe39bc --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/initbss.asm @@ -0,0 +1,5 @@ +section .bss +mov ax, 5 + +section foo nobits +db 5 diff --git a/modules/objfmts/bin/tests/multisect/initbss.errwarn b/modules/objfmts/bin/tests/multisect/initbss.errwarn new file mode 100644 index 0000000..e92a68e --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/initbss.errwarn @@ -0,0 +1,2 @@ +-:2: warning: initialized space declared in nobits section: ignoring +-:5: warning: initialized space declared in nobits section: ignoring diff --git a/modules/objfmts/bin/tests/multisect/initbss.hex b/modules/objfmts/bin/tests/multisect/initbss.hex new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/initbss.hex diff --git a/modules/objfmts/bin/tests/multisect/initbss.map b/modules/objfmts/bin/tests/multisect/initbss.map new file mode 100644 index 0000000..d26734d --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/initbss.map @@ -0,0 +1,17 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/initbss + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000000 00000000 00000000 00000000 progbits .text +00000000 00000003 00000000 00000003 00000003 nobits .bss +00000004 00000005 00000004 00000005 00000001 nobits foo + diff --git a/modules/objfmts/bin/tests/multisect/ldlinux-sects.asm b/modules/objfmts/bin/tests/multisect/ldlinux-sects.asm new file mode 100644 index 0000000..2beae7c --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/ldlinux-sects.asm @@ -0,0 +1,102 @@ +[map all] +BSS_START equ 0800h +LATEBSS_START equ 0B800h +TEXT_START equ 7C00h +STACK_SIZE equ 4096 +STACK_START equ TEXT_START-STACK_SIZE +org TEXT_START +[section .text] +times 0x2410 db 0x1 +[section .earlybss nobits start=BSS_START] +resb 0x40C4 +[section .bcopy32 align=4 valign=16 follows=.data vfollows=.earlybss] +times 0x2A0 db 0x3 +[section .config align=4 valign=16 follows=.bcopy32 vfollows=.bcopy32] +times 0x23 db 0x4 +[section .config.end nobits valign=4 vfollows=.config] +[section .bss1 nobits valign=16 vfollows=.config.end] +resb 0x1FB +[section .text start=TEXT_START] +[section .data align=16] +times 0x590 db 0x2 +[section .adv progbits align=1 follows=.config] +[section .bss nobits align=16 follows=.adv] +resb 0x3900 +[section .stack nobits align=16 start=STACK_START] +resb STACK_SIZE +[section .stack nobits align=16 start=STACK_START] +[section .stack nobits align=16 start=STACK_START] +[section .earlybss] +[section .bss] +[section .text] +[section .bss] +[section .text] +[section .data] +[section .text] +[section .text] +[section .text] +[section .bss] +[section .text] +[section .data] +[section .bss] +[section .text] +[section .data] +[section .bss] +[section .text] +[section .text] +[section .text] +[section .data] +[section .bss1] +[section .data] +[section .text] +[section .bss1] +[section .text] +[section .text] +[section .data] +[section .text] +[section .text] +[section .bss] +[section .text] +[section .bss] +[section .text] +[section .data] +[section .text] +[section .text] +[section .bss1] +[section .data] +[section .text] +[section .text] +[section .data] +[section .config] +[section .bss] +[section .text] +[section .text] +[section .text] +[section .data] +[section .text] +[section .data] +[section .config] +[section .bss] +[section .text] +[section .text] +[section .data] +[section .bss] +[section .bcopy32] +[section .data] +[section .bcopy32] +[section .earlybss] +[section .text] +[section .text] +[section .bss] +[section .data] +[section .bss1] +[section .text] +[section .data] +[section .bss1] +[section .text] +[section .bss] +[section .text] +[section .text] +[section .text] +[section .bss] +[section .data] diff --git a/modules/objfmts/bin/tests/multisect/ldlinux-sects.hex b/modules/objfmts/bin/tests/multisect/ldlinux-sects.hex new file mode 100644 index 0000000..bb591fc --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/ldlinux-sects.hex @@ -0,0 +1,11363 @@ +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 +04 diff --git a/modules/objfmts/bin/tests/multisect/ldlinux-sects.map b/modules/objfmts/bin/tests/multisect/ldlinux-sects.map new file mode 100644 index 0000000..03fde84 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/ldlinux-sects.map @@ -0,0 +1,148 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/ldlinux-sects + +-- Program origin ------------------------------------------------------------- + +00007C00 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000800 000048C4 00000800 000048C4 000040C4 nobits .earlybss +00006C00 00007C00 00006C00 00007C00 00001000 nobits .stack +00007C00 0000A010 00007C00 0000A010 00002410 progbits .text +0000A010 0000A5A0 0000A010 0000A5A0 00000590 progbits .data +000048D0 00004B70 0000A5A0 0000A840 000002A0 progbits .bcopy32 +00004B70 00004B93 0000A840 0000A863 00000023 progbits .config +0000A863 0000A863 0000A863 0000A863 00000000 progbits .adv +0000A870 0000E170 0000A870 0000E170 00003900 nobits .bss +00004B94 00004B94 0000E170 0000E170 00000000 nobits .config.end +00004BA0 00004D9B 0000E170 0000E36B 000001FB nobits .bss1 + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .earlybss -------------------------------------------------------- + +class: nobits +length: 000040C4 +start: 00000800 +align: 00000004 +follows: not defined +vstart: 00000800 +valign: 00000004 +vfollows: not defined + +---- Section .stack ----------------------------------------------------------- + +class: nobits +length: 00001000 +start: 00006C00 +align: 00000010 +follows: not defined +vstart: 00006C00 +valign: 00000010 +vfollows: not defined + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00002410 +start: 00007C00 +align: 00000004 +follows: not defined +vstart: 00007C00 +valign: 00000004 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000590 +start: 0000A010 +align: 00000010 +follows: not defined +vstart: 0000A010 +valign: 00000010 +vfollows: not defined + +---- Section .bcopy32 --------------------------------------------------------- + +class: progbits +length: 000002A0 +start: 0000A5A0 +align: 00000004 +follows: .data +vstart: 000048D0 +valign: 00000010 +vfollows: .earlybss + +---- Section .config ---------------------------------------------------------- + +class: progbits +length: 00000023 +start: 0000A840 +align: 00000004 +follows: .bcopy32 +vstart: 00004B70 +valign: 00000010 +vfollows: .bcopy32 + +---- Section .adv ------------------------------------------------------------- + +class: progbits +length: 00000000 +start: 0000A863 +align: 00000001 +follows: .config +vstart: 0000A863 +valign: 00000001 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00003900 +start: 0000A870 +align: 00000010 +follows: .adv +vstart: 0000A870 +valign: 00000010 +vfollows: not defined + +---- Section .config.end ------------------------------------------------------ + +class: nobits +length: 00000000 +start: 0000E170 +align: 00000004 +follows: not defined +vstart: 00004B94 +valign: 00000004 +vfollows: .config + +---- Section .bss1 ------------------------------------------------------------ + +class: nobits +length: 000001FB +start: 0000E170 +align: 00000004 +follows: not defined +vstart: 00004BA0 +valign: 00000010 +vfollows: .config.end + +-- Symbols -------------------------------------------------------------------- + +---- No Section --------------------------------------------------------------- + +Value Name +00000800 BSS_START +0000B800 LATEBSS_START +00007C00 TEXT_START +00001000 STACK_SIZE +00006C00 STACK_START + + diff --git a/modules/objfmts/bin/tests/multisect/multisect1.asm b/modules/objfmts/bin/tests/multisect/multisect1.asm new file mode 100644 index 0000000..d9699b7 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect1.asm @@ -0,0 +1,31 @@ +[BITS 32] + +[MAP all] +; This file is loaded as a DOS .COM file. +[SEGMENT _TEXT start=0 vstart=100h] + +; shrink & relocate stack: + mov sp, stack_ends ; NASM puts 460h here - + ; 9B0h is desired. + mov bx, sp + mov cl, 4 + shr bx, cl + mov ah, 4Ah ; DOS resize mem.block + int 21h + +[SEGMENT GATESEG align=1 follows=_TEXT vstart=0] +; label to use for copying this segment at run-time. +gate0cpy: +dd 0 + +; 32-bit ring-0 protected mode code that interacts +; with the VMM (Win3.x/9x kernel). To be relocated +; at run-time to memory dynamically allocated with +; DPMI, and called through a call-gate from ring-3. +; vstart=0 makes some calculations easier. + +; Reserve space for stack: +[SEGMENT .bss follows=GATESEG align=16] + resb 400h +stack_ends: + diff --git a/modules/objfmts/bin/tests/multisect/multisect1.hex b/modules/objfmts/bin/tests/multisect/multisect1.hex new file mode 100644 index 0000000..32695b8 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect1.hex @@ -0,0 +1,20 @@ +66 +bc +20 +04 +66 +89 +e3 +b1 +04 +66 +d3 +eb +b4 +4a +cd +21 +00 +00 +00 +00 diff --git a/modules/objfmts/bin/tests/multisect/multisect1.map b/modules/objfmts/bin/tests/multisect/multisect1.map new file mode 100644 index 0000000..0a56e41 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect1.map @@ -0,0 +1,78 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/multisect1 + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000000 00000000 00000000 00000000 progbits .text +00000100 00000110 00000000 00000010 00000010 progbits _TEXT +00000000 00000004 00000010 00000014 00000004 progbits GATESEG +00000020 00000420 00000020 00000420 00000400 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000000 +start: 00000000 +align: 00000004 +follows: not defined +vstart: 00000000 +valign: 00000004 +vfollows: not defined + +---- Section _TEXT ------------------------------------------------------------ + +class: progbits +length: 00000010 +start: 00000000 +align: 00000004 +follows: not defined +vstart: 00000100 +valign: 00000004 +vfollows: not defined + +---- Section GATESEG ---------------------------------------------------------- + +class: progbits +length: 00000004 +start: 00000010 +align: 00000001 +follows: _TEXT +vstart: 00000000 +valign: 00000001 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000400 +start: 00000020 +align: 00000010 +follows: GATESEG +vstart: 00000020 +valign: 00000010 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + +---- Section GATESEG ---------------------------------------------------------- + +Real Virtual Name +00000010 00000000 gate0cpy + + +---- Section .bss ------------------------------------------------------------- + +Real Virtual Name +00000420 00000420 stack_ends + + diff --git a/modules/objfmts/bin/tests/multisect/multisect2.asm b/modules/objfmts/bin/tests/multisect/multisect2.asm new file mode 100644 index 0000000..cfbf58c --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect2.asm @@ -0,0 +1,42 @@ +org 100h +[map all] + +section .bss ; follows=.data + buffer resb 123h +section .data + msg db "this is a message", 0 +section .text + mov ax, msg + call showax + mov ax, buffer + call showax + ret + +;----------------- +showax: + push cx + push dx + + mov cx, 4 ; four digits to show + +.top + rol ax, 4 ; rotate one digit into position + mov dl, al ; make a copy to process + and dl, 0Fh ; mask off a single (hex) digit + cmp dl, 9 ; is it in the "A" to "F" range? + jbe .dec_dig ; no, skip it + add dl, 7 ; adjust +.dec_dig: + add dl, 30h ; convert to character + + push ax + mov ah, 2 + int 21h + pop ax + + loop .top + + pop dx + pop cx + ret +;-------------------------- diff --git a/modules/objfmts/bin/tests/multisect/multisect2.hex b/modules/objfmts/bin/tests/multisect/multisect2.hex new file mode 100644 index 0000000..f043f37 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect2.hex @@ -0,0 +1,66 @@ +b8 +30 +01 +e8 +07 +00 +b8 +44 +01 +e8 +01 +00 +c3 +51 +52 +b9 +04 +00 +c1 +c0 +04 +88 +c2 +80 +e2 +0f +80 +fa +09 +76 +03 +80 +c2 +07 +80 +c2 +30 +50 +b4 +02 +cd +21 +58 +e2 +e5 +5a +59 +c3 +74 +68 +69 +73 +20 +69 +73 +20 +61 +20 +6d +65 +73 +73 +61 +67 +65 +00 diff --git a/modules/objfmts/bin/tests/multisect/multisect2.map b/modules/objfmts/bin/tests/multisect/multisect2.map new file mode 100644 index 0000000..82002ed --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect2.map @@ -0,0 +1,74 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/multisect2 + +-- Program origin ------------------------------------------------------------- + +00000100 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000100 00000130 00000100 00000130 00000030 progbits .text +00000130 00000142 00000130 00000142 00000012 progbits .data +00000144 00000267 00000144 00000267 00000123 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000030 +start: 00000100 +align: 00000004 +follows: not defined +vstart: 00000100 +valign: 00000004 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000012 +start: 00000130 +align: 00000004 +follows: not defined +vstart: 00000130 +valign: 00000004 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000123 +start: 00000144 +align: 00000004 +follows: not defined +vstart: 00000144 +valign: 00000004 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +Real Virtual Name +0000010D 0000010D showax +00000112 00000112 showax.top +00000122 00000122 showax.dec_dig + + +---- Section .data ------------------------------------------------------------ + +Real Virtual Name +00000130 00000130 msg + + +---- Section .bss ------------------------------------------------------------- + +Real Virtual Name +00000144 00000144 buffer + + diff --git a/modules/objfmts/bin/tests/multisect/multisect3.asm b/modules/objfmts/bin/tests/multisect/multisect3.asm new file mode 100644 index 0000000..d6499f9 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect3.asm @@ -0,0 +1,9 @@ +[map all] +section .text + mov ax, bx + +section .foo nobits follows=.text + resb 4 + +section .bss + resb 4 diff --git a/modules/objfmts/bin/tests/multisect/multisect3.hex b/modules/objfmts/bin/tests/multisect/multisect3.hex new file mode 100644 index 0000000..a994975 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect3.hex @@ -0,0 +1,2 @@ +89 +d8 diff --git a/modules/objfmts/bin/tests/multisect/multisect3.map b/modules/objfmts/bin/tests/multisect/multisect3.map new file mode 100644 index 0000000..1c67c22 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect3.map @@ -0,0 +1,54 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/multisect3 + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000002 00000000 00000002 00000002 progbits .text +00000004 00000008 00000004 00000008 00000004 nobits .foo +00000008 0000000C 00000008 0000000C 00000004 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000002 +start: 00000000 +align: 00000004 +follows: not defined +vstart: 00000000 +valign: 00000004 +vfollows: not defined + +---- Section .foo ------------------------------------------------------------- + +class: nobits +length: 00000004 +start: 00000004 +align: 00000004 +follows: .text +vstart: 00000004 +valign: 00000004 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000004 +start: 00000008 +align: 00000004 +follows: not defined +vstart: 00000008 +valign: 00000004 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + diff --git a/modules/objfmts/bin/tests/multisect/multisect4.asm b/modules/objfmts/bin/tests/multisect/multisect4.asm new file mode 100644 index 0000000..94d2415 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect4.asm @@ -0,0 +1,31 @@ +[map all] +; Memory below 0800h is reserved for the BIOS and the MBR +BSS_START equ 0800h + +; PXELINUX needs lots of BSS, so it relocates itself on startup +;%if IS_PXELINUX +TEXT_START equ 9000h +;%else +;TEXT_START equ 7C00h +;%endif + +; +; The various sections and their relationship +; +org TEXT_START + +times 0x100 db 0x3 + +section .earlybss nobits start=BSS_START +resb 0x100 +section .bcopy32 align=16 follows=.data vfollows=.earlybss +times 0x100 db 0x1 +section .bss nobits align=256 vfollows=.bcopy32 +resb 0x100 + +section .text start=TEXT_START +section .data align=16 follows=.text +times 0x100 db 0x2 + +section .latebss nobits align=16 follows=.bcopy32 +resb 0x100 diff --git a/modules/objfmts/bin/tests/multisect/multisect4.hex b/modules/objfmts/bin/tests/multisect/multisect4.hex new file mode 100644 index 0000000..d40d7a1 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect4.hex @@ -0,0 +1,768 @@ +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +02 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 diff --git a/modules/objfmts/bin/tests/multisect/multisect4.map b/modules/objfmts/bin/tests/multisect/multisect4.map new file mode 100644 index 0000000..e1940dc --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect4.map @@ -0,0 +1,97 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/multisect4 + +-- Program origin ------------------------------------------------------------- + +00009000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000800 00000900 00000800 00000900 00000100 nobits .earlybss +00009000 00009100 00009000 00009100 00000100 progbits .text +00009100 00009200 00009100 00009200 00000100 progbits .data +00000900 00000A00 00009200 00009300 00000100 progbits .bcopy32 +00009300 00009400 00009300 00009400 00000100 nobits .latebss +00000A00 00000B00 00009400 00009500 00000100 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .earlybss -------------------------------------------------------- + +class: nobits +length: 00000100 +start: 00000800 +align: 00000004 +follows: not defined +vstart: 00000800 +valign: 00000004 +vfollows: not defined + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00009000 +align: 00000004 +follows: not defined +vstart: 00009000 +valign: 00000004 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00009100 +align: 00000010 +follows: .text +vstart: 00009100 +valign: 00000010 +vfollows: not defined + +---- Section .bcopy32 --------------------------------------------------------- + +class: progbits +length: 00000100 +start: 00009200 +align: 00000010 +follows: .data +vstart: 00000900 +valign: 00000010 +vfollows: .earlybss + +---- Section .latebss --------------------------------------------------------- + +class: nobits +length: 00000100 +start: 00009300 +align: 00000010 +follows: .bcopy32 +vstart: 00009300 +valign: 00000010 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000100 +start: 00009400 +align: 00000100 +follows: not defined +vstart: 00000A00 +valign: 00000100 +vfollows: .bcopy32 + +-- Symbols -------------------------------------------------------------------- + +---- No Section --------------------------------------------------------------- + +Value Name +00000800 BSS_START +00009000 TEXT_START + + diff --git a/modules/objfmts/bin/tests/multisect/multisect5.asm b/modules/objfmts/bin/tests/multisect/multisect5.asm new file mode 100644 index 0000000..2b76117 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect5.asm @@ -0,0 +1,22 @@ +org 0x100 +[map all] +section sect1 start=0x100 vstart=0x2000 +times 0x100 db 0 +section sect2 follows=sect1 +times 0x100 db 0 + +section sect3 start=0x300 vstart=0x4000 +times 0x100 db 0 +section sect4 follows=sect3 +times 0x100 db 0 +section sect5 vfollows=sect3 +times 0x100 db 0 + +section sect6 start=0x600 vstart=0x6000 +times 0x11 db 0 +section sect7 follows=sect6 valign=16 +times 0x104 db 0 +section sect8 follows=sect7 valign=16 ; NASM bug - sect7 and sect8 overlap +times 0x100 db 0 + +section sect9 vfollows=sect8 diff --git a/modules/objfmts/bin/tests/multisect/multisect5.hex b/modules/objfmts/bin/tests/multisect/multisect5.hex new file mode 100644 index 0000000..a2776bc --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect5.hex @@ -0,0 +1,1816 @@ +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 diff --git a/modules/objfmts/bin/tests/multisect/multisect5.map b/modules/objfmts/bin/tests/multisect/multisect5.map new file mode 100644 index 0000000..4c052be --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/multisect5.map @@ -0,0 +1,138 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/multisect5 + +-- Program origin ------------------------------------------------------------- + +00000100 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000100 00000100 00000100 00000100 00000000 progbits .text +00002000 00002100 00000100 00000200 00000100 progbits sect1 +00000200 00000300 00000200 00000300 00000100 progbits sect2 +00004000 00004100 00000300 00000400 00000100 progbits sect3 +00000400 00000500 00000400 00000500 00000100 progbits sect4 +00004100 00004200 00000500 00000600 00000100 progbits sect5 +00006000 00006011 00000600 00000611 00000011 progbits sect6 +00000620 00000724 00000614 00000718 00000104 progbits sect7 +00000730 00000830 00000718 00000818 00000100 progbits sect8 +00000830 00000830 00000818 00000818 00000000 progbits sect9 + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000000 +start: 00000100 +align: 00000004 +follows: not defined +vstart: 00000100 +valign: 00000004 +vfollows: not defined + +---- Section sect1 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000100 +align: 00000004 +follows: not defined +vstart: 00002000 +valign: 00000004 +vfollows: not defined + +---- Section sect2 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000200 +align: 00000004 +follows: sect1 +vstart: 00000200 +valign: 00000004 +vfollows: not defined + +---- Section sect3 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000300 +align: 00000004 +follows: not defined +vstart: 00004000 +valign: 00000004 +vfollows: not defined + +---- Section sect4 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000400 +align: 00000004 +follows: sect3 +vstart: 00000400 +valign: 00000004 +vfollows: not defined + +---- Section sect5 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000500 +align: 00000004 +follows: not defined +vstart: 00004100 +valign: 00000004 +vfollows: sect3 + +---- Section sect6 ------------------------------------------------------------ + +class: progbits +length: 00000011 +start: 00000600 +align: 00000004 +follows: not defined +vstart: 00006000 +valign: 00000004 +vfollows: not defined + +---- Section sect7 ------------------------------------------------------------ + +class: progbits +length: 00000104 +start: 00000614 +align: 00000004 +follows: sect6 +vstart: 00000620 +valign: 00000010 +vfollows: not defined + +---- Section sect8 ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000718 +align: 00000004 +follows: sect7 +vstart: 00000730 +valign: 00000010 +vfollows: not defined + +---- Section sect9 ------------------------------------------------------------ + +class: progbits +length: 00000000 +start: 00000818 +align: 00000004 +follows: not defined +vstart: 00000830 +valign: 00000004 +vfollows: sect8 + +-- Symbols -------------------------------------------------------------------- + diff --git a/modules/objfmts/bin/tests/multisect/nomultisect1.asm b/modules/objfmts/bin/tests/multisect/nomultisect1.asm new file mode 100644 index 0000000..5f720d8 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect1.asm @@ -0,0 +1,10 @@ +[map all] + +[section .bss] +resb 0x100 + +[section .data] +times 0x100 db 1 + +[section .text] +times 0x100 db 1 diff --git a/modules/objfmts/bin/tests/multisect/nomultisect1.hex b/modules/objfmts/bin/tests/multisect/nomultisect1.hex new file mode 100644 index 0000000..59c9350 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect1.hex @@ -0,0 +1,512 @@ +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 diff --git a/modules/objfmts/bin/tests/multisect/nomultisect1.map b/modules/objfmts/bin/tests/multisect/nomultisect1.map new file mode 100644 index 0000000..8997420 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect1.map @@ -0,0 +1,54 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/nomultisect1 + +-- Program origin ------------------------------------------------------------- + +00000000 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000000 00000100 00000000 00000100 00000100 progbits .text +00000100 00000200 00000100 00000200 00000100 progbits .data +00000200 00000300 00000200 00000300 00000100 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000000 +align: 00000004 +follows: not defined +vstart: 00000000 +valign: 00000004 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000100 +align: 00000004 +follows: not defined +vstart: 00000100 +valign: 00000004 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000100 +start: 00000200 +align: 00000004 +follows: not defined +vstart: 00000200 +valign: 00000004 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + diff --git a/modules/objfmts/bin/tests/multisect/nomultisect2.asm b/modules/objfmts/bin/tests/multisect/nomultisect2.asm new file mode 100644 index 0000000..b97e40a --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect2.asm @@ -0,0 +1,12 @@ +org 0x100 + +[map all] + +[section .bss] +resb 0x100 + +[section .data] +times 0x100 db 1 + +[section .text] +times 0x100 db 1 diff --git a/modules/objfmts/bin/tests/multisect/nomultisect2.hex b/modules/objfmts/bin/tests/multisect/nomultisect2.hex new file mode 100644 index 0000000..59c9350 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect2.hex @@ -0,0 +1,512 @@ +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 diff --git a/modules/objfmts/bin/tests/multisect/nomultisect2.map b/modules/objfmts/bin/tests/multisect/nomultisect2.map new file mode 100644 index 0000000..cc6d9c8 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/nomultisect2.map @@ -0,0 +1,54 @@ + +- YASM Map file --------------------------------------------------------------- + +Source file: - +Output file: results/nomultisect2 + +-- Program origin ------------------------------------------------------------- + +00000100 + +-- Sections (summary) --------------------------------------------------------- + +Vstart Vstop Start Stop Length Class Name +00000100 00000200 00000100 00000200 00000100 progbits .text +00000200 00000300 00000200 00000300 00000100 progbits .data +00000300 00000400 00000300 00000400 00000100 nobits .bss + +-- Sections (detailed) -------------------------------------------------------- + +---- Section .text ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000100 +align: 00000004 +follows: not defined +vstart: 00000100 +valign: 00000004 +vfollows: not defined + +---- Section .data ------------------------------------------------------------ + +class: progbits +length: 00000100 +start: 00000200 +align: 00000004 +follows: not defined +vstart: 00000200 +valign: 00000004 +vfollows: not defined + +---- Section .bss ------------------------------------------------------------- + +class: nobits +length: 00000100 +start: 00000300 +align: 00000004 +follows: not defined +vstart: 00000300 +valign: 00000004 +vfollows: not defined + +-- Symbols -------------------------------------------------------------------- + diff --git a/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.asm b/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.asm new file mode 100644 index 0000000..84a7c1e --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.asm @@ -0,0 +1,2 @@ +section sect1 vfollows=sect2 +section sect2 vfollows=sect1 diff --git a/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.errwarn b/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.errwarn new file mode 100644 index 0000000..3965e58 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-loop1-err.errwarn @@ -0,0 +1 @@ +-: error: vfollows loop between section `sect2' and section `sect1' diff --git a/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.asm b/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.asm new file mode 100644 index 0000000..ac080b8 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.asm @@ -0,0 +1 @@ +section sect vfollows=sect diff --git a/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.errwarn b/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.errwarn new file mode 100644 index 0000000..4f252b4 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-loop2-err.errwarn @@ -0,0 +1 @@ +-: error: vfollows loop between section `sect' and section `sect' diff --git a/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.asm b/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.asm new file mode 100644 index 0000000..fe0f6e5 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.asm @@ -0,0 +1,2 @@ +section foo vfollows=bar + diff --git a/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.errwarn b/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.errwarn new file mode 100644 index 0000000..93b44d0 --- /dev/null +++ b/modules/objfmts/bin/tests/multisect/vfollows-notfound-err.errwarn @@ -0,0 +1 @@ +-: error: section `foo' vfollows an invalid or unknown section `bar' diff --git a/modules/objfmts/bin/tests/reserve.asm b/modules/objfmts/bin/tests/reserve.asm new file mode 100644 index 0000000..cd87e21 --- /dev/null +++ b/modules/objfmts/bin/tests/reserve.asm @@ -0,0 +1,14 @@ +; Test res* family +resb 5 +resw 10 +resd 50 +resq 1 +rest 0 + +[section .bss] +resb 1 +resw 5 +resd 10 +resq 40 +rest 4 + diff --git a/modules/objfmts/bin/tests/reserve.errwarn b/modules/objfmts/bin/tests/reserve.errwarn new file mode 100644 index 0000000..fb0d722 --- /dev/null +++ b/modules/objfmts/bin/tests/reserve.errwarn @@ -0,0 +1,4 @@ +-:2: warning: uninitialized space declared in code/data section: zeroing +-:3: warning: uninitialized space declared in code/data section: zeroing +-:4: warning: uninitialized space declared in code/data section: zeroing +-:5: warning: uninitialized space declared in code/data section: zeroing diff --git a/modules/objfmts/bin/tests/reserve.hex b/modules/objfmts/bin/tests/reserve.hex new file mode 100644 index 0000000..49dfa56 --- /dev/null +++ b/modules/objfmts/bin/tests/reserve.hex @@ -0,0 +1,233 @@ +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 diff --git a/modules/objfmts/bin/tests/shr.asm b/modules/objfmts/bin/tests/shr.asm new file mode 100644 index 0000000..66ade16 --- /dev/null +++ b/modules/objfmts/bin/tests/shr.asm @@ -0,0 +1,3 @@ +x: mov al, x>>8 +times 256 db 0 +y: mov ah, y>>8 diff --git a/modules/objfmts/bin/tests/shr.hex b/modules/objfmts/bin/tests/shr.hex new file mode 100644 index 0000000..9ce7eee --- /dev/null +++ b/modules/objfmts/bin/tests/shr.hex @@ -0,0 +1,260 @@ +b0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b4 +01 |