Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
f99ae944 by Raymond Toy at 2016-05-21T10:56:21-07:00
Update from logs.
- - - - -
c72b7e57 by Raymond Toy at 2016-05-21T10:56:55-07:00
Regenerated.
- - - - -
7 changed files:
- src/general-info/release-21b.txt
- src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix-glibc2.po
- src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix.po
- src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl.po
- src/i18n/locale/ko/LC_MESSAGES/cmucl-unix-glibc2.po
- src/i18n/locale/ko/LC_MESSAGES/cmucl-unix.po
- src/i18n/locale/ko/LC_MESSAGES/cmucl.po
Changes:
=====================================
src/general-info/release-21b.txt
=====================================
--- a/src/general-info/release-21b.txt
+++ b/src/general-info/release-21b.txt
@@ -55,6 +55,9 @@ New in this release:
* :env option for run-program
* Maximum dynamic-space-size on Linux reduced to 1530 MB because
that's the largest available space on 32-bit Ubuntu 11.10.
+ * For linux, darwin, and solaris/sparc, the binding stack and
+ control stack are now mapped into memory whereever the OS wishes
+ to place them instead of being mapped into a fixed location.
* ANSI compliance fixes:
* PATHNAME-MATCH-P did not accept search-lists.
@@ -84,6 +87,7 @@ New in this release:
* Ticket #17 fixed: better docstring for *ENVIRONMENT-LIST*
* Ticket #18 fixed: better description of :ENV option for
RUN-PROGRAM.
+ * Ticket #22 fixed: Incorrect coercion to float.
* Other changes:
=====================================
src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix-glibc2.po
=====================================
--- a/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix-glibc2.po
+++ b/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix-glibc2.po
@@ -1389,6 +1389,85 @@ msgstr "Itewray ybay ownerway"
msgid "Get terminal output speed."
msgstr "Etgay erminaltay outputway eedspay."
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Get the value of the environment variable named Name. If no such\n"
+" variable exists, Nil is returned."
+msgstr ""
+"Etgay ethay aluevay ofway ethay environmentway ariablevay amednay Amenay. "
+"Ifway onay uchsay\n"
+" ariablevay existsway, Ilnay isway eturnedray."
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Adds the environment variable named Name to the environment with\n"
+" the given Value if Name does not already exist. If Name does exist,\n"
+" the value is changed to Value if Overwrite is non-zero. Otherwise,\n"
+" the value is not changed."
+msgstr ""
+"Addsway ethay environmentway ariablevay amednay Amenay otay ethay "
+"environmentway ithway\n"
+" ethay ivengay Aluevay ifway Amenay oesday otnay alreadyway existway. Ifway "
+"Amenay oesday existway,\n"
+" ethay aluevay isway angedchay otay Aluevay ifway Overwriteway isway onnay-"
+"erozay. Otherwiseway,\n"
+" ethay aluevay isway otnay angedchay."
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Adds or changes the environment. Name-value must be a string of\n"
+" the form \"name=value\". If the name does not exist, it is added.\n"
+" If name does exist, the value is updated to the given value."
+msgstr ""
+"Addsway orway angeschay ethay environmentway. Amenay-aluevay ustmay ebay "
+"away ingstray ofway\n"
+" ethay ormfay \"amenay=aluevay\". Ifway ethay amenay oesday otnay "
+"existway, itway isway addedway.\n"
+" Ifway amenay oesday existway, ethay aluevay isway updatedway otay ethay "
+"ivengay aluevay."
+
+#: src/code/unix-glibc2.lisp
+msgid "Removes the variable Name from the environment"
+msgstr "Emovesray ethay ariablevay Amenay omfray ethay environmentway"
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Executes the Unix execve system call. If the system call suceeds, lisp\n"
+" will no longer be running in this process. If the system call fails "
+"this\n"
+" function returns two values: NIL and an error code. Arg-list should be "
+"a\n"
+" list of simple-strings which are passed as arguments to the exec'ed "
+"program.\n"
+" Environment should be an a-list mapping symbols to simple-strings which "
+"this\n"
+" function bashes together to form the environment for the exec'ed program."
+msgstr ""
+"Executesway ethay Unixway execveway ystemsay allcay. Ifway ethay ystemsay "
+"allcay uceedssay, isplay\n"
+" illway onay ongerlay ebay unningray inway isthay ocesspray. Ifway ethay "
+"ystemsay allcay ailsfay isthay\n"
+" unctionfay eturnsray wotay aluesvay: NIL andway anway errorway odecay. "
+"Argway-istlay ouldshay ebay away\n"
+" istlay ofway implesay-ingsstray ichwhay areway assedpay asway "
+"argumentsway otay ethay execway'edway ogrampray.\n"
+" Environmentway ouldshay ebay anway away-istlay appingmay ymbolssay otay "
+"implesay-ingsstray ichwhay isthay\n"
+" unctionfay ashesbay ogethertay otay ormfay ethay environmentway orfay "
+"ethay execway'edway ogrampray."
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Executes the unix fork system call. Returns 0 in the child and the pid\n"
+" of the child in the parent if it works, or NIL and an error number if it\n"
+" doesn't work."
+msgstr ""
+"Executesway ethay unixway orkfay ystemsay allcay. Eturnsray 0 inway ethay "
+"ildchay andway ethay idpay\n"
+" ofway ethay ildchay inway ethay arentpay ifway itway orksway, orway NIL "
+"andway anway errorway umbernay ifway itway\n"
+" oesnday't orkway."
+
#~ msgid ""
#~ "Unix-getdtablesize returns the maximum size of the file descriptor\n"
#~ " table. (i.e. the maximum number of descriptors that can exist at\n"
@@ -1813,32 +1892,6 @@ msgstr "Etgay erminaltay outputway eedspay."
#~ msgstr "Owflay ontrolcay"
#~ msgid ""
-#~ "Executes the Unix execve system call. If the system call suceeds, lisp\n"
-#~ " will no longer be running in this process. If the system call fails "
-#~ "this\n"
-#~ " function returns two values: NIL and an error code. Arg-list should "
-#~ "be a\n"
-#~ " list of simple-strings which are passed as arguments to the exec'ed "
-#~ "program.\n"
-#~ " Environment should be an a-list mapping symbols to simple-strings "
-#~ "which this\n"
-#~ " function bashes together to form the environment for the exec'ed "
-#~ "program."
-#~ msgstr ""
-#~ "Executesway ethay Unixway execveway ystemsay allcay. Ifway ethay "
-#~ "ystemsay allcay uceedssay, isplay\n"
-#~ " illway onay ongerlay ebay unningray inway isthay ocesspray. Ifway "
-#~ "ethay ystemsay allcay ailsfay isthay\n"
-#~ " unctionfay eturnsray wotay aluesvay: NIL andway anway errorway "
-#~ "odecay. Argway-istlay ouldshay ebay away\n"
-#~ " istlay ofway implesay-ingsstray ichwhay areway assedpay asway "
-#~ "argumentsway otay ethay execway'edway ogrampray.\n"
-#~ " Environmentway ouldshay ebay anway away-istlay appingmay ymbolssay "
-#~ "otay implesay-ingsstray ichwhay isthay\n"
-#~ " unctionfay ashesbay ogethertay otay ormfay ethay environmentway orfay "
-#~ "ethay execway'edway ogrampray."
-
-#~ msgid ""
#~ "Given a file path, an integer user-id, and an integer group-id,\n"
#~ " unix-chown changes the owner of the file and the group of the\n"
#~ " file to those specified. Either the owner or the group may be\n"
@@ -1990,55 +2043,6 @@ msgstr "Etgay erminaltay outputway eedspay."
#~ " eturnedray ifway ethay allcay ailsfay."
#~ msgid ""
-#~ "Executes the unix fork system call. Returns 0 in the child and the pid\n"
-#~ " of the child in the parent if it works, or NIL and an error number if "
-#~ "it\n"
-#~ " doesn't work."
-#~ msgstr ""
-#~ "Executesway ethay unixway orkfay ystemsay allcay. Eturnsray 0 inway "
-#~ "ethay ildchay andway ethay idpay\n"
-#~ " ofway ethay ildchay inway ethay arentpay ifway itway orksway, orway "
-#~ "NIL andway anway errorway umbernay ifway itway\n"
-#~ " oesnday't orkway."
-
-#~ msgid ""
-#~ "Get the value of the environment variable named Name. If no such\n"
-#~ " variable exists, Nil is returned."
-#~ msgstr ""
-#~ "Etgay ethay aluevay ofway ethay environmentway ariablevay amednay "
-#~ "Amenay. Ifway onay uchsay\n"
-#~ " ariablevay existsway, Ilnay isway eturnedray."
-
-#~ msgid ""
-#~ "Adds the environment variable named Name to the environment with\n"
-#~ " the given Value if Name does not already exist. If Name does exist,\n"
-#~ " the value is changed to Value if Overwrite is non-zero. Otherwise,\n"
-#~ " the value is not changed."
-#~ msgstr ""
-#~ "Addsway ethay environmentway ariablevay amednay Amenay otay ethay "
-#~ "environmentway ithway\n"
-#~ " ethay ivengay Aluevay ifway Amenay oesday otnay alreadyway existway. "
-#~ "Ifway Amenay oesday existway,\n"
-#~ " ethay aluevay isway angedchay otay Aluevay ifway Overwriteway isway "
-#~ "onnay-erozay. Otherwiseway,\n"
-#~ " ethay aluevay isway otnay angedchay."
-
-#~ msgid ""
-#~ "Adds or changes the environment. Name-value must be a string of\n"
-#~ " the form \"name=value\". If the name does not exist, it is added.\n"
-#~ " If name does exist, the value is updated to the given value."
-#~ msgstr ""
-#~ "Addsway orway angeschay ethay environmentway. Amenay-aluevay ustmay ebay "
-#~ "away ingstray ofway\n"
-#~ " ethay ormfay \"amenay=aluevay\". Ifway ethay amenay oesday otnay "
-#~ "existway, itway isway addedway.\n"
-#~ " Ifway amenay oesday existway, ethay aluevay isway updatedway otay ethay "
-#~ "ivengay aluevay."
-
-#~ msgid "Removes the variable Name from the environment"
-#~ msgstr "Emovesray ethay ariablevay Amenay omfray ethay environmentway"
-
-#~ msgid ""
#~ "Unix-link creates a hard link from the file with name1 to the\n"
#~ " file with name2."
#~ msgstr ""
=====================================
src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix.po
=====================================
--- a/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix.po
+++ b/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl-unix.po
@@ -226,6 +226,27 @@ msgstr ""
" _N"
#: src/code/unix.lisp
+#, fuzzy
+msgid ""
+"UNIX-LSEEK accepts a file descriptor and moves the file pointer ahead\n"
+" a certain OFFSET for that file. WHENCE can be any of the following:\n"
+"\n"
+" l_set Set the file pointer.\n"
+" l_incr Increment the file pointer.\n"
+" l_xtnd Extend the file size.\n"
+" "
+msgstr ""
+"Unixway-seeklay acceptsway away ilefay escriptorday andway ovesmay ethay "
+"ilefay ointerpay aheadway\n"
+" away ertaincay offsetway orfay atthay ilefay. Encewhay ancay ebay anyway "
+"ofway ethay ollowingfay:\n"
+"\n"
+" l_etsay Etsay ethay ilefay ointerpay.\n"
+" l_incrway Incrementway ethay ilefay ointerpay.\n"
+" l_tndxay Extendway ethay ilefay izesay.\n"
+" _N"
+
+#: src/code/unix.lisp
msgid ""
"Unix-mkdir creates a new directory with the specified name and mode.\n"
" (Same as those for unix-chmod.) It returns T upon success, otherwise\n"
@@ -292,6 +313,10 @@ msgid "Synchronous writes (on ext2)"
msgstr "Ynchronoussay iteswray (onway extway2)"
#: src/code/unix.lisp
+msgid "Asynchronous I/O"
+msgstr ""
+
+#: src/code/unix.lisp
msgid ""
"Unix-open opens the file whose pathname is specified by path\n"
" for reading and/or writing as specified by the flags argument.\n"
@@ -371,6 +396,24 @@ msgstr ""
" andway anway errorway umbernay areway eturnedray."
#: src/code/unix.lisp
+msgid ""
+"Unix-dup2 duplicates an existing file descriptor just as unix-dup\n"
+" does only the new value of the duplicate descriptor may be requested\n"
+" through the second argument. If a file already exists with the\n"
+" requested descriptor number, it will be closed and the number\n"
+" assigned to the duplicate."
+msgstr ""
+"Unixway-upday2 uplicatesday anway existingway ilefay escriptorday ustjay "
+"asway unixway-upday\n"
+" oesday onlyway ethay ewnay aluevay ofway ethay uplicateday escriptorday "
+"aymay ebay equestedray\n"
+" roughthay ethay econdsay argumentway. Ifway away ilefay alreadyway "
+"existsway ithway ethay\n"
+" equestedray escriptorday umbernay, itway illway ebay osedclay andway "
+"ethay umbernay\n"
+" assignedway otay ethay uplicateday."
+
+#: src/code/unix.lisp
msgid "Duplicate a file descriptor"
msgstr "Uplicateday away ilefay escriptorday"
@@ -515,6 +558,22 @@ msgstr ""
" umbernay ifway anway errorway occuredway."
#: src/code/unix.lisp
+#, fuzzy
+msgid ""
+"UNIX-READ attempts to read from the file described by fd into\n"
+" the buffer buf until it is full. Len is the length of the buffer.\n"
+" The number of bytes actually read is returned or NIL and an error\n"
+" number if an error occured."
+msgstr ""
+"Unixway-eadray attemptsway otay eadray omfray ethay ilefay escribedday ybay "
+"dfay intoway\n"
+" ethay ufferbay ufbay untilway itway isway ullfay. Enlay isway ethay "
+"engthlay ofway ethay ufferbay.\n"
+" Ethay umbernay ofway ytesbay actuallyway eadray isway eturnedray orway "
+"NIL andway anway errorway\n"
+" umbernay ifway anway errorway occuredway."
+
+#: src/code/unix.lisp
msgid ""
"Unix-readlink invokes the readlink system call on the file name\n"
" specified by the simple string path. It returns up to two values:\n"
@@ -562,6 +621,14 @@ msgstr ""
#: src/code/unix.lisp
msgid ""
+"Define an ioctl command. If the optional ARG and PARM-TYPE are given\n"
+" then ioctl argument size and direction are included as for ioctls defined\n"
+" by _IO, _IOR, _IOW, or _IOWR. If DEV is a character then the ioctl type\n"
+" is the characters code, else DEV may be an integer giving the type."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid ""
"Unix-ioctl performs a variety of operations on open i/o\n"
" descriptors. See the UNIX Programmer's Manual for more\n"
" information."
@@ -698,6 +765,40 @@ msgstr ""
" isway eturnedray ifway ethay allcay ailsfay."
#: src/code/unix.lisp
+msgid "These bits determine file type."
+msgstr ""
+
+#: src/code/unix.lisp
+#, fuzzy
+msgid "Directory"
+msgstr "Isway away irectoryday"
+
+#: src/code/unix.lisp
+msgid "Character device"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "FIFO"
+msgstr ""
+
+#: src/code/unix.lisp
+#, fuzzy
+msgid "Block device"
+msgstr "Ockblay eviceday equiredray"
+
+#: src/code/unix.lisp
+msgid "Regular file"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Symbolic link."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Socket."
+msgstr ""
+
+#: src/code/unix.lisp
msgid "Returns either :file, :directory, :link, :special, or NIL."
msgstr ""
"Eturnsray eitherway :ilefay, :irectoryday, :inklay, :ecialspay, orway NIL."
@@ -1648,23 +1749,6 @@ msgstr ""
#~ " oneway imetay.)"
#~ msgid ""
-#~ "Unix-dup2 duplicates an existing file descriptor just as unix-dup\n"
-#~ " does only the new value of the duplicate descriptor may be requested\n"
-#~ " through the second argument. If a file already exists with the\n"
-#~ " requested descriptor number, it will be closed and the number\n"
-#~ " assigned to the duplicate."
-#~ msgstr ""
-#~ "Unixway-upday2 uplicatesday anway existingway ilefay escriptorday ustjay "
-#~ "asway unixway-upday\n"
-#~ " oesday onlyway ethay ewnay aluevay ofway ethay uplicateday "
-#~ "escriptorday aymay ebay equestedray\n"
-#~ " roughthay ethay econdsay argumentway. Ifway away ilefay alreadyway "
-#~ "existsway ithway ethay\n"
-#~ " equestedray escriptorday umbernay, itway illway ebay osedclay andway "
-#~ "ethay umbernay\n"
-#~ " assignedway otay ethay uplicateday."
-
-#~ msgid ""
#~ "Unix-link creates a hard link from the file with name1 to the\n"
#~ " file with name2."
#~ msgstr ""
=====================================
src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl.po
=====================================
--- a/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl.po
+++ b/src/i18n/locale/en(a)piglatin/LC_MESSAGES/cmucl.po
@@ -2355,10 +2355,9 @@ msgstr "Imensionday isway otnay away onnay-egativenay ixnumfay: ~S"
#: src/pcl/env.lisp src/pcl/fixup.lisp src/pcl/methods.lisp src/pcl/cpl.lisp
#: src/pcl/seal.lisp src/pcl/dfun.lisp
#: src/pcl/method-slot-access-optimization.lisp src/pcl/boot.lisp
-#: src/pcl/dlisp.lisp src/pcl/cache.lisp src/pcl/defclass.lisp
-#: src/pcl/low.lisp src/compiler/disassem.lisp src/code/pathname.lisp
-#: src/code/pprint-loop.lisp src/code/pprint.lisp src/code/bignum.lisp
-#: src/code/alieneval.lisp
+#: src/pcl/dlisp.lisp src/pcl/cache.lisp src/pcl/defclass.lisp src/pcl/low.lisp
+#: src/compiler/disassem.lisp src/code/pathname.lisp src/code/pprint-loop.lisp
+#: src/code/pprint.lisp src/code/bignum.lisp src/code/alieneval.lisp
msgid "Required argument missing"
msgstr "Equiredray argumentway issingmay"
@@ -6738,6 +6737,85 @@ msgid "Unknown float trap kind: ~S."
msgstr "Unknownway oatflay aptray indkay: ~S."
#: src/code/float-trap.lisp
+#, fuzzy
+msgid ""
+"Encode the floating-point modes according to the give options and the\n"
+" specified mode, Floating-Point-Modes. The resulting new mode is\n"
+" returned. If a keyword is not supplied, then the current value is\n"
+" preserved. Possible keywords:\n"
+"\n"
+" :TRAPS\n"
+" A list of the exception conditions that should cause traps. "
+"Possible\n"
+" exceptions are :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID,\n"
+" :DIVIDE-BY-ZERO, and on the X86 :DENORMALIZED-OPERAND. Initially\n"
+" all traps except :INEXACT are enabled.\n"
+"\n"
+" :ROUNDING-MODE\n"
+" The rounding mode to use when the result is not exact. Possible "
+"values\n"
+" are :NEAREST, :POSITIVE-INFINITY, :NEGATIVE-INFINITY and :ZERO.\n"
+" Initially, the rounding mode is :NEAREST.\n"
+"\n"
+" :CURRENT-EXCEPTIONS\n"
+" :ACCRUED-EXCEPTIONS\n"
+" These arguments allow setting of the exception flags. The main use "
+"is\n"
+" setting the accrued exceptions to NIL to clear them.\n"
+"\n"
+" :FAST-MODE\n"
+" Set the hardware's \"fast mode\" flag, if any. When set, IEEE\n"
+" conformance or debuggability may be impaired. Some machines may not\n"
+" have this feature, in which case the value is always NIL.\n"
+"\n"
+" GET-FLOATING-POINT-MODES may be used to find the floating point modes\n"
+" currently in effect."
+msgstr ""
+"Isthay unctionfay etssay optionsway ontrollingcay ethay oatingflay-ointpay "
+"ardwarehay. Ifway away\n"
+" eywordkay isway otnay uppliedsay, enthay ethay urrentcay aluevay isway "
+"eservedpray. Ossiblepay\n"
+" eywordskay:\n"
+"\n"
+" :TRAPS\n"
+" Away istlay ofway ethay exceptionway onditionscay atthay ouldshay "
+"ausecay apstray. Ossiblepay\n"
+" exceptionsway areway :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID,\n"
+" :DIVIDE-BY-ZERO, andway onway ethay X86 :DENORMALIZED-OPERAND. "
+"Initiallyway\n"
+" allway apstray exceptway :INEXACT areway enabledway.\n"
+"\n"
+" :ROUNDING-MODE\n"
+" Ethay oundingray odemay otay useway enwhay ethay esultray isway otnay "
+"exactway. Ossiblepay aluesvay\n"
+" areway :NEAREST, :POSITIVE-INFINITY, :NEGATIVE-INFINITY andway :"
+"ZERO.\n"
+" Initiallyway, ethay oundingray odemay isway :NEAREST.\n"
+"\n"
+" :CURRENT-EXCEPTIONS\n"
+" :ACCRUED-EXCEPTIONS\n"
+" Esethay argumentsway allowway ettingsay ofway ethay exceptionway "
+"agsflay. Ethay ainmay useway isway\n"
+" ettingsay ethay accruedway exceptionsway otay NIL otay earclay "
+"emthay.\n"
+"\n"
+" :FAST-MODE\n"
+" Etsay ethay ardwarehay's \"astfay odemay\" agflay, ifway anyway. "
+"Enwhay etsay, IEEE\n"
+" onformancecay orway ebuggabilityday aymay ebay impairedway. Omesay "
+"achinesmay aymay otnay\n"
+" avehay isthay eaturefay, inway ichwhay asecay ethay aluevay isway "
+"alwaysway NIL.\n"
+"\n"
+" GET-FLOATING-POINT-MODES aymay ebay usedway otay indfay ethay oatingflay "
+"ointpay odesmay\n"
+" urrentlycay inway effectway."
+
+#: src/code/float-trap.lisp
+msgid "Unknown rounding mode: ~S."
+msgstr "Unknownway oundingray odemay: ~S."
+
+#: src/code/float-trap.lisp
msgid ""
"This function sets options controlling the floating-point hardware. If a\n"
" keyword is not supplied, then the current value is preserved. Possible\n"
@@ -6811,8 +6889,23 @@ msgstr ""
" urrentlycay inway effectway."
#: src/code/float-trap.lisp
-msgid "Unknown rounding mode: ~S."
-msgstr "Unknownway oundingray odemay: ~S."
+#, fuzzy
+msgid ""
+"This function returns a list representing the state of the floating point\n"
+" modes given in Modes. The list is in the same format as the keyword "
+"arguments to\n"
+" SET-FLOATING-POINT-MODES."
+msgstr ""
+"Isthay unctionfay eturnsray away istlay epresentingray ethay tatesay ofway "
+"ethay oatingflay ointpay\n"
+" odesmay. Ethay istlay isway inway ethay amesay ormatfay asway ethay "
+"eywordkay argumentsway otay\n"
+" SET-FLOATING-POINT-MODES, i.e. \n"
+" (applyway #'etsay-oatingflay-ointpay-odesmay (etgay-oatingflay-ointpay-"
+"odesmay))\n"
+"\n"
+" etssay ethay oatingflay ointpay odesmay otay eirthay urrentcay aluesvay "
+"(andway usthay isway away onay-opway)."
#: src/code/float-trap.lisp
msgid ""
@@ -6871,6 +6964,27 @@ msgstr ""
"odybay otay upportsay\n"
" eirthay estingtay ithinway, andway estoredray onway exitway."
+#: src/code/float-trap.lisp
+#, fuzzy
+msgid ""
+"Execute BODY with the floating point exceptions listed in TRAPS\n"
+" enabled. TRAPS should be a list of possible exceptions which\n"
+" includes :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID and\n"
+" :DIVIDE-BY-ZERO and on the X86 :DENORMALIZED-OPERAND. The respective\n"
+" accrued exceptions are cleared at the start of the body to support\n"
+" their testing within, and restored on exit."
+msgstr ""
+"Executeway BODY ithway ethay oatingflay ointpay exceptionsway istedlay inway "
+"TRAPS\n"
+" askedmay (isabledday). TRAPS ouldshay ebay away istlay ofway ossiblepay "
+"exceptionsway\n"
+" ichwhay includesway :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID andway\n"
+" :DIVIDE-BY-ZERO andway onway ethay X86 :DENORMALIZED-OPERAND. Ethay "
+"espectiveray\n"
+" accruedway exceptionsway areway earedclay atway ethay tartsay ofway ethay "
+"odybay otay upportsay\n"
+" eirthay estingtay ithinway, andway estoredray onway exitway."
+
#: src/code/float.lisp
msgid "Return true if the float X is denormalized."
msgstr "Eturnray uetray ifway ethay oatflay X isway enormalizedday."
@@ -8617,10 +8731,12 @@ msgstr ""
" ebuggerday."
#: src/code/commandline.lisp
+#, fuzzy
msgid ""
"Specifies the number of megabytes that should be allocated to the\n"
-" heap. If not specified, a platform-specific default is used. The\n"
-" actual maximum allowed heap size is platform-specific."
+" heap. If not specified, a platform-specific default is used. If 0,\n"
+" the platform-specific maximum heap size is used. The actual maximum\n"
+" allowed heap size is platform-specific."
msgstr ""
"Ecifiesspay ethay umbernay ofway egabytesmay atthay ouldshay ebay "
"allocatedway otay ethay\n"
@@ -9498,7 +9614,10 @@ msgstr ""
" ightmay otnay ebay."
#: src/code/save.lisp
-msgid "An alist mapping environment variables (as keywords) to either values"
+#, fuzzy
+msgid ""
+"An alist mapping each environment variable (as a keyword) to its\n"
+" value."
msgstr ""
"Anway alistway appingmay environmentway ariablesvay (asway eywordskay) otay "
"eitherway aluesvay"
@@ -11715,8 +11834,11 @@ msgid "The package named ~S doesn't exist."
msgstr "Ethay ackagepay amednay ~S oesnday't existway."
#: src/code/package.lisp
-msgid "Changes the name and nicknames for a package."
-msgstr "Angeschay ethay amenay andway icknamesnay orfay away ackagepay."
+msgid ""
+"Replaces the name and nicknames of Package. The old name and all of\n"
+" the old nicknames of Package are eliminated and are replaced by\n"
+" New-Name and New-Nicknames."
+msgstr ""
#: src/code/package.lisp
msgid "A package named ~S already exists."
@@ -13070,14 +13192,18 @@ msgstr ""
" ethay inverseway ofway Ingstray-Encodeway."
#: src/code/extfmts.lisp
+#, fuzzy
msgid ""
"Change the external format of the standard streams to Terminal.\n"
" The standard streams are sys::*stdin*, sys::*stdout*, and\n"
" sys::*stderr*, which are normally the input and/or output streams\n"
" for *standard-input* and *standard-output*. Also sets sys::*tty*\n"
-" (normally *terminal-io* to the given external format. If the\n"
-" optional argument Filenames is gvien, then the filename encoding is\n"
-" set to the specified format."
+" (normally *terminal-io* to the given external format. The value of\n"
+" *default-external-format* is not changed.\n"
+"\n"
+" If the optional argument Filenames is given, then the filename\n"
+" encoding is set to the specified format, if it has not already been\n"
+" specified previously."
msgstr ""
"Angechay ethay externalway ormatfay ofway ethay tandardsay eamsstray otay "
"Erminaltay.\n"
@@ -18615,6 +18741,7 @@ msgid "Could not UNIX:UNIX-DUP ~D: ~A"
msgstr "Ouldcay otnay UNIX:UNIX-DUP ~D: ~Away"
#: src/code/run-program.lisp
+#, fuzzy
msgid ""
"RUN-PROGRAM creates a new process and runs the unix program in the\n"
" file specified by the simple-string PROGRAM. ARGS are the standard\n"
@@ -18626,8 +18753,9 @@ msgid ""
"\n"
" The keyword arguments have the following meanings:\n"
" :env -\n"
-" An A-LIST mapping keyword environment variables to simple-string\n"
-"\tvalues.\n"
+" An A-LIST mapping keyword environment variables to\n"
+"\tsimple-string values. This is the shell environment for\n"
+"\tProgram. Defaults to *environment-list*.\n"
" :wait -\n"
" If non-NIL (default), wait until the created process finishes. If\n"
" NIL, continue running Lisp until the program finishes.\n"
@@ -30787,6 +30915,9 @@ msgstr ""
"eplacedray ybay ethay\n"
"Unicodeway eplacementray aracterchay."
+#~ msgid "Changes the name and nicknames for a package."
+#~ msgstr "Angeschay ethay amenay andway icknamesnay orfay away ackagepay."
+
#~ msgid "No default clause allowed in ~S: ~S"
#~ msgstr "Onay efaultday auseclay allowedway inway ~S: ~S"
=====================================
src/i18n/locale/ko/LC_MESSAGES/cmucl-unix-glibc2.po
=====================================
--- a/src/i18n/locale/ko/LC_MESSAGES/cmucl-unix-glibc2.po
+++ b/src/i18n/locale/ko/LC_MESSAGES/cmucl-unix-glibc2.po
@@ -1087,3 +1087,49 @@ msgstr ""
#: src/code/unix-glibc2.lisp
msgid "Get terminal output speed."
msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Get the value of the environment variable named Name. If no such\n"
+" variable exists, Nil is returned."
+msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Adds the environment variable named Name to the environment with\n"
+" the given Value if Name does not already exist. If Name does exist,\n"
+" the value is changed to Value if Overwrite is non-zero. Otherwise,\n"
+" the value is not changed."
+msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Adds or changes the environment. Name-value must be a string of\n"
+" the form \"name=value\". If the name does not exist, it is added.\n"
+" If name does exist, the value is updated to the given value."
+msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid "Removes the variable Name from the environment"
+msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Executes the Unix execve system call. If the system call suceeds, lisp\n"
+" will no longer be running in this process. If the system call fails "
+"this\n"
+" function returns two values: NIL and an error code. Arg-list should be "
+"a\n"
+" list of simple-strings which are passed as arguments to the exec'ed "
+"program.\n"
+" Environment should be an a-list mapping symbols to simple-strings which "
+"this\n"
+" function bashes together to form the environment for the exec'ed program."
+msgstr ""
+
+#: src/code/unix-glibc2.lisp
+msgid ""
+"Executes the unix fork system call. Returns 0 in the child and the pid\n"
+" of the child in the parent if it works, or NIL and an error number if it\n"
+" doesn't work."
+msgstr ""
=====================================
src/i18n/locale/ko/LC_MESSAGES/cmucl-unix.po
=====================================
--- a/src/i18n/locale/ko/LC_MESSAGES/cmucl-unix.po
+++ b/src/i18n/locale/ko/LC_MESSAGES/cmucl-unix.po
@@ -166,6 +166,17 @@ msgstr ""
#: src/code/unix.lisp
msgid ""
+"UNIX-LSEEK accepts a file descriptor and moves the file pointer ahead\n"
+" a certain OFFSET for that file. WHENCE can be any of the following:\n"
+"\n"
+" l_set Set the file pointer.\n"
+" l_incr Increment the file pointer.\n"
+" l_xtnd Extend the file size.\n"
+" "
+msgstr ""
+
+#: src/code/unix.lisp
+msgid ""
"Unix-mkdir creates a new directory with the specified name and mode.\n"
" (Same as those for unix-chmod.) It returns T upon success, otherwise\n"
" NIL and an error number."
@@ -222,6 +233,10 @@ msgid "Synchronous writes (on ext2)"
msgstr ""
#: src/code/unix.lisp
+msgid "Asynchronous I/O"
+msgstr ""
+
+#: src/code/unix.lisp
msgid ""
"Unix-open opens the file whose pathname is specified by path\n"
" for reading and/or writing as specified by the flags argument.\n"
@@ -264,6 +279,15 @@ msgid ""
msgstr ""
#: src/code/unix.lisp
+msgid ""
+"Unix-dup2 duplicates an existing file descriptor just as unix-dup\n"
+" does only the new value of the duplicate descriptor may be requested\n"
+" through the second argument. If a file already exists with the\n"
+" requested descriptor number, it will be closed and the number\n"
+" assigned to the duplicate."
+msgstr ""
+
+#: src/code/unix.lisp
msgid "Duplicate a file descriptor"
msgstr ""
@@ -371,6 +395,14 @@ msgstr ""
#: src/code/unix.lisp
msgid ""
+"UNIX-READ attempts to read from the file described by fd into\n"
+" the buffer buf until it is full. Len is the length of the buffer.\n"
+" The number of bytes actually read is returned or NIL and an error\n"
+" number if an error occured."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid ""
"Unix-readlink invokes the readlink system call on the file name\n"
" specified by the simple string path. It returns up to two values:\n"
" the contents of the symbolic link if the call is successful, or\n"
@@ -398,6 +430,14 @@ msgstr ""
#: src/code/unix.lisp
msgid ""
+"Define an ioctl command. If the optional ARG and PARM-TYPE are given\n"
+" then ioctl argument size and direction are included as for ioctls defined\n"
+" by _IO, _IOR, _IOW, or _IOWR. If DEV is a character then the ioctl type\n"
+" is the characters code, else DEV may be an integer giving the type."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid ""
"Unix-ioctl performs a variety of operations on open i/o\n"
" descriptors. See the UNIX Programmer's Manual for more\n"
" information."
@@ -491,6 +531,38 @@ msgid ""
msgstr ""
#: src/code/unix.lisp
+msgid "These bits determine file type."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Directory"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Character device"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "FIFO"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Block device"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Regular file"
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Symbolic link."
+msgstr ""
+
+#: src/code/unix.lisp
+msgid "Socket."
+msgstr ""
+
+#: src/code/unix.lisp
msgid "Returns either :file, :directory, :link, :special, or NIL."
msgstr ""
=====================================
src/i18n/locale/ko/LC_MESSAGES/cmucl.po
=====================================
--- a/src/i18n/locale/ko/LC_MESSAGES/cmucl.po
+++ b/src/i18n/locale/ko/LC_MESSAGES/cmucl.po
@@ -1748,10 +1748,9 @@ msgstr ""
#: src/pcl/env.lisp src/pcl/fixup.lisp src/pcl/methods.lisp src/pcl/cpl.lisp
#: src/pcl/seal.lisp src/pcl/dfun.lisp
#: src/pcl/method-slot-access-optimization.lisp src/pcl/boot.lisp
-#: src/pcl/dlisp.lisp src/pcl/cache.lisp src/pcl/defclass.lisp
-#: src/pcl/low.lisp src/compiler/disassem.lisp src/code/pathname.lisp
-#: src/code/pprint-loop.lisp src/code/pprint.lisp src/code/bignum.lisp
-#: src/code/alieneval.lisp
+#: src/pcl/dlisp.lisp src/pcl/cache.lisp src/pcl/defclass.lisp src/pcl/low.lisp
+#: src/compiler/disassem.lisp src/code/pathname.lisp src/code/pprint-loop.lisp
+#: src/code/pprint.lisp src/code/bignum.lisp src/code/alieneval.lisp
msgid "Required argument missing"
msgstr ""
@@ -4726,6 +4725,45 @@ msgstr ""
#: src/code/float-trap.lisp
msgid ""
+"Encode the floating-point modes according to the give options and the\n"
+" specified mode, Floating-Point-Modes. The resulting new mode is\n"
+" returned. If a keyword is not supplied, then the current value is\n"
+" preserved. Possible keywords:\n"
+"\n"
+" :TRAPS\n"
+" A list of the exception conditions that should cause traps. "
+"Possible\n"
+" exceptions are :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID,\n"
+" :DIVIDE-BY-ZERO, and on the X86 :DENORMALIZED-OPERAND. Initially\n"
+" all traps except :INEXACT are enabled.\n"
+"\n"
+" :ROUNDING-MODE\n"
+" The rounding mode to use when the result is not exact. Possible "
+"values\n"
+" are :NEAREST, :POSITIVE-INFINITY, :NEGATIVE-INFINITY and :ZERO.\n"
+" Initially, the rounding mode is :NEAREST.\n"
+"\n"
+" :CURRENT-EXCEPTIONS\n"
+" :ACCRUED-EXCEPTIONS\n"
+" These arguments allow setting of the exception flags. The main use "
+"is\n"
+" setting the accrued exceptions to NIL to clear them.\n"
+"\n"
+" :FAST-MODE\n"
+" Set the hardware's \"fast mode\" flag, if any. When set, IEEE\n"
+" conformance or debuggability may be impaired. Some machines may not\n"
+" have this feature, in which case the value is always NIL.\n"
+"\n"
+" GET-FLOATING-POINT-MODES may be used to find the floating point modes\n"
+" currently in effect."
+msgstr ""
+
+#: src/code/float-trap.lisp
+msgid "Unknown rounding mode: ~S."
+msgstr ""
+
+#: src/code/float-trap.lisp
+msgid ""
"This function sets options controlling the floating-point hardware. If a\n"
" keyword is not supplied, then the current value is preserved. Possible\n"
" keywords:\n"
@@ -4759,7 +4797,11 @@ msgid ""
msgstr ""
#: src/code/float-trap.lisp
-msgid "Unknown rounding mode: ~S."
+msgid ""
+"This function returns a list representing the state of the floating point\n"
+" modes given in Modes. The list is in the same format as the keyword "
+"arguments to\n"
+" SET-FLOATING-POINT-MODES."
msgstr ""
#: src/code/float-trap.lisp
@@ -4794,6 +4836,16 @@ msgid ""
" their testing within, and restored on exit."
msgstr ""
+#: src/code/float-trap.lisp
+msgid ""
+"Execute BODY with the floating point exceptions listed in TRAPS\n"
+" enabled. TRAPS should be a list of possible exceptions which\n"
+" includes :UNDERFLOW, :OVERFLOW, :INEXACT, :INVALID and\n"
+" :DIVIDE-BY-ZERO and on the X86 :DENORMALIZED-OPERAND. The respective\n"
+" accrued exceptions are cleared at the start of the body to support\n"
+" their testing within, and restored on exit."
+msgstr ""
+
#: src/code/float.lisp
msgid "Return true if the float X is denormalized."
msgstr ""
@@ -6008,8 +6060,9 @@ msgstr ""
#: src/code/commandline.lisp
msgid ""
"Specifies the number of megabytes that should be allocated to the\n"
-" heap. If not specified, a platform-specific default is used. The\n"
-" actual maximum allowed heap size is platform-specific."
+" heap. If not specified, a platform-specific default is used. If 0,\n"
+" the platform-specific maximum heap size is used. The actual maximum\n"
+" allowed heap size is platform-specific."
msgstr ""
#: src/code/commandline.lisp
@@ -6619,7 +6672,9 @@ msgid ""
msgstr ""
#: src/code/save.lisp
-msgid "An alist mapping environment variables (as keywords) to either values"
+msgid ""
+"An alist mapping each environment variable (as a keyword) to its\n"
+" value."
msgstr ""
#: src/code/save.lisp
@@ -8138,7 +8193,10 @@ msgid "The package named ~S doesn't exist."
msgstr ""
#: src/code/package.lisp
-msgid "Changes the name and nicknames for a package."
+msgid ""
+"Replaces the name and nicknames of Package. The old name and all of\n"
+" the old nicknames of Package are eliminated and are replaced by\n"
+" New-Name and New-Nicknames."
msgstr ""
#: src/code/package.lisp
@@ -9135,9 +9193,12 @@ msgid ""
" The standard streams are sys::*stdin*, sys::*stdout*, and\n"
" sys::*stderr*, which are normally the input and/or output streams\n"
" for *standard-input* and *standard-output*. Also sets sys::*tty*\n"
-" (normally *terminal-io* to the given external format. If the\n"
-" optional argument Filenames is gvien, then the filename encoding is\n"
-" set to the specified format."
+" (normally *terminal-io* to the given external format. The value of\n"
+" *default-external-format* is not changed.\n"
+"\n"
+" If the optional argument Filenames is given, then the filename\n"
+" encoding is set to the specified format, if it has not already been\n"
+" specified previously."
msgstr ""
#: src/code/extfmts.lisp
@@ -13088,8 +13149,9 @@ msgid ""
"\n"
" The keyword arguments have the following meanings:\n"
" :env -\n"
-" An A-LIST mapping keyword environment variables to simple-string\n"
-"\tvalues.\n"
+" An A-LIST mapping keyword environment variables to\n"
+"\tsimple-string values. This is the shell environment for\n"
+"\tProgram. Defaults to *environment-list*.\n"
" :wait -\n"
" If non-NIL (default), wait until the created process finishes. If\n"
" NIL, continue running Lisp until the program finishes.\n"
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/040fbc1d73aef926967a0554…
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
3ee55ba5 by Raymond Toy at 2015-09-28T15:17:37-07:00
Let the OS mmap the binding and control stacks wherever.
- - - - -
586ca74d by Raymond Toy at 2015-10-02T18:50:45-07:00
Merge branch 'master' into rtoy-mmap-anon-control-and-binding-stacks
- - - - -
1869d093 by Raymond Toy at 2015-10-03T07:55:34-07:00
Updates to handle random stack locations better.
* Print out some better messages from os_protect
* Add make_hole to actually make a hole
* make_holes only does the read-only and static spaces.
* make_stack_holes handles the binding and control stacks.
- - - - -
4b838e3f by Raymond Toy at 2015-10-03T07:56:07-07:00
Make holes in the stacks, as before.
- - - - -
67befdb5 by Raymond Toy at 2015-10-03T13:55:50-07:00
Fix typo: index -> k.
- - - - -
1aa6477b by Raymond Toy at 2015-10-03T13:56:20-07:00
The start of the control stack is control_stack, not
control_stack_start.
- - - - -
65b5ed77 by Raymond Toy at 2015-10-03T13:56:47-07:00
The start of the control stack is control_stack, not
control_stack_start.
- - - - -
57a7df13 by Raymond Toy at 2015-10-03T14:10:24-07:00
Replace CONTROL_STACK_START with control_stack.
Cast to appropriate pointer types too.
- - - - -
e0ae3367 by Raymond Toy at 2015-10-03T14:11:08-07:00
Replace CONTROL_STACK_START with control_stack and BINDING_STACK_START
with binding_stack.
- - - - -
748991e2 by Raymond Toy at 2015-10-03T14:11:33-07:00
Cast os_validate to the appropriate type to get rid of warning.
- - - - -
e4897224 by Raymond Toy at 2015-10-03T14:11:43-07:00
Declare validate_stacks().
- - - - -
bcb73a5e by Raymond Toy at 2015-10-03T14:26:17-07:00
Simplify make_hole: just pass in address and size.
- - - - -
32ae8b14 by Raymond Toy at 2015-10-03T14:30:14-07:00
Fix silly typos.
- - - - -
cf1990dc by Raymond Toy at 2015-10-04T12:42:34-07:00
Don't define a SIGNAL_STACK mapped region. Use altstack, like on
other platforms.
- - - - -
b2dc0b2c by Raymond Toy at 2015-10-04T12:42:55-07:00
Don't define a SIGNAL_STACK mapped region. Use altstack, like on
other platforms.
- - - - -
316d2279 by Raymond Toy at 2015-10-04T12:43:26-07:00
Use control_stack, not CONTROL_STACK_START.
- - - - -
bdb299d3 by Raymond Toy at 2015-10-04T12:44:04-07:00
Put -O2 on it's own line to make switching this off and on slightly
easier.
- - - - -
9de8cd88 by Raymond Toy at 2015-10-04T12:47:42-07:00
Remove definitions of BINDING_STACK_START and CONTROL_STACK_START.
- - - - -
e4553e8a by Raymond Toy at 2015-10-04T12:54:25-07:00
Replace BINDING_STACK_START and CONTROL_STACK_START appropriately.
- - - - -
ec4c78fb by Raymond Toy at 2015-10-04T12:58:54-07:00
Define SIGNAL_STACK_SIZE
- - - - -
0e258fd9 by Raymond Toy at 2015-10-04T15:05:08-07:00
Rename local control_stack_size to current_stack_size to prevent
confusion with the global control_stack_size.
- - - - -
1d8db41a by Raymond Toy at 2015-10-04T15:05:22-07:00
Replace BINDING_STACK_START and CONTROL_STACK_START appropriately.
- - - - -
43e24775 by Raymond Toy at 2015-10-11T15:38:24-07:00
Support asdf's static-image-op.
* src/lisp/GNUMakefile
* Don't add exec-final.o to lisp.a. (But still remove exec-init.o
from it.)
* src/tools/linker.sh
* When linking the executable, need to link exec-final.o too.
* bin/make-main-dist.sh
* Need to install exec-init.o and exec-final.o. exec-init.o is
needed to link a normal lisp; exec-final.o is used for the
executable image.
* Fix modes on some installed files. exec-init.o, exec-final.o,
and lisp.a don't need to be executable.
- - - - -
c49d87c7 by Raymond Toy at 2015-10-11T15:38:24-07:00
Exit with the return code from obj_run_linker.
obj_run_linker() returns the return code from the call to system().
Exit lisp with this return code to indicate if running the executable
linker script worked or not.
- - - - -
c614c412 by Raymond Toy at 2015-10-11T15:38:24-07:00
Include the exit code when printing the process structure.
It's really nice to see the exit code of the process when printing out
the process structure.
Fix a typo too: "tings" -> "things".
- - - - -
7c199b29 by Raymond Toy at 2015-10-11T15:38:24-07:00
Use correct path for git clone.
Noticed by Joram Schrijver who gave the correct path.
- - - - -
776f7f63 by Raymond Toy at 2015-10-11T15:38:24-07:00
Use PRINT-UNREADABLE-OBJECT to print the process structure.
- - - - -
c415308a by Raymond Toy at 2015-10-11T15:38:24-07:00
Give hint on what the last value of the printed process is
Left this out in the previous commit.
- - - - -
3e5e8ebb by Raymond Toy at 2015-10-11T15:38:24-07:00
Remove -mmacosx-version-min=10.5
When making an executable on some random machine, we can't depend on
the user having the 10.5 SDK around. So remove the flag, but add
-Wl,-no_pie to suppress the warning about PIE disabled due to absolute
addressing.
- - - - -
1a3f83f6 by Raymond Toy at 2015-10-11T15:38:24-07:00
Update version so bootfiles are loaded from the dir
- - - - -
de896d6e by Raymond Toy at 2015-10-11T15:38:24-07:00
Add new release notes file for 21b.
- - - - -
46d1d014 by Raymond Toy at 2015-10-11T15:38:24-07:00
Add some comments.
MIN_VER requires the 10.5 SDK be available.
Add -Wl,-no_pie to turn off warning (and add comment).
- - - - -
16fbb323 by Raymond Toy at 2015-10-11T15:38:24-07:00
Cleanup.
Remove old comment, and remove the min OSX version on ppc too.
- - - - -
00bb8d4e by Raymond Toy at 2015-10-11T15:38:24-07:00
Disassemble BREAK inst as INT3.
The break inst is really the int3 instruction, so disassemble it as
int3.
- - - - -
33cb8d6c by Raymond Toy at 2015-10-11T15:38:24-07:00
Change disassembly to use .byte and .word instead of byte and word
when printing random bytes and words.
- - - - -
5a413e60 by Raymond Toy at 2015-10-11T16:00:39-07:00
Support stacks at fixed addresses as before.
If CONTROL_STACK_START or BINDING_STACK_START are defined, we take
that as a hint that the system wants the stacks mapped at fixed
addresses. Otherwise, the stacks are mapped wherever there's room.
- - - - -
a97bcea0 by Raymond Toy at 2015-10-18T22:12:48-07:00
Fix for NetBSD: Use control_stack/binding_stack instead of
CONTROL_STACK_START and BINDING_STACK_START.
>From Robert Swindells.
- - - - -
20f530c4 by Raymond Toy at 2015-10-19T21:13:12-07:00
Fix for FreeBSD: Use control_stack/binding_stack instead of
CONTROL_STACK_START and BINDING_STACK_START.
Fred Gilham says the same fix is needed for FreeBSD as for NetBSD.
- - - - -
138310f9 by Raymond Toy at 2015-10-31T20:41:30-07:00
Merge branch 'master' into rtoy-mmap-anon-control-and-binding-stacks
Conflicts:
bin/make-main-dist.sh
src/general-info/release-21b.txt
- - - - -
694331c1 by Raymond Toy at 2015-11-04T19:42:41-08:00
Fix merge mistake: Don't print break as int3.
- - - - -
0fb5c699 by Raymond Toy at 2015-11-04T19:44:58-08:00
Define CONTROL_STACK_START and BINDING_STACK_START.
ppc currently only supports allocating the control stack and binding
stack at fixed addresses. (This used to work, but something broke it
recently. Until the ppc machine comes back, we're going to disable
that feature there.)
- - - - -
70f15c09 by Raymond Toy at 2015-11-04T19:49:31-08:00
Remove some unused code.
- - - - -
275011da by Raymond Toy at 2015-12-13T21:35:03-08:00
Merge branch 'master' into rtoy-mmap-anon-control-and-binding-stacks
- - - - -
583140fc by Raymond Toy at 2016-05-08T09:11:48-07:00
Merge branch 'master' into rtoy-mmap-anon-control-and-binding-stacks
- - - - -
951611cf by Raymond Toy at 2016-05-09T21:02:47-07:00
Add RELOCATABLE_STACK_START to control stack spaces
When RELOCATABLE_STACK_START is defined, the control stack, binding
stack, and sigalt stack are located wherever mmap finds room for them.
Currently only implemented for Darwin, but should work for linux and
solaris. We enable this by default on Darwin now.
- - - - -
603fb6a0 by Raymond Toy at 2016-05-10T19:13:32-07:00
Add RELOCATABLE_STACK_START to control stack spaces for linux.
When RELOCATABLE_STACK_START is defined, the control stack, binding
stack, and sigalt stack are located wherever mmap finds room for them.
- - - - -
8b1ba846 by Raymond Toy at 2016-05-10T19:32:43-07:00
Fix typo.
We want #ifndef, not #ifdef to enable the relocatable stacks.
- - - - -
75d4ea45 by Raymond Toy at 2016-05-10T20:04:58-07:00
Add RELOCATABLE_STACK_START to control stack spaces for solaris/sparc..
When RELOCATABLE_STACK_START is defined, the control stack, binding
stack, and sigalt stack are located wherever mmap finds room for them.
Only implemented with sparc_sunc config.
- - - - -
a6339d00 by Raymond Toy at 2016-05-10T21:33:43-07:00
Remove #if 0 code.
- - - - -
67f59a2d by Raymond Toy at 2016-05-10T21:33:57-07:00
Add some comments.
- - - - -
38fdea64 by Raymond Toy at 2016-05-10T21:34:14-07:00
Fix indentation, add some comments.
- - - - -
f81b1ed0 by Raymond Toy at 2016-05-11T19:19:00-07:00
Add comments.
- - - - -
c15a3f70 by Raymond Toy at 2016-05-11T19:20:40-07:00
Fix up to preserve old behavior without RELOCATABLE_STACK_START.
- - - - -
e9838801 by Raymond Toy at 2016-05-11T19:28:39-07:00
Fix compiler warnings.
- - - - -
f75df562 by Raymond Toy at 2016-05-11T19:30:48-07:00
Fix compiler warnings.
- - - - -
040fbc1d by Raymond Toy at 2016-05-21T17:39:06+00:00
Merge branch 'rtoy-mmap-anon-control-and-binding-stacks' into 'master'
Map control and binding stacks wherever the OS wants to put them.
See merge request !3
- - - - -
23 changed files:
- src/lisp/Config.sparc_sunc
- src/lisp/Config.x86_common
- src/lisp/Config.x86_darwin
- src/lisp/Config.x86_linux
- src/lisp/Darwin-os.c
- src/lisp/FreeBSD-os.c
- src/lisp/Linux-os.c
- src/lisp/NetBSD-os.c
- src/lisp/backtrace.c
- src/lisp/gencgc.c
- src/lisp/globals.c
- src/lisp/interrupt.c
- src/lisp/lisp.c
- src/lisp/os-common.c
- src/lisp/ppc-validate.h
- src/lisp/save.c
- src/lisp/solaris-os.c
- src/lisp/sparc-validate.h
- src/lisp/validate.c
- src/lisp/validate.h
- src/lisp/x86-assem.S
- src/lisp/x86-validate-darwin.h
- src/lisp/x86-validate-linux.h
Changes:
=====================================
src/lisp/Config.sparc_sunc
=====================================
--- a/src/lisp/Config.sparc_sunc
+++ b/src/lisp/Config.sparc_sunc
@@ -24,7 +24,7 @@ CC_V8PLUS = -m32 -xarch=sparc
AS_V8PLUS = -m32 -xarch=sparc
endif
-CFLAGS += -xlibmieee -O
+CFLAGS += -xlibmieee -O -DRELOCATABLE_STACK_START
DEPEND_FLAGS = -xM
ASFLAGS = $(AS_V8PLUS)
OS_LINK_FLAGS = -M /usr/lib/ld/map.noexstk
=====================================
src/lisp/Config.x86_common
=====================================
--- a/src/lisp/Config.x86_common
+++ b/src/lisp/Config.x86_common
@@ -43,7 +43,8 @@ CPP_INCLUDE_OPTIONS := -I. -I$(PATH1) -I-
endif
CPPFLAGS := $(CPP_DEFINE_OPTIONS) $(CPP_INCLUDE_OPTIONS)
-CFLAGS += -Wstrict-prototypes -Wall -O2 -g -fno-omit-frame-pointer
+CFLAGS += -Wstrict-prototypes -Wall -g -fno-omit-frame-pointer
+CFLAGS += -O2
ASFLAGS = -g
ASSEM_SRC = x86-assem.S
=====================================
src/lisp/Config.x86_darwin
=====================================
--- a/src/lisp/Config.x86_darwin
+++ b/src/lisp/Config.x86_darwin
@@ -6,7 +6,7 @@ include Config.x86_common
# you have the 10.5 SDK available.
MIN_VER = -mmacosx-version-min=10.5
-CPPFLAGS += -DDARWIN $(MIN_VER) -m32
+CPPFLAGS += -DDARWIN $(MIN_VER) -m32 -DRELOCATABLE_STACK_START
CFLAGS += -g3 -mtune=generic
ASFLAGS += -g3 $(MIN_VER)
=====================================
src/lisp/Config.x86_linux
=====================================
--- a/src/lisp/Config.x86_linux
+++ b/src/lisp/Config.x86_linux
@@ -1,7 +1,7 @@
# -*- Mode: makefile -*-
include Config.x86_common
-CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE
+CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE -DRELOCATABLE_STACK_START
CFLAGS += -rdynamic -march=pentium4 -mfpmath=sse -mtune=generic
UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
=====================================
src/lisp/Darwin-os.c
=====================================
--- a/src/lisp/Darwin-os.c
+++ b/src/lisp/Darwin-os.c
@@ -464,8 +464,8 @@ valid_addr(os_vm_address_t addr)
#ifndef GENCGC
|| in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size)
#endif
- || in_range_p(addr, CONTROL_STACK_START, control_stack_size)
- || in_range_p(addr, BINDING_STACK_START, binding_stack_size))
+ || in_range_p(addr, (lispobj)control_stack, control_stack_size)
+ || in_range_p(addr, (lispobj)binding_stack, binding_stack_size))
return TRUE;
return FALSE;
}
=====================================
src/lisp/FreeBSD-os.c
=====================================
--- a/src/lisp/FreeBSD-os.c
+++ b/src/lisp/FreeBSD-os.c
@@ -224,8 +224,8 @@ valid_addr(os_vm_address_t addr)
#ifndef GENCGC
|| in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size)
#endif
- || in_range_p(addr, CONTROL_STACK_START, control_stack_size)
- || in_range_p(addr, BINDING_STACK_START, binding_stack_size))
+ || in_range_p(addr, control_stack, control_stack_size)
+ || in_range_p(addr, binding_stack, binding_stack_size))
return TRUE;
return FALSE;
}
=====================================
src/lisp/Linux-os.c
=====================================
--- a/src/lisp/Linux-os.c
+++ b/src/lisp/Linux-os.c
@@ -385,8 +385,8 @@ valid_addr(os_vm_address_t addr)
|| in_range_p(addr, STATIC_SPACE_START, static_space_size)
|| in_range_p(addr, DYNAMIC_0_SPACE_START, dynamic_space_size)
|| in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size)
- || in_range_p(addr, CONTROL_STACK_START, control_stack_size)
- || in_range_p(addr, BINDING_STACK_START, binding_stack_size))
+ || in_range_p(addr, control_stack, control_stack_size)
+ || in_range_p(addr, binding_stack, binding_stack_size))
return TRUE;
return FALSE;
}
@@ -454,17 +454,17 @@ sigsegv_handler(HANDLER_ARGS)
#ifdef i386
interrupt_handle_now(signal, contextstruct);
#else
-#define CONTROL_STACK_TOP (((char*) CONTROL_STACK_START) + control_stack_size)
+#define CONTROL_STACK_TOP (((char*) control_stack) + control_stack_size)
addr = arch_get_bad_addr(signal, code, context);
if (addr != NULL && context->sc_regs[reg_ALLOC] & (1 << 63)) {
context->sc_regs[reg_ALLOC] -= (1 << 63);
interrupt_handle_pending(context);
- } else if (addr > CONTROL_STACK_TOP && addr < BINDING_STACK_START) {
+ } else if (addr > CONTROL_STACK_TOP && addr < (os_vm_address_t)binding_stack) {
fprintf(stderr, "Possible stack overflow at 0x%08lX!\n", addr);
/* try to fix control frame pointer */
- while (!(CONTROL_STACK_START <= *current_control_frame_pointer &&
+ while (!((lispobj)control_stack <= *current_control_frame_pointer &&
*current_control_frame_pointer <= CONTROL_STACK_TOP))
((char *) current_control_frame_pointer) -= sizeof(lispobj);
ldb_monitor();
=====================================
src/lisp/NetBSD-os.c
=====================================
--- a/src/lisp/NetBSD-os.c
+++ b/src/lisp/NetBSD-os.c
@@ -277,8 +277,8 @@ valid_addr(os_vm_address_t addr)
#ifndef GENCGC
|| in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size)
#endif
- || in_range_p(addr, CONTROL_STACK_START, control_stack_size)
- || in_range_p(addr, BINDING_STACK_START, binding_stack_size))
+ || in_range_p(addr, control_stack, control_stack_size)
+ || in_range_p(addr, binding_stack, binding_stack_size))
return TRUE;
return FALSE;
}
=====================================
src/lisp/backtrace.c
=====================================
--- a/src/lisp/backtrace.c
+++ b/src/lisp/backtrace.c
@@ -252,7 +252,7 @@ backtrace(int nframes)
static int
stack_pointer_p(unsigned long p)
{
- return (p < CONTROL_STACK_START + control_stack_size
+ return ((void *)p < (void *)control_stack + control_stack_size
&& p > (unsigned long) &p && (p & 3) == 0);
}
=====================================
src/lisp/gencgc.c
=====================================
--- a/src/lisp/gencgc.c
+++ b/src/lisp/gencgc.c
@@ -166,7 +166,7 @@ check_escaped_stack_object(lispobj * where, lispobj obj)
if (Pointerp(obj)
&& (p = (void *) PTR(obj),
- (p >= (void *) CONTROL_STACK_START
+ (p >= (void *) control_stack
&& p < (void *) control_stack_end))) {
char *space;
@@ -195,7 +195,7 @@ check_escaped_stack_object(lispobj * where, lispobj obj)
lose("Escaped stack-allocated object 0x%08lx at %p in %s\n",
(unsigned long) obj, where, space);
#ifndef i386
- else if ((where >= (lispobj *) CONTROL_STACK_START
+ else if ((where >= (lispobj *) control_stack
&& where < (lispobj *) (control_stack_end))
|| (space == NULL)) {
/* Do nothing if it the reference is from the control stack,
@@ -2136,17 +2136,19 @@ read_only_space_p(lispobj obj)
static inline boolean
control_stack_space_p(lispobj obj)
{
- lispobj end = CONTROL_STACK_START + control_stack_size;
+ char *object = (char *) obj;
+ char *end = (char *)control_stack + control_stack_size;
- return (obj >= CONTROL_STACK_START) && (obj < end);
+ return (object >= (char *) control_stack) && (object < end);
}
static inline boolean
binding_stack_space_p(lispobj obj)
{
- lispobj end = BINDING_STACK_START + binding_stack_size;
+ char *object = (char *) obj;
+ char *end = (char *)binding_stack + binding_stack_size;
- return (obj >= BINDING_STACK_START) && (obj < end);
+ return (object >= (char *) binding_stack) && (object < end);
}
static inline boolean
@@ -2157,7 +2159,12 @@ signal_space_p(lispobj obj)
return (obj >= SIGNAL_STACK_START) && (obj < end);
#else
- return FALSE;
+ extern char altstack[];
+
+ char* object = (char*) obj;
+ char* end = altstack + SIGNAL_STACK_SIZE;
+
+ return (object >= altstack && object < end);
#endif
}
@@ -7322,11 +7329,11 @@ verify_gc(void)
int static_space_size = (lispobj *) SymbolValue(STATIC_SPACE_FREE_POINTER)
- (lispobj *) static_space;
int binding_stack_size = (lispobj *) get_binding_stack_pointer()
- - (lispobj *) BINDING_STACK_START;
+ - (lispobj *) binding_stack;
verify_space((lispobj *) READ_ONLY_SPACE_START, read_only_space_size);
verify_space((lispobj *) static_space, static_space_size);
- verify_space((lispobj *) BINDING_STACK_START, binding_stack_size);
+ verify_space((lispobj *) binding_stack, binding_stack_size);
verify_space((lispobj *) (void *) &scavenger_hooks, 1);
}
@@ -7494,16 +7501,16 @@ scavenge_interrupt_handlers(void)
static void
scavenge_control_stack(void)
{
- unsigned long control_stack_size;
+ unsigned long current_stack_size;
- control_stack_size = current_control_stack_pointer - control_stack;
+ current_stack_size = current_control_stack_pointer - control_stack;
#ifdef PRINTNOISE
printf("Scavenging the control stack (%d bytes) ...\n",
- control_stack_size * sizeof(lispobj));
+ current_stack_size * sizeof(lispobj));
#endif
- scavenge(control_stack, control_stack_size);
+ scavenge(control_stack, current_stack_size);
#ifdef PRINTNOISE
printf("Done scavenging the control stack.\n");
@@ -7523,7 +7530,7 @@ garbage_collect_generation(int generation, int raise)
#ifdef GC_ASSERTIONS
#if defined(i386) || defined(__x86_64)
- invalid_stack_start = (void *) CONTROL_STACK_START;
+ invalid_stack_start = (void *) control_stack;
invalid_stack_end = (void *) &raise;
#else /* not i386 */
invalid_stack_start = (void *) &raise;
=====================================
src/lisp/globals.c
=====================================
--- a/src/lisp/globals.c
+++ b/src/lisp/globals.c
@@ -28,7 +28,6 @@ lispobj *dynamic_1_space;
unsigned dynamic_space_size;
lispobj *control_stack;
-
#if (defined(i386) || defined(__x86_64))
lispobj *control_stack_end;
#endif
=====================================
src/lisp/interrupt.c
=====================================
--- a/src/lisp/interrupt.c
+++ b/src/lisp/interrupt.c
@@ -405,10 +405,7 @@ interrupt_maybe_gc(HANDLER_ARGS)
* Noise to install handlers. *
\****************************************************************/
-#if !(defined(i386) || defined(__x86_64))
-#define SIGNAL_STACK_SIZE SIGSTKSZ
-static char altstack[SIGNAL_STACK_SIZE];
-#endif
+char altstack[SIGNAL_STACK_SIZE];
void
interrupt_install_low_level_handler(int signal, void handler(HANDLER_ARGS))
@@ -431,7 +428,7 @@ interrupt_install_low_level_handler(int signal, void handler(HANDLER_ARGS))
if (signal == PROTECTION_VIOLATION_SIGNAL) {
stack_t sigstack;
-#if (defined( i386 ) || defined(__x86_64))
+#if defined(SIGNAL_STACK_START)
sigstack.ss_sp = (void *) SIGNAL_STACK_START;
#else
sigstack.ss_sp = (void *) altstack;
=====================================
src/lisp/lisp.c
=====================================
--- a/src/lisp/lisp.c
+++ b/src/lisp/lisp.c
@@ -687,8 +687,16 @@ main(int argc, const char *argv[], const char *envp[])
if (builtin_image_flag != 0)
map_core_sections(argv[0]);
#endif
+
+ /*
+ * Validate the basic lisp spaces first like the heap and static
+ * and read-only spaces. Do this so that the stacks (if thy're
+ * relocatable) don't get randomly allocated on top of our desired
+ * lisp spaces.
+ */
validate();
gc_init();
+ validate_stacks();
/* This is the first use of malloc() and must come after the
* static memory layout is mmapped to avoid conflicts with possible
=====================================
src/lisp/os-common.c
=====================================
--- a/src/lisp/os-common.c
+++ b/src/lisp/os-common.c
@@ -413,7 +413,7 @@ guard_zones(char **yellow_start, char **red_start)
/*
* All x86's have a control stack (aka C stack) that grows down.
*/
- char *end = (char *) CONTROL_STACK_START;
+ char *end = (char *) control_stack;
*red_start = end;
*yellow_start = *red_start + RED_ZONE_SIZE;
@@ -424,7 +424,7 @@ guard_zones(char **yellow_start, char **red_start)
* control stack area.
*/
- char *end = (char *) CONTROL_STACK_START + control_stack_size;
+ char *end = (char *) control_stack + control_stack_size;
*red_start = end - RED_ZONE_SIZE;
*yellow_start = *red_start - YELLOW_ZONE_SIZE;
=====================================
src/lisp/ppc-validate.h
=====================================
--- a/src/lisp/ppc-validate.h
+++ b/src/lisp/ppc-validate.h
@@ -45,6 +45,8 @@
#define CONTROL_STACK_SIZE (0x07ff8000) /* 128 MB, almost */
#define CONTROL_STACK_END (CONTROL_STACK_START + control_stack_size)
+#define SIGNAL_STACK_SIZE SIGSTKSZ
+
#define BINDING_STACK_START (0x38000000)
#define BINDING_STACK_SIZE (0x07ff8000) /* 128 MB, almost */
=====================================
src/lisp/save.c
=====================================
--- a/src/lisp/save.c
+++ b/src/lisp/save.c
@@ -136,7 +136,9 @@ save(char *filename, lispobj init_function, int sse2_mode)
}
printf("[Undoing binding stack... ");
fflush(stdout);
- unbind_to_here((lispobj *) BINDING_STACK_START);
+
+ unbind_to_here((lispobj *) binding_stack);
+
SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
SetSymbolValue(EVAL_STACK_TOP, 0);
@@ -278,7 +280,9 @@ save_executable(char *filename, lispobj init_function)
printf("[Undoing binding stack... ");
fflush(stdout);
- unbind_to_here((lispobj *)BINDING_STACK_START);
+
+ unbind_to_here((lispobj *)binding_stack);
+
SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
SetSymbolValue(EVAL_STACK_TOP, 0);
=====================================
src/lisp/solaris-os.c
=====================================
--- a/src/lisp/solaris-os.c
+++ b/src/lisp/solaris-os.c
@@ -169,8 +169,14 @@ os_flush_icache(os_vm_address_t address, os_vm_size_t length)
void
os_protect(os_vm_address_t address, os_vm_size_t length, os_vm_prot_t prot)
{
- if (mprotect((void *) address, length, prot) == -1)
- perror("mprotect");
+ if (mprotect((void *) address, length, prot) == -1) {
+ char msg[1000];
+
+ snprintf(msg, sizeof(msg), "mprotect: os_protect(0x%p, %u, 0x%x): ",
+ address, length, prot);
+
+ perror(msg);
+ }
}
static boolean
@@ -193,8 +199,8 @@ boolean valid_addr(os_vm_address_t addr)
#ifndef GENCGC
|| in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size)
#endif
- || in_range_p(addr, CONTROL_STACK_START, control_stack_size)
- || in_range_p(addr, BINDING_STACK_START, binding_stack_size));
+ || in_range_p(addr, (lispobj)control_stack, control_stack_size)
+ || in_range_p(addr, (lispobj)binding_stack, binding_stack_size));
}
/* ---------------------------------------------------------------- */
@@ -403,11 +409,16 @@ os_vm_address_t round_up_sparse_size(os_vm_address_t addr)
/*
* An array of the start of the spaces which should have holes placed
* after them. Must not include the dynamic spaces because the size
- * of the dynamic space can be controlled from the command line.
+ * of the dynamic space can be controlled from the command line. Also
+ * must not include the binding and control stacks. They're handled
+ * below.
*/
static os_vm_address_t spaces[] = {
READ_ONLY_SPACE_START, STATIC_SPACE_START,
- BINDING_STACK_START, CONTROL_STACK_START
+#ifndef RELOCATABLE_STACK_START
+ BINDING_STACK_START,
+ CONTROL_STACK_START
+#endif
};
/*
@@ -430,27 +441,41 @@ static unsigned long *space_size[] = {
#define HOLE_SIZE 0x2000
void
-make_holes(void)
+make_hole(os_vm_address_t space_start, size_t space_size)
{
- int k;
os_vm_address_t hole;
/* Make holes of the appropriate size for desired spaces */
- for (k = 0; k < sizeof(spaces) / sizeof(spaces[0]); ++k) {
-
- hole = spaces[k] + *space_size[k];
+ hole = space_start + space_size;
- if (os_validate(hole, HOLE_SIZE) == NULL) {
- fprintf(stderr,
- "ensure_space: Failed to validate hole of %d bytes at 0x%08lX\n",
- HOLE_SIZE, (unsigned long) hole);
- exit(1);
- }
- /* Make it inaccessible */
- os_protect(hole, HOLE_SIZE, 0);
+ if (os_validate(hole, HOLE_SIZE) == NULL) {
+ fprintf(stderr,
+ "ensure_space: Failed to validate hole of %d bytes at 0x%08lX\n",
+ HOLE_SIZE, (unsigned long) hole);
+ exit(1);
}
+ /* Make it inaccessible */
+ os_protect(hole, HOLE_SIZE, 0);
+}
+
+void
+make_holes(void)
+{
+ int k;
+ os_vm_address_t hole;
+
+ /*
+ * Make holes of the appropriate size for desired spaces. The
+ * stacks are handled in make_stack_holes, if they are
+ * relocatable.
+ */
+ for (k = 0; k < sizeof(spaces) / sizeof(spaces[0]); ++k) {
+ make_hole(spaces[k], *space_size[k]);
+ }
+
+
/* Round up the dynamic_space_size to the nearest SPARSE_BLOCK_SIZE */
dynamic_space_size = round_up_sparse_size(dynamic_space_size);
@@ -477,6 +502,15 @@ make_holes(void)
#endif
}
+void
+make_stack_holes(void)
+{
+#ifdef RELOCATABLE_STACK_START
+ make_hole((os_vm_address_t)control_stack, control_stack_size);
+ make_hole((os_vm_address_t)binding_stack, binding_stack_size);
+#endif
+}
+
void *
os_dlsym(const char *sym_name, lispobj lib_list)
{
=====================================
src/lisp/sparc-validate.h
=====================================
--- a/src/lisp/sparc-validate.h
+++ b/src/lisp/sparc-validate.h
@@ -92,15 +92,24 @@
#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
#define READ_ONLY_SPACE_SIZE ((2*MB_128) - SPARSE_BLOCK_SIZE) /* 256 MB - 32 KB, 256 MB max */
+#ifndef RELOCATABLE_STACK_START
#define BINDING_STACK_START (0x20000000)
+#endif
+
#define BINDING_STACK_SIZE (MB_128 - SPARSE_BLOCK_SIZE) /* 128 MB - 32 KB, 128 MB max */
#define STATIC_SPACE_START (SpaceStart_TargetStatic)
#define STATIC_SPACE_SIZE ((2*MB_128) - SPARSE_BLOCK_SIZE) /* 256 MB - 32 KB, 256 MB max */
+#ifndef RELOCATABLE_STACK_START
#define CONTROL_STACK_START (0x38000000)
+#endif
#define CONTROL_STACK_SIZE (MB_128 - SPARSE_BLOCK_SIZE) /* 128 MB - 32 KB, 128 MB max */
+#if 0
#define CONTROL_STACK_END (CONTROL_STACK_START + control_stack_size)
+#endif
+
+#define SIGNAL_STACK_SIZE SIGSTKSZ
#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
=====================================
src/lisp/validate.c
=====================================
--- a/src/lisp/validate.c
+++ b/src/lisp/validate.c
@@ -18,6 +18,7 @@
#ifdef sparc
extern void make_holes(void);
+extern void make_stack_holes(void);
#endif
static void
@@ -92,20 +93,10 @@ validate(void)
*/
#endif
- /* Control Stack */
- control_stack = (lispobj *) CONTROL_STACK_START;
-#if (defined(i386) || defined(__x86_64))
- control_stack_end = (lispobj *) (CONTROL_STACK_START + control_stack_size);
-#endif
- ensure_space(control_stack, control_stack_size);
-
#ifdef SIGNAL_STACK_START
ensure_space((lispobj *) SIGNAL_STACK_START, SIGNAL_STACK_SIZE);
#endif
- /* Binding Stack */
- binding_stack = (lispobj *) BINDING_STACK_START;
- ensure_space(binding_stack, binding_stack_size);
#ifdef LINKAGE_TABLE
ensure_space((lispobj *) FOREIGN_LINKAGE_SPACE_START,
FOREIGN_LINKAGE_SPACE_SIZE);
@@ -118,6 +109,40 @@ validate(void)
printf(" done.\n");
#endif
+}
+
+void
+validate_stacks()
+{
+ /* Control Stack */
+#ifdef CONTROL_STACK_START
+ /* Map the control stack at a fixed location */
+ control_stack = (lispobj *) CONTROL_STACK_START;
+#if (defined(i386) || defined(__x86_64))
+ control_stack_end = (lispobj *) (CONTROL_STACK_START + control_stack_size);
+#endif
+ ensure_space(control_stack, control_stack_size);
+#else
+ /* Map the conrol stack wherever we have space */
+ control_stack = (lispobj*) os_validate(NULL, control_stack_size);
+
+#if (defined(i386) || defined(__x86_64))
+ control_stack_end = (void*)control_stack + control_stack_size;
+#endif
+#endif
+
+ /* Binding Stack */
+#ifdef BINDING_STACK_START
+ binding_stack = (lispobj *) BINDING_STACK_START;
+ ensure_space(binding_stack, binding_stack_size);
+#else
+ /* Map the binding stack wherever we have space */
+ binding_stack = (lispobj*) os_validate(NULL, binding_stack_size);
+#endif
+#ifdef sparc
+ make_stack_holes();
+#endif
+
#ifdef RED_ZONE_HIT
os_guard_control_stack(0, 1);
#endif
=====================================
src/lisp/validate.h
=====================================
--- a/src/lisp/validate.h
+++ b/src/lisp/validate.h
@@ -37,5 +37,6 @@
#endif
extern void validate(void);
+extern void validate_stacks(void);
#endif /* _VALIDATE_H_ */
=====================================
src/lisp/x86-assem.S
=====================================
--- a/src/lisp/x86-assem.S
+++ b/src/lisp/x86-assem.S
@@ -143,7 +143,8 @@ FUNCDEF(call_into_lisp)
movl %eax, GNAME(foreign_function_call_active)
movl %esp,%ebx # remember current stack
- cmpl $CONTROL_STACK_START,%esp
+ cmpl GNAME(control_stack), %esp
+
jbe ChangeToLispStack
cmpl GNAME(control_stack_end), %esp
jbe OnLispStack
=====================================
src/lisp/x86-validate-darwin.h
=====================================
--- a/src/lisp/x86-validate-darwin.h
+++ b/src/lisp/x86-validate-darwin.h
@@ -18,10 +18,14 @@
#define STATIC_SPACE_START (SpaceStart_TargetStatic)
#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+#ifndef RELOCATABLE_STACK_START
#define BINDING_STACK_START (0x38000000)
+#endif
#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
+#ifdef RELOCATABLE_STACK_START
#define CONTROL_STACK_START (0x40000000)
+#endif
/*
* According to /usr/include/sys/signal.h, MINSIGSTKSZ is 32K and
@@ -29,7 +33,9 @@
*/
#define CONTROL_STACK_SIZE (0x07fdf000) /* 128MB - SIGSTKSZ - 1 page */
+#ifndef RELOCATABLE_STACK_START
#define SIGNAL_STACK_START (0x47fe0000) /* One page past the end of the control stack */
+#endif
#define SIGNAL_STACK_SIZE SIGSTKSZ
#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
=====================================
src/lisp/x86-validate-linux.h
=====================================
--- a/src/lisp/x86-validate-linux.h
+++ b/src/lisp/x86-validate-linux.h
@@ -45,13 +45,19 @@
#define STATIC_SPACE_START (SpaceStart_TargetStatic)
#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+#ifndef RELOCATABLE_STACK_START
#define BINDING_STACK_START (0x20000000)
+#endif
#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
+#ifndef RELOCATABLE_STACK_START
#define CONTROL_STACK_START 0x38000000
+#endif
#define CONTROL_STACK_SIZE (0x07fff000 - 8192)
+#ifndef RELOCATABLE_STACK_START
#define SIGNAL_STACK_START CONTROL_STACK_END
+#endif
#define SIGNAL_STACK_SIZE SIGSTKSZ
#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/d003a22443cd8325a87817e2…
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
d003a224 by Raymond Toy at 2016-05-14T07:56:19-07:00
Add -X flag
When -X is given (break) just before quiting the cross-compilation.
This allows for some debugging of the cross-compiled result.
- - - - -
1 changed file:
- bin/cross-build-world.sh
Changes:
=====================================
bin/cross-build-world.sh
=====================================
--- a/bin/cross-build-world.sh
+++ b/bin/cross-build-world.sh
@@ -1,16 +1,19 @@
#!/bin/sh
usage() {
- echo "cross-build-world.sh [-crl] [-B file] [-G Gnumake] target-dir cross-dir cross-compiler-script [build-binary [flags]]"
+ echo "cross-build-world.sh [-crlX] [-B file] [-G Gnumake] target-dir cross-dir cross-compiler-script [build-binary [flags]]"
echo " -c Clean target and cross directories before compiling"
echo " -r Recompile lisp runtime"
echo " -l Load cross-compiled kernel to make a new lisp kernel"
echo " -B file Use this as the cross bootstrap file."
echo " -G make Specifies the name of GNU make"
+ echo " -X (break) before quitting the cross compilation (for debugging)"
}
MAKE=make
-while getopts "crlB:G:" arg
+BREAK=""
+
+while getopts "crlXB:G:" arg
do
case $arg in
c) CLEAN_DIR=yes ;;
@@ -18,6 +21,7 @@ do
l) LOAD_KERNEL=yes ;;
B) BOOTSTRAP=$OPTARG ;;
G) MAKE=$OPTARG ;;
+ X) BREAK="(break)" ;;
h | \?) usage; exit 1 ;;
esac
done
@@ -122,6 +126,7 @@ $LISP "$@" -noinit -nositeinit <<EOF
(setq *gc-verbose* t *interactive* t)
(load "target:tools/worldbuild")
+$BREAK
(ext:quit)
EOF
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/d003a22443cd8325a87817e29…
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
bb4afde9 by Raymond Toy at 2016-05-13T17:37:58-07:00
Fix #22 where coerce was returning the wrong type of float.
src/compiler/float.lisp:
o The deftransform coerce was checking for a type of 'float and using
%single-float to do the conversion. This is incorrect; it should
only apply if the type is 'single-float.
tests/issues.lisp
o Add test for this.
Verified that the test fails on the current snapshot and ix fixed by
this change.
- - - - -
2 changed files:
- src/compiler/float-tran.lisp
- tests/issues.lisp
Changes:
=====================================
src/compiler/float-tran.lisp
=====================================
--- a/src/compiler/float-tran.lisp
+++ b/src/compiler/float-tran.lisp
@@ -76,7 +76,7 @@
'(%double-double-float n))
((csubtypep tspec (specifier-type 'double-float))
'(%double-float n))
- ((csubtypep tspec (specifier-type 'float))
+ ((csubtypep tspec (specifier-type 'single-float))
'(%single-float n))
#+double-double
((csubtypep tspec (specifier-type '(complex double-double-float)))
=====================================
tests/issues.lisp
=====================================
--- a/tests/issues.lisp
+++ b/tests/issues.lisp
@@ -200,3 +200,13 @@
tests))
`(progn ,@(nreverse tests)))))
(make-tests)))
+
+(define-test issue.22
+ (:tag :issues)
+ (let ((tester (compile nil '(lambda (x)
+ (coerce x 'float)))))
+ (assert-eql 1.0 (funcall tester 1))
+ (assert-eql 2f0 (funcall tester 2f0))
+ (assert-eql 3d0 (funcall tester 3d0))
+ (assert-eql 4w0 (funcall tester 4w0))))
+
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/bb4afde9814ae938cc7f8de53…
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
e50d75bc by Raymond Toy at 2016-05-12T19:17:36-07:00
Fix typo in value.
The deftransform for converting an (unsigned-byte 32) to a
double-float was using the wrong type of float constant. It should
have been a double instead of single.
This fix allows sparc to cross-compile itself now.
- - - - -
1 changed file:
- src/compiler/sparc/float.lisp
Changes:
=====================================
src/compiler/sparc/float.lisp
=====================================
--- a/src/compiler/sparc/float.lisp
+++ b/src/compiler/sparc/float.lisp
@@ -1061,7 +1061,7 @@
;; constraint is that the pieces must be small enough to fit in the
;; desired float format without rounding.
(frob %single-float %%single-float 12 1f0)
- (frob %double-float %%double-float 12 1f0))
+ (frob %double-float %%double-float 12 1d0))
(macrolet ((frob (name translate inst to-sc to-type)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/e50d75bc77d58824c817e2d6c…
Raymond Toy pushed to branch rtoy-mmap-anon-control-and-binding-stacks at cmucl / cmucl
Commits:
f81b1ed0 by Raymond Toy at 2016-05-11T19:19:00-07:00
Add comments.
- - - - -
c15a3f70 by Raymond Toy at 2016-05-11T19:20:40-07:00
Fix up to preserve old behavior without RELOCATABLE_STACK_START.
- - - - -
2 changed files:
- src/lisp/lisp.c
- src/lisp/solaris-os.c
Changes:
=====================================
src/lisp/lisp.c
=====================================
--- a/src/lisp/lisp.c
+++ b/src/lisp/lisp.c
@@ -687,6 +687,13 @@ main(int argc, const char *argv[], const char *envp[])
if (builtin_image_flag != 0)
map_core_sections(argv[0]);
#endif
+
+ /*
+ * Validate the basic lisp spaces first like the heap and static
+ * and read-only spaces. Do this so that the stacks (if thy're
+ * relocatable) don't get randomly allocated on top of our desired
+ * lisp spaces.
+ */
validate();
gc_init();
validate_stacks();
=====================================
src/lisp/solaris-os.c
=====================================
--- a/src/lisp/solaris-os.c
+++ b/src/lisp/solaris-os.c
@@ -415,6 +415,10 @@ os_vm_address_t round_up_sparse_size(os_vm_address_t addr)
*/
static os_vm_address_t spaces[] = {
READ_ONLY_SPACE_START, STATIC_SPACE_START
+#ifndef RELOCATABLE_STACK_START
+ BINDING_STACK_START,
+ CONTROL_STACK_START
+#endif
};
/*
@@ -458,15 +462,19 @@ make_hole(char *space_start, size_t space_size)
void
make_holes(void)
{
+ int k;
os_vm_address_t hole;
/*
* Make holes of the appropriate size for desired spaces. The
- * stacks are handled in make_stack_holes.
+ * stacks are handled in make_stack_holes, if they are
+ * relocatable.
*/
- make_hole(spaces[0], *space_size[0]); /* Read-only space */
- make_hole(spaces[1], *space_size[1]); /* Static space */
+ for (k = 0; k < sizeof(spaces) / sizeof(spaces[0]); ++k) {
+ make_hole(spaces[k], *space_size[k]);
+ }
+
/* Round up the dynamic_space_size to the nearest SPARSE_BLOCK_SIZE */
dynamic_space_size = round_up_sparse_size(dynamic_space_size);
@@ -497,8 +505,10 @@ make_holes(void)
void
make_stack_holes(void)
{
+#ifdef RELOCATABLE_STACK_START
make_hole(control_stack, control_stack_size);
make_hole(binding_stack, binding_stack_size);
+#endif
}
void *
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/38fdea64c854d5f0e13f1b16…
Raymond Toy pushed to branch rtoy-mmap-anon-control-and-binding-stacks at cmucl / cmucl
Commits:
a6339d00 by Raymond Toy at 2016-05-10T21:33:43-07:00
Remove #if 0 code.
- - - - -
67f59a2d by Raymond Toy at 2016-05-10T21:33:57-07:00
Add some comments.
- - - - -
38fdea64 by Raymond Toy at 2016-05-10T21:34:14-07:00
Fix indentation, add some comments.
- - - - -
3 changed files:
- src/lisp/save.c
- src/lisp/solaris-os.c
- src/lisp/validate.c
Changes:
=====================================
src/lisp/save.c
=====================================
--- a/src/lisp/save.c
+++ b/src/lisp/save.c
@@ -136,11 +136,9 @@ save(char *filename, lispobj init_function, int sse2_mode)
}
printf("[Undoing binding stack... ");
fflush(stdout);
-#if 0
- unbind_to_here((lispobj *) BINDING_STACK_START);
-#else
+
unbind_to_here((lispobj *) binding_stack);
-#endif
+
SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
SetSymbolValue(EVAL_STACK_TOP, 0);
@@ -282,11 +280,9 @@ save_executable(char *filename, lispobj init_function)
printf("[Undoing binding stack... ");
fflush(stdout);
-#if 0
- unbind_to_here((lispobj *)BINDING_STACK_START);
-#else
+
unbind_to_here((lispobj *)binding_stack);
-#endif
+
SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
SetSymbolValue(EVAL_STACK_TOP, 0);
=====================================
src/lisp/solaris-os.c
=====================================
--- a/src/lisp/solaris-os.c
+++ b/src/lisp/solaris-os.c
@@ -409,7 +409,9 @@ os_vm_address_t round_up_sparse_size(os_vm_address_t addr)
/*
* An array of the start of the spaces which should have holes placed
* after them. Must not include the dynamic spaces because the size
- * of the dynamic space can be controlled from the command line.
+ * of the dynamic space can be controlled from the command line. Also
+ * must not include the binding and control stacks. They're handled
+ * below.
*/
static os_vm_address_t spaces[] = {
READ_ONLY_SPACE_START, STATIC_SPACE_START
=====================================
src/lisp/validate.c
=====================================
--- a/src/lisp/validate.c
+++ b/src/lisp/validate.c
@@ -124,7 +124,7 @@ validate_stacks()
ensure_space(control_stack, control_stack_size);
#else
/* Map the conrol stack wherever we have space */
- control_stack = (lispobj*) os_validate(NULL, control_stack_size);
+ control_stack = (lispobj*) os_validate(NULL, control_stack_size);
#if (defined(i386) || defined(__x86_64))
control_stack_end = (void*)control_stack + control_stack_size;
@@ -136,6 +136,7 @@ validate_stacks()
binding_stack = (lispobj *) BINDING_STACK_START;
ensure_space(binding_stack, binding_stack_size);
#else
+ /* Map the binding stack wherever we have space */
binding_stack = (lispobj*) os_validate(NULL, binding_stack_size);
#endif
#ifdef sparc
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/75d4ea457191cd39b6da88be…