Package: polyml / 5.6-8

Metadata

Package Version Patches format
polyml 5.6-8 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
streamtoken endian.diff | (download)

libpolyml/globals.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 use a polyunsigned for streamtoken.streamno
 On a 64-bit big-endian architecture with sizeof(unsigned) == 4, streamNo
 is set for stdin/stdout/stderr in add_word_to_io_area by treating it as
 a PolyWord, which is a 64-bit value. However, streamNo is a 32-bit
 value, so any code that uses it sees 4 bytes of zeroes, as the
 least-significant bits are in the next 4 bytes. By using a POLYUNSIGNED,
 the sizes match.
ioctl int.diff | (download)

libpolyml/network.cpp | 9 6 + 3 - 0 !
1 file changed, 6 insertions(+), 3 deletions(-)

 use int instead of unsigned long for ioctl calls
 On 64-bit big-endian machines, int is 32-bit but unsigned long is
 64-bit. ioctl is supposed to take a pointer to an int; on little-endian
 machines it does not matter if you give it a pointer to a longer type,
 but on big-endian machines ioctl ends up seeing the leading 4 bytes of
 zeroes when passing it a pointer to an unsigned long set to 1, and ends
 up effectively multiplying the output by 2^32 when given an out pointer
 to an unsigned long.
s390.diff | (download)

config.h.in | 6 6 + 0 - 0 !
configure.ac | 8 8 + 0 - 0 !
libpolyml/elfexport.cpp | 8 8 + 0 - 0 !
3 files changed, 22 insertions(+)

 add support for s/390
rounding mode test allow exceptions.diff | (download)

Tests/Succeed/Test121.ML | 67 43 + 24 - 0 !
1 file changed, 43 insertions(+), 24 deletions(-)

 change rounding mode test to allow for the possibility of exceptions.
 IEEReal.setRoundingMode may raise an exception if it is not implemented
 or only implemented for certain rounding modes.
rounding mode test only allow exceptions for set mode.diff | (download)

Tests/Succeed/Test121.ML | 18 10 + 8 - 0 !
1 file changed, 10 insertions(+), 8 deletions(-)

 fix change to test to deal only with an exception from setroundingmode.
 Catching all exceptions effectively disabled the test completely
soft fpu.diff | (download)

libpolyml/reals.cpp | 21 20 + 1 - 0 !
1 file changed, 20 insertions(+), 1 deletion(-)

 handle setround/getround on soft fpu
disable compile time real eval.diff | (download)

libpolyml/poly_specific.cpp | 33 18 + 15 - 0 !
1 file changed, 18 insertions(+), 15 deletions(-)

 disable compile-time evaluation of real number functions.
 Real number operations depend on the current rounding mode.  That means that in
 general it is not possible to "fold" operations on real constants.
mips abi.diff | (download)

libpolyml/elfexport.cpp | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 mark polyexport.o as cpic on mips when code is position-independent
unix const vec unsigned.diff | (download)

libpolyml/unix_specific.cpp | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 define unixconstvec as unsigned
 .
 Fixes narrowing conversion inside braces on PowerPC with GCC 6
fix script args.diff | (download)

basis/TopLevelPolyML.sml | 9 6 + 3 - 0 !
1 file changed, 6 insertions(+), 3 deletions(-)

 fix --script to read the next argument as the file rather than the last.
 The --script argument is intended for use in a shell script to skip the
 #! line.  It was reading the last argument as the name of the script file
 which meant it only worked if there were no arguments.
fix heap ratio assert.diff | (download)

libpolyml/heapsizing.cpp | 6 3 + 3 - 0 !
1 file changed, 3 insertions(+), 3 deletions(-)

 the calculated cost of the minimum heap size may be exactly the value desired.
 In that case the previous code failed an assertion check.
use polyunsigned consistently for stream ids.diff | (download)

libpolyml/basicio.cpp | 23 14 + 9 - 0 !
libpolyml/io_internal.h | 2 1 + 1 - 0 !
libpolyml/network.cpp | 18 10 + 8 - 0 !
libpolyml/windows_specific.cpp | 1 1 + 0 - 0 !
4 files changed, 26 insertions(+), 18 deletions(-)

 use polyunsigned consistently for stream ids
 Handle failure in realloc correctly in make_stream_entry.
alpha.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 9 9 + 0 - 0 !
libpolyml/elfexport.cpp | 4 4 + 0 - 0 !
3 files changed, 16 insertions(+)

 add support for alpha
m68k.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 4 4 + 0 - 0 !
libpolyml/elfexport.cpp | 4 4 + 0 - 0 !
3 files changed, 11 insertions(+)

 add support for motorola 68000
mips64.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 4 4 + 0 - 0 !
libpolyml/elfexport.cpp | 40 40 + 0 - 0 !
libpolyml/elfexport.h | 32 32 + 0 - 0 !
4 files changed, 79 insertions(+)

 add support for 64-bit mips
x32.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 9 7 + 2 - 0 !
libpolyml/elfexport.cpp | 7 6 + 1 - 0 !
libpolyml/quick_gc.cpp | 2 1 + 1 - 0 !
libpolyml/realconv.cpp | 3 2 + 1 - 0 !
5 files changed, 19 insertions(+), 5 deletions(-)

 add support for x32 abi
maxpathlen.diff | (download)

libpolyml/basicio.cpp | 50 35 + 15 - 0 !
libpolyml/exporter.cpp | 16 6 + 10 - 0 !
libpolyml/polystring.cpp | 6 3 + 3 - 0 !
libpolyml/polystring.h | 2 1 + 1 - 0 !
libpolyml/savestate.cpp | 104 52 + 52 - 0 !
libpolyml/statistics.cpp | 21 17 + 4 - 0 !
6 files changed, 114 insertions(+), 85 deletions(-)

 remove all use of maxpathlen and its variants
noexec stack gnu.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 7 7 + 0 - 0 !
libpolyml/x86asm.asm | 6 2 + 4 - 0 !
3 files changed, 12 insertions(+), 4 deletions(-)

 mark stack as non-executable on all gnu systems
source date epoch.diff | (download)

basis/FinalPolyML.sml | 25 21 + 4 - 0 !
libpolyml/elfexport.cpp | 3 2 + 1 - 0 !
libpolyml/machoexport.cpp | 4 2 + 2 - 0 !
libpolyml/pecoffexport.cpp | 7 3 + 4 - 0 !
libpolyml/pexport.cpp | 6 0 + 6 - 0 !
libpolyml/savestate.cpp | 5 3 + 2 - 0 !
libpolyml/timing.cpp | 48 48 + 0 - 0 !
libpolyml/timing.h | 2 2 + 0 - 0 !
8 files changed, 81 insertions(+), 19 deletions(-)

 use source_date_epoch instead of current time if it is defined
bss ioarea.diff | (download)

libpolyml/elfexport.cpp | 96 57 + 39 - 0 !
libpolyml/machoexport.cpp | 29 22 + 7 - 0 !
libpolyml/pecoffexport.cpp | 16 13 + 3 - 0 !
3 files changed, 92 insertions(+), 49 deletions(-)

 export ioarea to bss section
noflsh unsigned.diff | (download)

libpolyml/unix_specific.cpp | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 cast noflsh to unsigned
maxhostnamelen.diff | (download)

libpolyml/network.cpp | 54 25 + 29 - 0 !
1 file changed, 25 insertions(+), 29 deletions(-)

 remove all use of maxhostnamelen
sparc64.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 4 4 + 0 - 0 !
libpolyml/elfexport.cpp | 7 7 + 0 - 0 !
3 files changed, 14 insertions(+)

 add support for 64-bit sparc
sh.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 4 4 + 0 - 0 !
libpolyml/elfexport.cpp | 4 4 + 0 - 0 !
libpolyml/reals.cpp | 9 7 + 2 - 0 !
4 files changed, 18 insertions(+), 2 deletions(-)

 add support for superh
hppa.diff | (download)

config.h.in | 3 3 + 0 - 0 !
configure.ac | 4 4 + 0 - 0 !
libpolyml/elfexport.cpp | 6 6 + 0 - 0 !
3 files changed, 13 insertions(+)

 add support for hp pa-risc
thread exited interrupt requested overlap.diff | (download)

libpolyml/processes.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 fix threadexited and interrupt_requested overlapping
 HAVE_PTHREAD isn't necessarily defined when processes.h is included, as
 it is defined in processes.cpp, but not when included by interpret.cpp.
 As a result, the root thread can believe that an interrupted thread has
 been killed, prematurely deleting its task data. This fixes #9.
polyc it.diff | (download)

polyc.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 don't set "it" in polyc
 This stops polyc from setting (and potentially shadowing) the implicit it
 variable, allowing Tests/Fail/Test071.ML to pass when the test suite is
 compiled with polyc.
reset save vector sleep.diff | (download)

Tests/Fail/Test073.ML | 5 5 + 0 - 0 !
libpolyml/unix_specific.cpp | 20 12 + 8 - 0 !
2 files changed, 17 insertions(+), 8 deletions(-)

 ensure the save vector is reset when sleeping in
 Posix.Process.sleep. This is almost the same as commit 57bc974 in
 basicio.cpp.
wait return valid status.diff | (download)

libpolyml/unix_specific.cpp | 5 3 + 2 - 0 !
1 file changed, 3 insertions(+), 2 deletions(-)

 only return the "status" value from "wait" if the result is
 non-zero. The calling code in the Posix structure converts the status result
 to a value of type exit_status even if the pid is zero.  The result is
 ignored in that case but it can result in a Fail exception if the status is
 invalid.
polyc dont capture build path.diff | (download)

configure.ac | 15 15 + 0 - 0 !
polyc.in | 2 1 + 1 - 0 !
2 files changed, 16 insertions(+), 1 deletion(-)

 don't capture -fdebug-prefix-map in polyc's cflags
spelling errors.diff | (download)

mlsource/MLCompiler/CodeTree/ByteCode/CODE_SEG.ML | 4 2 + 2 - 0 !
mlsource/MLCompiler/CodeTree/X86Code/CODE_ARRAY.ML | 4 2 + 2 - 0 !
mlsource/MLCompiler/LEX_.ML | 2 1 + 1 - 0 !
3 files changed, 5 insertions(+), 5 deletions(-)

 export ioarea to bss section