Skip to content

Commit 9af474a

Browse files
committed
Update on 2018-Jan-29
1 parent 490f410 commit 9af474a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+38347
-38305
lines changed

bin/objconv

4.11 KB
Binary file not shown.

changelog.txt

Lines changed: 0 additions & 52 deletions
This file was deleted.

docs/changelog.txt

Lines changed: 65 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,65 @@
1-
2016-11-27 version 2.44
2-
* fixed bug when disassembling file generated by Tiny C compiler
3-
4-
2016-11-09 version 2.43
5-
* fixed "string table corrupt" message for ELF files
6-
* support for disassembly of AVX512_4VNNIW, AVX512_4FMAPS instructions
7-
8-
2016-01-16 version 2.42
9-
* fixed bugs with disassembly of some AVX512 and BMI2 instructions
10-
11-
2015-10-15 version 2.41
12-
* fixed bugs with disassembly of some AVX512 instructions
13-
* fixed missing "ptr" in masm syntax disassembly
14-
15-
2015-10-15 version 2.40
16-
* fixed bugs with disassembly of some AVX512 instructions
17-
18-
2015-09-14 version 2.39
19-
* fixed bugs with disassembly of some AVX512 instructions
20-
21-
2014-12-15 version 2.38
22-
* fixed bugs with disassembly of Knights Corner instruction set
23-
* exe file made compatible with Windows XP
24-
25-
2014-12-06 version 2.37
26-
* support for disassembly of AVX512BW/DQ, etc.
27-
* fixed disassembly bug of vpgatherdd on knights corner
28-
* fixed disassembly bug for FMA4 instructions
29-
* improved disassembly of switch/case tables for gcc and clang compilers
30-
31-
2014-07-21 version 2.36
32-
* improved execution times for disassembling very big files
33-
34-
2013-11-27 version 2.32
35-
* fix bug with .bss section in elf2elf.cpp and elf2coff.cpp
36-
37-
2013-08-23 version 2.31
38-
* support for disassembly of AVX512F
39-
* library operations were extremely slow on big libraries because of rebuilding and search for unique names. This problem is fixed.
40-
* long member names allowed in libraries
41-
* option -ls to make member names short. Perhaps good for compatibility with BSD. Member names are made unique just by adding a running hex number, not by comparing with all previous names, which was the cause of slow operations in previous versions.
42-
* option -ns to change symbol suffixes
43-
* options -ap and -as to change prefix or suffix and keep old name as alias
44-
* added missing relocation type in ELF to COFF conversion
45-
* fixed error that often occurred when disassembling .exe files
46-
* fixed minor errors
47-
48-
2012-08-31 version 2.16
49-
* support for disassembly of Knights Corner instruction set
1+
2018-01-29 version 2.49
2+
* fixed minor problem with disassembly of DLL
3+
4+
2017-10-18 version 2.48
5+
* minor changes
6+
7+
2017-07-27 version 2.47
8+
* fixed bug in library manager for long module names
9+
10+
2017-07-15 version 2.46
11+
* dump of ELF files improved
12+
* a new unnecessary warnings removed
13+
14+
2017-04-10 version 2.45
15+
* support disassembly of forthcoming Control-flow Enforcement instructions
16+
17+
2016-11-27 version 2.44
18+
* fixed bug when disassembling file generated by Tiny C compiler
19+
20+
2016-11-09 version 2.43
21+
* fixed "string table corrupt" message for ELF files
22+
* support for disassembly of AVX512_4VNNIW, AVX512_4FMAPS instructions
23+
24+
2016-01-16 version 2.42
25+
* fixed bugs with disassembly of some AVX512 and BMI2 instructions
26+
27+
2015-10-15 version 2.41
28+
* fixed bugs with disassembly of some AVX512 instructions
29+
* fixed missing "ptr" in masm syntax disassembly
30+
31+
2015-10-15 version 2.40
32+
* fixed bugs with disassembly of some AVX512 instructions
33+
34+
2015-09-14 version 2.39
35+
* fixed bugs with disassembly of some AVX512 instructions
36+
37+
2014-12-15 version 2.38
38+
* fixed bugs with disassembly of Knights Corner instruction set
39+
* exe file made compatible with Windows XP
40+
41+
2014-12-06 version 2.37
42+
* support for disassembly of AVX512BW/DQ, etc.
43+
* fixed disassembly bug of vpgatherdd on knights corner
44+
* fixed disassembly bug for FMA4 instructions
45+
* improved disassembly of switch/case tables for gcc and clang compilers
46+
47+
2014-07-21 version 2.36
48+
* improved execution times for disassembling very big files
49+
50+
2013-11-27 version 2.32
51+
* fix bug with .bss section in elf2elf.cpp and elf2coff.cpp
52+
53+
2013-08-23 version 2.31
54+
* support for disassembly of AVX512F
55+
* library operations were extremely slow on big libraries because of rebuilding and search for unique names. This problem is fixed.
56+
* long member names allowed in libraries
57+
* option -ls to make member names short. Perhaps good for compatibility with BSD. Member names are made unique just by adding a running hex number, not by comparing with all previous names, which was the cause of slow operations in previous versions.
58+
* option -ns to change symbol suffixes
59+
* options -ap and -as to change prefix or suffix and keep old name as alias
60+
* added missing relocation type in ELF to COFF conversion
61+
* fixed error that often occurred when disassembling .exe files
62+
* fixed minor errors
63+
64+
2012-08-31 version 2.16
65+
* support for disassembly of Knights Corner instruction set

docs/objconv-instructions.pdf

-158 Bytes
Binary file not shown.

extras/extras.zip

-402 Bytes
Binary file not shown.

extras/u2wstub.asm

100644100755
Lines changed: 114 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,114 @@
1-
; ***************************** u2wstub.asm ********************************
2-
; Author: Agner Fog
3-
; Date created: 2008-05-25
4-
;
5-
; Description:
6-
; Call stub for calling 64-bit Linux, BSD or Mac functions from Windows
7-
;
8-
; (c) 2008 GNU General Public License www.gnu.org/copyleft/gpl.html
9-
; *****************************************************************************
10-
;
11-
; This call stub takes care of the differences between the calling conventions
12-
; of 64-bit Windows and 64-bit Unix systems (Linux, BSD, Mac OS X) when a
13-
; function compiled for a Unix system is called from Windows. No stub is needed
14-
; in 32-bit systems.
15-
;
16-
; See the manual for instructions
17-
;
18-
; Requirements:
19-
; The converted function must meet the following requirements:
20-
;
21-
; * Must not call any system functions or any library functions or
22-
; access any data not available on the target system.
23-
;
24-
; * Must have no more than 4 parameters.
25-
;
26-
; * The parameters cannot be a composite type (struct, class), but
27-
; pointers and references to composite types are allowed.
28-
;
29-
; * If any parameters are of type float or double then there can be
30-
; no parameters of any other type than float and double.
31-
;
32-
; * Cannot have a variable number of parameter, such as printf
33-
;
34-
; * The return can be void or any type. If the return is a composite type
35-
; then this may use a return pointer, counting as one parameter.
36-
;
37-
; * The function should preferably have extern "C" declaration in both
38-
; systems. If the declaration is not extern "C" then the mangled names
39-
; must be translated manually.
40-
;
41-
; * The function should preferably not use the red zone. Compile the Unix
42-
; function with option -mno-red-zone if possible. If the function uses
43-
; the red zone then it will still work in Windows most of the time, but
44-
; it may fail with an extremely low frequency in case the system discards
45-
; the area above the stack when it is low on memory.
46-
;
47-
; If the function has more than four parameters or a mixture of floating
48-
; point and non-floating point parameters then you have to make your own
49-
; stub assembler code to account for the differences in parameter transfer
50-
; methods.
51-
;
52-
; If the converted Unix function calls another converted Unix function then
53-
; no stub is needed for the latter call. If the converted Unix function calls
54-
; a Windows function then the call must go through a reverse stub created
55-
; from w2ustub.
56-
;
57-
; See www.agner.org/optimize/calling_conventions.pdf for further details
58-
; about differences in calling conventions.
59-
; ****************************************************************************
60-
61-
.code
62-
63-
extern uname: near
64-
65-
wname proc ; call from Windows goes here
66-
67-
; Make space for 10 xmm registers, 2 G.P. registers,
68-
; and align stack by 16
69-
sub rsp, 184; 10*16 + 2*8 + 8
70-
71-
; Register rsi, rdi and xmm6 - xmm15 have callee-save status
72-
; in Windows, but not in Unix:
73-
mov [rsp], rsi
74-
mov [rsp+8], rdi
75-
movaps [rsp+10h], xmm6
76-
movaps [rsp+20h], xmm7
77-
movaps [rsp+30h], xmm8
78-
movaps [rsp+40h], xmm9
79-
movaps [rsp+50h], xmm10
80-
movaps [rsp+60h], xmm11
81-
movaps [rsp+70h], xmm12
82-
movaps [rsp+80h], xmm13
83-
movaps [rsp+90h], xmm14
84-
movaps [rsp+0A0h],xmm15
85-
86-
; Windows parameters (rcx,rdx,r8,r9) -> Unix parameters (rdi,rsi,rdx,rcx)
87-
mov rdi, rcx
88-
mov rsi, rdx
89-
mov rdx, r8
90-
mov rcx, r9
91-
92-
call uname ; Call to Unix function here
93-
94-
; Restore saved registers
95-
mov rsi, [rsp]
96-
mov rdi, [rsp+8]
97-
movaps xmm6, [rsp+10h]
98-
movaps xmm7, [rsp+20h]
99-
movaps xmm8, [rsp+30h]
100-
movaps xmm9, [rsp+40h]
101-
movaps xmm10, [rsp+50h]
102-
movaps xmm11, [rsp+60h]
103-
movaps xmm12, [rsp+70h]
104-
movaps xmm13, [rsp+80h]
105-
movaps xmm14, [rsp+90h]
106-
movaps xmm15, [rsp+0A0h]
107-
108-
; restore stack pointer
109-
add rsp, 184
110-
ret
111-
112-
wname endp
113-
114-
end
1+
; ***************************** u2wstub.asm ********************************
2+
; Author: Agner Fog
3+
; Date created: 2008-05-25
4+
;
5+
; Description:
6+
; Call stub for calling 64-bit Linux, BSD or Mac functions from Windows
7+
;
8+
; (c) 2008 GNU General Public License www.gnu.org/copyleft/gpl.html
9+
; *****************************************************************************
10+
;
11+
; This call stub takes care of the differences between the calling conventions
12+
; of 64-bit Windows and 64-bit Unix systems (Linux, BSD, Mac OS X) when a
13+
; function compiled for a Unix system is called from Windows. No stub is needed
14+
; in 32-bit systems.
15+
;
16+
; See the manual for instructions
17+
;
18+
; Requirements:
19+
; The converted function must meet the following requirements:
20+
;
21+
; * Must not call any system functions or any library functions or
22+
; access any data not available on the target system.
23+
;
24+
; * Must have no more than 4 parameters.
25+
;
26+
; * The parameters cannot be a composite type (struct, class), but
27+
; pointers and references to composite types are allowed.
28+
;
29+
; * If any parameters are of type float or double then there can be
30+
; no parameters of any other type than float and double.
31+
;
32+
; * Cannot have a variable number of parameter, such as printf
33+
;
34+
; * The return can be void or any type. If the return is a composite type
35+
; then this may use a return pointer, counting as one parameter.
36+
;
37+
; * The function should preferably have extern "C" declaration in both
38+
; systems. If the declaration is not extern "C" then the mangled names
39+
; must be translated manually.
40+
;
41+
; * The function should preferably not use the red zone. Compile the Unix
42+
; function with option -mno-red-zone if possible. If the function uses
43+
; the red zone then it will still work in Windows most of the time, but
44+
; it may fail with an extremely low frequency in case the system discards
45+
; the area above the stack when it is low on memory.
46+
;
47+
; If the function has more than four parameters or a mixture of floating
48+
; point and non-floating point parameters then you have to make your own
49+
; stub assembler code to account for the differences in parameter transfer
50+
; methods.
51+
;
52+
; If the converted Unix function calls another converted Unix function then
53+
; no stub is needed for the latter call. If the converted Unix function calls
54+
; a Windows function then the call must go through a reverse stub created
55+
; from w2ustub.
56+
;
57+
; See www.agner.org/optimize/calling_conventions.pdf for further details
58+
; about differences in calling conventions.
59+
; ****************************************************************************
60+
61+
.code
62+
63+
extern uname: near
64+
65+
wname proc ; call from Windows goes here
66+
67+
; Make space for 10 xmm registers, 2 G.P. registers,
68+
; and align stack by 16
69+
sub rsp, 184; 10*16 + 2*8 + 8
70+
71+
; Register rsi, rdi and xmm6 - xmm15 have callee-save status
72+
; in Windows, but not in Unix:
73+
mov [rsp], rsi
74+
mov [rsp+8], rdi
75+
movaps [rsp+10h], xmm6
76+
movaps [rsp+20h], xmm7
77+
movaps [rsp+30h], xmm8
78+
movaps [rsp+40h], xmm9
79+
movaps [rsp+50h], xmm10
80+
movaps [rsp+60h], xmm11
81+
movaps [rsp+70h], xmm12
82+
movaps [rsp+80h], xmm13
83+
movaps [rsp+90h], xmm14
84+
movaps [rsp+0A0h],xmm15
85+
86+
; Windows parameters (rcx,rdx,r8,r9) -> Unix parameters (rdi,rsi,rdx,rcx)
87+
mov rdi, rcx
88+
mov rsi, rdx
89+
mov rdx, r8
90+
mov rcx, r9
91+
92+
call uname ; Call to Unix function here
93+
94+
; Restore saved registers
95+
mov rsi, [rsp]
96+
mov rdi, [rsp+8]
97+
movaps xmm6, [rsp+10h]
98+
movaps xmm7, [rsp+20h]
99+
movaps xmm8, [rsp+30h]
100+
movaps xmm9, [rsp+40h]
101+
movaps xmm10, [rsp+50h]
102+
movaps xmm11, [rsp+60h]
103+
movaps xmm12, [rsp+70h]
104+
movaps xmm13, [rsp+80h]
105+
movaps xmm14, [rsp+90h]
106+
movaps xmm15, [rsp+0A0h]
107+
108+
; restore stack pointer
109+
add rsp, 184
110+
ret
111+
112+
wname endp
113+
114+
end

extras/u2wstub.obj

100644100755
File mode changed.

0 commit comments

Comments
 (0)