-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
412 lines (369 loc) · 18.9 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
This file lists bigger/noteworthy changes, only...
Version 1.4 (2022/12/06)
dyncall:
o new, portable aggregate-by-value argument interface
o aggregate-by-value (struct, union) support for x64 (win and sysv; thanks Raphael Luba!)
o new aggregate description interface DCaggr replacing stale DCstruct (latter had shortcomings, was
mostly unused as it lacked stable implementations, didn't handle unions, ...)
o new calling convention modes for thiscalls (platform agnostic DC_CALL_C_DEFAULT_THIS, as well as
DC_CALL_C_X64_{WIN64,SYSV}_THIS (needed to handle C++ ABI rules for returning aggregates by value)
o new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL)
o dcCallF(), dcVCallF(), dcArgF() and dcVArgF() don't implicitly call dcReset()
anymore, which was unflexible (breaking change)
o added macros to feature test implementation for aggregate-by-value and syscall support
o windows/x64/masm directives added to specify how stack unwinds (help for
debuggers, exception handling, etc.; thanks Raphael Luba!)
o fixed detection of native thiscall callconv for builds not using MSVC but using (or adhering to)
the MSVC runtime (e.g. ReactOS' MinGW based RosBE)
o BSD syscall segfault fix
dyncallback:
o new, portable aggregate-by-value callback argument interface
o aggregate-by-value (struct, union) support for x64 (win and sysv; thanks Raphael Luba!)
o x64/windows masm directives for frame unwinding information (as dbg help; thanks Raphael Luba!)
o sparc64 callback crash fix
dynload:
o build fix for ReactOS with RosBE/cmake/mingw-make environment
general:
o more robust detection of platform endianness (on some platforms inclusion
of endian.h led to wrong assumptions)
tests:
o call_suite: simplified and extended to test also unsigned types, and _Bool
o callback_suite: refactored to be much more like call_suite test
o call_suite_aggrs: new test suite for calls with aggregate arguments and
return types (structs, unions and arrays as aggregate members)
o callback_suite_aggrs: new test suite, like call_suite_aggrs but for callbacks
o plain: added some aggregate-as-vararg-by-value tests
o plain_c++: added non-trivial C++ aggregate tests
o callback_plain_c++: new test, focusing on methods and non-trivial C++ aggregates
o simplifications and major refactoring to share more code (especially
signature and case generator) across test suites
o dynload_plain: simplified build and robustness fixes on some platforms
buildsys:
o ./configure output for sun make builds: set correct C++ compiler flag var
o ./configure for SunOS now uses isainfo(1) to deduce native instruction set
o added explicit arm64 target, and clang tool options to Windows' configure.bat
o configure.{bat,rc} now writing Makefile.config, for consistency/compatibility (e.g. configure.bat
can now be used to set up env flags for a non-nmake toolchain)
o simplified/decluttered Windows and Plan9 configure scripts (removal of unused/stale options, ...)
doc:
o callconv section additions about aggregate-by-value passing for all platforms
o new Linux-Std-Base-specific PPC32/SysV section, as aggregate retval handling differs from
default SysV for such systems
o man page changes/additions to document new aggregate interfaces
o added many more usage examples to man pages
o replaced API description in manual with references to the manpages, to
avoid duplication and keeping things in sync
o general clarifications and cleanup, adding missing definitions to man
pages, ...
Version 1.3 (2021/12/17)
o introduced version macro (see dyncall/dyncall_version.h)
dyncall:
o fixed broken return values w/ arm32/thumb mode (only affected some platforms)
o build fix when using clang's integrated assembler on arm32 hard-float platforms
dyncallback:
o build fix when using clang's integrated assembler on arm32 hard-float platforms
dynload:
o Haiku/x86 build fix
o dynload fix for PE files that do not contain a symbol export directory (thanks Ashok!)
buildsys:
o windows/nmake based builds: output library name changes to follow conventions of the native
platform and be in line with cmake based builds
tests:
o fixed status codes of some tests to actually depend on results (for consistency and automation)
Version 1.2 (2021/01/23)
dyncall:
o windows arm64 support (thanks Bernhard!)
o extended signature with more chars for calling convention switching (only for modes
that coexist on a platform with other conventions)
o made "formatted" call interface use calling convention signature chars
o added helper function dcGetModeFromCCSigChar() mapping callconv sig chars to respective mode
o removed some unnecessary headers (only contained internal used forward declarations)
o build fix when using clang's integrated assembler on non-Darwin PPC32 platforms
dyncallback:
o windows arm64 support (thanks Bernhard!)
o build fix when using clang's integrated assembler on non-Darwin PPC32 platforms
dynload:
o fix to build with musl libc
o support for loading macos >= 11.0.1 (Big Sur) dylibs provided by system's "built-in dynamic
linker cache of all system-provided libraries" (those dylibs are no longer present on the fs)
o fix to work on recent Haiku versions (r1 beta versions)
doc:
o manual now specifying calling convention signature chars
o dynload(3) note about macos >= 11.0.1 cached dylib support (see above)
o marked Haiku/x64 as supported and tested
bindings:
o pydc: Python 3 support, Python 2 unicode support, added get_path function, changing
'Z' conversions to only immutable types and 'p' to mutable types (and handles), support
passing None for 'Z' and 'p', bytearray support, support to specify calling convention
o shdc: can reference own executable now and support for more calling conventions
o shdc: syscall support
tests:
o extended callf testcode to test callconv mode switch signature chars (including syscalls)
o robustness fixes (thanks Bernhard!)
o dynload_plain test fix on macos >= 11.0.1 (Big Sur)
o made inode testing of dynload_plain optional, depending on platform support or if macos
dylib not on fs but provided through system's cache
buildsys:
o cmake support of armasm64 on windows (thanks Bernhard!)
Version 1.1 (2020/01/11)
dyncall:
o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
o x64 System V syscall support
dyncallback:
o support for soft-float MIPS o32 & n64 (big- and little-endian, each)
dynload:
o added UTF-8 support for pathnames on windows
o reliability/stability fix for dlGetLibraryPath() on glibc based platforms (avoiding
internal use of glibc's bad impl of dlinfo() which doesn't do any error checking at all)
o Darwin/macos fix for dlGetLibraryPath() to correctly fail on bogus handles (did return
paths to random libraries under some circumstances, instead of returning an error)
o support for dlGetLibraryPath() on glibc platforms with glibc vesions <= 2.3.3
o dlGetLibraryPath() now accepts NULL as argument to return path to executable
o dlLoadLibrary() on windows: no more auto-suffixing of the .dll file ext anymore, to be
more in line with other platforms (not affecting OS specific library search behaviour)
doc:
o more detail in support matrix for bi-endian platforms
o improvements/corrections to calling convention appendix
o PPC64 calling convention description
o MIPS64/N32 calling convention description
o man page additions for clarity
tests:
o dynload_plain test extended to test UTF-8 library paths
o better output for plain test
o better output and *nix fix for plain_c++ test
buildsys:
o default ./configure: FreeBSD/mips*hf needed -mhard-float compiler flag set explicitly
o better MacOS Mojave support in ./configure (Mojave dropped i386 builds)
Version 1.0 (2018/04/23)
dyncall:
o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
o fixed potential buffer overrun on ARM64
o error code handling (dcGetError) changes, flag is now cleared (work still underway)
o MIPS n64 ellipsis call fixes
o ARM32 armhf ellipsis call fixes
o fixed ARM32-THUMB stack alignment issues (found on Cortex-m0, thanks Darren Whobrey!)
o better C++ compiler support (for pointer conversions)
dyncallback:
o PPC64 single-precision float fixes for more than 13 float args (thanks Masanori Mitsugi!)
o MIPS o32 (big- and little-endian), EABI (32 bit, little-endian) and n64 (big-endian) support
o SPARC32 (v7/v8) support
o SPARC64 (v9) support
o PPC32 fixes for (old) Darwin/OS X systems
o POSIX compliance: fallback for wx alloc on systems that don't have mmap()'s MAP_ANON
o allocated space used for thunk now always W^X (req. for e.g. OpenBSD >= 6.0)
dynload:
o major reliability/stability fixes for Mach-O dlSyms* functions to (thanks Stéphane Mons for help):
better handle loading dylibs by symlink, relative path, random casing, etc.
fixes to symbol name lookups that used wrong offsets before
64-bit platform fixes (was broken on x64 and never supported on others)
o allowing Mach-O dlSyms* lib to be used standalone (consistent with ELF and PE impls now)
o simplifications of implemention on Darwin, sharing parts with *nix implementation
o potentially breaking change on macos/Darwin platforms: all functions now consistently accept or
return symbol names as they would appear in C code, instead of the raw ones in object files
o added new function dlGetLibraryPath, allowing lookups of path to library via handle
general:
o assembly code now built by explicitily asking for non-execstack, for safer/easier integration
into other projects/builds, where needed; needed b/c of questionable default behaviours of some
toolchains (thanks Thorsten Behrens for report and analysis)
doc:
o working html doc generation from TEX sources
o SPARC32 (v7/v8) calling convention description
o SPARC64 (v9) calling convention description
bindings:
o better documentation, removed relative path dependencies, general cleanup
o python: updated to latest signature format (was still on 0.1)
o java: rewritten (old version was never complete, anyways)
tests:
o added new dynload_plain test covering basic use of all dynload functions
buildsys:
o cmake: made to work on systems without C++ compiler (thanks Franklin Mathieu)
Version 0.9 (2015/12/31)
dyncall:
o ARM64 support (AAPCS64 on Linux & Apple's derived version on iOS)
o armhf calling convention support for ARM32
o PPC64 support, including syscalls (thanks Masanori Mitsugi!)
o introduced dcArgF and dcVArgF for flexible/convenient argument binding (works like
dcCallF/dcVCallF but without the function call)
o using -fPIC by default for FreeBSD
o PPC32 linux syscall support
o fixed return value errors for ARM32 on some platforms (e.g. freebsd/arm32, nintendo ds); arm & thumb mode
dyncallback:
o ARM64 support (AAPCS64 on Linux, Apple's derived version on iOS)
o armhf calling convention support for ARM32
o PPC64 support (thanks Masanori Mitsugi!)
o PPC32 System V support (Linux)
o fix for PPC32 Darwin/OS X
o more intuitive specification of callback return type
doc:
o added ARM64 support info and calling convention documentation
o added ARM32 armhf section
o added PPC64 support info
o cleanup, brought all up to date, etc.
tests:
o callf test covers new argf interface
o several fixes to some test suites
buildsys:
o more flexible testsuite build and 'pack' target for convenience
o fixes/additions for OS X universal builds
o added iOS universal build support for armv7/arm64
o helper script for generic .elf -> EBOOT.PBP creation for PSP
o Sun make fixes for C++ code in test suite
bindings:
o erldc: Erlang binding (thanks Erik!)
infrastructure:
o moved to hg
o moved bindings to own repository
Version 0.8 (2014/03/24)
buildsys:
o big simplification make-based build system, no more distinct GNU and BSD makefiles anymore
o new, much simpler ./configure for new make-based build-system
o support for in-source and out-of-source builds for make-based build systems
o made configure.bat guess x64 as target arch for x64 windows hosts
o based more sources on portasm generation
dyncall:
o fix for ARMv7 Thumb-2 code (tested on iPhone 4 CDMA / iOS 6.0.1)
o bugfixes for -O2 builds for SPARC-v9 and SPARC-v7
o new optimized call kernel for SPARC-v9 without conditionals
o bigger refactoring and optimization of MIPS o32
o x64 optimizations
dyncallback:
o added callback support for plan9
o big cleanup, removal of duplicate files after introduction of portasm
o include path fixes for public facing APIs (removed relative paths)
doc:
o cleanup of manual and corrections
o added info about newly supported and/or tested platforms (e.g. FreeBSD on ARM)
o restructured folder layout for documentation
o added API doc for dyncallback and dynload
o added manpages for dyncallback and dynload
tests:
o added arm/thumb interwork test suite
bindings:
o godc: added bindings for Go
o rbdc: fixed and extended ruby bindings
o shdc: renamed shell binding to shdc and added feature to list shared-objects' symbols
Version 0.7 (2012/01/02)
architecture:
o added subproject: portasm - portable (GNU AS,+Apple and MASM) assembly framework
o added subproject: autovar - predefined macro framework (was dyncall_macros.h)
o added support for Solaris and SunPro compiler for i386, x86_64, sparc and sparc64
o improved auto-detection via preprocessor defines
dyncall:
o uses portasm (GNU,Apple,Microsoft) common sources for x86,x64,ppc32,arm32_arm
o added support for sparc (32-bit) (tested on linux/debian,openbsd,solaris)
o added support for sparc (64-bit) (tested on linux/debian,openbsd,solaris)
o bug fixes for x64/win64 calling convention
o added support for mingw32-w64 on x64
o improved cdecl x86 calling convention: stack always 16 byte aligned
o updated API and initial support for structs (for x86/AMD64)
o initial support for syscalls on x86, added x86 int80h linux/bsd
o added Minix port (stable)
o optimized vector buffer for small type pushing
o minor fix for amd64/sysv: alignment to 32-byte
o bug fix for ppc32/sysv: ellipsis calls work now
o updated API, introduced DC_CALL_C_ELLIPSIS_VARARGS
o changed interface: dcMode does not reset internally anymore
dyncallback:
o uses portasm for x86,x64
o added Solaris/x86/sunpro port (stable)
o added Minix port (unstable)
o callback support for Darwin/ppc32
o updates source, uses relative includes
dynload:
o fixes for missing includes (dyncall_alloc.h)
o fixes for self-resolving symbols on windows
o removed Dbghelf.lib dependency
o bug fixes for cygwin/x86
o fixes for beos/haiku
o no dependencies to libdyncall sources.
buildsys additions:
o added zero-config (BSD,GNU,SUN) make files (Makefile.embedded)
o added in/out-of-source configure2 w/ (BSD,GNU) make files (Makefile.generic)
o added bootstrap lua script (download/build)
o Nmakefile: more tests included (resolve_self)
o improved cross-compilation for iOS (upgrade to 4.3 sdk)
o darwin 8.0 support
o added 'install' support for Makefile.embedded
buildsys/gmake updates:
o added support for msvc/x64 tool-chain
o default settings for build-dir changed to '.'
o cleanup: removed top-level Make{Prolog,Epilog,Rules} files and updated all sub-projects and tests
o added support for DESTDIR staging installation
o added support for manual page installation
buildsys/cmake updates:
o updated find module scripts (see cmake/Modules)
o added support for using dyncall as sub-project (via *Config.cmake files)
see details in README.CMake
o fixes for msvc and ml
o fixes for CPack
o fixes for universal builds on Mac OS X
o supports SunPro with *.S files.
o added experimental 'dynMake' portable make-based build-system (not stable, yet)
doc:
o added dyncallback documentation
o updated dyncall documentation
o minor updates
tests:
o added flexible test suite for calls (call_suite) based on Lua and C
o added syscall test
o updates to resolve-self test (adding additional link flags to export symbols)
o renamed *.cpp -> *.cc files (OpenBSD/Sun make has no implicit rules for cpp)
Version 0.6 (2010/09/25)
buildsys:
o new build systems: CMake and Plan9's mk
o buildsys/gmake tool chain update: pcc and iphone sdk
o x64 bugfix: added "-fPIC" even for static libs
dynload:
o enum symbols update: Mach-O and Win64 (thanks Olivier)
o numerous convenience changes to dynload interface (thanks Olivier)
o added support for resolving application images itself
dyncall:
o new platform support: arm/iphone (armv6), x86/Plan9
o new MIPS calling conventions: o32, n64 (both endian models)
o cleanup: unexported functions in MASM files, b/c export not needed (thanks Olivier)
o interface update: added error reporting facility 'dcGetError'
o bugfix for ppc32/sysv: ellipsis calls were broken
o interface update: added new abstract mode for ellipsis calls (DC_CALL_C_ELLIPSIS)
docs:
o comprehensive update
tests:
o plain: split "plain" test up in C and C++ part
o callbacksuite: added multiple configuration support for callback_suite
Version 0.5 (2010/02/01)
o renamed arm9 stuff to arm32
o added non-EABI ABI for arm32 (before, EABI was the default implementation)
o added dyncallback support for x64/windows (thanks Olivier), x64/darwin, arm32/arm, arm32/thumb
o synced documentation again with current state of the source (lots of small changes)
o updated ruby binding to current state of signature string (still some features missing, though)
o added a couple of new options to configure scripts (e.g. prefix-bd, new targets, etc.)
o darwin universal binary support
o added new tests callback_plain and calback_suite
o added Haiku/BeOS support
Version 0.4 (2009/07/06)
o added 'doc' makefile target for coherency and ease of use
o fixed nmake buildfiles and configure.bat (were out of date and wrong)
o test suite clean up (GNUmake, BSDmake):
target "config" modified, phony without dependencies to other builds
o bugfix: GNU fastcall calling convention for float and double arguments was wrong (no skip of register)
o update: x86win32* suite tests are built on cygwin now, added total result output
o signature char (breaking) changes:
C Strings: 'S' -> 'Z'
long: 'l' -> 'j'
long long: 'L' -> 'l'
added unsigned integer type signature characters: upper case encoding
o added: callbacks component (support only for some platforms ATM)
o added: test cases for alloc_wx, thunk
o updated Documentation
Version 0.3 (2009/01/17)
o added Linux PPC32 support
o added ARM THUMB mode support
o cosmetic changes, documentation updated
o bugfix: on cygwin exported C symbols in GNU as are prefixed with '_' now.
o removed scons build support
Version 0.2 (2008/05/18)
o added scons build support
o configure variables all prefix CONFIG_* now
o configure variable INSTALL_DIR changed to INSTALL_PREFIX
o configure (shell version) option "--prefix" changed to "--prefix=<path>"
Version 0.1 (2008/01/23)
o initial release